Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorafinkbein2008-01-03 15:21:48 +0000
committerafinkbein2008-01-03 15:21:48 +0000
commitb8a9136748e3a9494a2edc3de6793cc879d31ba8 (patch)
tree9d4e3220bad177c8f8d23b82a51f33a181d7a9db
parentfdcb4d0b1c88060191910030f0cacb488e8a219b (diff)
downloadorg.eclipse.osee-b8a9136748e3a9494a2edc3de6793cc879d31ba8.tar.gz
org.eclipse.osee-b8a9136748e3a9494a2edc3de6793cc879d31ba8.tar.xz
org.eclipse.osee-b8a9136748e3a9494a2edc3de6793cc879d31ba8.zip
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.classpath7
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.project28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF82
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/Skynet GUI Tests.launch37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/build.properties11
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactExplorerContexts.xml9
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactSearchContexts.xml8
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/branchManagerContexts.xml30
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/changeReportContexts.xml9
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/contexts.xml17
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/relationPageContexts.xml9
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/revisionHistoryContexts.xml8
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/A.gifbin0 -> 864 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/WordMlImport.bmpbin0 -> 822 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/accept.gifbin0 -> 343 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/add.gifbin0 -> 318 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.gifbin0 -> 558 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.xcfbin0 -> 1446 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.gifbin0 -> 312 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.xcfbin0 -> 1284 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_search.gifbin0 -> 373 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/aspect.gifbin0 -> 472 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/authenticated.gifbin0 -> 950 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/back.gifbin0 -> 327 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/black_check.gifbin0 -> 64 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch.gifbin0 -> 127 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.gifbin0 -> 158 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.xcfbin0 -> 1835 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/bug.gifbin0 -> 472 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/change_managed_branch.gifbin0 -> 100 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_disabled.gifbin0 -> 90 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_enabled.gifbin0 -> 343 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/clear.gifbin0 -> 595 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/collapseAll.gifbin0 -> 157 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customize.gifbin0 -> 500 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeD.gifbin0 -> 61 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeG.gifbin0 -> 64 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeP.gifbin0 -> 64 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizePersonal.gifbin0 -> 508 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/delete_edit.gifbin0 -> 351 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/down.gifbin0 -> 332 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/duplicate.gifbin0 -> 224 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit.gifbin0 -> 111 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit2.gifbin0 -> 204 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit_artifact.gifbin0 -> 315 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/email.gifbin0 -> 362 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/expandAll.gifbin0 -> 164 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/export.gifbin0 -> 343 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/filter.gifbin0 -> 211 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/flat_layout.gifbin0 -> 97 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gear.gifbin0 -> 155 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gears.gifbin0 -> 951 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenBug.gifbin0 -> 348 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenPlus.gifbin0 -> 318 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/green_light.gifbin0 -> 314 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/group.gifbin0 -> 364 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/help.gifbin0 -> 259 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/issue.gifbin0 -> 121 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_16_16.gifbin0 -> 1092 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_8_8.gifbin0 -> 903 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/load.gifbin0 -> 216 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/lockkey.gifbin0 -> 1370 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/magnify.gifbin0 -> 313 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/major.gifbin0 -> 206 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/minor.gifbin0 -> 182 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_backward.gifbin0 -> 541 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_forward.gifbin0 -> 541 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/newTask.gifbin0 -> 479 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.gifbin0 -> 343 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.xcfbin0 -> 1236 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.gifbin0 -> 601 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.xcfbin0 -> 1453 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/preview_artifact.gifbin0 -> 147 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/print.gifbin0 -> 607 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/product.gifbin0 -> 474 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.gifbin0 -> 568 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.xcfbin0 -> 1612 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redExclaim.gifbin0 -> 179 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redRemove.gifbin0 -> 143 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_light.gifbin0 -> 317 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_slash.gifbin0 -> 70 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_user_sm.gifbin0 -> 319 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/refresh.gifbin0 -> 182 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/reject.gifbin0 -> 204 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/relate.gifbin0 -> 160 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/remove.gifbin0 -> 163 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/removeAll.gifbin0 -> 204 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/repository.gifbin0 -> 545 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/results.gifbin0 -> 464 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/run_exc.gifbin0 -> 379 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/save.gifbin0 -> 639 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/skywalker.gifbin0 -> 209 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/sort.gifbin0 -> 344 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star.gifbin0 -> 304 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star_9_9.gifbin0 -> 283 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/task.gifbin0 -> 857 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/test_procedure.gifbin0 -> 169 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction.gifbin0 -> 82 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction_detail.gifbin0 -> 71 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/tree_layout.gifbin0 -> 101 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/up.gifbin0 -> 323 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user.gifbin0 -> 542 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user_sm.gifbin0 -> 314 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/users2.gifbin0 -> 597 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/plugin.xml465
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram README.txt2
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram.pdfbin0 -> 19536 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Differences.pdfbin0 -> 10610 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_explorer_tree.html34
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.gifbin0 -> 74404 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.html39
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_filtering.html26
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_manager_view.html39
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_view.gifbin0 -> 11716 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_report_view.gifbin0 -> 15048 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_table.html51
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/compare_two_artifacts.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/contexts.xml11
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/create_branch.html40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_artifact.html27
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_links.html28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/default_branch.html40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_artifacts.html29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_link.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/favorite_branch.html32
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/go_into.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/index_base_search.html39
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/mass_artifact_editor.html30
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/osee_branching.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/contexts.xml9
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/delete_log.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.gifbin0 -> 12373 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.html39
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/refresh_log.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/contexts.xml19
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/index_search.html27
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/name_search.html26
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.gifbin0 -> 3783 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.html25
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/refresh_change_report.html26
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/reorder_links.html24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/resource_history_view.GIFbin0 -> 8409 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.html32
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.jpgbin0 -> 109605 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/revision_history_view.html27
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/show_change_report.html36
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/skynet_toc.xml35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.gifbin0 -> 18200 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.html40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.jpgbin0 -> 131904 bytes
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/table_customization.html61
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/toc.xml3
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRenderer.exsd112
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRendererTemplate.exsd119
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactReport.exsd105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/BlamOperation.exsd112
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/IgnorePublishAttribute.exsd102
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/OseeDictionary.exsd105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordMlProducer.exsd105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordOutlineContentHandler.exsd119
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/XWidgetProvider.exsd105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AdminContributionItem.java64
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArrayTreeContentProvider.java84
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactContentProvider.java181
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDoubleClick.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDragDropSupport.java156
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorer.java1354
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactLabelProvider.java91
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactListContentProvider.java100
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java738
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactViewerSorter.java28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeCellModifier.java124
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeContentProvider.java96
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeLabelProvider.java90
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeMenuSelectionListener.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributesComposite.java353
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/DefineHttpServerRequest.java106
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/GenerateParagraphNumbersAction.java115
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/HTMLTransferFormatter.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/IHelpContextIds.java19
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AbstractArtifactExtractor.java85
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactExtractor.java31
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportJob.java136
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPage.java439
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPageTest.java60
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportWizard.java197
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeImportType.java18
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeTypePage.java152
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportPage.java257
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportWizard.java93
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ExcelArtifactExtractor.java231
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IArtifactImportResolver.java23
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IWordOutlineContentHandler.java56
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaJob.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPage.java167
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPageTest.java32
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaWizard.java75
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/NativeDocumentExtractor.java58
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/OutlineContentHandlerPage.java164
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ReqNumbering.java58
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RootAndAttributeBasedArtifactResolver.java111
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughArtifact.java336
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughRelation.java91
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WholeWordDocumentExtractor.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordExtractor.java31
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineContentHandler.java71
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineExtractor.java276
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/LabelSorter.java101
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ModifyAttributesListener.java20
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseePreferencePage.java182
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationCellModifier.java79
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationContentProvider.java165
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationLabelProvider.java128
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationsComposite.java797
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetAuthenticationContributionItem.java111
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetConnectionContributionItem.java71
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetContributionItem.java97
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetDefaultBranchContributionItem.java68
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetGuiPlugin.java69
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetHttpServerApplication.java41
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java71
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/StringViewerSorter.java40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TableViewerReport.java99
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TagArtifactsJob.java92
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ToStringViewerSorter.java40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TreeViewerReport.java107
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XFormToolkit.java88
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XWidgetParser.java103
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/OseeSecurityManager.java132
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyDialog.java217
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyLabelProvider.java97
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableCellModifier.java85
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableViewer.java213
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/ArtifactPromptChange.java210
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSelectionDialog.java122
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/OpenArtifactAction.java58
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/RelationGroupDialog.java280
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/SkynetGuiArtifactFactory.java52
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AnnotationComposite.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AttributeAnnotationHandler.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractArtifactEditor.java83
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditor.java616
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorContributor.java107
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorInput.java105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/BrowserComposite.java89
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java318
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditorInput.java94
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactItem.java112
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassContentProvider.java134
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassLabelProvider.java96
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewer.java349
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewerFactory.java72
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshot.java127
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotFactory.java219
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotManager.java243
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/AtsOpenOption.java22
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IActionable.java25
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IAtsLib.java31
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/NoteType.java38
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/OseeAts.java223
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFactory.java46
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFinishedEvent.java36
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamJob.java113
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamParameter.java36
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamStartedEvent.java37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamVariableMap.java152
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamWorkflow.java158
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/DynamicBlamOperation.java88
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEvent.java18
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEventListener.java19
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OperationsPage.java59
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OverviewPage.java205
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowDataPage.java192
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowEditor.java118
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowJob.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/AddTemplate.java46
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/BlamOperation.java23
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteArchivedBranches.java29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteErroneousTagsFromWorkingBranches.java40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteSelectedAttributes.java53
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteTransaction.java35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/FindInvalidUTF8Chars.java57
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PrintBranchInfo.java39
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PurgeArtifactType.java69
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/RecursiveSaveOp.java29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/TagAllItems.java69
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateAttributeValues.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateFromParentBranch.java127
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateTemplates.java38
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchContentProvider.java456
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchCreationHandler.java139
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchLabelProvider.java347
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchSorter.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchView.java1523
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/FlatPresentationHandler.java29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/HierarchicalPresentationHandler.java29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/ParentBranchAction.java81
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/RootBranchWizard.java37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/SnapshotDescription.java64
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeRepolrt2ClickListener.java45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeReportView.java1418
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractArtifactSelectionHandler.java97
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractSelectionChangedHandler.java57
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CompressWordAttributesHandler.java105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CopyHandler.java97
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteTransactionHandler.java60
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/EditArtifactHandler.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ExportBranchAndDescendantsHandler.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/Handlers.java457
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportDescendantsOntoBranchHandler.java74
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportOntoBranchHandler.java66
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenArtifactsInAtsWorldHandler.java56
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenBranchAssociatedArtifactHandler.java93
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenInEditorHandler.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenMassArtifactEditorHandler.java53
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenSkywalkerEditorHandler.java47
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactHandler.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactNoRecurseHandler.java28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseCommand.java28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseHandler.java28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevealInArtifactExplorer.java43
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevertArtifactHandler.java224
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowArtifactInResourceHandler.java84
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowChangeReportHandler.java65
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowFinalVersionHandler.java65
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowPreviewHandler.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowResourceHistoryHandler.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/TagArtifactsHandler.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewChangeReportHandler.java59
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewWordChangeReportHandler.java107
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewerReportHandler.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesBetweenCurrentAndParentHandler.java97
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesMadeToHandler.java89
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesToParentHandler.java108
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/AddCommonBranch.java72
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/TagCommonBranchArtifacts.java60
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchJob.java63
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchPage.java136
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchWizard.java63
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ImportBranchJob.java234
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupContentProvider.java93
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupDragDropSupport.java142
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java660
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupLabelProvider.java70
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/UniversalGroupItem.java171
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/GeneralWordOutlineHandler.java124
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/SoftwareRequirementHandler.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryContentProvider.java91
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryLabelProvider.java123
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryView.java281
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/Transaction2ClickListener.java60
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactRequest.java206
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactTreeRequest.java130
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/BranchRequest.java107
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/HttpImageRequest.java84
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactDiffMenu.java139
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactPreviewMenu.java170
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTableViewerGlobalMenuHelper.java60
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTreeViewerGlobalMenuHelper.java57
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java275
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuListener.java40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuPermissions.java159
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/IGlobalMenuHelper.java28
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogContentProvider.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogLabelProvider.java89
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogView.java169
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogXViewerFactory.java59
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModel.java111
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelLabelProvider.java105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelList.java98
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/IArtifactListViewer.java35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/OnCloseListener.java17
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationExplorerWindow.java374
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableCellModifier.java105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableSorter.java94
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableViewer.java279
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ArtifactGuis.java125
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/BlamRenderer.java48
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java51
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditChangeListener.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditingFolderVisitor.java91
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileRenderer.java111
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileSystemRenderer.java165
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/IRenderer.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ITemplateRenderer.java25
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/NativeRenderer.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/PresentationType.java15
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/Renderer.java182
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java283
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/TemplateRenderer.java70
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactJob.java256
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateJob.java35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateNativeJob.java68
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UrlRenderer.java66
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordCompareTest.java143
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordRenderer.java562
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/IWordMlProducer.java22
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/SrsProducer.java156
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordMLProducer.java247
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateManager.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateProcessor.java798
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchQuery.java78
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchResult.java265
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchViewPage.java378
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactExportJob.java98
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchEngine.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java493
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchResult.java37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactTypeFilter.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeFindReplaceDialog.java238
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeValueFilter.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/CorruptedArtifactSearchFilter.java50
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/FilterArtifactSearchQuery.java80
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HistoricalArtifactSearchQuery.java47
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HridValueFilter.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/InRelationFilter.java61
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/IndexSearchFilter.java59
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/MaxMatchCountConfirmer.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/OrphanSearchFilter.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java304
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/SearchFilter.java76
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModel.java91
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelLabelProvider.java104
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelList.java99
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableCellModifier.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java182
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchComposite.java148
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchMainPage.java446
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/OriginalArtifactSearch.java215
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/SkynetArtifactAdapter.java187
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchRevisionListener.java69
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchSelectionListener.java37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/ListSelectionListener.java56
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/RevisionVerificationListener.java74
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeNodeCheckStateListener.java53
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeRefreshListener.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/ArtifactTypeNode.java42
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/AttributeTypeNode.java43
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/RelationTypeNode.java98
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/jobs/GetArtifactTypesFromRelationJob.java53
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/DataManager.java85
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/IDataListener.java16
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTreeSearchWidget.java160
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTypeListWidget.java139
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/IViewer.java20
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/RevisionSelectionWidget.java148
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ModificationReportJob.java88
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/RelationMatrixExportJob.java104
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportJob.java79
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportSelectionListener.java53
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactMatchAdapter.java36
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchContentProvider.java20
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchResultCollector.java51
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IFilterListViewer.java37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphContentProvider.java145
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphLabelProvider.java141
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ISkyWalkerOptionsChangeListener.java24
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/RelTypeContentProvider.java142
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerArtTypeTabItem.java154
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerLayoutTabItem.java168
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerOptions.java458
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerRelTypeTabItem.java140
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerShowAttributeTabItem.java105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerTabOptions.java37
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerView.java368
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactClipboard.java127
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactDescriptiveLabelProvider.java46
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameReverseSorter.java38
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameSorter.java38
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/AttributeCheckListDialog.java157
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/BranchSelectionDialog.java107
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ChangeType.java74
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EmailableJob.java80
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringMultiSelectionDialog.java109
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringSingleSelectionDialog.java42
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HierarchicalReportDialog.java79
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlExportTable.java122
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlReportJob.java204
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/IOseeDictionary.java20
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ImageCapture.java45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OSEELog.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeDictionary.java116
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeMainDictionary.java58
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ShowAttributeAction.java69
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetDragAndDrop.java203
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetGuiDebug.java40
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetSelections.java77
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetViews.java56
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/StringLabelProvider.java45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailGroup.java45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizard.java99
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizardPage.java295
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/filteredTree/OSEEFilteredTree.java74
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/Matrix.java146
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/MatrixItem.java63
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/ArtifactTypeContentProvider.java66
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/AttributeContentProvider.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/DefaultBranchContentProvider.java77
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/HyperLinkLabel.java112
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/IDamWidget.java21
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/RelationTypeContentProvider.java61
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/SkynetSpellModifyDictionary.java108
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XArtifactTypeListViewer.java32
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XAttributeTypeListViewer.java35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XBranchListViewer.java95
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBox.java191
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxDam.java94
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxViaAttribute.java57
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCombo.java342
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java87
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboViewer.java290
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDate.java292
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateAttribute.java59
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateDam.java132
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDragAndDrop.java46
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloat.java69
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatAttribute.java72
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatDam.java107
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelDam.java112
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java64
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java186
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XInteger.java60
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerAttribute.java55
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java125
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabel.java117
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelAttribute.java185
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelDam.java150
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XList.java451
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDam.java109
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDropViewer.java93
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListViewer.java366
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersCombo.java306
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersList.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XModifiedListener.java19
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercent.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercentAttribute.java38
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButton.java219
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonTest.java187
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonViaAttribute.java56
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtons.java332
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRelationTypeListViewer.java38
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java520
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextAttribute.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDam.java86
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDescriptiveName.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextResourceDropDam.java116
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellCheckPaintListener.java228
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellModifyDictionary.java21
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTypeListViewer.java29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java437
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/DateValue.java45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/EnumeratedValue.java52
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/PersonValue.java49
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/StringValue.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditor.java168
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditorValue.java27
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactCheckTreeDialog.java62
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactListDialog.java70
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeChildrenContentProvider.java116
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeContentProvider.java108
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ChangeTypeDialog.java113
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/CheckBoxDialog.java72
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/DateSelectionDialog.java105
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/Dialogs.java71
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java197
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/GroupListDialog.java33
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/HtmlDialog.java78
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ImageDialog.java106
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserCheckTreeDialog.java93
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserListDialog.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DefaultXWidgetOptionResolver.java35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayout.java348
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayoutData.java236
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IDynamicWidgetLayoutListener.java29
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetOptionResolver.java20
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetProvider.java22
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/UserCommunity.java54
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkFlow.java85
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPage.java247
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageButton.java94
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageLabelProvider.java42
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageSection.java61
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageViewSorter.java31
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/XWidgetFactory.java196
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateComposite.java152
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateContentProvider.java88
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItem.java68
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemAction.java76
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemSkynetTxJobItem.java80
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateLabelProvider.java74
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateUrlItem.java63
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewFilter.java52
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewItems.java35
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserHyperCmd.java52
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserListener.java112
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultData.java145
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultHtml.java64
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultPage.java239
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultView.java296
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultsComposite.java175
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/IXViewerFactory.java30
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XPromptChange.java108
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XSubMenuManager.java45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewer.java395
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumn.java304
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumnLabelProvider.java46
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerLabelProvider.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerSorter.java199
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerTextFilter.java50
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/ColumnData.java92
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizationDataSelectionDialog.java138
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeData.java163
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeDataLabelProvider.java53
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterData.java44
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterDataUI.java142
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizations.java33
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizeDefaults.java27
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/SortingData.java104
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizations.java67
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomize.java431
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDefaults.java58
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDialog.java762
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java196
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizeDefaults.java95
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetXViewerFactory.java96
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/XViewerCustomizationArtifact.java73
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/compareDocs.vbs68
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/notVisiblecompareDocs.vbs68
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/AllWords.txt134689
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README45
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README.txt5
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.0239
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.151
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.290
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.01835
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.1741
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.26767
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.01899
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.1743
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.26688
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.047158
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.120864
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.237616
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.319708
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement with Recursion.xml3
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement.xml3
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Subsystem Requirement.xml3
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW default.xml3
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL.xml3
-rw-r--r--MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL_RECURSE.xml3
651 files changed, 341418 insertions, 0 deletions
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.classpath b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.classpath
new file mode 100644
index 00000000000..02159672985
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.project b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.project
new file mode 100644
index 00000000000..3b9dc63340b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osee.framework.ui.skynet</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..644c0b52455
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF
@@ -0,0 +1,82 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Gui Plug-in (Incubation)
+Bundle-SymbolicName: org.eclipse.osee.framework.ui.skynet;singleton:=true
+Bundle-Version: 1.0.83.qualifier
+Bundle-Activator: org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.osee.framework.skynet.core,
+ org.eclipse.osee.framework.jdk.core,
+ org.eclipse.search,
+ org.eclipse.core.resources,
+ org.eclipse.nebula.widgets,
+ org.eclipse.osee.framework.ui.jdk,
+ org.eclipse.mylyn.zest.core,
+ org.eclipse.mylyn.zest.layouts,
+ javax.mail,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.update.core,
+ org.eclipse.ui.forms,
+ org.eclipse.help,
+ org.eclipse.osee.framework.messaging.event.skynet,
+ org.eclipse.osee.framework.database,
+ org.eclipse.ui.ide,
+ org.junit,
+ org.eclipse.osee.framework.plugin.core,
+ org.eclipse.osee.framework.ui.plugin,
+ org.eclipse.osee.framework.ui.swt,
+ org.eclipse.nebula.widgets,
+ org.eclipse.osee.framework.svn
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.osee.framework.ui.skynet,
+ org.eclipse.osee.framework.ui.skynet.Import,
+ org.eclipse.osee.framework.ui.skynet.access,
+ org.eclipse.osee.framework.ui.skynet.artifact,
+ org.eclipse.osee.framework.ui.skynet.artifact.annotation,
+ org.eclipse.osee.framework.ui.skynet.artifact.editor,
+ org.eclipse.osee.framework.ui.skynet.artifact.massEditor,
+ org.eclipse.osee.framework.ui.skynet.artifact.snapshot,
+ org.eclipse.osee.framework.ui.skynet.ats,
+ org.eclipse.osee.framework.ui.skynet.blam,
+ org.eclipse.osee.framework.ui.skynet.blam.operation,
+ org.eclipse.osee.framework.ui.skynet.branch,
+ org.eclipse.osee.framework.ui.skynet.changeReport,
+ org.eclipse.osee.framework.ui.skynet.commandHandlers,
+ org.eclipse.osee.framework.ui.skynet.dbinit,
+ org.eclipse.osee.framework.ui.skynet.export,
+ org.eclipse.osee.framework.ui.skynet.group,
+ org.eclipse.osee.framework.ui.skynet.handler,
+ org.eclipse.osee.framework.ui.skynet.history,
+ org.eclipse.osee.framework.ui.skynet.httpRequests,
+ org.eclipse.osee.framework.ui.skynet.menu,
+ org.eclipse.osee.framework.ui.skynet.queryLog,
+ org.eclipse.osee.framework.ui.skynet.relation.explorer,
+ org.eclipse.osee.framework.ui.skynet.render,
+ org.eclipse.osee.framework.ui.skynet.render.word,
+ org.eclipse.osee.framework.ui.skynet.search,
+ org.eclipse.osee.framework.ui.skynet.search.filter,
+ org.eclipse.osee.framework.ui.skynet.search.page,
+ org.eclipse.osee.framework.ui.skynet.search.page.actions,
+ org.eclipse.osee.framework.ui.skynet.search.page.data,
+ org.eclipse.osee.framework.ui.skynet.search.page.jobs,
+ org.eclipse.osee.framework.ui.skynet.search.page.manager,
+ org.eclipse.osee.framework.ui.skynet.search.page.widget,
+ org.eclipse.osee.framework.ui.skynet.search.report,
+ org.eclipse.osee.framework.ui.skynet.search.ui,
+ org.eclipse.osee.framework.ui.skynet.skywalker,
+ org.eclipse.osee.framework.ui.skynet.util,
+ org.eclipse.osee.framework.ui.skynet.util.email,
+ org.eclipse.osee.framework.ui.skynet.util.filteredTree,
+ org.eclipse.osee.framework.ui.skynet.util.matrix,
+ org.eclipse.osee.framework.ui.skynet.widgets,
+ org.eclipse.osee.framework.ui.skynet.widgets.cellEditor,
+ org.eclipse.osee.framework.ui.skynet.widgets.dialog,
+ org.eclipse.osee.framework.ui.skynet.widgets.workflow,
+ org.eclipse.osee.framework.ui.skynet.widgets.xnavigate,
+ org.eclipse.osee.framework.ui.skynet.widgets.xresults,
+ org.eclipse.osee.framework.ui.skynet.widgets.xviewer,
+ org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize,
+ org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet
+Bundle-Vendor: Eclipse.org
+Bundle-ClassPath: skynet.jar
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/Skynet GUI Tests.launch b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/Skynet GUI Tests.launch
new file mode 100644
index 00000000000..be4f84d5e47
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/Skynet GUI Tests.launch
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osee.framework.ui.skynet"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.osee.framework.ui.skynet"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osee.framework.ui.skynet"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.osee.framework.ui.product.osee"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="true"/>
+</launchConfiguration>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/build.properties b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/build.properties
new file mode 100644
index 00000000000..59ca1fabae1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/build.properties
@@ -0,0 +1,11 @@
+source.skynet.jar = src/
+output.skynet.jar = bin/
+bin.includes = META-INF/,\
+ skynet.jar,\
+ plugin.xml,\
+ images/,\
+ src/,\
+ support/,\
+ schema/,\
+ reference/,\
+ contexts/
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactExplorerContexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactExplorerContexts.xml
new file mode 100644
index 00000000000..1bd06142210
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactExplorerContexts.xml
@@ -0,0 +1,9 @@
+<contexts>
+ <context id="artifact_explorer_tree_viewer" title="Artifact Explorer">
+ <description>Displays artifacts in a relational hierarchy for navigation.</description>
+ <topic href="reference/creating_new_artifact.html" label="Creating a new artifact"/>
+ <topic href="reference/deleting_artifacts.html" label="Deleting artifacts"/>
+ <topic href="reference/go_into.html" label="Rooting on an artifact"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactSearchContexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactSearchContexts.xml
new file mode 100644
index 00000000000..421751998cd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/artifactSearchContexts.xml
@@ -0,0 +1,8 @@
+<contexts>
+ <context id="artifact_search" title="Artifact Search">
+ <description>Used to search for artifacts that are on the default branch.</description>
+ <topic label="Artifact Search Page" href="reference/artifact_search_page.html"/>
+ <topic label="Index Based Search" href="reference/index_base_search.html"/>
+ <topic label="Default Branch" href="reference/default_branch.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/branchManagerContexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/branchManagerContexts.xml
new file mode 100644
index 00000000000..2e6c395894d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/branchManagerContexts.xml
@@ -0,0 +1,30 @@
+<contexts>
+ <context id="branch_manager_default_branch_menu" title="Set Default Branch">
+ <description>Sets the selected branch as the default branch.</description>
+ <topic label="Default Branch" href="reference/default_branch.html"/>
+ </context>
+ <context id="branch_manager_favorite_branch_menu" title="Mark/Unmark Favorite Branch">
+ <description>Toggles a branch as being favorite.</description>
+ <topic label="Favorite Branch" href="reference/favorite_branch.html"/>
+ </context>
+ <context id="branch_manager_show_change_report_menu" title="Show Change Report">
+ <description>Shows the Change Report for a branch or range of transactions.</description>
+ <topic label="Show Change Report" href="reference/show_change_report.html"/>
+ </context>
+
+ <context id="branch_manager_filtering" title="Branch Manager">
+ <description>Displays branches that are available in Skynet.</description>
+ <topic label="Branch Manager" href="reference/branch_manager_view.html"/>
+ <topic label="Branch Filtering" href="reference/branch_filtering.html"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+ <context id="branch_manager_table" title="Branch Manager">
+ <description>Displays branches that are available in Skynet.</description>
+ <topic label="Branch Manager" href="reference/branch_manager_view.html"/>
+ <topic label="Branch Filtering" href="reference/branch_filtering.html"/>
+ <topic label="Default Branch" href="reference/default_branch.html"/>
+ <topic label="Favorite Branch" href="reference/favorite_branch.html"/>
+ <topic label="Show Change Report" href="reference/show_change_report.html"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/changeReportContexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/changeReportContexts.xml
new file mode 100644
index 00000000000..66568fcc60c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/changeReportContexts.xml
@@ -0,0 +1,9 @@
+<contexts>
+ <context id="change_report_table" title="Change Report">
+ <description>Shows changes made on a branch, or between two transactions.</description>
+ <topic label="Reading a Change Report" href="reference/change_table.html"/>
+ <topic label="Refresh a Change Report" href="reference/refresh_change_report.html"/>
+ <topic label="Show a Change Report" href="reference/show_change_report.html"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/contexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/contexts.xml
new file mode 100644
index 00000000000..d10a655a31d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/contexts.xml
@@ -0,0 +1,17 @@
+<contexts>
+ <context id="artifact_editor" title="Artifact Editor">
+ <description>Artifact Editor</description>
+ <topic href="reference/creating_new_links.html" label="Creating a new Link"/>
+ <topic href="reference/reorder_links.html" label="Reordering links"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+ <context id="artifact_explorer_tree" title="Artifact Explorer">
+ <description>Displays artifacts in a relational hierarchy for navigation.</description>
+ <topic href="reference/artifact_explorer_tree.html" label="Drag and Drop"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+ <context id="xResultView" title="Result View">
+ <description>Show reports, errors, metrics and other data in a multi-paged view with print, email and exporting capabilities.</description>
+ <topic href="reference/result_view.html" label="Result View"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/relationPageContexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/relationPageContexts.xml
new file mode 100644
index 00000000000..206eaa31833
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/relationPageContexts.xml
@@ -0,0 +1,9 @@
+<contexts>
+ <context id="relation_page_tree_viewer" title="Relation Page">
+ <description>An editor to support relation link creation, modification and deletion.</description>
+ <topic href="reference/creating_new_links.html" label="Creating a new Link"/>
+ <topic href="reference/deleting_link.html" label="Deleting a Link"/>
+ <topic href="reference/reorder_links.html" label="Reordering links"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/revisionHistoryContexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/revisionHistoryContexts.xml
new file mode 100644
index 00000000000..8540e29b8d7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/contexts/revisionHistoryContexts.xml
@@ -0,0 +1,8 @@
+<contexts>
+ <context id="revision_history_tree_viewer" title="Revision History">
+ <description>Displays the history on an artifact.</description>
+ <topic href="reference/revision_history_view.html" label="Resource History"/>
+ <topic href="reference/compare_two_artifacts.html" label="Compare two Artifacts"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/A.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/A.gif
new file mode 100644
index 00000000000..6a18beda16c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/A.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/WordMlImport.bmp b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/WordMlImport.bmp
new file mode 100644
index 00000000000..7b9bfb83400
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/WordMlImport.bmp
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/accept.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/accept.gif
new file mode 100644
index 00000000000..9cacb96dca9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/accept.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/add.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/add.gif
new file mode 100644
index 00000000000..252d7ebcb8c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/add.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.gif
new file mode 100644
index 00000000000..a29e9d58613
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.xcf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.xcf
new file mode 100644
index 00000000000..6dcb4509c3c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact.xcf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.gif
new file mode 100644
index 00000000000..23b46a83e46
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.xcf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.xcf
new file mode 100644
index 00000000000..48e981efdda
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_explorer.xcf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_search.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_search.gif
new file mode 100644
index 00000000000..799d3d5686c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/artifact_search.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/aspect.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/aspect.gif
new file mode 100644
index 00000000000..11d750ac0f2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/aspect.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/authenticated.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/authenticated.gif
new file mode 100644
index 00000000000..c9170d9ca9c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/authenticated.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/back.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/back.gif
new file mode 100644
index 00000000000..4fb41501036
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/back.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/black_check.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/black_check.gif
new file mode 100644
index 00000000000..bbb54c95ab9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/black_check.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch.gif
new file mode 100644
index 00000000000..9c4a6755758
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.gif
new file mode 100644
index 00000000000..9fec358955b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.xcf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.xcf
new file mode 100644
index 00000000000..02566fca3e1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/branch_change.xcf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/bug.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/bug.gif
new file mode 100644
index 00000000000..9a738e55054
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/bug.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/change_managed_branch.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/change_managed_branch.gif
new file mode 100644
index 00000000000..5211f45e5fd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/change_managed_branch.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_disabled.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_disabled.gif
new file mode 100644
index 00000000000..7aa131aedb6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_disabled.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_enabled.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_enabled.gif
new file mode 100644
index 00000000000..9cacb96dca9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/chkbox_enabled.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/clear.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/clear.gif
new file mode 100644
index 00000000000..af30a42f83d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/clear.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/collapseAll.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/collapseAll.gif
new file mode 100644
index 00000000000..a2d80a9044f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/collapseAll.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customize.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customize.gif
new file mode 100644
index 00000000000..e9540ff77dd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customize.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeD.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeD.gif
new file mode 100644
index 00000000000..f0ce638b800
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeD.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeG.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeG.gif
new file mode 100644
index 00000000000..7447efda55d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeG.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeP.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeP.gif
new file mode 100644
index 00000000000..3e88710663b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizeP.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizePersonal.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizePersonal.gif
new file mode 100644
index 00000000000..b6d9161b68f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/customizePersonal.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/delete_edit.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/delete_edit.gif
new file mode 100644
index 00000000000..b6922ac11cf
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/delete_edit.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/down.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/down.gif
new file mode 100644
index 00000000000..072b1844572
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/down.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/duplicate.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/duplicate.gif
new file mode 100644
index 00000000000..dc549bce841
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/duplicate.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit.gif
new file mode 100644
index 00000000000..95b8e17c761
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit2.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit2.gif
new file mode 100644
index 00000000000..94eedf6f929
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit2.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit_artifact.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit_artifact.gif
new file mode 100644
index 00000000000..571844ca4b1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/edit_artifact.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/email.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/email.gif
new file mode 100644
index 00000000000..2cb69621de8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/email.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/expandAll.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/expandAll.gif
new file mode 100644
index 00000000000..0205b29176d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/expandAll.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/export.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/export.gif
new file mode 100644
index 00000000000..d11c996e570
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/export.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/filter.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/filter.gif
new file mode 100644
index 00000000000..3d061d77cbe
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/filter.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/flat_layout.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/flat_layout.gif
new file mode 100644
index 00000000000..1ef74cf98f4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/flat_layout.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gear.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gear.gif
new file mode 100644
index 00000000000..272eec37d74
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gear.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gears.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gears.gif
new file mode 100644
index 00000000000..86683b8bd64
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/gears.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenBug.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenBug.gif
new file mode 100644
index 00000000000..b0dfd3ba982
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenBug.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenPlus.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenPlus.gif
new file mode 100644
index 00000000000..252d7ebcb8c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/greenPlus.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/green_light.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/green_light.gif
new file mode 100644
index 00000000000..d5d9bdf15a7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/green_light.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/group.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/group.gif
new file mode 100644
index 00000000000..5ba5b91c5bb
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/group.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/help.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/help.gif
new file mode 100644
index 00000000000..9d70301dae3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/help.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/issue.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/issue.gif
new file mode 100644
index 00000000000..2da001e3e98
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/issue.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_16_16.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_16_16.gif
new file mode 100644
index 00000000000..b29b25ee454
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_16_16.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_8_8.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_8_8.gif
new file mode 100644
index 00000000000..c7c1b6c15f7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/laser_8_8.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/load.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/load.gif
new file mode 100644
index 00000000000..51e703b1b9c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/load.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/lockkey.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/lockkey.gif
new file mode 100644
index 00000000000..fca03252afd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/lockkey.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/magnify.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/magnify.gif
new file mode 100644
index 00000000000..f7b8f99ec59
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/magnify.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/major.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/major.gif
new file mode 100644
index 00000000000..609dbb7269c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/major.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/minor.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/minor.gif
new file mode 100644
index 00000000000..cd83b96c201
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/minor.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_backward.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_backward.gif
new file mode 100644
index 00000000000..740e8cae8da
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_backward.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_forward.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_forward.gif
new file mode 100644
index 00000000000..19567890aa8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/nav_forward.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/newTask.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/newTask.gif
new file mode 100644
index 00000000000..b4807550386
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/newTask.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.gif
new file mode 100644
index 00000000000..e512465d3ea
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.xcf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.xcf
new file mode 100644
index 00000000000..13f3d002e37
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/not_equal.xcf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.gif
new file mode 100644
index 00000000000..d5ba9d48faa
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.xcf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.xcf
new file mode 100644
index 00000000000..3905f8c792b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/old.xcf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/preview_artifact.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/preview_artifact.gif
new file mode 100644
index 00000000000..b9c7ff9918c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/preview_artifact.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/print.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/print.gif
new file mode 100644
index 00000000000..045de755326
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/print.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/product.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/product.gif
new file mode 100644
index 00000000000..346a94d0201
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/product.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.gif
new file mode 100644
index 00000000000..e32b79455ff
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.xcf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.xcf
new file mode 100644
index 00000000000..29d9cc37f1c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/query_log.xcf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redExclaim.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redExclaim.gif
new file mode 100644
index 00000000000..3f43a29d901
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redExclaim.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redRemove.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redRemove.gif
new file mode 100644
index 00000000000..6f647666d32
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/redRemove.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_light.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_light.gif
new file mode 100644
index 00000000000..7d132b6c1a8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_light.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_slash.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_slash.gif
new file mode 100644
index 00000000000..3c355e2708a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_slash.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_user_sm.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_user_sm.gif
new file mode 100644
index 00000000000..f91ca279748
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/red_user_sm.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/refresh.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/refresh.gif
new file mode 100644
index 00000000000..a063c230aca
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/refresh.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/reject.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/reject.gif
new file mode 100644
index 00000000000..c1751c3ff4f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/reject.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/relate.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/relate.gif
new file mode 100644
index 00000000000..870934b6934
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/relate.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/remove.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/remove.gif
new file mode 100644
index 00000000000..2cd9c544436
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/remove.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/removeAll.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/removeAll.gif
new file mode 100644
index 00000000000..28a3785aaca
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/removeAll.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/repository.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/repository.gif
new file mode 100644
index 00000000000..0470e1588d9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/repository.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/results.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/results.gif
new file mode 100644
index 00000000000..4c882068b69
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/results.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/run_exc.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/run_exc.gif
new file mode 100644
index 00000000000..57f410224cf
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/run_exc.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/save.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/save.gif
new file mode 100644
index 00000000000..499dd0ca602
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/save.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/skywalker.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/skywalker.gif
new file mode 100644
index 00000000000..695e5a5cfa5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/skywalker.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/sort.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/sort.gif
new file mode 100644
index 00000000000..2029de0e30e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/sort.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star.gif
new file mode 100644
index 00000000000..f1c09d57db8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star_9_9.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star_9_9.gif
new file mode 100644
index 00000000000..e96e43ea722
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/star_9_9.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/task.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/task.gif
new file mode 100644
index 00000000000..36fc007591a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/task.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/test_procedure.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/test_procedure.gif
new file mode 100644
index 00000000000..af2fd7e42a2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/test_procedure.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction.gif
new file mode 100644
index 00000000000..0bf73dc5ca0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction_detail.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction_detail.gif
new file mode 100644
index 00000000000..8564bb7760d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/transaction_detail.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/tree_layout.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/tree_layout.gif
new file mode 100644
index 00000000000..234486172ca
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/tree_layout.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/up.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/up.gif
new file mode 100644
index 00000000000..07164754e5c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/up.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user.gif
new file mode 100644
index 00000000000..5e6e549598a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user_sm.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user_sm.gif
new file mode 100644
index 00000000000..d2780011574
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/user_sm.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/users2.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/users2.gif
new file mode 100644
index 00000000000..d28c326dea2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/images/users2.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/plugin.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/plugin.xml
new file mode 100644
index 00000000000..335ba8ef3d2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/plugin.xml
@@ -0,0 +1,465 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by Boeing (BOEING SHARED SERVICES GROUP) -->
+<?eclipse version="3.0"?>
+<plugin
+>
+ <extension-point id="ArtifactRenderer" name="ArtifactRenderer" schema="schema/ArtifactRenderer.exsd"/>
+ <extension-point id="ArtifactReport" name="ArtifactReport" schema="schema/ArtifactReport.exsd"/>
+ <extension-point id="BlamOperation" name="BlamOperation" schema="schema/BlamOperation.exsd"/>
+ <extension-point id="WordMlProducer" name="WordMlProducer" schema="schema/WordMlProducer.exsd"/>
+ <extension-point id="WordOutlineContentHandler" name="WordOutlineContentHandler" schema="schema/WordOutlineContentHandler.exsd"/>
+ <extension-point id="ArtifactRendererTemplate" name="ArtifactRendererTemplate" schema="schema/ArtifactRendererTemplate.exsd"/>
+ <extension-point id="OseeDictionary" name="OseeDictionary" schema="schema/OseeDictionary.exsd"/>
+ <extension-point id="XWidgetProvider" name="XWidgetProvider" schema="schema/XWidgetProvider.exsd"/>
+ <extension-point id="IgnorePublishAttribute" name="IgnorePublishAttribute" schema="schema/IgnorePublishAttribute.exsd"/>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.copy.command"
+ name="Copy">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.openInEdit.command"
+ name="Open">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.OpenMassEditcommand"
+ name="Mass Edit">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.openArtifactsInAtsWorld.command"
+ name="Open in ATS">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.skywalker.command"
+ name="SKy Walker">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.edit.command"
+ name="Edit">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.revealArtifactInExplorer.command"
+ name="Reveal Artifact in Explorer">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.resource.command"
+ name="Resource History">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.previewArtifact.command"
+ name="Preview Artifact">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.previewArtifactRecurse.command"
+ name="Preview with child recursion">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.openInAtsWorld"
+ name="Open in ATS World">
+ </command>
+ <command
+ id="org.eclipse.osee.framework.ui.skynet.viewerReport"
+ name="View Viewer Report">
+ </command>
+ </extension>
+ <extension name="Put commands of BranchView here (for now)" point="org.eclipse.ui.commands">
+ <command description="Show the branches in a flat listing" id="org.eclipse.osee.framework.ui.skynet.branch.branchView.flatPresentation.command" name="Flat">
+ </command>
+ <command description="Show the branches in a hierarchical listing" id="org.eclipse.osee.framework.ui.skynet.branch.branchView.hierarchicalPresentation.command" name="Hierarchical">
+ </command>
+ </extension>
+ <extension name="Put commands of ChangeReportView here (for now)" point="org.eclipse.ui.commands">
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesMadeTo.command" name="Word changes made to...">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesBetweenCurrentAndParent.command" name="Word differences between current/parent branches">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesToParent.command" name="Word changes made to parent branch since creating current branch">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.revertArtifact.command" name="Revert Artifact...">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.viewWordChangeReport.command" name="View Word Change Report">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.viewChangeReport.command" name="View Change Report">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.compressWordAttributes.command" name="Compress Word Attributes">
+ </command>
+ <command id="org.eclipse.osee.framework.ui.skynet.changeReportView.tagArtifacts.command" name="Tag Artifact(s)">
+ </command>
+ </extension>
+ <extension name="Put commands of ATSWorldView here (for now)" point="org.eclipse.ui.commands">
+ <command id="org.eclipse.osee.ats.worldXView.editChangeType.command" name="Edit Change Type">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.editPriority.command" name="Edit Priority">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.editTargetedVersion.command" name="Edit Targeted Version">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.editActionableItems.command" name="Edit Actionable Items">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.convertToActionableItemTeam.command" name="Convert to Actionable Item/Team">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.openInATSEditor.command" name="Open in ATS Editor">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.openInArtifactEditor.command" name="Open in Artifact Editor">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.deletePurgeATSObject.command" name="Delete/Purge ATS Object">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.addAsFavorite.command" name="Add as Favorite">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.subscribeForNotifications.command" name="Subscribe for Notifications">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.email.command" name="Email">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.resetActionOffChildren.command" name="Reset Action off Children">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.clearAllSorting.command" name="Clear All Sorting">
+ </command>
+ <command id="org.eclipse.osee.ats.worldXView.tableCustomization.command" name="Table Customization">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler class="org.eclipse.osee.framework.ui.skynet.branch.FlatPresentationHandler" commandId="org.eclipse.osee.framework.ui.skynet.branch.branchView.flatPresentation.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.branch.HierarchicalPresentationHandler" commandId="org.eclipse.osee.framework.ui.skynet.branch.branchView.hierarchicalPresentation.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.CopyHandler" commandId="org.eclipse.osee.framework.ui.skynet.copy.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.ViewerReportHandler" commandId="org.eclipse.osee.framework.ui.skynet.viewerReport.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.PreviewArtifactNoRecurseHandler" commandId="org.eclipse.osee.framework.ui.skynet.previewArtifact.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.PreviewArtifactWithRecurseCommand" commandId="org.eclipse.osee.framework.ui.skynet.previewArtifactRecurse.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.EditArtifactHandler" commandId="org.eclipse.osee.framework.ui.skynet.edit.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.OpenInEditorHandler" commandId="org.eclipse.osee.framework.ui.skynet.openInEdit.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.OpenMassArtifactEditorHandler" commandId="org.eclipse.osee.framework.ui.skynet.OpenMassEditcommand">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.OpenSkywalkerEditorHandler" commandId="org.eclipse.osee.framework.ui.skynet.skywalker.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.OpenArtifactsInAtsWorldHandler" commandId="org.eclipse.osee.framework.ui.skynet.openArtifactsInAtsWorld.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.ShowChangeReportHandler" commandId="org.eclipse.osee.framework.ui.skynet.showChangeReport.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.DeleteTransactionHandler" commandId="org.eclipse.osee.framework.ui.skynet.deleteTransaction.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.OpenBranchAssociatedArtifactHandler" commandId="org.eclipse.osee.framework.ui.skynet.openAssociatedArtifact.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.ViewWordChangeReportHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.viewWordChangeReport.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.ViewChangeReportHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.viewChangeReport.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.CompressWordAttributesHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.compressWordAttributes.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.ShowResourceHistoryHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.showResourceHistory.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.WordChangesToParentHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesToParent.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.WordChangesBetweenCurrentAndParentHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesBetweenCurrentAndParent.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.WordChangesMadeToHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesMadeTo.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.RevertArtifactHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.revertArtifact.command">
+ </handler>
+ <handler class="org.eclipse.osee.framework.ui.skynet.commandHandlers.TagArtifactsHandler" commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.tagArtifacts.command">
+ </handler>
+ <handler
+ class="org.eclipse.osee.framework.ui.skynet.commandHandlers.RevealInArtifactExplorer"
+ commandId="org.eclipse.osee.framework.ui.skynet.revealArtifactInExplorer.command">
+ </handler>
+ <handler
+ class="org.eclipse.osee.framework.ui.skynet.commandHandlers.ViewerReportHandler"
+ commandId="org.eclipse.osee.framework.ui.skynet.viewerReport">
+ </handler>
+ </extension>
+ <extension name="The menus for the Branch View." point="org.eclipse.ui.menus">
+ <menuContribution locationURI="menu:org.eclipse.osee.framework.ui.skynet.branch.BranchView">
+ <menu label="Branch Presentation">
+ <command commandId="org.eclipse.osee.framework.ui.skynet.branch.branchView.flatPresentation.command" icon="images/flat_layout.gif" id="org.eclipse.osee.framework.ui.skynet.branch.BranchView.flatCommand" style="radio" tooltip="Show branches as a flat listing">
+ </command>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.branch.branchView.hierarchicalPresentation.command" icon="images/tree_layout.gif" id="org.eclipse.osee.framework.ui.skynet.branch.BranchView.hierarchicalCommand" style="radio" tooltip="Show branches as a hierarchical listing">
+ </command>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ locationURI="popup:org.eclipse.osee.framework.ui.skynet.branch.BranchView">
+ <command
+ commandId="org.eclipse.osee.framework.ui.skynet.copy.command">
+ </command>
+ </menuContribution>
+ </extension>
+ <extension name="The menus for the ChangeReportView." point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView?after=Top">
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesMadeTo.command">
+ </command>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesBetweenCurrentAndParent.command">
+ </command>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.wordChangesToParent.command">
+ </command>
+ <separator name="org.eclipse.osee.framework.ui.skynet.ChangeReportView.wordChangesToParent.separator" visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.osee.framework.ui.skynet.openInEdit.command"
+ label="Show Final Version">
+ </command>
+ <menu label="Preview">
+ <command commandId="org.eclipse.osee.framework.ui.skynet.previewArtifact.command">
+ </command>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.previewArtifactRecurse.command">
+ </command>
+ </menu>
+ <separator name="org.eclipse.osee.framework.ui.skynet.changeReportView.previewArtifactRecurse.separator" visible="true">
+ </separator>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.revealArtifactInExplorer.command">
+ </command>
+ <separator name="org.eclipse.osee.framework.ui.skynet.changeReportView.revealArtifactInExplorer.separator" visible="true">
+ </separator>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.revertArtifact.command">
+ </command>
+ <separator name="org.eclipse.osee.framework.ui.skynet.changeReportView.revertArtifact.separator" visible="true">
+ </separator>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.viewWordChangeReport.command">
+ </command>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.viewerReport">
+ </command>
+ <separator name="org.eclipse.osee.framework.ui.skynet.viewerReport.separator" visible="true">
+ </separator>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.copy.command">
+ </command>
+ <separator name="org.eclipse.osee.framework.ui.skynet.changeReportView.copy.separator" visible="true">
+ </separator>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.compressWordAttributes.command">
+ </command>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.changeReportView.tagArtifacts.command">
+ </command>
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView?after=BeyondParentDiff">
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView?after=BeyondRevertArtifact">
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView?after=BeyondPreview">
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView?after=BeyondChangeReport">
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView?after=BeyondCopy">
+ </menuContribution>
+ </extension>
+ <extension name="The menus for the SearchResultsView." point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:org.eclipse.osee.framework.ui.skynet.ArtifactSearchView">
+ <command commandId="org.eclipse.osee.framework.ui.skynet.skywalker.command">
+ </command>
+ <separator name="artifactSearchViewCopySeparator" visible="true">
+ </separator>
+ <command commandId="org.eclipse.osee.framework.ui.skynet.copy.command">
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.commandImages">
+ <image commandId="org.eclipse.osee.framework.ui.skynet.copy.command" icon="images/email.gif">
+ </image>
+ <image commandId="org.eclipse.osee.framework.ui.skynet.resource.command" icon="images/edit.gif">
+ </image>
+ <image commandId="org.eclipse.osee.framework.ui.skynet.previewArtifactRecurse.command" icon="images/preview_artifact.gif">
+ </image>
+ <image commandId="org.eclipse.osee.framework.ui.skynet.previewArtifact.command" icon="images/preview_artifact.gif">
+ </image>
+ <image commandId="org.eclipse.osee.framework.ui.skynet.edit.command" icon="images/edit_artifact.gif">
+ </image>
+ <image
+ commandId="org.eclipse.osee.framework.ui.skynet.revealArtifactInExplorer.command"
+ icon="images/magnify.gif">
+ </image>
+ </extension>
+ <extension point="org.eclipse.ui.importWizards">
+ <wizard category="org.eclipse.osee.define.import.category" class="org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportWizard" icon="images/WordMlImport.bmp" id="org.eclipse.osee.framework.ui.skynet.artifact.Import.ImportWizard" name="MS Office Documentation">
+ <description>
+ Import WordML documents into an existing Define project.
+ </description>
+ </wizard>
+ <wizard category="org.eclipse.osee.define.import.category" class="org.eclipse.osee.framework.ui.skynet.Import.ImportMetaWizard" icon="images/gears.gif" id="osee.define.artifact.Import.ImportMetaWizard" name="Skynet Types">
+ <description>
+ Import Skynet configuration information.
+ </description>
+ </wizard>
+ <wizard category="org.eclipse.osee.define.import.category" class="org.eclipse.osee.framework.ui.skynet.Import.BranchImportWizard" icon="images/branch.gif" id="org.eclipse.osee.framework.ui.skynet.BranchImportWizard" name="Branch">
+ <description>
+ Import a branch export XML file on to a Branch in Skynet.
+ </description>
+ </wizard>
+ <category id="org.eclipse.osee.define.import.category" name="OSEE">
+ </category>
+ </extension>
+ <extension point="org.eclipse.ui.editors">
+ <editor class="org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor" contributorClass="org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditorContributor" default="false" icon="images/laser_16_16.gif" id="org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor" name="Artifact Editor"/>
+ <editor class="org.eclipse.osee.framework.ui.skynet.blam.WorkflowEditor" default="false" icon="images/laser_16_16.gif" id="org.eclipse.osee.framework.ui.skynet.blam.WorkflowEditor" name="Blam Workflow Editor"/>
+ <editor class="org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor" default="false" icon="images/laser_16_16.gif" id="org.eclipse.osee.framework.ui.skynet.massEditor.MassArtifactEditor" name="Mass Artifact Editor"/>
+ </extension>
+ <extension point="org.eclipse.ui.preferencePages">
+ <page class="org.eclipse.osee.framework.ui.skynet.OseePreferencePage" name="OSEE" id="org.eclipse.osee.framework.ui.skynet.OseePreferencePage"/>
+ </extension>
+ <extension point="org.eclipse.ui.startup">
+ <startup class="org.eclipse.osee.framework.skynet.core.linking.HttpServerStartup"/>
+ </extension>
+ <extension point="org.eclipse.help.contexts">
+ <contexts file="contexts/artifactExplorerContexts.xml"/>
+ <contexts file="contexts/artifactSearchContexts.xml"/>
+ <contexts file="contexts/branchManagerContexts.xml"/>
+ <contexts file="contexts/changeReportContexts.xml"/>
+ <contexts file="contexts/contexts.xml"/>
+ <contexts file="contexts/relationPageContexts.xml"/>
+ <contexts file="contexts/revisionHistoryContexts.xml"/>
+ <contexts file="reference/queryLog/contexts.xml"/>
+ <contexts file="reference/quickSearch/contexts.xml"/>
+ <contexts file="reference/contexts.xml"/>
+ </extension>
+ <extension point="org.eclipse.help.toc">
+ <toc file="reference/toc.xml" primary="true"/>
+ <toc file="reference/skynet_toc.xml" primary="false"/>
+ </extension>
+ <extension id="org.eclipse.osee.framework.ui.skynet" name="OSEE" point="org.eclipse.ui.views">
+ <view class="org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultView" icon="images/results.gif" category="osee.jdk.core.category" name="Results" id="org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultView">
+ </view>
+ <view allowMultiple="true" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.ArtifactExplorer" icon="images/artifact_explorer.gif" id="org.eclipse.osee.framework.ui.skynet.ArtifactExplorer" name="Artifact Explorer"/>
+ <view allowMultiple="true" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.group.GroupExplorer" icon="images/group.gif" id="org.eclipse.osee.framework.ui.skynet.group.GroupExplorer" name="OSEE Group Explorer"/>
+ <category id="osee.jdk.core.category" name="OSEE"/>
+ <view allowMultiple="true" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView" icon="images/edit.gif" id="org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView" name="Resource History"/>
+ <view allowMultiple="false" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.branch.BranchView" icon="images/branch.gif" id="org.eclipse.osee.framework.ui.skynet.branch.BranchView" name="Branch Manager"/>
+ <view allowMultiple="true" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView" icon="images/branch_change.gif" id="org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView" name="Change Report"/>
+ <view allowMultiple="false" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.queryLog.QueryLogView" icon="images/query_log.gif" id="org.eclipse.osee.framework.ui.skynet.QueryLogView" name="Query Log"/>
+ <view allowMultiple="false" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.search.QuickSearchView" icon="images/artifact_search.gif" id="org.eclipse.osee.framework.ui.skynet.QuickSearchView" name="Quick Search"/>
+ <view allowMultiple="true" category="osee.jdk.core.category" class="org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView" icon="images/skywalker.gif" id="org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView" name="Sky Walker"/>
+ </extension>
+ <extension point="org.eclipse.search.searchPages">
+ <page canSearchEnclosingProjects="true" class="org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchPage" enabled="true" extensions="&quot;*:1&quot;" icon="images/artifact_search.gif" id="org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchPage" label="Artifact Search" showScopeSection="false" sizeHint="&quot;250,250&quot;" tabPosition="1"/>
+ </extension>
+ <extension point="org.eclipse.search.searchResultViewPages">
+ <viewPage class="org.eclipse.osee.framework.ui.skynet.ArtifactSearchViewPage" id="org.eclipse.osee.framework.ui.skynet.ArtifactSearchViewPage" searchResultClass="org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchResult"/>
+ </extension>
+ <extension point="org.eclipse.ui.newWizards">
+ <wizard class="org.eclipse.osee.framework.ui.skynet.branch.RootBranchWizard" icon="images/branch.gif" id="org.eclipse.osee.framework.ui.skynet.rootBranchWizard" name="Root Branch">
+ </wizard>
+ </extension>
+ <extension point="org.eclipse.osee.framework.ui.skynet.ArtifactReport">
+ <report class="org.eclipse.osee.framework.ui.skynet.search.report.ModificationReportJob"/>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.ArtifactFactory">
+ <ArtifactFactory classname="org.eclipse.osee.framework.ui.skynet.artifact.SkynetGuiArtifactFactory"/>
+ <ArtifactFactory classname="org.eclipse.osee.framework.ui.skynet.blam.BlamFactory"/>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.HttpServerRequest">
+ <IHttpServerRequest classname="org.eclipse.osee.framework.ui.skynet.DefineHttpServerRequest"/>
+ </extension>
+ <extension id="SrsProducer" name="SrsProducer" point="org.eclipse.osee.framework.ui.skynet.WordMlProducer">
+ <producer class="org.eclipse.osee.framework.ui.skynet.render.word.SrsProducer"/>
+ </extension>
+ <extension id="RecursiveSaveOp" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.RecursiveSaveOp"/>
+ </extension>
+ <extension id="TagAllItems" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.TagAllItems"/>
+ </extension>
+ <extension id="UniqueNumberOfCurrentOseeUsers" name="Unique Number Of Current Osee Users" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.UniqueNumberOfCurrentOseeUsers"/>
+ </extension>
+ <extension id="DeleteTransaction" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.DeleteTransaction"/>
+ </extension>
+ <extension id="UpdateTemplates" name="Update Templates" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.UpdateTemplates"/>
+ </extension>
+ <extension id="FindInvalidUTF8Chars" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.FindInvalidUTF8Chars"/>
+ </extension>
+ <extension id="DeleteSelectedAttributes" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.DeleteSelectedAttributes"/>
+ </extension>
+ <extension id="AddTemplate" name="Add Word Template" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.AddTemplate"/>
+ </extension>
+ <extension id="UpdateAttributeValues" name="Update Attribute Values" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.UpdateAttributeValues"/>
+ </extension>
+ <extension id="UpdateFromParentBranch" name="Update From Parent Branch" point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.UpdateFromParentBranch"/>
+ </extension>
+ <extension
+ id="DeleteErroneousTagsFromWorkingBranches"
+ name="Delete Erroneous Tags From Working Branches"
+ point="org.eclipse.osee.framework.ui.skynet.BlamOperation">
+ <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.DeleteErroneousTagsFromWorkingBranches"/>
+ </extension>
+ <extension id="native" point="org.eclipse.osee.framework.ui.skynet.ArtifactRenderer">
+ <Renderer classname="org.eclipse.osee.framework.ui.skynet.render.NativeRenderer"/>
+ </extension>
+ <extension id="word" point="org.eclipse.osee.framework.ui.skynet.ArtifactRenderer">
+ <Renderer classname="org.eclipse.osee.framework.ui.skynet.render.WordRenderer"/>
+ </extension>
+ <extension id="url" point="org.eclipse.osee.framework.ui.skynet.ArtifactRenderer">
+ <Renderer classname="org.eclipse.osee.framework.ui.skynet.render.UrlRenderer"/>
+ </extension>
+ <extension id="default" point="org.eclipse.osee.framework.ui.skynet.ArtifactRenderer">
+ <Renderer classname="org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer"/>
+ </extension>
+ <extension id="blam" point="org.eclipse.osee.framework.ui.skynet.ArtifactRenderer">
+ <Renderer classname="org.eclipse.osee.framework.ui.skynet.render.BlamRenderer"/>
+ </extension>
+ <extension point="org.eclipse.osee.framework.ui.skynet.ArtifactRendererTemplate">
+ <Template presentationType="ALL" templateFile="support/templates/PREVIEW default.xml" templateName="default"/>
+ <Template presentationType="ALL" templateFile="support/templates/PREVIEW Software Requirement.xml" templateName="Software Requirement"/>
+ <Template presentationType="ALL" templateFile="support/templates/PREVIEW Subsystem Requirement.xml" templateName="Subsystem Requirement"/>
+ </extension>
+ <extension point="org.eclipse.osee.framework.ui.skynet.WordOutlineContentHandler">
+ <Handler class="org.eclipse.osee.framework.ui.skynet.handler.GeneralWordOutlineHandler" id="org.eclipse.osee.framework.ui.skynet.GeneralWordOutlineHandler" name="General Outline Documents"/>
+ </extension>
+ <extension point="org.eclipse.osee.framework.ui.skynet.OseeDictionary">
+ <OseeDictionary classname="org.eclipse.osee.framework.ui.skynet.widgets.SkynetSpellModifyDictionary"/>
+ <OseeDictionary classname="org.eclipse.osee.framework.ui.skynet.util.OseeMainDictionary"/>
+ </extension>
+ <extension id="TagCommonBranchArtifacts" name="Tag Common Branch Artifacts" point="org.eclipse.osee.framework.database.IDbInitializationTask">
+ <DatabaseTask classname="org.eclipse.osee.framework.ui.skynet.dbinit.TagCommonBranchArtifacts">
+ </DatabaseTask>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.TaggerCustomization">
+ <ignoreSkynetAttribute attributeName="Word Template">
+ </ignoreSkynetAttribute>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.ArtifactAnnotation">
+ <ArtifactAnnotation classname="org.eclipse.osee.framework.ui.skynet.artifact.annotation.AttributeAnnotationHandler">
+ </ArtifactAnnotation>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.HttpServerRequest">
+ <IHttpServerRequest classname="org.eclipse.osee.framework.ui.skynet.httpRequests.ArtifactRequest">
+ </IHttpServerRequest>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.HttpServerRequest">
+ <IHttpServerRequest classname="org.eclipse.osee.framework.ui.skynet.httpRequests.BranchRequest">
+ </IHttpServerRequest>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.HttpServerRequest">
+ <IHttpServerRequest classname="org.eclipse.osee.framework.ui.skynet.httpRequests.ArtifactTreeRequest">
+ </IHttpServerRequest>
+ </extension>
+ <extension point="org.eclipse.osee.framework.skynet.core.HttpServerRequest">
+ <IHttpServerRequest classname="org.eclipse.osee.framework.ui.skynet.httpRequests.HttpImageRequest">
+ </IHttpServerRequest>
+ </extension>
+ <extension id="SkynetHttpServer" name="SkynetHttpServer" point="org.eclipse.core.runtime.applications">
+ <application>
+ <run class="org.eclipse.osee.framework.ui.skynet.SkynetHttpServerApplication">
+ </run>
+ </application>
+ </extension>
+ <extension id="AddCommonBranch" name="AddCommonBranch" point="org.eclipse.osee.framework.database.IDbInitializationTask">
+ <DatabaseTask classname="org.eclipse.osee.framework.ui.skynet.dbinit.AddCommonBranch">
+ </DatabaseTask>
+ </extension>
+ <extension id="AddCommonBranch" name="AddCommonBranch" point="org.eclipse.osee.framework.database.IDbInitializationTask">
+ <DatabaseTask classname="org.eclipse.osee.framework.ui.skynet.dbinit.AddCommonBranch">
+ </DatabaseTask>
+ </extension>
+ <extension point="org.eclipse.ui.bindings">
+ <key commandId="org.eclipse.osee.framework.ui.skynet.copy.command" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+C">
+ </key>
+ </extension>
+</plugin>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram README.txt b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram README.txt
new file mode 100644
index 00000000000..45b4a3d68c6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram README.txt
@@ -0,0 +1,2 @@
+OSEE Branch Diagram.pdf and OSEE Branch Differences.pdf come from
+the osee.doc/approach/demos/OSEE Branch Diagram.ppt \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram.pdf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram.pdf
new file mode 100644
index 00000000000..5f224cc8041
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Diagram.pdf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Differences.pdf b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Differences.pdf
new file mode 100644
index 00000000000..123f195f609
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/OSEE Branch Differences.pdf
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_explorer_tree.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_explorer_tree.html
new file mode 100644
index 00000000000..fa7fb0cba02
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_explorer_tree.html
@@ -0,0 +1,34 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Artifact Explorer</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Drag and Drop</h1>
+ <h2>Purpose</h2>
+ <p>Artifacts dragged from the explorer produce different results depending on the application they are dropped onto. While artifacts dropped onto the explorer produce a new Default Hierarchal Relationship with the target artifact as the parent and the source as the child.</p>
+
+ <h2>Dragging An Artifact From The Artifact Explorer</h2>
+ <ul>
+ <li>If an artifact is dragged from the explorer into a Word document a hyper link will be created with the artifact name in text and when selected it will open the artifact in the Artifact Editor.</li>
+ <li>If an artifact is dragged into a Text File the name of the artifact will be written inside the document.</li>
+ <li>If an artifact is dragged into a relation in the Relational View of the Artifact Editor a new relation will be created with the source artifact and the target artifact in the editor.</li>
+ <li>If an artifact is dragged within the Artifact Explorer the original Default Hierarchal Relation will be deleted and a new one be created whith the target artifact.</li>
+ </ul>
+
+ <h2>Dropping Onto The Artifact Explorer</h2>
+ <ul>
+ <li>If a file is dropped onto the Artifact Explorer a new artifact will be created with the contents of the source file and a new Default Hierarchal Relationship.</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.gif
new file mode 100644
index 00000000000..3b4ddb4eee6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.html
new file mode 100644
index 00000000000..835508dd4c1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/artifact_search_page.html
@@ -0,0 +1,39 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Artifact Search</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Artifact Search</h1>
+ <br/>
+ <img src="artifact_search_page.gif"/>
+ <h2>What it is</h2>
+ The search page in the Eclipse Search window for finding artifacts on the default branch.
+ <h2>How to use it</h2>
+ <p>The Artifact Search page works by building a list of filters which that
+ describe the desired artifacts. Filter types are selected from the drop down at the top
+ of the page. After completing the options for the filter, pressing the <i>Add Filter</i>
+ button will add the filter to the list of filters. If the <i>Not Equal</i> option is checked,
+ then it will be added with the <img src="../images/not_equal.gif"/> image signifying that the
+ complement of the filter will be used.</p>
+ <p>Filters can be removed from the list at anytime by selecting the <img src="../../osee.core/images/remove.gif"/>
+ next to the filter.</p>
+ <p>The radio buttons in the <i>Artifacts that match</i> frame are used to control whether artifacts are returned
+ that match every filter listed or at least one filter listed.</p>
+ <p>Once all of the options have been filled out, the Search button can be pressed to start the search against the
+ default branch. For convenience the default branch is stated at the top of the search page. If
+ a large number of artifacts will be returned then a confirmation will be displayed with a count of the
+ artifacts that are about to be loaded.</p>
+ <p>The Search button will not be enabled until there is at least one filter in the list.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_filtering.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_filtering.html
new file mode 100644
index 00000000000..384b9d11ab1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_filtering.html
@@ -0,0 +1,26 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Branch Filtering</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Branch Filtering</h1>
+ <h2>What it is</h2>
+ A quick way to limit which branches are displayed in the Branch Manager view.
+ <h2>How to do it</h2>
+ Type text in to the box labeled <i>Filter:</i>. As characters are typed, the Branch Manager
+ will update to only display branches whose name contains the text, ignoring the case.<br/>
+ <br/>
+ If no text is entered then all branches will be displayed.
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_manager_view.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_manager_view.html
new file mode 100644
index 00000000000..1a9e415e2d7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_manager_view.html
@@ -0,0 +1,39 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Branch Manager View</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Branch Manager View</h1>
+ <br/>
+ <img src="branch_view.gif"/>
+ <h2>Purpose</h2>
+ <p>The Branch Manager View is used to display all of the branches in Skynet, as well as details for the transactions on each branch.</p>
+ <p>Branches and transactions can be sorted by clicking on the column heading for the column to sort by. Initially, the data will be sorted in
+ ascending order. Clicking the same column multiple times will toggle the sorting between ascending and descending.</p>
+ <p>Locating branches can also be aided by <a href="branch_filtering.html"/>filtering</a> or using <a href="favorite_branch.html">favorites</a>.</p>
+ <h2>Icons</h2>
+ <ul>
+ <li><img src="../images/branch.gif"/> Base image for branches</li>
+ <li><img src="../images/change_managed_branch.gif"/> Base image for branches that are under change managment</li>
+ <li><img src="../images/black_check.gif"/> Overlay to mark branch as the default</li>
+ <li><img src="../images/star_9_9.gif"/> Overlay to mark branch as a favorite</li>
+ <li><img src="../images/transaction.gif"/> Image for transactions</li>
+ <li><img src="../images/relate.gif"/> Base image for relation links</li>
+ <li><img src="../../osee.skynet/images/molecule.gif"/> Base image for attributes</li>
+ <li><img src="../../osee.skynet/images/out_new.gif"/> Overlay to mark item as new</li>
+ <li><img src="../../osee.skynet/images/out_change.gif"/> Overlay to mark item as modified</li>
+ <li><img src="../../osee.skynet/images/out_delete.gif"/> Overlay to mark item as deleted</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_view.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_view.gif
new file mode 100644
index 00000000000..023e2ef8f91
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/branch_view.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_report_view.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_report_view.gif
new file mode 100644
index 00000000000..5f1abc3bb16
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_report_view.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_table.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_table.html
new file mode 100644
index 00000000000..95ea978242c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/change_table.html
@@ -0,0 +1,51 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Change Report View</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Change Report View</h1>
+ <br/>
+ <img src="change_report_view.gif"/>
+ <h2>Purpose</h2>
+ <p>The Change Report View is used to summarize the changes that have been made on a branch or series of transactions.</p>
+ <h2>Icons</h2>
+ <ul>
+ <li><img src="../images/relate.gif"/> Base image for relation links</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/molecule.gif"/> Base image for attributes</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/inc_new.gif"/> Overlay to mark item as an incoming new item</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/inc_change.gif"/> Overlay to mark item as an incoming modification</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/inc_delete.gif"/> Overlay to mark item as an incoming delete</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/out_new.gif"/> Overlay to mark item as an outgoing new item</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/out_change.gif"/> Overlay to mark item as an outgoing modification</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/out_delete.gif"/> Overlay to mark item as an outgoing delete</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/con_new.gif"/> Overlay to mark an item as being new but having incoming changes</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/con_change.gif"/> Overlay to mark an item as having incoming and outgoing changes</li>
+ <li><img src="../../org.eclipse.osee.framework.skynet.core/images/con_delete.gif"/> Overlay to mark an item as being deleted but having incoming changes</li>
+ </ul>
+ <h2>Branch Change Report</h2>
+ <p>A Change Report can be performed for a branch two ways. The first way is by selecting right-clicking a branch
+ from the Branch Manager then choosing the "Show Change Report" menu item. The second way is to select
+ "Show Change Report" from the Aspect view of an ATS Action that is still in work; this will do a Change
+ Report for the working branch of the Aspect.</p>
+ <p>This type of Change Report will display all of the artifacts on the branch that have had an attribute
+ or relation link modified. It will also do conflict detection on these artifacts against the parent branch.
+ All changes done on the current artifact will appear with a grey right arrow<img src="../../org.eclipse.osee.framework.skynet.core/images/out_change.gif"/>, while all changes from the
+ parent branch will be shown with a blue left arrow<img src="../../org.eclipse.osee.framework.skynet.core/images/inc_change.gif"/>. Attributes and relation links with multiple changes will
+ provide a summarized node that shows the final effect of the changes and can be expanded to view all of the
+ minor changes that were made. If an attribute or relation link was modified on both
+ branches then the summary will show a red conflict mark<img src="../../org.eclipse.osee.framework.skynet.core/images/con_change.gif"/> to signify that a commit will cause an override
+ to occur.
+
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/compare_two_artifacts.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/compare_two_artifacts.html
new file mode 100644
index 00000000000..e0d10d4e913
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/compare_two_artifacts.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>compare tow artifacts</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Compare two artifacts</h1>
+ <h2>What it is</h2>
+ <p> It compares two artifact's word contents to each other.</p>
+
+ <h2>How to do it</h2>
+ <p>Select two artifacts and right click and select “Compare two Artifacts”. A word document will be displayed showing the differences between each of the artifact’s word content.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/contexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/contexts.xml
new file mode 100644
index 00000000000..841eba6ee12
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/contexts.xml
@@ -0,0 +1,11 @@
+<contexts>
+ <context id="table_customization" title="Table Customization">
+ <description>Allows the table to be customized, saved and loaded.</description>
+ <topic label="Table Customization" href="reference/table_customization.html"/>
+ </context>
+ <context id="mass_artifact_editor" title="Mass Artifact Editor">
+ <description>Allows viewing and editing of attributes from multiple artifacts.</description>
+ <topic label="Mass Artifact Editor" href="reference/mass_artifact_editor.html"/>
+ <topic label="Table Customization" href="reference/table_customization.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/create_branch.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/create_branch.html
new file mode 100644
index 00000000000..091d282812f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/create_branch.html
@@ -0,0 +1,40 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Default Branch</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Default Branch</h1>
+ <h2>What it is</h2>
+ The branch which is returned to any program that asks for the current default branch. For instance,
+ the Artifact Explorer will use the default branch to determine what artifacts to show, and artifact
+ searches are performed against the default branch.
+ <h2>How to tell what the default branch is</h2>
+ The Branch Manager view shows all of the branches with the <img src="../images/branch.gif"/> icon.<br/>
+ <br/>
+ The default branch will have a <img src="../images/black_check.gif"/> at the top right of the normal branch icon.<br/>
+ <br/>
+ Most views and editors that are working with artifacts will show the branch in the status bar next to the branch icon.
+ <h2>How to set it</h2>
+ The default branch is set from the Branch Manager view. Use sorting or filtering in the table to find the
+ desired branch. Right-click on the branch and then select <i>Set Default Branch</i> from the popup menu.<br/>
+ <br/>
+ The <i>Set Default Branch</i> option will be disabled if any of the following cases are true:
+ <ul>
+ <li>The branch selected is already the default</li>
+ <li>The item selected is not a branch</li>
+ <li>More than one item is selected</li>
+ </ul>
+
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_artifact.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_artifact.html
new file mode 100644
index 00000000000..c4044bb2d7b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_artifact.html
@@ -0,0 +1,27 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Creating a new artifact</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Creating a new Artifact</h1>
+ <h2>What it is</h2>
+ <p>New artifacts can be created from the Artifact Explorer.</p>
+
+ <h2>How to do it</h2>
+ <ul>
+ <li>A new artifact may be created from the right click menu by selecting the "New Child" menu item, then next the artifact type.</li>
+ <li>A new artifact may be created from a file by selecting the file and dragging it into the Artifact Explorer</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_links.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_links.html
new file mode 100644
index 00000000000..1a7212b0ccd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/creating_new_links.html
@@ -0,0 +1,28 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Creating a new Link</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Creating a new Link</h1>
+ <h2>What it is</h2>
+ <p>Linking artifacts to each other.</p>
+
+ <h2>How to do it</h2>
+ <p>New relation links can be created one of two ways.</p>
+ <ul>
+ <li>If the relation link group desired exists on the artifact a new link may be created by dragging another artifact onto the relation link group. </li>
+ <li>If the relation group does not already exist a new relation group may be created by right clicking in the relation page then select “New Relation” and selecting the desired relation group. Only valid relation groups for the specific artifact will be enabling in the menu list. Menus where either artifact can be valid for either side will contain “…” after the text. When selected a dialog box will be displayed where the relation side of the source artifact will be placed.</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/default_branch.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/default_branch.html
new file mode 100644
index 00000000000..6aa4ee847c1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/default_branch.html
@@ -0,0 +1,40 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Default Branch</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Default Branch</h1>
+ <h2>What it is</h2>
+ The branch which is returned to any program that asks for the current default branch. For instance,
+ the Artifact Explorer will use the default branch to determine what artifacts to show, and artifact
+ searches are performed against the default branch.
+ <h2>How to tell what the default branch is</h2>
+ The Branch Manager view shows all of the branches with the <img src="../images/branch.gif"/> icon.<br/>
+ <br/>
+ The default branch will have a <img src="../images/black_check.gif"/> at the top right of the normal branch icon.<br/>
+ <br/>
+ Most views and editors that are working with artifacts will show the branch in the status bar next to the branch icon.
+ <h2>How to set it</h2>
+ The default branch is set from the Branch Manager view. Use sorting or <a href="branch_filtering.html"/>filtering</a> in the table to find the
+ desired branch. Right-click on the branch and then select <i>Set Default Branch</i> from the popup menu.<br/>
+ <br/>
+ The <i>Set Default Branch</i> option will be disabled if any of the following cases are true:
+ <ul>
+ <li>The branch selected is already the default</li>
+ <li>The item selected is not a branch</li>
+ <li>More than one item is selected</li>
+ </ul>
+
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_artifacts.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_artifacts.html
new file mode 100644
index 00000000000..1c6b1ab2813
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_artifacts.html
@@ -0,0 +1,29 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Deleting Artifacts</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Deleting Artifacts</h1>
+ <h2>What it is</h2>
+ <p>Artifacts may be deleted from the Artifact Explorer.
+ <br>
+ <b>Caution</b> should be taken in performing this task because along with the artifact all of its default hierarchy children will also be deleted.</p>
+
+ <h2>How to do it</h2>
+ <p>To delete an artifact and its children select the desired artifact and the right click, next select the “Delete Artifact” menu item. A dialog will be displayed asking for deletion confirmation.</p>
+ <br>
+ <h2>Note:</h2>
+ <p>An artifact may also be deleted by selecting an artifact and pressing the delete key.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_link.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_link.html
new file mode 100644
index 00000000000..3bca9d0a247
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/deleting_link.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Deleting a Link</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Deleting a Link</h1>
+ <h2>What it is</h2>
+ <p>Removing a link between two artifacts.</p>
+
+ <h2>How to do it</h2>
+ <p>A link can de deleted by selecting the desired link to be removed then right clicking and selecting the “Delete” menu item. A dialog will be displayed for confirmation.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/favorite_branch.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/favorite_branch.html
new file mode 100644
index 00000000000..bc959644be3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/favorite_branch.html
@@ -0,0 +1,32 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Favorite Branch</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Favorite Branch</h1>
+ <h2>What it is</h2>
+ A branch that the user has marked as a favorite. Any number of branches can be marked as favorite. This is
+ used in conjunction with the <img src="../images/filter.gif"/>Show Favorites First filter to quickly locate
+ branches of interest.
+ <h2>How to tell which branches are favorites</h2>
+ The Branch Manager view shows all of the branches with the <img src="../images/branch.gif"/> icon.<br/>
+ <br/>
+ A favorite branch will have a <img src="../images/star_9_9.gif"/> at the bottom left of the normal branch icon.
+ <h2>How to set/unset it</h2>
+ A favorite branch is set from the Branch Manager view. Use sorting or filtering in the table to find the
+ desired branch. Right-click on the branch and then select <i>Mark As Favorite</i>
+ or <i>Unmark As Favorite</i> from the popup menu.<br/>
+ <br/>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/go_into.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/go_into.html
new file mode 100644
index 00000000000..c0a84494335
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/go_into.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Rooting on an artifact</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Rooting on an artifact</h1>
+ <h2>What it is</h2>
+ <p>It changes the root artifact in the Artifact Explorer to the selected artifact.</p>
+
+ <h2>How to do it</h2>
+ <p>Select the desired artifact from the Artifact Explorer right click and select the “Go Into” menu item.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/index_base_search.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/index_base_search.html
new file mode 100644
index 00000000000..afb2a91e7f0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/index_base_search.html
@@ -0,0 +1,39 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Index Based Searching</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Index Based Searching</h1>
+ <h2>What it is</h2>
+ Artifacts in Skynet all go through an indexing process when they are saved. Each attribute is analyzed during this process
+ to produce a list of tags that are then associated with the artifact. Index based searching then uses these tags to search
+ for the artifacts.
+ <h2>How Attributes Become Tags</h2>
+ The Skynet System relies on Taggers to produce tags for the attributes of a particular artifact. The TaggerManager
+ supplies the best tagger for an artifact. The tagger then processes all attributes to produce a set of tags. All tags
+ are tokenized (separator discarded) on ASCII characters 0-32, 34 ("), and 127 (delete).<br/>
+ <br/>
+ <b>Example:</b> If a tag was <i>"Hello"</i> it would become <i>Hello</i>, and if it was <i>"Hello"World</i> it would become 2 tags, <i>Hello</i> and <i>World</i>.<br/>
+ <br/>
+ Next, all the tags are split (separators kept) on ASCII characters 33 – 47, 58 – 64, 91 – 96, and 123 – 126( all standard ASCII
+ characters that are not in A-Z, a-z, or 0-9).<br/>
+ <br/>
+ <b>Example:</b> If a tag was <i>12+34+56=102</i> it would become 6 tags, <i>12</i>, <i>+</i>, <i>34</i>, <i>56</i>, <i>=</i>, and <i>102</i>.<br/>
+ <br/>
+ If no specialized tagger is available then the BaseTagger is used. The BaseTagger treats all attributes as plain-text,
+ except for Word Formatted Content which is converted to a plain-text format. Tags are then generated by splitting the text
+ on white-space.
+
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/mass_artifact_editor.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/mass_artifact_editor.html
new file mode 100644
index 00000000000..e1128ea9c81
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/mass_artifact_editor.html
@@ -0,0 +1,30 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Mass Artifact Editor</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Mass Artifact Editor</h1>
+ <h2>Purpose</h2>
+ <p>The Mass Artifact Editor allows the easy view of multiple artifact along with their attributes.
+ This editor can be viewed from right-click off Artifact Explorer, Search Results page, or via
+ ATS action. Single cells can be edited via Alt-Left-Mouse-Click. After editing any number of
+ artifacts shown, the save button persists this data.</p>
+ <p>Note: This editor will close upon switch of default branch unless the editor is tied to
+ the common branch.</p>
+ <h2>Actions</h2>
+ Select <img src="../images/refresh.gif"/> to refresh the contents.<br/>
+ Select <img src="../images/customize.gif"/> to <A href="table_customization.html"/>Customize Table</A>.<br/>
+ Select <img src="../images/bug.gif"/> to <A href="../../osee.ats/reference/report_a_bug.html"/>Report a Bug</A>.<br/>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/osee_branching.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/osee_branching.html
new file mode 100644
index 00000000000..09c856e02ff
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/osee_branching.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+<head>
+<title>OSEE Branching and Differences Diagrams</title>
+<LINK rel="stylesheet" type="text/css"
+ href="../../osee.help/html/style.css">
+</head>
+
+<body>
+<h1>OSEE Branching and Differences Diagrams</h1>
+<a href="OSEE Branch Diagram.pdf">OSEE Branching Diagram</a>
+<br />
+<a href="OSEE Branch Differences.pdf">OSEE Differeces Diagram</a>
+<br />
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/contexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/contexts.xml
new file mode 100644
index 00000000000..0134f0df1d9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/contexts.xml
@@ -0,0 +1,9 @@
+<contexts>
+ <context id="query_log_table" title="Query Log">
+ <description>Displays queries that have been run, along with their run time, bind variables, and the time when they were ran. If a SQLException occurred during execution then it will also be shown.</description>
+ <topic label="Query Log" href="reference/queryLog/query_log_view.html"/>
+ <topic label="Refreshing the log" href="reference/queryLog/refresh_log.html"/>
+ <topic label="Deleting the log" href="reference/queryLog/delete_log.html"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/delete_log.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/delete_log.html
new file mode 100644
index 00000000000..7b21c3c40e0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/delete_log.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Delete Query Log</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Delete Query Log</h1>
+ <h2>Purpose</h2>
+ Deletes all of the recorded queries from the log then refreshes the view. The log has a max capacity and once it is met
+ no more entries will be added, so deleting the log will be necessary to see any new queries that are being performed.
+ <h2>How to do it</h2>
+ Select the delete button (<img src="../../images/delete_edit.gif"/>) from the toolbar on the top portion of the Query Log view.<br/>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.gif
new file mode 100644
index 00000000000..d341f477a53
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.html
new file mode 100644
index 00000000000..cd0f0327126
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/query_log_view.html
@@ -0,0 +1,39 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Query Log View</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Query Log View</h1>
+ <br/>
+ <img src="query_log_view.gif"/>
+ <h2>Purpose</h2>
+ <p>The Query Log view is used to review queries that have been run for the purpose of debugging. Details about the query
+ such as how long it took to run, if any bind variables were passed, or if an SQL Exception was thrown while attempting to
+ execute the query are all available. Run time is only reported for queries that executed successfully.</p>
+ <p>Queries can be sorted by clicking on the column heading for the column to sort by. Initially, the data will be sorted in
+ ascending order. Clicking the same column multiple times will toggle the sorting between ascending and descending. The table
+ can be sorted on multiple columns by holding the CTRL key and selecting columns in the order which they should be sorted.</p>
+ <h2>Shortcuts</h2>
+ <ul>
+ <li><b>CTRL+A</b> - Select all items displayed</li>
+ <li><b>CTRL+C</b> - Copy the current selected item to the clipboard.
+ <ul>
+ <li>SQL Item - Copies the full SQL Text</li>
+ <li>Bind Variable - Copies the bind variable value, not including the type. Binary data not supported</li>
+ <li>Exception - Copies the exception and stack trace</li>
+ </ul></li>
+ <li><b>CTRL+X</b> - Fully expand selected items</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/refresh_log.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/refresh_log.html
new file mode 100644
index 00000000000..2f66f1dc2df
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/queryLog/refresh_log.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Refresh Query Log</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Refresh Query Log</h1>
+ <h2>Purpose</h2>
+ Repopulates the view with the latest information from the query log. The log has a max capacity and once it is met
+ no more entries will be added. This can be taken care of by <a href="delete_log.html">deleting the log contents</a>.
+ <h2>How to do it</h2>
+ Select the refresh button (<img src="../../images/refresh.gif"/>) from the toolbar on the top portion of the Query Log view.<br/>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/contexts.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/contexts.xml
new file mode 100644
index 00000000000..ab19f99afa7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/contexts.xml
@@ -0,0 +1,19 @@
+<contexts>
+ <context id="quick_search_text" title="Quick Search">
+ <description>Provides quick access to search for artifacts by name or by index</description>
+ <topic label="Quick Search" href="reference/quickSearch/quick_search_view.html"/>
+ <topic label="Name Search" href="reference/quickSearch/name_search.html"/>
+ <topic label="Index Search" href="reference/quickSearch/index_search.html"/>
+ <topic label="Report a bug" href="../osee.ats/reference/report_a_bug.html"/>
+ </context>
+ <context id="quick_search_name_radio" title="Quick Search">
+ <description>Provides quick access to search for artifacts by name or by index</description>
+ <topic label="Quick Search" href="reference/quickSearch/quick_search_view.html"/>
+ <topic label="Name Search" href="reference/quickSearch/name_search.html"/>
+ </context>
+ <context id="quick_search_index_radio" title="Quick Search">
+ <description>Provides quick access to search for artifacts by name or by index</description>
+ <topic label="Quick Search" href="reference/quickSearch/quick_search_view.html"/>
+ <topic label="Index Search" href="reference/quickSearch/index_search.html"/>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/index_search.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/index_search.html
new file mode 100644
index 00000000000..d6874699605
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/index_search.html
@@ -0,0 +1,27 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Index Search</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Index Search</h1>
+ <h2>What it is</h2>
+ <p>An option to search for artifacts with particular tags on the default branch. The * wildcard is <b>not</b> supported.</p>
+ <h2>How to do it</h2>
+ <p>Type in all of the desired tags. Make sure the <i>Index</i> option is selected
+ under <i>Search Type</i>, then press the <i>Search</i> button.</p>
+ <p>The index searching can be tightened or loosened with the <i>Case-sensitive</i> and <i>Partial Match</i> check boxes.</p>
+ <h2>Shortcuts</h2>
+ <p>Pressing enter in the text entry box is equivalent to pressing the <i>Search</i> button.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/name_search.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/name_search.html
new file mode 100644
index 00000000000..59d5fa684c3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/name_search.html
@@ -0,0 +1,26 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Name Search</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Name Search</h1>
+ <h2>What it is</h2>
+ <p>An option to search for artifacts with a particular name on the default branch. The * wildcard is supported.</p>
+ <h2>How to do it</h2>
+ <p>Type the name of the artifact(s) to search for, using *'s where desired. Make sure the <i>Name</i> option is selected
+ under <i>Search Type</i>, then press the <i>Search</i> button.</p>
+ <h2>Shortcuts</h2>
+ <p>Pressing enter in the text entry box is equivalent to pressing the <i>Search</i> button.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.gif
new file mode 100644
index 00000000000..089d0d0cb52
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.html
new file mode 100644
index 00000000000..6fdb7e129e2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/quickSearch/quick_search_view.html
@@ -0,0 +1,25 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Quick View</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Quick Search View</h1>
+ <br/>
+ <img src="quick_search_view.gif"/>
+ <h2>Purpose</h2>
+ <p>The Quick Search view provides quick access to searching by name and by index on the default branch.</p>
+ <h2>Shortcuts</h2>
+ <p>Pressing enter in the text entry box is equivalent to pressing the <i>Search</i> button.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/refresh_change_report.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/refresh_change_report.html
new file mode 100644
index 00000000000..878148fb7f9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/refresh_change_report.html
@@ -0,0 +1,26 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Refresh Change Report</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Refresh Change Report</h1>
+ <h2>Purpose</h2>
+ Forces the Change Report to be recomputed. This is typically used when the Change Report snapshot has become out of date,
+ noted by a <img src="../images/old.gif"/> next to the snapshot description on the first line of the Change Report.
+ <h2>How to do it</h2>
+ Select the refresh button (<img src="../images/refresh.gif"/>) from the toolbar on the top portion of the Change Report view.<br/>
+ <br/>
+ If the Change Report view is empty then the refresh button will do nothing.
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/reorder_links.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/reorder_links.html
new file mode 100644
index 00000000000..ec2d9af382d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/reorder_links.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Reordering Links</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Reordering Links</h1>
+ <h2>What it is</h2>
+ <p>A way to change the link ordering of a relation group. The results from link reordering will be reflected in the Relation Page and the Artifact Explorer.</p>
+
+ <h2>How to do it</h2>
+ <p>Relation links may be reordered within the same relation link group by selecting the link and dropping it into the desired location. Since the target indicator is displayed after the selected artifact pressing the ctrl key will shift the indicator to before the artifact, therefore allowing artifacts to be moved to the bottom of the link group.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/resource_history_view.GIF b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/resource_history_view.GIF
new file mode 100644
index 00000000000..39e5a3fd205
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/resource_history_view.GIF
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.html
new file mode 100644
index 00000000000..243d6fb9d89
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.html
@@ -0,0 +1,32 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>ATS Result View</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Result View</h1>
+ <br/>
+ <img src="result_view.jpg"/>
+ <h2>Purpose</h2>
+ Show reports, errors, metrics and other data in a multi-paged view with print, email and exporting capabilities.
+ <h2>How to do it</h2>
+ This view pops up automatically when OSEE needs to report larger amounts of data to the user.
+ <h2>Actions</h2>
+ Select <img src="../images/print.gif"/> to print the current window.<br/>
+ Select <img src="../images/email.gif"/> to email the current results view to an OSEE user.<br/>
+ Select <img src="../images/export.gif"/> to export the current table into a comma seperated value file.<br/>
+ <h2>Mulit-page</h2>
+ Selecting the down arrow will show a list of all pages that have been displayed during the current instance
+ of OSEE running. Selecting from this list will display the previous page.
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.jpg b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.jpg
new file mode 100644
index 00000000000..b71a732fbf4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/result_view.jpg
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/revision_history_view.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/revision_history_view.html
new file mode 100644
index 00000000000..16a5322d454
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/revision_history_view.html
@@ -0,0 +1,27 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Resource History View</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Resource History View</h1>
+ <br/>
+ <img src="resource_history_view.gif"/>
+ <h2>Purpose</h2>
+ <p>The Revision History is a view that displays the change history of an artifact.</p>
+ <h2>Icons</h2>
+ <ul>
+ <li><img src="../images/transaction.gif"/> Image for transactions</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/show_change_report.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/show_change_report.html
new file mode 100644
index 00000000000..c70f8597e26
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/show_change_report.html
@@ -0,0 +1,36 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Show Change Report</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Show Change Report</h1>
+ <h2>What it is</h2>
+ A view that shows all of the changes made on a branch, or between two transactions on the same branch.
+ <h2>How to do it</h2>
+ <h3>For a branch</h3>
+ Use <a href="branch_filtering.html">filtering</a> or sorting to locate the branch of interest. Right-click
+ the branch and select <i>Show Change Report</i>. The change report will show all changes made on the branch
+ since its baseline.<br/>
+ <br/>
+ If anything is selected in addition to the one branch, then the <i>Show Change Report</i> menu item will be disabled.
+ <h3>For a range of transactions</h3>
+ Use <a href="branch_filtering.html">filtering</a> or sorting to locate the branch with the transactions. Then locate the
+ starting and ending transactions. Select both of the transactions by ctrl-clicking each transaction, then right-click
+ and select <i>Show Change Report</i>. The change report will show all changes after the earlier transaction, up to and
+ including the later transaction.<br/>
+ <br/>
+ If anything is selected in addition to the two transactions, or the two transactions are on seperate branches,
+ the <i>Show Change Report</i> menu item will be disabled.
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/skynet_toc.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/skynet_toc.xml
new file mode 100644
index 00000000000..6b09e0095d8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/skynet_toc.xml
@@ -0,0 +1,35 @@
+<toc label="OSEE Application Framework">
+ <topic label="Views and Editors">
+ <topic label="Branch Manager"
+ href="reference/branch_manager_view.html">
+ <topic label="Default Branch"
+ href="reference/default_branch.html" />
+ <topic label="Favorite Branch"
+ href="reference/favorite_branch.html" />
+ <topic label="Filtering"
+ href="reference/branch_filtering.html" />
+ <topic label="Show Change Report"
+ href="reference/show_change_report.html" />
+ </topic>
+ <topic label="Change Report"
+ href="reference/change_table.html">
+ <topic label="Refresh"
+ href="reference/refresh_change_report.html" />
+ </topic>
+ </topic>
+ <topic label="Searching">
+ <topic label="Index Based Searching"
+ href="reference/index_base_search.html" />
+ </topic>
+ <topic label="Table Customization">
+ <topic label="Table Customization"
+ href="reference/table_customization.html" />
+ </topic>
+ <topic label="Spell Checking">
+ <topic label="Spell Checking" href="reference/spell_check.html" />
+ </topic>
+ <topic label="OSEE Branching and Differences Diagrams">
+ <topic label="OSEE Branching and Differences Diagrams"
+ href="reference/osee_branching.html" />
+ </topic>
+</toc>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.gif b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.gif
new file mode 100644
index 00000000000..51299b49c03
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.gif
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.html
new file mode 100644
index 00000000000..c3f73125701
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.html
@@ -0,0 +1,40 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>OSEE Spell Checking</title>
+ </head>
+
+ <body>
+ <h1>OSEE Spell Checking</h1>
+ <br/>
+ <img src="spell_check.jpg"/>
+ <h2>Purpose</h2>
+ Enable data entered in OSEE to be spell checked.
+ <h2>How to do it</h2>
+ As data is entered into OSEE spell-checked fields, a blue line will be displayed if the word is not recognized.
+ Only lower-case words or words with only first character uppercase will be spell checked. Acronyms, words with
+ special characters, numbers and single letter words will be ignored.
+ <h2>Main Dictionary</h2>
+ OSEE has a main dictionary included in it's release. See below for it's source, copyrights and credits.
+ <h2>Additional Released Dictionaries</h2>
+ Additionally dictionaries can be added to OSEE via extension points. These can only be
+ modified by hand and thus included in normal release cycle.
+ <h2>Run-time Global Dictionary</h2>
+ Each OSEE user is able to add words to a Global dictionary stored in the database by right-clicking on the word
+ underlined in blue and selecting to save global. These words are stored in the "Global Preferences" artifact
+ and will then be shown as a valid word in all users's spell checking.
+ <h2>Run-time Personal Dictionary</h2>
+ Each OSEE user is able to add words to their Personal dictionary stored in the database by right-clicking on the word
+ underlined in blue and selecting to save personal. These words are stored in the user's "User" artifact
+ and will then be shown as a valid word only for that user.
+ <br>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.jpg b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.jpg
new file mode 100644
index 00000000000..45ca168e383
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/spell_check.jpg
Binary files differ
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/table_customization.html b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/table_customization.html
new file mode 100644
index 00000000000..984444f7779
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/table_customization.html
@@ -0,0 +1,61 @@
+<html>
+<!--
+ Copyright (c) 2004, 2007 Boeing.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Boeing - initial API and implementation
+-->
+ <head>
+ <title>Table Customization</title>
+ <LINK rel="stylesheet" type="text/css" href="../../osee.help/html/style.css">
+ </head>
+
+ <body>
+ <h1>Table Customization</h1>
+ <h2>Purpose</h2>
+ <p>Customize the table to show desired columns, widths with specified sorting and filters. Enables loading of
+ both personal and global customizations and provides the ability to select a customization as the
+ default customization to be loaded upon startup.</p>
+ <h2>Select Customization</h2>
+ <p>Lists current personal and global customizations to be selected from. Double-click to automatically
+ load selected customizationa and close dialog.</p>
+ <ul>
+ <li>"-- Table Default --" - Show the default customization for this table.</li>
+ <li>"-- Current --" - Show the current customization as set from table alterations.</li>
+ <li>"Other" - Shows a stored customization available for loading.</li>
+ </ul>
+ <h2>Select Customization - Icons / Overlays</h2>
+ <ul>
+ <li><img src="../images/customize.gif"/> Customization.</li>
+ <li><img src="../images/customizeD.gif"/> Default customization loaded up restart.</li>
+ <li><img src="../images/customizeG.gif"/> Global customization available to all users.</li>
+ </ul>
+ <h2>Select Customization - Buttons</h2>
+ <ul>
+ <li>Load - Loads the currently selected customization.</li>
+ <li>Load+Close - Loads the selected customization and closes the dialog.</li>
+ <li>Set as Default - Sets the currently selected customization as the default to load upon restart.</li>
+ <li>Delete - Deletes the currently selected customization.</li>
+ </ul>
+ <h2>Configure Customization</h2>
+ <p>Allows for the selected customization to be configured, loaded and saved.</p>
+ <ul>
+ <li>Hidden Columns - Shows the columns that are available to be displays but configured as hidden.</li>
+ <li>Visible Columns - Show the columns that are configured to be displayed for this customization.</li>
+ <li>(x) - shows the currently configured width of the column</li>
+ <li>Sorter - xml representation of the column order to sort by</li>
+ <li>Text Filter - shows the configured text filter to be applied for this customization. Enter as string.</li>
+ <li></li>
+ </ul>
+ <h2>Configure Customization - Buttons</h2>
+ <ul>
+ <li>Load - Loads the configured customization.</li>
+ <li>Load+Close - Loads the configured customization and closes the dialog.</li>
+ <li>Rename - Allows the user to define an alternate name for the column.</li>
+ <li>Save - Saves the configured customization as personal or global (if permissions allow).</li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/toc.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/toc.xml
new file mode 100644
index 00000000000..2b535214797
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/reference/toc.xml
@@ -0,0 +1,3 @@
+<toc label="OSEE Application Framework">
+ <link toc="reference/skynet_toc.xml"/>
+</toc>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRenderer.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRenderer.exsd
new file mode 100644
index 00000000000..11deca34acc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRenderer.exsd
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="ArtifactRenderer" name="ArtifactRenderer"/>
+ </appInfo>
+ <documentation>
+ Renderers are responsible for controlling the previewing, editing, and printing of artifacts for certain artifact types. If no ApplicableArtifactType&apos;s are specified then, the renderer implicitly applies to all artifact types.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="Renderer" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="Renderer">
+ <complexType>
+ <attribute name="classname" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="osee.skynet.gui.render.IRenderer"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="ApplicableArtifactType" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRendererTemplate.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRendererTemplate.exsd
new file mode 100644
index 00000000000..055f7d0ba6d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactRendererTemplate.exsd
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="ArtifactRendererTemplate" name="ArtifactRendererTemplate"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="Template" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="Template">
+ <complexType>
+ <attribute name="presentationType" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="templateFile" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="templateName" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactReport.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactReport.exsd
new file mode 100644
index 00000000000..3cb93aa84d4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/ArtifactReport.exsd
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="ArtifactReport" name="ArtifactReport"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="report" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="report">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="osee.skynet.gui.search.report.ReportJob"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/BlamOperation.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/BlamOperation.exsd
new file mode 100644
index 00000000000..7ac6051f663
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/BlamOperation.exsd
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="BlamOperation" name="BlamOperation"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="Operation"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="Operation">
+ <complexType>
+ <attribute name="className" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="osee.skynet.gui.blam.BlamOperation"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="usageHtmlFile" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/IgnorePublishAttribute.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/IgnorePublishAttribute.exsd
new file mode 100644
index 00000000000..72cd84a8c62
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/IgnorePublishAttribute.exsd
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="IgnorePublishAttribute" name="IgnorePublishAttribute"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="attribute"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="attribute">
+ <complexType>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/OseeDictionary.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/OseeDictionary.exsd
new file mode 100644
index 00000000000..1bfb361e781
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/OseeDictionary.exsd
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="OseeDictionary" name="OseeDictionary"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="OseeDictionary" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="OseeDictionary">
+ <complexType>
+ <attribute name="classname" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="osee.skynet.gui.util.IOseeDictionary"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordMlProducer.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordMlProducer.exsd
new file mode 100644
index 00000000000..c567ccdbc4c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordMlProducer.exsd
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="WordMlProducer" name="WordMlProducer"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="producer"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="producer">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="osee.skynet.gui.render.word.IWordMlProducer"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordOutlineContentHandler.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordOutlineContentHandler.exsd
new file mode 100644
index 00000000000..852fb30bc43
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/WordOutlineContentHandler.exsd
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="WordOutlineContentHandler" name="WordOutlineContentHandler"/>
+ </appInfo>
+ <documentation>
+ Allows plugins to contribute a handler for use when parsing WordML as an outline. This way implementation specific actions can be taken to handle what content comes in as seperate artifacts, and how the content is split among attributes. All extension points available are presented to the user to select from upon import.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="Handler"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="Handler">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="osee.skynet.gui.Import.IWordOutlineContentHandler"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/XWidgetProvider.exsd b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/XWidgetProvider.exsd
new file mode 100644
index 00000000000..6f9c88a6b51
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/schema/XWidgetProvider.exsd
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.framework.ui.skynet">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="XWidgetProvider" name="XWidgetProvider"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="XWidgetProvider"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="XWidgetProvider">
+ <complexType>
+ <attribute name="classname" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.osee.framework.ui.skynet.widgets.workflow.IXWidgetProvider"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AdminContributionItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AdminContributionItem.java
new file mode 100644
index 00000000000..39396d84459
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AdminContributionItem.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AdminContributionItem extends SkynetContributionItem {
+
+ private static final String ID = "ats.admin";
+
+ private static final Image ENABLED_IMAGE = SkynetGuiPlugin.getInstance().getImage("redExclaim.gif");
+ private static final Image DISABLED_IMAGE = ENABLED_IMAGE;
+
+ private static String ENABLED_TOOLTIP = "AtsAdmin";
+ private static String DISABLED_TOOLTIP = "";
+
+ public AdminContributionItem() {
+ super(ID, ENABLED_IMAGE, DISABLED_IMAGE, ENABLED_TOOLTIP, DISABLED_TOOLTIP, SkynetEventManager.getInstance());
+ init();
+ }
+
+ private void init() {
+ updateStatus(true);
+ }
+
+ public static void addTo(IStatusLineManager manager) {
+ for (IContributionItem item : manager.getItems())
+ if (item instanceof AdminContributionItem) return;
+ manager.add(new AdminContributionItem());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#onEvent(org.eclipse.osee.framework.ui.plugin.event.Event)
+ */
+ public void onEvent(Event event) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#runOnEventInDisplayThread()
+ */
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArrayTreeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArrayTreeContentProvider.java
new file mode 100644
index 00000000000..0ff13e63c2a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArrayTreeContentProvider.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArrayTreeContentProvider implements ITreeContentProvider {
+
+ /**
+ *
+ */
+ public ArrayTreeContentProvider() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Collection) return ((Collection) parentElement).toArray();
+ return new Object[] {};
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactContentProvider.java
new file mode 100644
index 00000000000..3e403b02614
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactContentProvider.java
@@ -0,0 +1,181 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactChangeListener;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationModifiedEvent;
+
+/**
+ * The basis for the comments in this class can be found at
+ * http://www.eclipse.org/articles/treeviewer-cg/TreeViewerArticle.htm
+ *
+ * @author Ryan D. Brooks
+ */
+public class ArtifactContentProvider implements ITreeContentProvider, ArtifactChangeListener {
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactContentProvider.class);
+ private static Object[] EMPTY_ARRAY = new Object[0];
+ protected TreeViewer viewer;
+ private final ArtifactExplorer artifactExplorer;
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private boolean noChildren;
+
+ public ArtifactContentProvider(ArtifactExplorer artifactExplorer) {
+ this.artifactExplorer = artifactExplorer;
+ this.noChildren = false;
+ }
+
+ /*
+ * @see IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /**
+ * Notifies this content provider that the given viewer's input has been switched to a different element.
+ * <p>
+ * A typical use for this method is registering the content provider as a listener to changes on the new input (using
+ * model-specific means), and deregistering the viewer from the old input. In response to these change notifications,
+ * the content provider propagates the changes to the viewer.
+ * </p>
+ *
+ * @param viewer the viewer
+ * @param oldInput the old input element, or <code>null</code> if the viewer did not previously have an input
+ * @param newInput the new input element, or <code>null</code> if the viewer does not have an input
+ * @see IContentProvider#inputChanged(Viewer, Object, Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // this.viewer = (TreeViewer) viewer;
+
+ noChildren = newInput instanceof Collection;
+ // if (oldInput != null) {
+ // ((Artifact) oldInput).removeListenerRecursively(this);
+ // }
+ // if (newInput != null) { // TODO: must handle fact that only root item has a listener added
+ // ((Artifact) newInput).addListener(this);
+ // }
+ }
+
+ /**
+ * The tree viewer calls its content provider&#8217;s getChildren method when it needs to create or display the child
+ * elements of the domain object, <b>parent </b>. This method should answer an array of domain objects that represent
+ * the unfiltered children of <b>parent </b>
+ *
+ * @see ITreeContentProvider#getChildren(Object)
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Artifact && !noChildren) {
+ Artifact parentItem = (Artifact) parentElement;
+
+ try {
+ if (accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), parentItem, PermissionEnum.READ)) {
+ Collection<Artifact> children = parentItem.getChildren();
+ if (children != null) {
+ for (Artifact art : children) {
+ SkynetEventManager.getInstance().register(ArtifactModifiedEvent.class, art, artifactExplorer);
+ SkynetEventManager.getInstance().register(RelationModifiedEvent.class, art, artifactExplorer);
+ }
+ return children.toArray();
+ }
+ }
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ } else if (parentElement instanceof Collection) {
+ return ((Collection) parentElement).toArray();
+ }
+
+ return EMPTY_ARRAY;
+ }
+
+ /*
+ * @see ITreeContentProvider#getParent(Object)
+ */
+ public Object getParent(Object element) {
+ if (element instanceof Artifact) {
+ return ((Artifact) element).getParent();
+ }
+ return null;
+ }
+
+ /**
+ * The tree viewer asks its content provider if the domain object represented by <b>element </b> has any children.
+ * This method is used by the tree viewer to determine whether or not a plus or minus should appear on the tree
+ * widget.
+ *
+ * @see ITreeContentProvider#hasChildren(Object)
+ */
+ public boolean hasChildren(Object element) {
+
+ if (noChildren) return false;
+
+ /*
+ * might be inefficient if getChildren is not a lightweight opperation; return true; is very
+ * efficient, but will initially cause all nodes to display a plus which is removed if you try
+ * to expand the node and it has no children
+ */
+
+ /*
+ * If the item is an artifact, then use it's optimized check. If it is not an artifact, then
+ * resort to asking the general children
+ */
+ if (element instanceof Artifact) {
+ Artifact artifact = (Artifact) element;
+
+ if (accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), artifact, PermissionEnum.READ)) {
+ if (artifact.isDeleted()) return false;
+
+ try {
+ return artifact.hasChildren();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ // Assume it has children if an error happens
+ return true;
+ }
+ } else {
+ return false;
+ }
+ } else {
+ return getChildren(element).length > 0;
+ }
+ }
+
+ /**
+ * This is the method invoked by calling the <b>setInput </b> method on the tree viewer. In fact, the <b>getElements
+ * </b> method is called only in response to the tree viewer's <b>setInput </b> method and should answer with the
+ * appropriate domain objects of the inputElement. The <b>getElements </b> and <b>getChildren </b> methods operate in
+ * a similar way. Depending on your domain objects, you may have the <b>getElements </b> simply return the result of
+ * calling <b>getChildren </b>. The two methods are kept distinct because it provides a clean way to differentiate
+ * between the root domain object and all other domain objects.
+ *
+ * @see IStructuredContentProvider#getElements(Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDoubleClick.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDoubleClick.java
new file mode 100644
index 00000000000..af7303c2a75
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDoubleClick.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.search.ui.text.Match;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactDoubleClick implements IDoubleClickListener {
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
+ */
+ public void doubleClick(DoubleClickEvent event) {
+ openArtifact(event.getSelection());
+ }
+
+ public static void openArtifact(ISelection selection) {
+ IStructuredSelection structSel = (IStructuredSelection) selection;
+ Object object = (Object) structSel.getFirstElement();
+ Artifact artifact = null;
+ if (object instanceof Artifact) {
+ artifact = (Artifact) structSel.getFirstElement();
+ } else if (object instanceof Match) {
+ Match match = (Match) object;
+
+ if (match.getElement() instanceof Artifact) {
+ artifact = (Artifact) match.getElement();
+ }
+ }
+
+ if (artifact == null) {
+ OSEELog.logSevere(SkynetGuiPlugin.class, "The artifact associated with the double-click was null", false);
+ } else {
+ if (accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), artifact, PermissionEnum.READ)) {
+ if (artifact instanceof IATSArtifact)
+ OseeAts.openATSArtifact(artifact);
+ else
+ ArtifactEditor.editArtifact(artifact);
+ } else {
+ OSEELog.logInfo(SkynetGuiPlugin.class,
+ "The user " + skynetAuth.getAuthenticatedUser() + " does not have read access to " + artifact, true);
+ }
+ }
+
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDragDropSupport.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDragDropSupport.java
new file mode 100644
index 00000000000..5b133bb8995
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactDragDropSupport.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceFileArtifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceURL;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.LinkManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkspace;
+import org.eclipse.osee.framework.ui.skynet.relation.explorer.RelationExplorerWindow;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public class ArtifactDragDropSupport {
+
+ public static void performDragDrop(DropTargetEvent e, RelationExplorerWindow window, Shell shell) {
+ performDragDrop(e, null, window, shell);
+ }
+
+ public static void performDragDrop(DropTargetEvent e, Artifact[] artifacts, RelationExplorerWindow window, Shell shell) {
+
+ if (ArtifactTransfer.getInstance().isSupportedType(e.currentDataType)) {
+
+ if (artifacts != null)
+ addArtifacts(artifacts, window);
+ else {
+ ArtifactData artData = ArtifactTransfer.getInstance().nativeToJava(e.currentDataType);
+ addArtifacts(artData.getArtifacts(), window);
+ }
+ } else if (e.data instanceof String[]) {
+ addFiles((String[]) e.data, window, shell);
+
+ } else if (e.data instanceof String) {
+ addURL((String) e.data, window, shell);
+ }
+ }
+
+ private static void ensureLinkValidity(RelationLinkGroup group, Artifact artifact) {
+ boolean sideA = group.isSideA();
+ IRelationLinkDescriptor linkDescriptor = group.getDescriptor();
+ LinkManager linkManager = group.getLinkManager();
+ linkManager.ensureLinkValidity(linkDescriptor, sideA, artifact);
+ }
+
+ private static void addArtifacts(Artifact[] artifacts, RelationExplorerWindow window) {
+ RelationLinkGroup group = window.getRelationGroup();
+ boolean sideA = group.isSideA();
+ IRelationLinkDescriptor linkDescriptor = group.getDescriptor();
+ LinkManager linkManager = group.getLinkManager();
+
+ try {
+ linkManager.ensureHalfLinksValidity(linkDescriptor, !sideA, artifacts.length);
+
+ for (Artifact artifact : artifacts) {
+ try {
+ linkManager.ensureLinkValidity(linkDescriptor, sideA, artifact);
+ window.addValid(artifact);
+ } catch (IllegalArgumentException ex) {
+ window.addInvalidArtifact(artifact, ex.getMessage());
+ }
+ }
+ } catch (IllegalArgumentException ex) {
+ window.addInvalid("All", ex.getMessage());
+ }
+ }
+
+ private static void addFiles(String[] fileNames, RelationExplorerWindow window, Shell shell) {
+ RelationLinkGroup group = window.getRelationGroup();
+ IFile iFile;
+ Artifact artifact;
+
+ for (int i = 0; i < fileNames.length; i++) {
+ iFile = AWorkspace.getIFile(fileNames[i]);
+ String location;
+
+ if (iFile == null) {
+ try {
+ location = new File(fileNames[i]).toURL().toString();
+ } catch (MalformedURLException e) {
+ window.addInvalid(fileNames[i], "Malformed URL exception: " + e.getMessage());
+ continue;
+ }
+ } else {
+ location = WorkspaceURL.getURL(iFile);
+ }
+
+ try {
+ artifact = WorkspaceFileArtifact.getArtifactFromWorkspaceFile(location, shell);
+ } catch (RuntimeException e) {
+ window.addInvalid(location, "Runtime exception: " + e.getMessage());
+ continue;
+ }
+
+ if (artifact == null) {
+ window.addInvalid(location, "Artifact has been cancelled");
+ } else {
+ try {
+ ensureLinkValidity(group, artifact);
+ window.addValid(artifact);
+ } catch (IllegalArgumentException ex) {
+ window.addInvalid(artifact.getDescriptiveName(), ex.getMessage());
+ }
+
+ }
+ }
+ }
+
+ private static void addURL(String url, RelationExplorerWindow window, Shell shell) {
+ RelationLinkGroup group = window.getRelationGroup();
+ Artifact artifact;
+ String location;
+
+ try {
+ location = new URL(url).toString();
+ } catch (MalformedURLException e) {
+ window.addInvalid(url, "Malformed Exception : " + e.getMessage());
+ return;
+ }
+
+ try {
+ artifact = WorkspaceFileArtifact.getArtifactFromWorkspaceFile(location, shell);
+ } catch (RuntimeException e) {
+ window.addInvalid(location, "Runtime exception: " + e.getMessage());
+ return;
+ }
+
+ if (artifact == null) {
+ window.addInvalid(location, "Artifact has been cancelled");
+ }
+ try {
+ ensureLinkValidity(group, artifact);
+ window.addValid(artifact);
+ } catch (IllegalArgumentException ex) {
+ window.addInvalid(artifact.getDescriptiveName(), ex.getMessage());
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorer.java
new file mode 100644
index 00000000000..2ff18e3666b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorer.java
@@ -0,0 +1,1354 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.jdk.core.util.StringFormat;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.ArtifactVersionIncrementedEvent;
+import org.eclipse.osee.framework.skynet.core.SkynetActivator;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.CacheArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.TransactionArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactLockStatusChanged;
+import org.eclipse.osee.framework.skynet.core.event.LocalCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.relation.CacheRelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.relation.RelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.relation.RelationSide;
+import org.eclipse.osee.framework.skynet.core.relation.TransactionRelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.event.AuthenticationEvent;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.plugin.util.SelectionCountChangeListener;
+import org.eclipse.osee.framework.ui.plugin.util.Wizards;
+import org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportWizard;
+import org.eclipse.osee.framework.ui.skynet.access.PolicyDialog;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView;
+import org.eclipse.osee.framework.ui.skynet.menu.ArtifactPreviewMenu;
+import org.eclipse.osee.framework.ui.skynet.menu.ArtifactTreeViewerGlobalMenuHelper;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenuPermissions;
+import org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactClipboard;
+import org.eclipse.osee.framework.ui.skynet.util.HierarchicalReportDialog;
+import org.eclipse.osee.framework.ui.skynet.util.HtmlReportJob;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.ShowAttributeAction;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetViews;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.swt.MenuItems;
+import org.eclipse.osee.framework.ui.swt.TreeViewerUtility;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ExportResourcesAction;
+import org.eclipse.ui.actions.ImportResourcesAction;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.texteditor.StatusLineContributionItem;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactExplorer extends ViewPart implements IEventReceiver, IActionable, ISelectionProvider {
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactExplorer.class);
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private static final Image ACCESS_DENIED_IMAGE = SkynetGuiPlugin.getInstance().getImage("lockkey.gif");
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.ArtifactExplorer";
+ private static final String ROOT_GUID = "artifact.explorer.last.root_guid";
+ private static final ArtifactClipboard artifactClipboard = new ArtifactClipboard(VIEW_ID);
+ private static final LinkedList<Tree> trees = new LinkedList<Tree>();
+
+ private TreeViewer treeViewer;
+ private Action upAction;
+ private Artifact root;
+ private MenuItem editMenuItem;
+ private MenuItem massEditMenuItem;
+ private MenuItem skywalkerMenuItem;
+ private MenuItem createMenuItem;
+ private MenuItem reportMenuItem;
+ private MenuItem openMenuItem;
+ private MenuItem accessControlMenuItem;
+ private MenuItem lockMenuItem;
+ private MenuItem goIntoMenuItem;
+ private MenuItem copyMenuItem;
+ private MenuItem pasteMenuItem;
+ private NeedArtifactMenuListener needArtifactListener;
+ private NeedProjectMenuListener needProjectListener;
+ private final StatusLineContributionItem branchStatusItem;
+ private Action showArtIds;
+ private Action showArtType;
+ private Action newArtifactExplorer;
+ private Action collapseAllAction;
+ private ShowAttributeAction attributesAction;
+ IGlobalMenuHelper globalMenuHelper;
+
+ private Composite stackComposite;
+ private Control branchUnreadableWarning;
+ private StackLayout stackLayout;
+
+ public ArtifactExplorer() {
+ branchStatusItem = new StatusLineContributionItem("skynet.branch", true, 60);
+ branchStatusItem.setToolTipText("The branch that the artifacts in the explorer are from.");
+ }
+
+ public static void explore(Collection<Artifact> artifacts) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ ArtifactExplorer artifactExplorer;
+ try {
+ artifactExplorer =
+ (ArtifactExplorer) page.showView(ArtifactExplorer.VIEW_ID, new GUID().toString(),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ artifactExplorer.setPartName("Artifacts");
+ artifactExplorer.setContentDescription("These artifact must be edited singly");
+ artifactExplorer.treeViewer.setInput(artifacts);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private Control createDefaultWarning(Composite parent) {
+ Composite composite = new Composite(parent, SWT.BORDER);
+ composite.setLayout(new GridLayout(2, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ composite.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+
+ Label image = new Label(composite, SWT.NONE);
+ image.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
+ image.setImage(ACCESS_DENIED_IMAGE);
+ image.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+
+ Label label = new Label(composite, SWT.NONE);
+ Font font = new Font(PlatformUI.getWorkbench().getDisplay(), "Courier New", 10, SWT.BOLD);
+ label.setFont(font);
+ label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_RED));
+ label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
+ label.setText("Branch Read Access Denied.\nContact your administrator.");
+ label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+
+ return composite;
+ }
+
+ private void checkBranchReadable() {
+ Control control = branchUnreadableWarning;
+ if (false != (new GlobalMenuPermissions(globalMenuHelper)).isDefaultBranchReadable()) {
+ control = treeViewer.getTree();
+ }
+ stackLayout.topControl = control;
+ stackComposite.layout();
+ stackComposite.getParent().layout();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+
+ @Override
+ public void createPartControl(Composite parent) {
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = 1000;
+ gridData.widthHint = 1000;
+
+ parent.setLayout(new GridLayout(1, false));
+ parent.setLayoutData(gridData);
+
+ stackComposite = new Composite(parent, SWT.NONE);
+ stackLayout = new StackLayout();
+ stackComposite.setLayout(stackLayout);
+ stackComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ branchUnreadableWarning = createDefaultWarning(stackComposite);
+
+ treeViewer = new TreeViewer(stackComposite);
+ Tree tree = treeViewer.getTree();
+ treeViewer.setContentProvider(new ArtifactContentProvider(this));
+ treeViewer.setLabelProvider(new ArtifactLabelProvider(this));
+ treeViewer.addDoubleClickListener(new ArtifactDoubleClick());
+ treeViewer.getControl().setLayoutData(gridData);
+ tree.addKeyListener(new keySelectedListener());
+
+ // We can not use the hash lookup because an artifact may not have a
+ // good equals.
+ // This can be added back once the content provider is converted over to
+ // use job node.
+ treeViewer.setUseHashlookup(false);
+
+ treeViewer.addSelectionChangedListener(new SelectionCountChangeListener(getViewSite()));
+ globalMenuHelper = new ArtifactTreeViewerGlobalMenuHelper(treeViewer);
+
+ createCollapseAllAction();
+ createUpAction();
+ createShowArtTypeAction();
+ createAttributesAction();
+ createNewArtifactExplorerAction();
+
+ if (OseeProperties.getInstance().isDeveloper()) createDebugStubActions();
+
+ getSite().setSelectionProvider(treeViewer);
+ addExploreSelection();
+
+ setupPopupMenu();
+
+ new ArtifactExplorerDragAndDrop(tree, VIEW_ID);
+ parent.layout();
+
+ if (OseeProperties.getInstance().isDeveloper()) {
+ createShowArtIdsAction();
+ }
+ OseeAts.addBugToViewToolbar(this, this, SkynetActivator.getInstance(), VIEW_ID, "Artifact Explorer");
+
+ getViewSite().getActionBars().getStatusLineManager().add(branchStatusItem);
+ SkynetContributionItem.addTo(this, false);
+ getViewSite().getActionBars().updateActionBars();
+
+ updateEnablementsEtAl();
+ trees.add(tree);
+ setHelpContexts();
+ checkBranchReadable();
+ }
+
+ /**
+ * Reveal an artifact in the viewer and select it.
+ */
+ public static void revealArtifact(Artifact artifact) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ ArtifactExplorer artifactExplorer;
+ try {
+ artifactExplorer = (ArtifactExplorer) page.showView(ArtifactExplorer.VIEW_ID);
+ artifactExplorer.treeViewer.setSelection(new StructuredSelection(artifact), true);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private void setupPopupMenu() {
+
+ Menu popupMenu = new Menu(treeViewer.getTree().getParent());
+ needArtifactListener = new NeedArtifactMenuListener();
+ needProjectListener = new NeedProjectMenuListener();
+ popupMenu.addMenuListener(needArtifactListener);
+ popupMenu.addMenuListener(needProjectListener);
+
+ createNewItemMenuItem(popupMenu);
+ createGoIntoMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createOpenMenuItem(popupMenu);
+ createEditMenuItem(popupMenu);
+
+ ArtifactPreviewMenu.createPreviewMenuItem(popupMenu, treeViewer);
+
+ createMassEditMenuItem(popupMenu);
+ createSkywalkerMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ new GlobalMenu(popupMenu, globalMenuHelper);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createReportMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createHistoryMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createImportExportMenuItems(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createLockMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createCopyMenuItem(popupMenu);
+ createPasteMenuItem(popupMenu);
+ createExpandAllMenuItem(popupMenu);
+ createSelectAllMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createAccessControlMenuItem(popupMenu);
+ treeViewer.getTree().setMenu(popupMenu);
+ }
+
+ protected void createUpAction() {
+ upAction = new Action("View Parent") {
+ @Override
+ public void run() {
+ try {
+ Artifact parent = root.getParent();
+
+ if (parent == null) return;
+
+ Object[] expanded = treeViewer.getExpandedElements();
+ Object[] expandedPlus = new Object[expanded.length + 1];
+ for (int i = 0; i < expanded.length; i++)
+ expandedPlus[i] = expanded[i];
+ expandedPlus[expandedPlus.length - 1] = root;
+
+ explore(parent);
+
+ treeViewer.setExpandedElements(expandedPlus);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ };
+
+ upAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("up.gif"));
+ upAction.setToolTipText("View Parent");
+ updateEnablementsEtAl();
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(upAction);
+ }
+
+ protected void createDebugStubActions() {
+ try {
+ addTemplates();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ } catch (IOException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ } catch (ClassNotFoundException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ private void addTemplates() throws SQLException, IOException, ClassNotFoundException {
+ }
+
+ protected void createShowArtIdsAction() {
+
+ showArtIds = new Action("Show Artifact Ids") {
+ @Override
+ public void run() {
+ setChecked(!isChecked());
+ updateShowArtIdText();
+ treeViewer.refresh();
+ }
+ };
+
+ showArtIds.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("filter.gif"));
+ updateShowArtIdText();
+
+ IMenuManager toolbarManager = getViewSite().getActionBars().getMenuManager();
+ toolbarManager.add(showArtIds);
+ }
+
+ protected void createShowArtTypeAction() {
+
+ showArtType = new Action("Show Artifact Type") {
+ @Override
+ public void run() {
+ setChecked(!isChecked());
+ updateShowArtTypeText();
+ treeViewer.refresh();
+ }
+ };
+
+ showArtType.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("filter.gif"));
+ updateShowArtTypeText();
+
+ IMenuManager toolbarManager = getViewSite().getActionBars().getMenuManager();
+ toolbarManager.add(showArtType);
+ }
+
+ private void createNewArtifactExplorerAction() {
+
+ newArtifactExplorer = new Action("New Artifact Explorer") {
+ @Override
+ public void run() {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ ArtifactExplorer artifactExplorer;
+ try {
+ artifactExplorer =
+ (ArtifactExplorer) page.showView(ArtifactExplorer.VIEW_ID, GUID.generateGuidStr(),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ artifactExplorer.explore(artifactManager.getDefaultHierarchyRootArtifact(branchManager.getDefaultBranch()));
+ artifactExplorer.setExpandedArtifacts(treeViewer.getExpandedElements());
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ };
+
+ newArtifactExplorer.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("artifact_explorer.gif"));
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(newArtifactExplorer);
+ }
+
+ private void createCollapseAllAction() {
+
+ collapseAllAction = new Action("Collapse All") {
+ @Override
+ public void run() {
+ if (treeViewer != null) {
+ treeViewer.collapseAll();
+ }
+ }
+ };
+
+ collapseAllAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("collapseAll.gif"));
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(collapseAllAction);
+ }
+
+ private void updateShowArtIdText() {
+ showArtIds.setText((showArtIds.isChecked() ? "Hide" : "Show") + " Artifact Ids");
+ }
+
+ private void updateShowArtTypeText() {
+ showArtType.setText((showArtType.isChecked() ? "Hide" : "Show") + " Artifact Type");
+ }
+
+ protected void createAttributesAction() {
+ try {
+ attributesAction = new ShowAttributeAction(treeViewer, SkynetGuiPlugin.ARTIFACT_EXPLORER_ATTRIBUTES_PREF);
+ attributesAction.addToView(this,
+ SkynetViews.loadAttrTypesFromPreferenceStore(SkynetGuiPlugin.ARTIFACT_EXPLORER_ATTRIBUTES_PREF));
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ public String getSelectedAttributeData(Artifact artifact) {
+ return attributesAction.getSelectedAttributeData(artifact);
+ }
+
+ private void createOpenMenuItem(Menu parentMenu) {
+ openMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ openMenuItem.setText("&Open");
+
+ needArtifactListener.add(openMenuItem);
+ openMenuItem.addSelectionListener(new OpenListener());
+ }
+
+ public class OpenListener extends SelectionAdapter {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> itemsIter = selection.iterator();
+
+ while (itemsIter.hasNext()) {
+ ArtifactEditor.editArtifact((Artifact) itemsIter.next());
+ }
+ }
+ }
+
+ private void createNewItemMenuItem(Menu parentMenu) {
+ SelectionAdapter listener = new NewArtifactMenuListener();
+ createMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ Menu subMenu = new Menu(parentMenu.getShell(), SWT.DROP_DOWN);
+ createMenuItem.setMenu(subMenu);
+ needProjectListener.add(createMenuItem);
+ createMenuItem.setText("&New Child");
+ createMenuItem.setEnabled(true);
+
+ try {
+ Collection<ArtifactSubtypeDescriptor> descriptors =
+ configurationPersistenceManager.getArtifactSubtypeDescriptors(branchManager.getDefaultBranch());
+ for (ArtifactSubtypeDescriptor descriptor : descriptors) {
+ if (!descriptor.getName().equals("Root Artifact")) {
+ MenuItem item = new MenuItem(subMenu, SWT.PUSH);
+ item.setText(descriptor.getName());
+ item.setImage(descriptor.getImage());
+ item.setData(descriptor);
+ item.addSelectionListener(listener);
+ }
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ private class NewArtifactMenuListener extends SelectionAdapter {
+ @Override
+ public void widgetSelected(SelectionEvent ev) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> itemsIter = selection.iterator();
+ ArtifactSubtypeDescriptor descriptor = (ArtifactSubtypeDescriptor) ((MenuItem) ev.getSource()).getData();
+
+ EntryDialog ed =
+ new EntryDialog("New \"" + descriptor.getName() + "\" Artifact",
+ "Enter name for \"" + descriptor.getName() + "\" Artifact");
+ if (ed.open() != 0) return;
+ try {
+ // If nothing was selected, then the child belongs at the root
+ if (!itemsIter.hasNext()) {
+ root.addNewChild(descriptor, ed.getEntry());
+ } else {
+ while (itemsIter.hasNext()) {
+ ((Artifact) itemsIter.next()).addNewChild(descriptor, ed.getEntry());
+ }
+ }
+ treeViewer.refresh();
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ treeViewer.refresh(false);
+ }
+ }
+
+ private void createGoIntoMenuItem(Menu parentMenu) {
+ goIntoMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ goIntoMenuItem.setText("&Go Into");
+ needArtifactListener.add(goIntoMenuItem);
+
+ ArtifactMenuListener listener = new ArtifactMenuListener();
+ parentMenu.addMenuListener(listener);
+ goIntoMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent ev) {
+
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> itemsIter = selection.iterator();
+ if (itemsIter.hasNext()) {
+ try {
+ Object[] expanded = treeViewer.getExpandedElements();
+ explore((Artifact) itemsIter.next());
+ treeViewer.setExpandedElements(expanded);
+ } catch (Exception e) {
+ logger.log(Level.SEVERE, e.getLocalizedMessage(), e);
+ }
+ }
+ }
+ });
+ }
+
+ private void createEditMenuItem(Menu parentMenu) {
+ editMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ editMenuItem.setText("&Edit");
+ needArtifactListener.add(editMenuItem);
+
+ ArtifactMenuListener listener = new ArtifactMenuListener();
+ parentMenu.addMenuListener(listener);
+ editMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent ev) {
+ LinkedList<Artifact> selectedItems = new LinkedList<Artifact>();
+ TreeViewerUtility.getPreorderSelection(treeViewer, selectedItems);
+ RendererManager.getInstance().editInJob(selectedItems);
+ }
+ });
+ }
+
+ private void createMassEditMenuItem(Menu parentMenu) {
+ massEditMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ massEditMenuItem.setText("Mass Edit");
+ needArtifactListener.add(massEditMenuItem);
+
+ ArtifactMenuListener listener = new ArtifactMenuListener();
+ parentMenu.addMenuListener(listener);
+ massEditMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent ev) {
+ LinkedList<Artifact> selectedItems = new LinkedList<Artifact>();
+ TreeViewerUtility.getPreorderSelection(treeViewer, selectedItems);
+ MassArtifactEditor.editArtifacts("", selectedItems);
+ }
+ });
+ }
+
+ private void createSkywalkerMenuItem(Menu parentMenu) {
+ skywalkerMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ skywalkerMenuItem.setText("Sky Walker");
+ needArtifactListener.add(skywalkerMenuItem);
+
+ ArtifactMenuListener listener = new ArtifactMenuListener();
+ parentMenu.addMenuListener(listener);
+ skywalkerMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent ev) {
+ LinkedList<Artifact> selectedItems = new LinkedList<Artifact>();
+ TreeViewerUtility.getPreorderSelection(treeViewer, selectedItems);
+ SkyWalkerView.exploreArtifact(selectedItems.getFirst());
+ }
+ });
+ }
+
+ private void createSelectAllMenuItem(Menu parentMenu) {
+ MenuItem menuItem = new MenuItem(parentMenu, SWT.PUSH);
+ menuItem.setText("&Select All\tCtrl+A");
+ menuItem.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ treeViewer.getTree().selectAll();
+ }
+ });
+ }
+
+ private void createHistoryMenuItem(Menu parentMenu) {
+ MenuItem revisionMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ revisionMenuItem.setText("&Show Resource History ");
+ revisionMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Artifact selectedArtifact = (Artifact) selection.getFirstElement();
+
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ RevisionHistoryView revisionHistoryView =
+ (RevisionHistoryView) page.showView(RevisionHistoryView.VIEW_ID, selectedArtifact.getGuid(),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ revisionHistoryView.explore(selectedArtifact);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ });
+ }
+
+ private void createImportExportMenuItems(Menu parentMenu) {
+ MenuItems.createMenuItem(parentMenu, SWT.PUSH, new ImportResourcesAction(getViewSite().getWorkbenchWindow()));
+ MenuItems.createMenuItem(parentMenu, SWT.PUSH, new ExportResourcesAction(getViewSite().getWorkbenchWindow()));
+ }
+
+ private void createAccessControlMenuItem(Menu parentMenu) {
+ accessControlMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ accessControlMenuItem.setText("&Access Control ");
+ // accessControlMenuItem.setEnabled(false);
+ accessControlMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Artifact selectedArtifact = (Artifact) selection.getFirstElement();
+ try {
+ if (selectedArtifact != null) {
+ PolicyDialog pd = new PolicyDialog(Display.getCurrent().getActiveShell(), selectedArtifact);
+ pd.open();
+ checkBranchReadable();
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ });
+ }
+
+ private void createReportMenuItem(Menu parentMenu) {
+ reportMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ reportMenuItem.setText("&Hierarchical Report");
+ reportMenuItem.addSelectionListener(new ReportListener());
+ }
+
+ private void createLockMenuItem(Menu parentMenu) {
+ lockMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ lockMenuItem.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> iterator = selection.iterator();
+
+ while (iterator.hasNext()) {
+ Artifact object = (Artifact) iterator.next();
+ if ((new GlobalMenuPermissions(object)).isLocked()) {
+ accessManager.unLockObject(object, skynetAuth.getAuthenticatedUser());
+ } else {
+ accessManager.lockObject(object, skynetAuth.getAuthenticatedUser());
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ });
+ }
+
+ private void createCopyMenuItem(Menu parentMenu) {
+ copyMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ copyMenuItem.setText("Copy \tCtrl+C");
+ copyMenuItem.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ performCopy();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ });
+ }
+
+ private void performCopy() {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ ArrayList<Artifact> artifactTransferData = new ArrayList<Artifact>();
+ ArrayList<String> textTransferData = new ArrayList<String>();
+ Artifact artifact;
+
+ if (selection != null && !selection.isEmpty()) {
+ for (Object object : selection.toArray()) {
+ if (object instanceof Artifact) {
+ artifact = (Artifact) object;
+
+ artifactTransferData.add(artifact);
+ textTransferData.add(artifact.getDescriptiveName());
+ }
+ }
+ artifactClipboard.setArtifactsToClipboard(artifactTransferData, textTransferData);
+ }
+ }
+
+ private void createPasteMenuItem(Menu parentMenu) {
+ pasteMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ pasteMenuItem.setText("Paste \tCtrl+V");
+ pasteMenuItem.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ performPaste();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ });
+ }
+
+ /**
+ * This method must be called from the display thread
+ */
+ private void performPaste() {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+
+ if (selection != null && !selection.isEmpty()) {
+ Object object = selection.getFirstElement();
+
+ if (object instanceof Artifact) {
+ try {
+ artifactClipboard.pasteArtifactsFromClipboard((Artifact) object);
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+ }
+
+ private void createExpandAllMenuItem(Menu parentMenu) {
+ MenuItem menuItem = new MenuItem(parentMenu, SWT.PUSH);
+ menuItem.setText("Expand All\tCtrl+X");
+ menuItem.addSelectionListener(new ExpandListener());
+ }
+
+ public class ExpandListener extends SelectionAdapter {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ expandAll((IStructuredSelection) treeViewer.getSelection());
+ }
+ }
+
+ public class ReportListener extends SelectionAdapter {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ Iterator<?> iter = ((IStructuredSelection) treeViewer.getSelection()).iterator();
+ ArrayList<Artifact> artifacts = new ArrayList<Artifact>();
+ while (iter.hasNext()) {
+ artifacts.add((Artifact) iter.next());
+ }
+ if (artifacts.size() > 0) {
+ HierarchicalReportDialog ld = new HierarchicalReportDialog(Display.getCurrent().getActiveShell());
+ int result = ld.open();
+ if (result == 0) {
+ HtmlReportJob job;
+ try {
+ job = new HtmlReportJob("Hierarchical Report", artifacts, RelationSide.DEFAULT_HIERARCHICAL__CHILD);
+ job.setIncludeAttributes(ld.isShowAttributes());
+ job.setRecurseChildren(ld.isRecurseChildren());
+ Jobs.startJob(job);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+ }
+ }
+
+ private void expandAll(IStructuredSelection selection) {
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ treeViewer.expandToLevel(iter.next(), TreeViewer.ALL_LEVELS);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ treeViewer.getControl().setFocus();
+ }
+
+ public void explore(Artifact artifact) throws CoreException, IllegalArgumentException {
+ if (artifact == null) {
+ throw new IllegalArgumentException("Can not explore a null artifact.");
+ }
+
+ root = artifact;
+
+ eventManager.unRegisterAll(this);
+ eventManager.register(ArtifactVersionIncrementedEvent.class, this);
+ eventManager.register(AuthenticationEvent.class, this);
+ eventManager.register(CacheArtifactModifiedEvent.class, this);
+ eventManager.register(CacheRelationModifiedEvent.class, this);
+ eventManager.register(TransactionRelationModifiedEvent.class, this);
+ eventManager.register(TransactionArtifactModifiedEvent.class, this);
+ eventManager.register(RemoteTransactionEvent.class, this);
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+ eventManager.register(ArtifactLockStatusChanged.class, this);
+ eventManager.register(LocalCommitBranchEvent.class, this);
+ eventManager.register(RemoteCommitBranchEvent.class, this);
+
+ if (treeViewer != null) {
+ treeViewer.setInput(root);
+ setupPopupMenu();
+ updateEnablementsEtAl();
+
+ }
+ }
+
+ public void setExpandedArtifacts(Object... artifacts) {
+ if (treeViewer != null) {
+ treeViewer.setExpandedElements(artifacts);
+ }
+ }
+
+ private void updateEnablementsEtAl() {
+ // The upAction may be null if this viewpart has not been layed out yet
+ if (upAction != null) upAction.setEnabled(root != null && root.getParent() != null);
+
+ if (root != null)
+ setContentDescription(root.getDescriptiveName());
+ else
+ setContentDescription("");
+
+ if (root != null && root.getPersistenceMemo() != null) {
+ Branch branch = root.getPersistenceMemo().getTransactionId().getBranch();
+ if (editMenuItem != null) {
+ editMenuItem.setText("Edit (" + StringFormat.truncate(branch.getBranchName(), 25) + ")");
+ }
+ branchStatusItem.setText(branch.getDisplayName());
+ branchStatusItem.setImage(BranchLabelProvider.getBranchImage(branch));
+ } else {
+ if (editMenuItem != null) editMenuItem.setText("Edit");
+ branchStatusItem.setText("");
+ }
+ }
+
+ private class NeedArtifactMenuListener implements MenuListener {
+ private final HashCollection<Class<? extends Artifact>, MenuItem> menuItemMap;
+
+ public NeedArtifactMenuListener() {
+ this.menuItemMap = new HashCollection<Class<? extends Artifact>, MenuItem>();
+ }
+
+ public void add(MenuItem item) {
+ menuItemMap.put(Artifact.class, item);
+ }
+
+ public void add(MenuItem item, Class<? extends Artifact> artifactClass) {
+ menuItemMap.put(artifactClass, item);
+ }
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+
+ Object obj = selection.getFirstElement();
+ if (obj != null) {
+ Class<? extends Artifact> selectedClass = obj.getClass().asSubclass(Artifact.class);
+
+ for (Class<? extends Artifact> artifactClass : menuItemMap.keySet()) {
+ boolean valid = artifactClass.isAssignableFrom(selectedClass);
+
+ for (MenuItem item : menuItemMap.getValues(artifactClass)) {
+ if (!(item.getData() instanceof Exception)) {
+ // Only modify enabling if no error is associated
+ item.setEnabled(valid);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private class NeedProjectMenuListener implements MenuListener {
+ Collection<MenuItem> items;
+
+ public NeedProjectMenuListener() {
+ this.items = new LinkedList<MenuItem>();
+ }
+
+ public void add(MenuItem item) {
+ items.add(item);
+ }
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ boolean valid = treeViewer.getInput() != null;
+ for (MenuItem item : items)
+ if (!(item.getData() instanceof Exception)) // Only modify
+ // enabling if no
+ // error is
+ // associated
+ item.setEnabled(valid);
+ }
+ }
+
+ /**
+ * Add the selection from the define explorer
+ */
+ private void addExploreSelection() {
+ if (root != null) {
+ try {
+ treeViewer.setInput(root);
+ } catch (IllegalArgumentException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ }
+
+ /**
+ * @author Jeff C. Phillips
+ */
+ public class ArtifactMenuListener implements MenuListener {
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ // Use this menu listener until all menu items can be moved to
+ // GlobaMenu
+ GlobalMenuPermissions permiss = new GlobalMenuPermissions(globalMenuHelper);
+
+ lockMenuItem.setText((permiss.isLocked() ? "Unlock: (" + permiss.getSubjectFromLockedObjectName() + ")" : "Lock"));
+
+ lockMenuItem.setEnabled(permiss.isWritePermission() && (!permiss.isLocked() || permiss.isAccessToRemoveLock()));
+ editMenuItem.setEnabled(permiss.isWritePermission());
+ createMenuItem.setEnabled(permiss.isWritePermission());
+ // previewMenuItem.setEnabled(readPermission);
+ openMenuItem.setEnabled(permiss.isWritePermission());
+ goIntoMenuItem.setEnabled(permiss.isReadPermission());
+ copyMenuItem.setEnabled(permiss.isReadPermission());
+ pasteMenuItem.setEnabled(permiss.isWritePermission());
+ }
+ }
+
+ public void onEvent(final org.eclipse.osee.framework.ui.plugin.event.Event event) {
+ final ArtifactExplorer artifactExplorer = this;
+
+ try {
+ if (treeViewer != null && !treeViewer.getTree().isDisposed()) {
+ checkBranchReadable();
+ if (event instanceof ArtifactModifiedEvent) {
+ ArtifactModifiedEvent artifactModifiedEvent = (ArtifactModifiedEvent) event;
+ Artifact artifact = artifactModifiedEvent.getArtifact();
+
+ if (artifact != null) {
+
+ if (artifactModifiedEvent.getType() == ArtifactModifiedEvent.ModType.Purged) {
+ treeViewer.refresh();
+ return;
+ }
+
+ if (artifact.isDeleted() || artifactModifiedEvent.getType() == ArtifactModifiedEvent.ModType.Reverted) {
+ Artifact parent = artifact.getParent();
+
+ if (parent != null) {
+ parent.clearLinkManager();
+ parent.getLinkManager();
+ }
+ treeViewer.refresh(parent);
+ } else
+ treeViewer.refresh(artifact);
+ }
+ } else if (event instanceof RelationModifiedEvent) {
+ RelationModifiedEvent relationModifiedEvent = (RelationModifiedEvent) event;
+
+ Artifact aArt = relationModifiedEvent.getLink().getArtifactA();
+ Artifact bArt = relationModifiedEvent.getLink().getArtifactB();
+
+ if (aArt != null && !aArt.isDeleted() && !aArt.isReadOnly()) {
+ // make sure his linkmanager is loaded
+ aArt.getLinkManager();
+ treeViewer.refresh(aArt, false);
+ }
+
+ if (bArt != null && !bArt.isDeleted() && !bArt.isReadOnly()) {
+ // make sure his linkmanager is loaded
+ bArt.getLinkManager();
+ treeViewer.refresh(bArt, false);
+ }
+ } else if (event instanceof ArtifactVersionIncrementedEvent) {
+ ArtifactVersionIncrementedEvent verEvent = (ArtifactVersionIncrementedEvent) event;
+ Artifact parentArtifact = verEvent.getNewVersion().getParent();
+ treeViewer.remove(verEvent.getOldVersion());
+
+ if (parentArtifact != null) treeViewer.refresh(parentArtifact);
+
+ } else if (event instanceof TransactionEvent) {
+ ((TransactionEvent) event).fireSingleEvent(artifactExplorer);
+ } else if (event instanceof DefaultBranchChangedEvent) {
+ try {
+ // Check that we are not already displaying the default
+ // branch
+ Branch defaultBranch = branchManager.getDefaultBranch();
+
+ if (root == null) {
+ explore(artifactManager.getDefaultHierarchyRootArtifact(defaultBranch));
+ } else if (root.getBranch() != defaultBranch) {
+ Artifact candidate = artifactManager.getArtifact(root.getGuid(), defaultBranch);
+ if (candidate == null) {
+ explore(artifactManager.getDefaultHierarchyRootArtifact(defaultBranch));
+ } else {
+ explore(candidate);
+ }
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ } finally {
+ updateEnablementsEtAl();
+ }
+ } else if (event instanceof ArtifactLockStatusChanged) {
+ treeViewer.update(((ArtifactLockStatusChanged) event).getArtifact(), null);
+ } else if (event instanceof AuthenticationEvent) {
+ treeViewer.refresh();
+ } else if ((event instanceof LocalCommitBranchEvent) || (event instanceof RemoteCommitBranchEvent)) {
+ Object object = treeViewer.getInput();
+
+ if (object instanceof Artifact) {
+ Artifact artifact = (Artifact) object;
+ try {
+ explore(artifactManager.getArtifact(artifact.getGuid(), branchManager.getDefaultBranch()));
+ } catch (IllegalArgumentException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ } catch (CoreException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ }
+ }
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ private class keySelectedListener implements KeyListener {
+ public void keyPressed(KeyEvent e) {
+ GlobalMenuPermissions permiss = new GlobalMenuPermissions(globalMenuHelper);
+
+ if (e.keyCode == SWT.DEL && permiss.isWritePermission() && e.stateMask == 0) {
+ (new GlobalMenu(new ArtifactTreeViewerGlobalMenuHelper(treeViewer))).getDeleteArtifactAction().run();
+ }
+ if (e.keyCode == 'a' && e.stateMask == SWT.CONTROL && permiss.isReadPermission()) {
+ treeViewer.getTree().selectAll();
+ }
+ if (e.keyCode == 'x' && e.stateMask == SWT.CONTROL && permiss.isReadPermission()) {
+ expandAll((IStructuredSelection) treeViewer.getSelection());
+ }
+ if (e.keyCode == 'c' && e.stateMask == SWT.CONTROL && permiss.isWritePermission()) {
+ performCopy();
+ }
+ if (e.keyCode == 'v' && e.stateMask == SWT.CONTROL && permiss.isWritePermission()) {
+ performPaste();
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+
+ try {
+ if (memento != null) {
+
+ Artifact previousArtifact =
+ artifactManager.getArtifact(memento.getString(ROOT_GUID), branchManager.getDefaultBranch());
+ if (previousArtifact != null) {
+ explore(previousArtifact);
+ return;
+ }
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Falling back to the root artifact: " + ex.getLocalizedMessage(), ex);
+ }
+
+ try {
+ explore(artifactManager.getDefaultHierarchyRootArtifact(branchManager.getDefaultBranch()));
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ super.saveState(memento);
+ if (root != null) {
+ memento.putString(ROOT_GUID, root.getGuid());
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#dispose()
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ eventManager.unRegisterAll(this);
+ trees.remove(treeViewer.getTree());
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ public boolean showArtIds() {
+ return showArtIds != null && showArtIds.isChecked();
+ }
+
+ public boolean showArtType() {
+ return showArtType != null && showArtType.isChecked();
+ }
+
+ private class ArtifactExplorerDragAndDrop extends SkynetDragAndDrop {
+
+ public ArtifactExplorerDragAndDrop(Tree tree, String viewId) {
+ super(tree, tree, viewId);
+ }
+
+ @Override
+ public Artifact[] getArtifacts() {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Object[] objects = selection.toArray();
+ Artifact[] artifacts = new Artifact[objects.length];
+
+ for (int index = 0; index < objects.length; index++)
+ artifacts[index] = (Artifact) objects[index];
+
+ return artifacts;
+ }
+
+ @Override
+ public void performDragOver(DropTargetEvent event) {
+ event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL | DND.FEEDBACK_EXPAND;
+
+ if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
+ event.detail = DND.DROP_COPY;
+ } else if (isValidForArtifactDrop(event)) {
+ event.detail = DND.DROP_MOVE;
+ } else {
+ event.detail = DND.DROP_NONE;
+ }
+ }
+
+ private boolean isValidForArtifactDrop(DropTargetEvent event) {
+ if (ArtifactTransfer.getInstance().isSupportedType(event.currentDataType)) {
+ ArtifactData artData = ArtifactTransfer.getInstance().nativeToJava(event.currentDataType);
+
+ if (artData != null) {
+
+ Artifact parentArtifact = getSelectedArtifact(event);
+ if (parentArtifact != null && artData.getSource().equals(VIEW_ID)) {
+ Artifact[] artifactsToBeRelated = artData.getArtifacts();
+
+ for (Artifact artifact : artifactsToBeRelated) {
+ if (parentArtifact == artifact) {
+ return false;
+ }
+ for (Artifact descendant : artifact.getLoadedDescendants()) {
+ if (parentArtifact == descendant) {
+ return false;
+ }
+ }
+
+ }
+
+ return true;
+ }
+ } else {
+ // only occurs during the drag on some platforms
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private Artifact getSelectedArtifact(DropTargetEvent event) {
+ TreeItem selected = treeViewer.getTree().getItem(treeViewer.getTree().toControl(event.x, event.y));
+
+ if (selected != null && selected.getData() instanceof Artifact) {
+ return (Artifact) selected.getData();
+ }
+ return null;
+ }
+
+ @Override
+ public void performDrop(final DropTargetEvent event) {
+ final Artifact parentArtifact = getSelectedArtifact(event);
+
+ if (parentArtifact != null) {
+
+ if (ArtifactTransfer.getInstance().isSupportedType(event.currentDataType) && isValidForArtifactDrop(event) && MessageDialog.openQuestion(
+ getViewSite().getShell(),
+ "Confirm Move",
+ "Are you sure you want to make each of the selected artifacts a child of " + parentArtifact.getDescriptiveName() + "?")) {
+ ArtifactData artData = ArtifactTransfer.getInstance().nativeToJava(event.currentDataType);
+ final Artifact[] artifactsToBeRelated = artData.getArtifacts();
+
+ AbstractSkynetTxTemplate replaceRelationTx = new AbstractSkynetTxTemplate(parentArtifact.getBranch()) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ // Replace all of the parent relations
+ for (Artifact artifact : artifactsToBeRelated) {
+ artifact.relateReplace(RelationSide.DEFAULT_HIERARCHICAL__PARENT, parentArtifact, true);
+ artifact.persist();
+ }
+ }
+
+ };
+
+ try {
+ replaceRelationTx.execute();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+
+ else if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
+ Object object = FileTransfer.getInstance().nativeToJava(event.currentDataType);
+ if (object instanceof String[]) {
+ String filename = ((String[]) object)[0];
+
+ ArtifactImportWizard wizard = new ArtifactImportWizard();
+ wizard.setImportResourceAndArtifactDestination(new File(filename), parentArtifact);
+
+ Wizards.initAndOpen(wizard, ArtifactExplorer.this);
+ }
+ }
+ }
+ }
+ }
+
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ treeViewer.addSelectionChangedListener(listener);
+ }
+
+ public ISelection getSelection() {
+ return treeViewer.getSelection();
+ }
+
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ treeViewer.removeSelectionChangedListener(listener);
+ }
+
+ public void setSelection(ISelection selection) {
+ treeViewer.setSelection(selection);
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(treeViewer.getControl(), "artifact_explorer_tree_viewer");
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactLabelProvider.java
new file mode 100644
index 00000000000..3485662e6eb
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactLabelProvider.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.sql.SQLException;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.swt.graphics.Image;
+
+public class ArtifactLabelProvider extends LabelProvider {
+ private static final OseeUiActivator plugin = SkynetGuiPlugin.getInstance();
+ private final ArtifactExplorer artifactExplorer;
+ private boolean showBranch;
+
+ public ArtifactLabelProvider(ArtifactExplorer artifactExplorer) {
+ super();
+ this.artifactExplorer = artifactExplorer;
+ }
+
+ public ArtifactLabelProvider() {
+ this(null);
+ }
+
+ /*
+ * @see ILabelProvider#getImage(Object)
+ */
+ public Image getImage(Object element) {
+ if (element instanceof Artifact) {
+ return ((Artifact) element).getImage();
+ } else if (element instanceof Match && ((Match) element).getElement() instanceof Artifact) {
+ return ((Artifact) ((Match) element).getElement()).getImage();
+ }
+ return plugin.getImage("laser_16_16.gif");
+ }
+
+ /*
+ * @see ILabelProvider#getText(Object)
+ */
+ public String getText(Object element) {
+ if (element instanceof Match) {
+ element = ((Match) element).getElement();
+ }
+
+ if (element instanceof Artifact) {
+ Artifact artifact = (Artifact) element;
+ if (artifact.isDeleted()) throw new IllegalArgumentException("Can not display a deleted artifact");
+
+ String name = artifact.getDescriptiveName();
+ if (name == null) name = "";
+ if (artifactExplorer != null) {
+ if (artifactExplorer.showArtIds()) {
+ name += " (" + artifact.getArtId() + ") ";
+ }
+ if (artifactExplorer.showArtType()) {
+ name += " <" + artifact.getArtifactTypeName() + "> ";
+ }
+ name += artifactExplorer.getSelectedAttributeData(artifact);
+ }
+ if (showBranch) {
+ name += " <" + artifact.getBranch().getBranchShortName() + "> ";
+ }
+ try {
+ int deletionTransactionId = artifact.getDeletionTransactionId();
+ if (deletionTransactionId != -1) {
+ name += " <deleted in tx " + deletionTransactionId + "> ";
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+
+ return name;
+ } else {
+ return element.toString();
+ }
+ }
+
+ public void showBranch(boolean showBranch) {
+ this.showBranch = showBranch;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactListContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactListContentProvider.java
new file mode 100644
index 00000000000..88671e57110
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactListContentProvider.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchResult;
+import org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchResult;
+import org.eclipse.search.ui.text.Match;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public class ArtifactListContentProvider implements IStructuredContentProvider {
+ private final Object[] EMPTY_ARR = new Object[0];
+
+ private ArtifactSearchViewPage aPage;
+ private AbstractArtifactSearchResult aResult;
+
+ public ArtifactListContentProvider(ArtifactSearchViewPage page) {
+ aPage = page;
+ }
+
+ public void dispose() {
+ // nothing to do
+ }
+
+ public Object[] getElements(Object inputElement) {
+ boolean firstTime = true;
+ SkynetEventManager.getInstance().unRegisterAll(aPage);
+
+ if (inputElement instanceof ArtifactSearchResult) {
+ Object[] objs = ((ArtifactSearchResult) inputElement).getElements();
+
+ for (Object obj : objs) {
+
+ if (obj instanceof Match) {
+ if (((Match) objs[0]).getElement() instanceof Artifact) {
+
+ Artifact artifact = (Artifact) ((Match) objs[0]).getElement();
+ SkynetEventManager.getInstance().register(ArtifactModifiedEvent.class, artifact, aPage);
+
+ if (firstTime) {
+ updatePageBranch(artifact);
+ firstTime = false;
+ }
+ }
+ }
+ }
+ return objs;
+ } else
+ return EMPTY_ARR;
+ }
+
+ private void updatePageBranch(Artifact artifact) {
+ if (artifact != null) {
+ aPage.updateBranch(artifact.getBranch());
+ }
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput instanceof ArtifactSearchResult) {
+ aResult = (ArtifactSearchResult) newInput;
+ }
+ }
+
+ public void elementsChanged(Object[] updatedElements) {
+ TableViewer viewer = getViewer();
+
+ if (aResult.getMatchCount() > 0) {
+ for (int i = 0; i < updatedElements.length; i++) {
+ if (viewer.testFindItem(updatedElements[i]) != null)
+ viewer.update(updatedElements[i], null);
+ else
+ viewer.add(updatedElements[i]);
+ }
+ } else
+ viewer.remove(updatedElements);
+ }
+
+ public TableViewer getViewer() {
+ return (TableViewer) aPage.getViewer();
+ }
+
+ public void clear() {
+ getViewer().refresh();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java
new file mode 100644
index 00000000000..d77723a24cc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactSearchViewPage.java
@@ -0,0 +1,738 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.CacheArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.TransactionArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.relation.CacheRelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.relation.TransactionRelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.AbstractSelectionEnabledHandler;
+import org.eclipse.osee.framework.ui.plugin.util.Commands;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchViewPage;
+import org.eclipse.osee.framework.ui.skynet.search.ArtifactExportJob;
+import org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchResult;
+import org.eclipse.osee.framework.ui.skynet.search.report.RelationMatrixExportJob;
+import org.eclipse.osee.framework.ui.skynet.search.report.ReportJob;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.search.ui.ISearchResult;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.menus.CommandContributionItem;
+import org.eclipse.ui.texteditor.StatusLineContributionItem;
+import org.osgi.framework.Bundle;
+
+public class ArtifactSearchViewPage extends AbstractArtifactSearchViewPage implements IEventReceiver {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactSearchViewPage.class);
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynetd.ArtifactSearchView";
+ private IHandlerService handlerService;
+ private StatusLineContributionItem branchStatusItem;
+ private TableViewer viewer;
+ private ArtifactLabelProvider artifactLabelProvider;
+
+ private static String[] partitions =
+ new String[] {"ACS", "ARC201", "ARC231", "ASE", "CND", "COMM", "HM", "IOP", "MPEGP", "MPEGR", "MSM", "NAV",
+ "NCO", "REND_H", "REND_L", "REND_R", "REND_T", "SSRD_GW", "USM", "VAM", "WPS"};
+
+ public static class DecoratorIgnoringViewerSorter extends ViewerSorter {
+ private final ILabelProvider aLabelProvider;
+
+ public DecoratorIgnoringViewerSorter(ILabelProvider labelProvider) {
+ super(null); // lazy initialization
+ aLabelProvider = labelProvider;
+ }
+
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ String name1 = aLabelProvider.getText(e1);
+ String name2 = aLabelProvider.getText(e2);
+ if (name1 == null) name1 = "";
+ if (name2 == null) name2 = "";
+ return getComparator().compare(name1, name2);
+ }
+ }
+
+ private ArtifactListContentProvider aContentProvider;
+
+ public ArtifactSearchViewPage() {
+ branchStatusItem = new StatusLineContributionItem("skynet.branch", true, 30);
+ branchStatusItem.setImage(SkynetGuiPlugin.getInstance().getImage("branch.gif"));
+ branchStatusItem.setToolTipText("The branch that the artifacts in the explorer are from.");
+ }
+
+ @Override
+ protected void configureTableViewer(final TableViewer viewer) {
+ viewer.setUseHashlookup(true);
+ this.viewer = viewer;
+
+ artifactLabelProvider = new ArtifactLabelProvider();
+
+ viewer.setLabelProvider(new DecoratingLabelProvider(artifactLabelProvider,
+ PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
+
+ aContentProvider = new ArtifactListContentProvider(this);
+ viewer.setContentProvider(aContentProvider);
+ viewer.setSorter(new DecoratorIgnoringViewerSorter(artifactLabelProvider));
+ // globalMenuHelper = new ArtifactTableViewerGlobalMenuHelper(viewer);
+
+ viewer.addDoubleClickListener(new ArtifactDoubleClick());
+
+ createContextMenu(viewer.getControl());
+
+ new SearchDragAndDrop(viewer.getTable(), VIEW_ID);
+
+ getSite().getActionBars().getStatusLineManager().add(branchStatusItem);
+ SkynetContributionItem.addTo(this, false);
+ getSite().getActionBars().updateActionBars();
+ }
+
+ @Override
+ public void setInput(ISearchResult search, Object viewState) {
+ if (search != null) {
+ artifactLabelProvider.showBranch(((ArtifactSearchResult) search).getQuery().showBranch());
+ }
+ super.setInput(search, viewState);
+ }
+
+ private void createContextMenu(Control menuOnwer) {
+ PlatformUI.getWorkbench().getService(IHandlerService.class);
+ handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
+
+ MenuManager menuManager = new MenuManager();
+ menuManager.add(new Separator());
+ viewer.getTable().setMenu(menuManager.createContextMenu(viewer.getTable()));
+ getSite().registerContextMenu("org.eclipse.osee.framework.ui.skynet.ArtifactSearchView", menuManager, viewer);
+
+ createReportHandler(menuManager, viewer);
+ createViewTableHandler(menuManager, viewer);
+ menuManager.add(new Separator());
+ createShowInExplorerHandler(menuManager, viewer);
+ createResourceHistoryHandler(menuManager, viewer);
+ menuManager.add(new Separator());
+ createExportHandler(menuManager, viewer);
+ menuManager.add(new Separator());
+ createOpenArtifactHandler(menuManager, viewer);
+ createOpenInAtsWorldHandler(menuManager, viewer);
+ createEditArtifactHandler(menuManager, viewer);
+ createPreviewArtifactHandler(menuManager, viewer);
+ createOpenInMassArtifactEditorHandler(menuManager, viewer);
+ menuManager.add(new Separator());
+ createSetAllPartitions(menuManager, viewer);
+
+ // The additions group is a standard group
+ menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ /**
+ * @param menuManager
+ * @param viewer
+ */
+ private void createReportHandler(MenuManager menuManager, TableViewer viewer) {
+ MenuManager reportManager = new MenuManager("Run Reports");
+
+ createRelationMatrixReportMenuItem(menuManager, reportManager);
+ createDynamicReportCommands(menuManager, reportManager);
+ menuManager.add(reportManager);
+ }
+
+ /**
+ * @param menuManager
+ * @param viewer
+ */
+ private void createOpenArtifactHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem openArtifactCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.openInEdit.command", getSite(),
+ null, null, null, null, null, null, null, null);
+ menuManager.add(openArtifactCommand);
+
+ handlerService.activateHandler(openArtifactCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ArtifactEditor.editArtifacts(getSelectedArtifacts(viewer));
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ /**
+ * @param menuManager
+ * @param viewer
+ */
+ private void createEditArtifactHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem editArtifactCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.edit.command", getSite(), null,
+ null, null, null, null, null, null, null);
+ menuManager.add(editArtifactCommand);
+
+ handlerService.activateHandler(editArtifactCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ RendererManager.getInstance().editInJob(getSelectedArtifact(viewer));
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return accessControlManager.checkObjectListPermission(getSelectedArtifacts(viewer), PermissionEnum.WRITE);
+ }
+ });
+ }
+
+ /**
+ * @param menuManager
+ * @param viewer
+ */
+ private void createPreviewArtifactHandler(MenuManager menuManager, final TableViewer viewer) {
+ MenuManager previewMenu = new MenuManager("Preview");
+
+ CommandContributionItem previewArtifactCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.previewArtifact.command",
+ getSite(), null, null, null, null, null, null, null, null);
+ previewMenu.add(previewArtifactCommand);
+
+ handlerService.activateHandler(previewArtifactCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ RendererManager.getInstance().previewInJob(getSelectedArtifact(viewer), "PREVIEW_ARTIFACT");
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return accessControlManager.checkObjectListPermission(getSelectedArtifacts(viewer), PermissionEnum.READ);
+ }
+ });
+
+ CommandContributionItem previewArtifactRecurseCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.previewArtifactRecurse.command",
+ getSite(), null, null, null, null, null, null, null, null);
+ previewMenu.add(previewArtifactRecurseCommand);
+
+ handlerService.activateHandler(previewArtifactRecurseCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ArtifactExplorer.revealArtifact(getSelectedArtifact(viewer));
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return accessControlManager.checkObjectListPermission(getSelectedArtifacts(viewer), PermissionEnum.READ);
+ }
+ });
+
+ menuManager.add(previewMenu);
+ }
+
+ /**
+ *
+ */
+ public void updateBranch(Branch branch) {
+ branchStatusItem.setText(branch.getDisplayName());
+ branchStatusItem.setImage(BranchLabelProvider.getBranchImage(branch));
+ }
+
+ private void createViewTableHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem openArtifactsCommand =
+ Commands.getLocalCommandContribution(ArtifactSearchViewPage.VIEW_ID, getSite(), "viewTableCommand",
+ "View Table Report", null, null, null, "V", null, null);
+
+ menuManager.add(openArtifactsCommand);
+
+ handlerService.activateHandler(openArtifactsCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ (new TableViewerReport(viewer)).open();
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void createDynamicReportCommands(MenuManager parentMenuManager, MenuManager childMenuManager) {
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.ui.skynet.ArtifactReport");
+ for (IExtension extension : point.getExtensions()) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement element : elements) {
+ if (element.getName().equals("report")) {
+ classname = element.getAttribute("class");
+ bundleName = element.getContributor().getName();
+
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> reportClass = bundle.loadClass(classname);
+ Object obj = reportClass.newInstance();
+ ReportJob reportJob = (ReportJob) obj;
+ createReportJobCommand(parentMenuManager, childMenuManager, reportJob);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ } catch (NoClassDefFoundError er) {
+ logger.log(
+ Level.WARNING,
+ "Failed to find a class definition for " + classname + ", registered from bundle " + bundleName,
+ er);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private void createReportJobCommand(MenuManager parentMenuManager, MenuManager childMenuManager, final ReportJob reportJob) {
+ CommandContributionItem reportCommand =
+ Commands.getLocalCommandContribution(
+ "org.eclipse.osee.framework.ui.skynet." + reportJob.getName() + ".command", getSite(), null,
+ reportJob.getName(), null, null, null, null, null, null);
+ childMenuManager.add(reportCommand);
+
+ handlerService.activateHandler(reportCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(parentMenuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Jobs.startJob(reportJob);
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void createRelationMatrixReportMenuItem(MenuManager menuManager, MenuManager reportManager) {
+ MenuManager matrixManager = new MenuManager("Relation Matrix Reports");
+ RelationPersistenceManager relationManager = RelationPersistenceManager.getInstance();
+ for (IRelationLinkDescriptor descriptor : relationManager.getIRelationLinkDescriptors(branchManager.getDefaultBranch())) {
+ final ReportJob reportJob = new RelationMatrixExportJob(descriptor);
+ createReportJobCommand(menuManager, matrixManager, reportJob);
+ }
+ reportManager.add(matrixManager);
+ }
+
+ private void createExportHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem openArtifactsCommand =
+ Commands.getLocalCommandContribution(ArtifactSearchViewPage.VIEW_ID, getSite(), "createExportCommand",
+ "Export Artifact(s)", null, null, null, "V", null, null);
+ menuManager.add(openArtifactsCommand);
+
+ handlerService.activateHandler(openArtifactsCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ Jobs.startJob(new ArtifactExportJob(viewer));
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void createResourceHistoryHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem resourceHistoryCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.resource.command", getSite(),
+ null, null, null, null, null, null, null, null);
+ menuManager.add(resourceHistoryCommand);
+
+ handlerService.activateHandler(resourceHistoryCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Artifact selectedArtifact = getSelectedArtifact(viewer);
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ RevisionHistoryView revisionHistoryView =
+ (RevisionHistoryView) page.showView(RevisionHistoryView.VIEW_ID, selectedArtifact.getGuid(),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ revisionHistoryView.explore(selectedArtifact);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ // private void createHistoryMenuItem(Menu parentMenu, final TableViewer viewer) {
+ // revisionMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ // revisionMenuItem.setText("&Show Resource History ");
+ // revisionMenuItem.addSelectionListener(new SelectionAdapter() {
+ //
+ // public void widgetSelected(SelectionEvent e) {
+ // Artifact selectedArtifact = getSelectedArtifact(viewer);
+ // IWorkbenchPage page = AWorkbench.getActivePage();
+ // try {
+ // RevisionHistoryView revisionHistoryView =
+ // (RevisionHistoryView) page.showView(RevisionHistoryView.VIEW_ID, selectedArtifact.getGuid(),
+ // IWorkbenchPage.VIEW_ACTIVATE);
+ // revisionHistoryView.explore(selectedArtifact);
+ // } catch (Exception ex) {
+ // logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ // }
+ // }
+ // });
+ // }
+
+ private void createShowInExplorerHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem showInArtifactExplorerCommand =
+ Commands.getLocalCommandContribution(
+ "org.eclipse.osee.framework.ui.skynet.revealArtifactInExplorer.command", getSite(), null, null, null,
+ null, null, null, null, null);
+ menuManager.add(showInArtifactExplorerCommand);
+
+ handlerService.activateHandler(showInArtifactExplorerCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ArtifactExplorer.revealArtifact(getSelectedArtifact(viewer));
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void createOpenInMassArtifactEditorHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem editArtifactCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.OpenMassEditcommand", getSite(),
+ null, null, null, null, null, null, null, null);
+ menuManager.add(editArtifactCommand);
+
+ handlerService.activateHandler(editArtifactCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ MassArtifactEditor.editArtifacts("", getSelectedArtifacts(viewer));
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void createOpenInAtsWorldHandler(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem openInAtsWorldCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.openInAtsWorld", getSite(),
+ null, null, null, null, null, null, null, null);
+ menuManager.add(openInAtsWorldCommand);
+
+ handlerService.activateHandler(openInAtsWorldCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ MassArtifactEditor.editArtifacts("", getSelectedArtifacts(viewer));
+ try {
+ if (OseeAts.getAtsLib() != null) OseeAts.getAtsLib().openInAtsWorld("", getSelectedArtifacts(viewer));
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void createSetAllPartitions(MenuManager menuManager, final TableViewer viewer) {
+ CommandContributionItem setAllPartitionsCommand =
+ Commands.getLocalCommandContribution("org.eclipse.osee.framework.ui.skynet.SetAllPartitions", getSite(),
+ null, "Set all Partitions", null, null, null, null, null, null);
+ menuManager.add(setAllPartitionsCommand);
+
+ handlerService.activateHandler(setAllPartitionsCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ StringBuffer sb = new StringBuffer();
+ final Set<Artifact> arts = new HashSet<Artifact>();
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ Artifact art = (Artifact) ((Match) iter.next()).getElement();
+ arts.add(art);
+ sb.append(art.getDescriptiveName() + "\n");
+ }
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Set All Partitions",
+ "Set All Partitions on Artifacts\n\n" + sb.toString())) {
+
+ AbstractSkynetTxTemplate partitionsTx = new AbstractSkynetTxTemplate(branchManager.getDefaultBranch()) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (Artifact art : arts) {
+ DynamicAttributeManager dam = art.getAttributeManager("Partition");
+ for (String partition : partitions) {
+ boolean found = false;
+ for (Attribute attr : dam.getAttributes()) {
+ if (attr.getStringData().equals(partition)) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) dam.getNewAttribute().setStringData(partition);
+ }
+ for (Attribute attr : dam.getAttributes()) {
+ if (attr.getStringData().equals("Unspecified")) attr.delete();
+ }
+
+ art.persist();
+ }
+ }
+ };
+ try {
+ partitionsTx.execute();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+ });
+ }
+
+ private void registerForEvents() {
+ eventManager.unRegisterAll(this);
+
+ eventManager.register(CacheArtifactModifiedEvent.class, this);
+ eventManager.register(CacheRelationModifiedEvent.class, this);
+ eventManager.register(TransactionRelationModifiedEvent.class, this);
+ eventManager.register(TransactionArtifactModifiedEvent.class, this);
+ }
+
+ @Override
+ protected void elementsChanged(Object[] objects) {
+ if (aContentProvider != null) {
+ aContentProvider.elementsChanged(objects);
+ }
+ }
+
+ private Artifact getSelectedArtifact(TableViewer viewer) {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ if (selection.size() > 0) {
+ return (Artifact) ((Match) selection.getFirstElement()).getElement();
+ }
+ return null;
+ }
+
+ private List<Artifact> getSelectedArtifacts(TableViewer viewer) {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ Object[] objects = selection.toArray();
+ LinkedList<Artifact> artifacts = new LinkedList<Artifact>();
+
+ if (objects.length == 0) return new ArrayList<Artifact>(0);
+
+ if (objects[0] instanceof Match) {
+ for (Object object : objects) {
+ artifacts.add((Artifact) ((Match) object).getElement());
+ }
+ }
+ return artifacts;
+ }
+
+ @Override
+ public void dispose() {
+ eventManager.unRegisterAll(this);
+ super.dispose();
+ }
+
+ public void onEvent(Event event) {
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ // public class ArtifactMenuListener implements MenuListener {
+ //
+ // public void menuHidden(MenuEvent e) {
+ // }
+ //
+ // public void menuShown(MenuEvent e) {
+ // // Use this menu listener until all menu items can be moved to GlobaMenu
+ // GlobalMenuPermissions permiss = new GlobalMenuPermissions(globalMenuHelper);
+ //
+ // IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ // addTemplateItem.setEnabled(selection.size() == 1 && ((Match) selection.getFirstElement()).getElement() instanceof WordRenderer);
+ //
+ // openMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isWritePermission());
+ // openInAtsWorldMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isWritePermission());
+ // openInMassEditorMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isWritePermission());
+ // skywalkerEditorMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isReadPermission());
+ // // previewMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isReadPermission());
+ // editItem.setEnabled(permiss.isHasArtifacts() && permiss.isWritePermission());
+ // revisionMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isReadPermission());
+ // showInExplorerMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isReadPermission());
+ // exportMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isReadPermission());
+ // setAllPartitionsMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isWritePermission());
+ // }
+ // }
+
+ private class SearchDragAndDrop extends SkynetDragAndDrop {
+
+ public SearchDragAndDrop(Table table, String viewId) {
+ super(table, viewId);
+ }
+
+ @Override
+ public Artifact[] getArtifacts() {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+
+ Object[] matches = selection.toArray();
+ Artifact[] artifacts = new Artifact[matches.length];
+
+ for (int index = 0; index < matches.length; index++) {
+ Match match = (Match) matches[index];
+ artifacts[index] = (Artifact) match.getElement();
+ }
+
+ return artifacts;
+ }
+
+ @Override
+ public void performDragOver(DropTargetEvent event) {
+ event.detail = DND.DROP_NONE;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper#getSelectedArtifacts()
+ */
+ public Collection<Artifact> getSelectedArtifacts() {
+ registerForEvents();
+ return getSelectedArtifacts(viewer);
+ }
+
+ /**
+ * @return the viewer
+ */
+ public TableViewer getViewer() {
+ return viewer;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactViewerSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactViewerSorter.java
new file mode 100644
index 00000000000..1747241c5bb
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactViewerSorter.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+public class ArtifactViewerSorter extends ViewerSorter {
+
+ public ArtifactViewerSorter() {
+ super();
+ }
+
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object o1, Object o2) {
+ return getComparator().compare(((Artifact) o1).getDescriptiveName(), ((Artifact) o2).getDescriptiveName());
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeCellModifier.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeCellModifier.java
new file mode 100644
index 00000000000..91443db3a86
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeCellModifier.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.Date;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.BlobWordAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.CompressedContentAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DateAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.EnumeratedAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.FloatingPointAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.IntegerAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.StringAttribute;
+import org.eclipse.osee.framework.ui.skynet.widgets.cellEditor.DateValue;
+import org.eclipse.osee.framework.ui.skynet.widgets.cellEditor.EnumeratedValue;
+import org.eclipse.osee.framework.ui.skynet.widgets.cellEditor.StringValue;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.widgets.Item;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class AttributeCellModifier implements ICellModifier {
+ private TableViewer tableViewer;
+ private DateValue dateValue;
+ private EnumeratedValue enumeratedValue;
+ private StringValue stringValue;
+ private IDirtiableEditor editor;
+
+ private AttributesComposite attrComp;
+
+ /**
+ *
+ */
+ public AttributeCellModifier(IDirtiableEditor editor, TableViewer tableViewer, AttributesComposite attrComp) {
+ super();
+ this.tableViewer = tableViewer;
+ this.attrComp = attrComp;
+ this.dateValue = new DateValue();
+ this.enumeratedValue = new EnumeratedValue();
+ this.stringValue = new StringValue();
+ this.editor = editor;
+
+ // this.pList = new PermissionList();
+ // pList.addPermission(Permission.PermissionEnum.EDITREQUIREMENT);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
+ */
+ public boolean canModify(Object element, String property) {
+ attrComp.updateLabel("");
+ return property.equals("value");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
+ */
+ public Object getValue(Object element, String property) {
+ Attribute attribute = (Attribute) element;
+ if (attribute instanceof StringAttribute || attribute instanceof IntegerAttribute || attribute instanceof FloatingPointAttribute) {
+ stringValue.setValue(attribute.getStringData());
+ return stringValue;
+ }
+ if (attribute instanceof EnumeratedAttribute) {
+ enumeratedValue.setValue(attribute.getStringData());
+ enumeratedValue.setChocies(((EnumeratedAttribute) attribute).getChoices());
+ return enumeratedValue;
+ }
+ if (attribute instanceof DateAttribute) {
+ dateValue.setValue(((DateAttribute) attribute).getDate());
+ return dateValue;
+ }
+ if (attribute instanceof BlobWordAttribute) {
+ stringValue.setValue(attribute.getStringData());
+ return stringValue;
+ }
+ if (attribute instanceof CompressedContentAttribute) {
+ StringValue val = new StringValue();
+ val.setValue("Compressed Content");
+ return val;
+ }
+ throw new IllegalArgumentException("unexpected element type: " + element.getClass().getName());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String,
+ * java.lang.Object)
+ */
+ public void modify(Object element, String property, Object value) {
+ // Note that it is possible for an SWT Item to be passed instead of the model element.
+ if (element instanceof Item) {
+ element = ((Item) element).getData();
+ }
+ Attribute attribute = (Attribute) element;
+
+ if (attribute instanceof DateAttribute) {
+ ((DateAttribute) attribute).setValue((Date) value);
+ }
+ //Compressed attributes should not be changed.
+ else if (!(attribute instanceof CompressedContentAttribute)) {
+ attribute.setStringData(value.toString());
+ }
+ tableViewer.update(element, null);
+ editor.onDirtied();
+ attrComp.notifyModifyAttribuesListeners();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeContentProvider.java
new file mode 100644
index 00000000000..521ced7bce0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeContentProvider.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class AttributeContentProvider implements IStructuredContentProvider {
+
+ private Collection<String> ignoreAttributes;
+ private Collection<DynamicAttributeManager> attributeTypes;
+ private Object[] dummyArray = new Object[0];
+
+ /**
+ *
+ */
+ public AttributeContentProvider(Collection<String> ignoreAttributes) {
+ super();
+ this.ignoreAttributes = ignoreAttributes;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+
+ if (inputElement instanceof Artifact) {
+
+ Artifact artifact = (Artifact) inputElement;
+
+ ArrayList<Attribute> elements = new ArrayList<Attribute>();
+ try {
+ Collection<DynamicAttributeManager> types = populateAttributeTypes(artifact);
+ for (DynamicAttributeManager type : types) {
+ for (Attribute attribute : type.getAttributes()) {
+ elements.add(attribute);
+ }
+ }
+ return elements.toArray();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ return dummyArray;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ public Collection<DynamicAttributeManager> populateAttributeTypes(Artifact artifact) throws SQLException {
+ Collection<DynamicAttributeManager> attrTypes = null;
+ if (ignoreAttributes == null)
+ attrTypes = artifact.getAttributes();
+ else {
+ attrTypes = new ArrayList<DynamicAttributeManager>();
+ for (DynamicAttributeManager udat : artifact.getAttributes())
+ if (!ignoreAttributes.contains(udat.getDescriptor().getName())) attrTypes.add(udat);
+ }
+ return attrTypes;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+
+ /**
+ * @return Returns the attributeTypes.
+ */
+ public Collection<DynamicAttributeManager> getAttributeTypes() {
+ return attributeTypes;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeLabelProvider.java
new file mode 100644
index 00000000000..a0d9aa44436
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeLabelProvider.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.EnumeratedAttribute;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class AttributeLabelProvider implements ITableLabelProvider {
+
+ /**
+ *
+ */
+ public AttributeLabelProvider() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ Attribute attribute = (Attribute) element;
+ if (columnIndex == 0) {
+ return attribute.getName();
+ }
+ if ((attribute instanceof EnumeratedAttribute) && attribute.getStringData() == null) {
+ return "<Select>";
+ }
+ return attribute.getStringData();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeMenuSelectionListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeMenuSelectionListener.java
new file mode 100644
index 00000000000..fdc56bf6935
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributeMenuSelectionListener.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class AttributeMenuSelectionListener extends SelectionAdapter {
+ private AttributesComposite attrsComp;
+ private TableViewer tableViewer;
+ private IDirtiableEditor editor;
+
+ public AttributeMenuSelectionListener(AttributesComposite attrsComp, TableViewer tableViewer, IDirtiableEditor editor) {
+ this.attrsComp = attrsComp;
+ this.tableViewer = tableViewer;
+ this.editor = editor;
+ }
+
+ /*
+ * (non-Javadoc) @@see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclips
+ * e.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent ev) {
+ DynamicAttributeManager type = (DynamicAttributeManager) ((MenuItem) ev.getSource()).getData();
+ type.getNewAttribute();
+
+ tableViewer.refresh();
+ attrsComp.layout();
+ attrsComp.getParent().layout();
+ editor.onDirtied();
+ attrsComp.notifyModifyAttribuesListeners();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributesComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributesComposite.java
new file mode 100644
index 00000000000..4faa3492fc6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/AttributesComposite.java
@@ -0,0 +1,353 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerEditor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.cellEditor.UniversalCellEditor;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.ArmEvent;
+import org.eclipse.swt.events.ArmListener;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.ToolBar;
+
+public class AttributesComposite extends Composite {
+ private TableViewer tableViewer;
+ private Table table;
+ private Text helpText;
+ private static final String[] columnNames = new String[] {"name", "value"};
+ private static final Integer[] columnWidths = new Integer[] {200, 600};
+ private Artifact artifact;
+ private IDirtiableEditor editor;
+ private Label warningLabel;
+ private boolean displayNameAttribute = true;
+ private ArrayList<ModifyAttributesListener> modifyAttrListeners = new ArrayList<ModifyAttributesListener>();
+ private AttributeContentProvider attributeContentProvider;
+ private MenuItem deleteItem;
+ private ToolBar toolBar;
+
+ public static final int NAME_COLUMN_INDEX = 0;
+ public static final int VALUE_COLUMN_INDEX = 1;
+
+ public AttributesComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact) {
+ this(editor, parent, style, artifact, null, null);
+ }
+
+ public AttributesComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact, ToolBar toolBar) {
+ this(editor, parent, style, artifact, null, toolBar);
+ }
+
+ public AttributesComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact, Collection<String> ignoreAttributes) {
+ this(editor, parent, style, artifact, ignoreAttributes, null);
+ }
+
+ public AttributesComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact, Collection<String> ignoreAttributes, ToolBar toolBar) {
+ super(parent, style);
+ this.artifact = artifact;
+ this.editor = editor;
+ this.attributeContentProvider = new AttributeContentProvider(ignoreAttributes);
+
+ create(this);
+ Menu popupMenu = new Menu(parent);
+ createAddMenuItem(popupMenu);
+ createDeleteMenuItem(popupMenu);
+ popupMenu.addMenuListener(new AttributeMenuListener());
+ tableViewer.getTable().setMenu(popupMenu);
+
+ this.toolBar = toolBar;
+ }
+
+ public void updateLabel(String msg) {
+ warningLabel.setText(msg);
+ layout();
+ }
+
+ private void create(Composite parent) {
+ this.setLayout(new GridLayout());
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ SashForm mainSash = new SashForm(this, SWT.NONE);
+ mainSash.setLayout(new GridLayout());
+ mainSash.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ mainSash.setOrientation(SWT.VERTICAL);
+
+ createTableArea(mainSash);
+
+ SashForm sashForm = new SashForm(mainSash, SWT.NONE);
+ sashForm.setLayout(new GridLayout());
+ sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ sashForm.setOrientation(SWT.HORIZONTAL);
+
+ createWarningArea(sashForm);
+ createHelpArea(sashForm);
+
+ mainSash.setWeights(new int[] {8, 2});
+ sashForm.setWeights(new int[] {5, 5});
+
+ setHelpContexts();
+ }
+
+ private void createTableArea(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
+ composite.setText("Attributes");
+
+ createTable(composite);
+ createColumns();
+ createTableViewer(composite);
+
+ tableViewer.refresh();
+ attachTableListeners();
+ }
+
+ private void createTable(Composite parent) {
+ table =
+ new Table(parent,
+ SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+ }
+
+ private void attachTableListeners() {
+ tableViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ Object selected = selection.getFirstElement();
+
+ if (selected instanceof Attribute) {
+ Attribute attribute = (Attribute) selected;
+ DynamicAttributeDescriptor descriptor = attribute.getManager().getDescriptor();
+ if (descriptor.getTipText() != null && !descriptor.getTipText().equals("null"))
+ helpText.setText(descriptor.getTipText());
+ else
+ helpText.setText("");
+ }
+ }
+ });
+ }
+
+ private void createTableViewer(Composite parent) {
+ tableViewer = new TableViewer(table);
+
+ TableViewerEditor.create(
+ tableViewer,
+ new ColumnViewerEditorActivationStrategy(tableViewer),
+ ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);
+ tableViewer.setUseHashlookup(true);
+ tableViewer.setColumnProperties(columnNames);
+
+ if (!artifact.isReadOnly()) {
+ CellEditor[] editors = new CellEditor[columnNames.length];
+ editors[VALUE_COLUMN_INDEX] = new UniversalCellEditor(table, SWT.NONE);
+
+ tableViewer.setCellEditors(editors);
+ tableViewer.setCellModifier(new AttributeCellModifier(editor, tableViewer, this));
+ }
+ tableViewer.setContentProvider(attributeContentProvider);
+ tableViewer.setLabelProvider(new AttributeLabelProvider());
+ tableViewer.setInput(artifact);
+ }
+
+ private void createColumns() {
+ for (int index = 0; index < columnNames.length; index++) {
+ TableColumn column = new TableColumn(table, SWT.LEFT, index);
+ column.setText(columnNames[index]);
+ column.setWidth(columnWidths[index]);
+ }
+ }
+
+ private void createHelpArea(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ composite.setText("Tips");
+
+ helpText = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
+ helpText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ }
+
+ private void createWarningArea(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ composite.setText("Warnings");
+
+ warningLabel = new Label(composite, SWT.NONE);
+ warningLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ warningLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+ updateLabel("");
+ }
+
+ private void createAddMenuItem(Menu parentMenu) {
+ MenuItem addItem = new MenuItem(parentMenu, SWT.CASCADE);
+ addItem.setText("Add");
+ addItem.setEnabled(true && !artifact.isReadOnly());
+
+ // Update the enabled values for the popup menu each time it comes up
+ addItem.addArmListener(new ArmListener() {
+
+ public void widgetArmed(ArmEvent e) {
+ MenuItem addItem = (MenuItem) e.getSource();
+ for (MenuItem attrItem : addItem.getMenu().getItems()) {
+ attrItem.setEnabled(((DynamicAttributeManager) attrItem.getData()).hasRemaining());
+ }
+ }
+ });
+
+ Menu attributesMenu = new Menu(parentMenu);
+
+ try {
+ SelectionAdapter listener = new AttributeMenuSelectionListener(this, tableViewer, editor);
+ for (DynamicAttributeManager type : attributeContentProvider.populateAttributeTypes(artifact)) {
+ DynamicAttributeDescriptor descriptor = type.getDescriptor();
+ // TODO ADD BACK WHEN ACCESS CONTROL IS PUT IN -- Only let the user add attributes intended for them
+ MenuItem item = new MenuItem(attributesMenu, SWT.CASCADE);
+ item.setText(descriptor.getName() + " Attribute");
+ item.setData(type);
+ item.addSelectionListener(listener);
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ addItem.setMenu(attributesMenu);
+ }
+
+ private void createDeleteMenuItem(Menu parentMenu) {
+ deleteItem = new MenuItem(parentMenu, SWT.PUSH);
+ deleteItem.setImage(null);
+ deleteItem.setText("Delete");
+ deleteItem.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ Attribute attribute = getSelectedAttribute();
+ attribute.delete();
+ tableViewer.refresh();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ deleteItem.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ editor.onDirtied();
+ notifyModifyAttribuesListeners();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ });
+ }
+
+ private Attribute getSelectedAttribute() {
+ TableItem[] items = tableViewer.getTable().getSelection();
+ if (items.length > 0)
+ return (Attribute) (tableViewer.getTable().getSelection()[0]).getData();
+ else
+ return null;
+ }
+
+ public class AttributeMenuListener implements MenuListener {
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ Attribute attribute = getSelectedAttribute();
+
+ if (attribute == null) {
+ deleteItem.setText("Delete - No Attribute Selected");
+ deleteItem.setEnabled(false);
+ } else if (!attribute.getManager().canDelete()) {
+ deleteItem.setText("Delete - Lower Limit Met");
+ deleteItem.setEnabled(false);
+ } else {
+ deleteItem.setText("Delete");
+ deleteItem.setEnabled(!artifact.isReadOnly());
+ }
+ }
+ }
+
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ public void refreshArtifact(Artifact artifact) {
+ this.artifact = artifact;
+
+ if (tableViewer.getContentProvider() != null) {
+ tableViewer.setInput(artifact);
+ tableViewer.refresh();
+ }
+ }
+
+ public boolean isDisplayNameAttribute() {
+ return displayNameAttribute;
+ }
+
+ public void addModifyAttributesListener(ModifyAttributesListener listener) {
+ if (!modifyAttrListeners.contains(listener)) modifyAttrListeners.add(listener);
+ }
+
+ public void removeModifyAttributesListener(ModifyAttributesListener listener) {
+ modifyAttrListeners.remove(listener);
+ }
+
+ public void notifyModifyAttribuesListeners() {
+ for (ModifyAttributesListener listener : modifyAttrListeners)
+ listener.handleEvent();
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(tableViewer.getControl(), "artifact_editor");
+ }
+
+ /**
+ * @return the toolBar
+ */
+ public ToolBar getToolBar() {
+ return toolBar;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/DefineHttpServerRequest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/DefineHttpServerRequest.java
new file mode 100644
index 00000000000..dfc93973fa7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/DefineHttpServerRequest.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.linking.HttpRequest;
+import org.eclipse.osee.framework.skynet.core.linking.HttpResponse;
+import org.eclipse.osee.framework.skynet.core.linking.HttpServer;
+import org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class DefineHttpServerRequest implements IHttpServerRequest {
+
+ private static DefineHttpServerRequest instance = new DefineHttpServerRequest();
+
+ public DefineHttpServerRequest() {
+ super();
+ }
+
+ public static DefineHttpServerRequest getInstance() {
+ return instance;
+ }
+
+ public String getUrl(Artifact artifact) {
+ Map<String, String> keyValues = new HashMap<String, String>();
+ String guid = artifact.getGuid();
+ if (Strings.isValid(guid)) {
+ try {
+ keyValues.put("guid", URLEncoder.encode(guid, "UTF-8"));
+ } catch (UnsupportedEncodingException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ return HttpServer.getUrl(this, keyValues);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#getRequestType()
+ */
+ public String getRequestType() {
+ return "Define";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#processRequest(org.eclipse.osee.framework.skynet.core.linking.HttpRequest, org.eclipse.osee.framework.skynet.core.linking.HttpResponse)
+ */
+ public void processRequest(HttpRequest httpRequest, HttpResponse httpResponse) {
+ final Branch branch = BranchPersistenceManager.getInstance().getDefaultBranch();
+ String guid = httpRequest.getParameter("guid");
+ try {
+ final Artifact artifact = ArtifactPersistenceManager.getInstance().getArtifact(guid, branch);
+ if (artifact == null) {
+ httpResponse.outputStandardError(400, "Artifact can not be found in OSEE on branch " + branch);
+ return;
+ }
+ Displays.ensureInDisplayThread(new Runnable() {
+
+ public void run() {
+
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ page.openEditor(new ArtifactEditorInput(artifact),
+ "org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor");
+ page.getViewReferences();
+ } catch (PartInitException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ });
+ String html =
+ AHTML.simplePage(artifact.getDescriptiveName() + " has been opened in OSEE on branch " + branch + "<br><br>" + "<form><input type=button onClick='window.opener=self;window.close()' value='Close'></form>");
+ httpResponse.getPrintStream().println(html);
+ } catch (Exception ex) {
+ httpResponse.outputStandardError(400, "Exception handling request ");
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/GenerateParagraphNumbersAction.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/GenerateParagraphNumbersAction.java
new file mode 100644
index 00000000000..3fd2a15d679
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/GenerateParagraphNumbersAction.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.render.word.WordMLProducer;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class GenerateParagraphNumbersAction extends Action {
+ private final TreeViewer treeViewer;
+
+ public GenerateParagraphNumbersAction(TreeViewer treeViewer) {
+ super("Generate Paragraph Numbers");
+ this.treeViewer = treeViewer;
+ }
+
+ public void run() {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ final Artifact selectedArtifact = (Artifact) selection.getFirstElement();
+
+ Jobs.startJob(new Job("Generate Paragraph Numbers for " + selectedArtifact.getDescriptiveName()) {
+
+ @Override
+ protected IStatus run(final IProgressMonitor monitor) {
+ IStatus toReturn = Status.CANCEL_STATUS;
+ // Give it a stubbed appendable since we just want paragraph numbers out of it
+ // ;o)
+ final WordMLProducer producer = new WordMLProducer(new Appendable() {
+
+ public Appendable append(CharSequence csq) throws IOException {
+ return this;
+ }
+
+ public Appendable append(char c) throws IOException {
+ return this;
+ }
+
+ public Appendable append(CharSequence csq, int start, int end) throws IOException {
+ return this;
+ }
+ });
+
+ AbstractSkynetTxTemplate artifactTx = new AbstractSkynetTxTemplate(selectedArtifact.getBranch()) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (Artifact artifact : selectedArtifact.getChildren()) {
+ if (monitor.isCanceled()) {
+ throw new IllegalStateException("USER CANCELLED");
+ }
+ setParagraphNumber(producer, artifact, monitor);
+ }
+ }
+
+ };
+
+ monitor.beginTask("Rebuilding Paragraph Numbers", IProgressMonitor.UNKNOWN);
+ try {
+ artifactTx.execute();
+ toReturn = Status.OK_STATUS;
+ } catch (Exception ex) {
+ if (ex.getMessage().contains("USER CANCELLED")) {
+ toReturn = Status.CANCEL_STATUS;
+ } else {
+ toReturn =
+ new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, Status.OK, ex.getLocalizedMessage(), ex);
+ }
+ } finally {
+ monitor.done();
+ }
+
+ return toReturn;
+ }
+
+ private void setParagraphNumber(WordMLProducer producer, Artifact artifact, IProgressMonitor monitor) throws IOException, SQLException {
+ String paragraphNumber = producer.startOutlineSubSection("", "", null).toString();
+
+ monitor.subTask(paragraphNumber + " " + artifact.getDescriptiveName());
+ artifact.setAttribute("Imported Paragraph Number", paragraphNumber);
+ artifact.persist();
+ monitor.worked(1);
+
+ for (Artifact child : artifact.getChildren()) {
+ if (monitor.isCanceled()) {
+ return;
+ }
+ setParagraphNumber(producer, child, monitor);
+ }
+ producer.endOutlineSubSection();
+ }
+ });
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/HTMLTransferFormatter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/HTMLTransferFormatter.java
new file mode 100644
index 00000000000..20b37d42ea4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/HTMLTransferFormatter.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class HTMLTransferFormatter {
+ private static final String START = "<A href=\"";
+ private static final String END = "</A>";
+ private static IPreferenceStore prefStore = SkynetGuiPlugin.getInstance().getPreferenceStore();
+
+ public static String getHtml(Artifact... artifacts) {
+ boolean applyWordTagWrap =
+ prefStore.getString(OseePreferencePage.WORDWRAP_KEY) != null && prefStore.getString(
+ OseePreferencePage.WORDWRAP_KEY).equals(IPreferenceStore.TRUE);
+
+ if (artifacts != null) {
+ StringBuilder sb = new StringBuilder();
+
+ if (applyWordTagWrap) {
+ sb.append("Version:1.0\r\nStartHTML:2\r\nEndHTML:170\r\nStartFragment:140\r\nEndFragment:160\r\n" + "StartSelection:140\r\nEndSelection:160\r\n<HTML><HEAD><TITLE> The HTML Clipboard</TITLE></HEAD><BODY>\r\n" + "<!--StartFragment -->\r\n");
+ }
+
+ List<String> urls = new ArrayList<String>(artifacts.length);
+ for (Artifact artifact : artifacts)
+ urls.add(DefineHttpServerRequest.getInstance().getUrl(artifact) + "\">" + artifact.getDescriptiveName());
+
+ sb.append(Collections.toString(urls, START, END + ", " + START, END));
+
+ if (applyWordTagWrap) {
+ sb.append("\r\n<!--EndFragment --></BODY></HTML>");
+ }
+
+ return sb.toString();
+ } else {
+ throw new IllegalArgumentException("The artifact can not be null");
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/IHelpContextIds.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/IHelpContextIds.java
new file mode 100644
index 00000000000..3b0ab8d09cd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/IHelpContextIds.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public interface IHelpContextIds {
+ public static final String PREFIX = "org.eclipse.osee.framework.ui.skynet.";
+ public static final String MAIN_WORKFLOW_PAGE = PREFIX + "main_workflow_page";
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AbstractArtifactExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AbstractArtifactExtractor.java
new file mode 100644
index 00000000000..5e866428b8b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AbstractArtifactExtractor.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class AbstractArtifactExtractor implements ArtifactExtractor {
+ protected static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ private final ArrayList<RoughArtifact> roughArtifacts;
+ private final ArrayList<RoughRelation> roughRelations;
+ protected final Branch branch;
+
+ public AbstractArtifactExtractor(Branch branch) {
+ super();
+ this.roughArtifacts = new ArrayList<RoughArtifact>();
+ this.roughRelations = new ArrayList<RoughRelation>();
+ this.branch = branch;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.ArtifactExtractor#getRoughArtifacts()
+ */
+ public List<RoughArtifact> getRoughArtifacts() {
+ return roughArtifacts;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.ArtifactExtractor#getRoughRelations(osee.define.artifact.Import.RoughArtifact)
+ */
+ public List<RoughRelation> getRoughRelations(RoughArtifact parent) throws Exception {
+ determineParentChildRelations();
+
+ if (parent != null) {
+ for (RoughArtifact roughArtifact : roughArtifacts) {
+ if (!roughArtifact.hasParent()) {
+ parent.addChild(roughArtifact);
+ }
+ }
+ }
+ return roughRelations;
+ }
+
+ private void determineParentChildRelations() throws SQLException {
+ for (RoughArtifact roughArtifact : roughArtifacts) {
+ if (roughArtifact.hasHierarchicalRelation()) {
+ determineParentChildRelationsFor(roughArtifact);
+ }
+ }
+ }
+
+ private void determineParentChildRelationsFor(RoughArtifact roughReq) throws SQLException {
+ // find all children and then save then by their order
+ for (RoughArtifact otherRoughReq : roughArtifacts) {
+ if (roughReq != otherRoughReq) { // don't compare to self
+ if (roughReq.isChild(otherRoughReq)) {
+ roughReq.addChild(otherRoughReq);
+ }
+ }
+ }
+ }
+
+ public void addRoughArtifact(RoughArtifact roughArtifact) {
+ roughArtifacts.add(roughArtifact);
+ }
+
+ public void addRoughRelation(RoughRelation roughRelation) {
+ roughRelations.add(roughRelation);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactExtractor.java
new file mode 100644
index 00000000000..10a29b9169f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactExtractor.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.List;
+
+public interface ArtifactExtractor {
+ /**
+ * called before getRoughArtifacts and getRoughRelations to discover the data that they will return
+ *
+ * @param artifactsFile file from which to extract artifact data
+ * @throws Exception
+ */
+ public abstract void discoverArtifactAndRelationData(File artifactsFile) throws Exception;
+
+ public abstract List<RoughArtifact> getRoughArtifacts() throws Exception;
+
+ public abstract List<RoughRelation> getRoughRelations(RoughArtifact potentialParent) throws Exception;
+
+ public abstract FileFilter getFileFilter();
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportJob.java
new file mode 100644
index 00000000000..0eed060c70e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportJob.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ArtifactImportJob extends Job {
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final ConfigurationPersistenceManager configurationManager =
+ ConfigurationPersistenceManager.getInstance();
+ private final File file;
+ private final ArtifactSubtypeDescriptor folderDescriptor;
+ private final IArtifactImportResolver artifactResolver;
+ private ArtifactExtractor extractor;
+ private final ArrayList<RoughArtifact> roughArtifacts;
+ private final ArrayList<RoughRelation> roughRelations;
+ private final Branch branch;
+ private final Artifact importRoot;
+
+ public ArtifactImportJob(File file, Artifact importRoot, ArtifactExtractor extractor, Branch branch, IArtifactImportResolver artifactResolver) throws IllegalArgumentException, SQLException {
+ super("Importing");
+
+ this.file = file;
+ this.extractor = extractor;
+ this.folderDescriptor = configurationManager.getArtifactSubtypeDescriptor("Folder", branch);
+ this.artifactResolver = artifactResolver;
+ this.roughArtifacts = new ArrayList<RoughArtifact>();
+ this.roughRelations = new ArrayList<RoughRelation>();
+ this.branch = branch;
+ this.importRoot = importRoot;
+ }
+
+ public IStatus run(final IProgressMonitor monitor) {
+ IStatus toReturn;
+ try {
+ final RoughArtifact rootRoughArtifact = new RoughArtifact(importRoot);
+ extractArtifacts(new File[] {file}, rootRoughArtifact);
+
+ if (monitor.isCanceled()) {
+ return new Status(Status.CANCEL, SkynetGuiPlugin.PLUGIN_ID, "User Cancled the operation.");
+ }
+
+ monitor.beginTask("Creating Artifacts", roughArtifacts.size() + roughRelations.size());
+
+ AbstractSkynetTxTemplate txWrapper = new AbstractSkynetTxTemplate(branch) {
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (RoughArtifact roughArtifact : rootRoughArtifact.getChildren()) {
+ // the getReal call with recursively call get real on all descendants of roughArtifact
+ importRoot.addChild(roughArtifact.getReal(branch, monitor, artifactResolver));
+ }
+
+ monitor.setTaskName("Creating Relations");
+ for (RoughRelation roughRelation : roughRelations) {
+ roughRelation.makeReal(branch, monitor);
+ }
+
+ artifactManager.setProgressMonitor(monitor);
+ importRoot.persist(true);
+ artifactManager.setProgressMonitor(null);
+
+ monitor.setTaskName("Committing Transaction");
+ monitor.subTask(""); // blank out leftover relation subtask
+ monitor.worked(1); // cause the status to update
+ }
+ };
+ txWrapper.execute();
+ toReturn = Status.OK_STATUS;
+ } catch (Exception ex) {
+ toReturn = new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.getMessage(), ex);
+ } finally {
+ monitor.done();
+ }
+ return toReturn;
+ }
+
+ /**
+ * used recursively when originally passed a directory, thus an array of files is accepted
+ *
+ * @param files
+ * @param parentArtifact
+ * @throws Exception
+ */
+ private void extractArtifacts(File[] files, RoughArtifact parentArtifact) throws Exception {
+ for (File file : files) {
+ if (file.isFile()) {
+ extractor.discoverArtifactAndRelationData(file);
+ List<RoughArtifact> tempArtifacts = extractor.getRoughArtifacts();
+ roughArtifacts.addAll(tempArtifacts);
+ roughRelations.addAll(extractor.getRoughRelations(parentArtifact));
+
+ for (RoughArtifact roughArtifact : tempArtifacts) {
+ if (roughArtifact.getRoughParent() == null) {
+ parentArtifact.addChild(roughArtifact);
+ }
+ }
+ } else if (file.isDirectory()) {
+ RoughArtifact directoryArtifact = new RoughArtifact(file.getName());
+ directoryArtifact.setHeadingDescriptor(folderDescriptor);
+ directoryArtifact.setPrimaryDescriptor(folderDescriptor);
+ roughArtifacts.add(directoryArtifact);
+ parentArtifact.addChild(directoryArtifact);
+
+ extractArtifacts(file.listFiles(extractor.getFileFilter()), directoryArtifact);
+ } else {
+ throw new IllegalStateException(file + " is not a file or directory");
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPage.java
new file mode 100644
index 00000000000..68455f2776f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPage.java
@@ -0,0 +1,439 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.DirectoryOrFileSelector;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactImportPage extends WizardDataTransferPage {
+ public enum ImportMethod {
+ EXCEL, GENERAL, WHOLE_WORD, WORD_OUTLINE
+ };
+
+ public static final String PAGE_NAME = "osee.define.wizardPage.artifactImportPage";
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactImportPage.class);
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final ConfigurationPersistenceManager configurationManager =
+ ConfigurationPersistenceManager.getInstance();
+ private final Artifact destinationArtifact;
+ private List typeList;
+ private List branchList;
+
+ private Button chkReuseArtifacts;
+ private Button radImportUnderDhRoot;
+ private Button radImportUnderNamedRootFolder;
+ private Button radImportUnderSelection;
+ private Text txtImportUnderFolderName;
+
+ private DirectoryOrFileSelector directoryFileSelector;
+
+ private Button radWordOutlineExtractor;
+ private Button radExcelExtractor;
+ private Button radWholeWordExtractor;
+ private Button radGeneralExtractor;
+
+ private File importResource;
+
+ private boolean built;
+
+ /**
+ * Constructor used by the Skynet drag-n-drop
+ */
+ public ArtifactImportPage(File importResource, Artifact reuseRootArtifact) {
+ super(PAGE_NAME);
+ Assert.isNotNull(importResource, "importResource can not be null");
+ Assert.isNotNull(reuseRootArtifact, "reuseRootArtifact can not be null");
+
+ this.importResource = importResource;
+ this.destinationArtifact = reuseRootArtifact;
+ this.built = false;
+ }
+
+ /**
+ * Constructor that is used by the Eclipse framework
+ *
+ * @param pageName
+ * @param selection
+ */
+ public ArtifactImportPage(IStructuredSelection selection) {
+ super(PAGE_NAME);
+
+ this.importResource = null;
+ Artifact selectedArtifact = null;
+ if (selection != null && selection.size() == 1) {
+ Object firstElement = selection.getFirstElement();
+ if (firstElement instanceof IAdaptable) {
+ Object resource = ((IAdaptable) firstElement).getAdapter(IResource.class);
+ if (resource instanceof IResource) {
+ importResource = ((IResource) resource).getLocation().toFile();
+ }
+ } else if (firstElement instanceof Artifact) {
+ selectedArtifact = (Artifact) firstElement;
+ }
+ }
+
+ this.destinationArtifact = selectedArtifact;
+ this.built = false;
+ }
+
+ /**
+ * (non-Javadoc) Method declared on IDialogPage.
+ */
+ public void createControl(Composite parent) {
+
+ initializeDialogUnits(parent);
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setFont(parent.getFont());
+
+ createSourceGroup(composite);
+
+ createOptionsGroup(composite);
+
+ built = true;
+
+ restoreWidgetValues();
+ updateWidgetEnablements();
+ setPageComplete(determinePageCompletion());
+
+ setControl(composite);
+ }
+
+ /**
+ * The <code>WizardResourceImportPage</code> implementation of this <code>Listener</code> method handles all
+ * events and enablements for controls on this page. Subclasses may extend.
+ *
+ * @param event Event
+ */
+ public void handleEvent(Event event) {
+ setPageComplete(determinePageCompletion());
+
+ updateWidgetEnablements();
+ }
+
+ private void createSourceGroup(Composite parent) {
+ createImportSource(parent);
+ createImportMethodSelection(parent);
+ setPageComplete(determinePageCompletion());
+ }
+
+ private void createImportSource(Composite parent) {
+
+ directoryFileSelector = new DirectoryOrFileSelector(parent, SWT.NONE, "Import Source", this);
+
+ if (importResource == null) {
+ // Select directory as the default
+ directoryFileSelector.setDirectorySelected(true);
+ } else {
+ directoryFileSelector.setDirectorySelected(!importResource.isFile());
+ directoryFileSelector.setText(importResource.getAbsolutePath());
+ }
+
+ Group composite = new Group(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ radImportUnderDhRoot = new Button(composite, SWT.RADIO);
+ radImportUnderDhRoot.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1));
+ radImportUnderDhRoot.setText("Add to Default Hierarchy Root");
+ radImportUnderDhRoot.setToolTipText("All the top level artifacts that are imported " + "will become root level children.");
+ radImportUnderDhRoot.addListener(SWT.Selection, this);
+
+ radImportUnderNamedRootFolder = new Button(composite, SWT.RADIO);
+ radImportUnderNamedRootFolder.setText("Add to Root Level Folder:");
+ radImportUnderNamedRootFolder.setToolTipText("All the top level artifacts that are imported " + "will become children of the named folder at the root level.");
+ radImportUnderNamedRootFolder.addListener(SWT.Selection, this);
+ txtImportUnderFolderName = new Text(composite, SWT.BORDER);
+ txtImportUnderFolderName.setText("Recent Imports");
+ txtImportUnderFolderName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ radImportUnderSelection = new Button(composite, SWT.RADIO);
+ radImportUnderSelection.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1));
+ radImportUnderSelection.setText("Add to Selected Artifact:" + destinationArtifact);
+ radImportUnderSelection.setToolTipText("All the top level artifacts that are imported " + "will become children of the selected artifact.");
+ radImportUnderSelection.addListener(SWT.Selection, this);
+ radImportUnderSelection.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ if (radImportUnderSelection.getSelection()) {
+ Branch branch = destinationArtifact.getBranch();
+ branchList.setSelection(new String[] {branch.getBranchName()});
+ branchList.showSelection();
+ populateTypeList(branch);
+ }
+ }
+ });
+
+ chkReuseArtifacts = new Button(composite, SWT.CHECK);
+ chkReuseArtifacts.addListener(SWT.Selection, this);
+ chkReuseArtifacts.setText("Re-use Artifacts");
+ chkReuseArtifacts.setEnabled(true);
+ chkReuseArtifacts.setToolTipText("All imported artifacts will be checked against the root\n" + "import artifact and the content will be placed on the artifact\n" + "that has the same identifying attributes and level from the root");
+
+ chkReuseArtifacts.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 2, 1));
+
+ // Setup initial selections
+ chkReuseArtifacts.setSelection(false);
+ if (destinationArtifact == null) {
+ radImportUnderDhRoot.setSelection(true);
+ } else {
+ radImportUnderSelection.setSelection(true);
+ }
+ }
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ // policy: wizards are not allowed to come up with an error message
+ if (visible) {
+ setErrorMessage(null);
+ }
+ }
+
+ @Override
+ protected boolean validateSourceGroup() {
+ return directoryFileSelector.validate(this);
+ }
+
+ protected void createOptionsGroup(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setText("Options");
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ composite.setLayout(new GridLayout(2, false));
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Branch:");
+ label.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
+
+ label = new Label(composite, SWT.NONE);
+ label.setText("Artifact Type:");
+ label.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
+
+ branchList = new List(composite, SWT.BORDER | SWT.V_SCROLL);
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.heightHint = 300;
+ branchList.setLayoutData(gridData);
+
+ typeList = new List(composite, SWT.BORDER | SWT.V_SCROLL);
+ gridData = new GridData(GridData.FILL_BOTH);
+ gridData.heightHint = 300;
+ typeList.setLayoutData(gridData);
+
+ Branch defaultBranch;
+ if (destinationArtifact == null) {
+ defaultBranch = BranchPersistenceManager.getInstance().getDefaultBranch();
+ } else {
+ defaultBranch = destinationArtifact.getBranch();
+ }
+
+ try {
+ int defaultBranchIndex = 0;
+ for (Branch branch : BranchPersistenceManager.getInstance().getBranches()) {
+ branchList.add(branch.getBranchName());
+ branchList.setData(branch.getBranchName(), branch);
+ if (branch.equals(defaultBranch)) {
+ branchList.select(defaultBranchIndex);
+ } else {
+ defaultBranchIndex++;
+ }
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+
+ populateTypeList(defaultBranch);
+ // Start out with an item selected
+ typeList.setSelection(0);
+
+ branchList.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ String itemName = branchList.getItem(branchList.getSelectionIndex());
+ populateTypeList((Branch) branchList.getData(itemName));
+ }
+ });
+ }
+
+ private void populateTypeList(Branch branch) {
+ try {
+ String[] selection = typeList.getSelection();
+ typeList.removeAll();
+ for (ArtifactSubtypeDescriptor descriptor : configurationManager.getArtifactSubtypeDescriptors(branch)) {
+ typeList.add(descriptor.getName());
+ typeList.setData(descriptor.getName(), descriptor);
+ }
+ typeList.setSelection(selection);
+ // If the item wasn't available in the new list
+ if (typeList.getSelectionCount() == 0) {
+ typeList.select(0);
+ }
+ typeList.showSelection();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ typeList.add("error loading artifact types");
+ }
+ }
+
+ private void createImportMethodSelection(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setText("Import Method");
+ composite.setToolTipText("Select the method to be used for importing the selected file or directory");
+ GridLayout layout = new GridLayout(2, true);
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ radWordOutlineExtractor = new Button(composite, SWT.RADIO);
+ radWordOutlineExtractor.setText("Word Outline");
+ radWordOutlineExtractor.setToolTipText(WordOutlineExtractor.getDescription());
+ radWordOutlineExtractor.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 1, 1));
+ radWordOutlineExtractor.addListener(SWT.Selection, this);
+
+ radWholeWordExtractor = new Button(composite, SWT.RADIO);
+ radWholeWordExtractor.setText("Whole Word Document");
+ radWholeWordExtractor.setToolTipText(WholeWordDocumentExtractor.getDescription());
+ radWholeWordExtractor.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 1, 1));
+ radWholeWordExtractor.addListener(SWT.Selection, this);
+
+ radExcelExtractor = new Button(composite, SWT.RADIO);
+ radExcelExtractor.setText("Excel XML Artifacts");
+ radExcelExtractor.setToolTipText(ExcelArtifactExtractor.getDescription());
+ radExcelExtractor.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 1, 1));
+ radExcelExtractor.addListener(SWT.Selection, this);
+
+ radGeneralExtractor = new Button(composite, SWT.RADIO);
+ radGeneralExtractor.setText("General Documents (All Formats)");
+ radGeneralExtractor.setToolTipText(NativeDocumentExtractor.getDescription());
+ radGeneralExtractor.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 1, 1));
+ radGeneralExtractor.addListener(SWT.Selection, this);
+
+ radWordOutlineExtractor.setSelection(true);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.dialogs.WizardResourceImportPage#allowNewContainerName()
+ */
+ @Override
+ protected boolean allowNewContainerName() {
+ return true;
+ }
+
+ public File getImportFile() {
+ return directoryFileSelector.getFile();
+ }
+
+ public boolean isExcelExtractor() {
+ return radExcelExtractor.getSelection();
+ }
+
+ public boolean isWholeWordExtractor() {
+ return radWholeWordExtractor.getSelection();
+ }
+
+ public boolean isGeneralDocumentExtractor() {
+ return radGeneralExtractor.getSelection();
+ }
+
+ public boolean isWordOutlineExtractor() {
+ return radWordOutlineExtractor.getSelection();
+ }
+
+ public ArtifactSubtypeDescriptor getSelectedType() {
+ String itemName = typeList.getItem(typeList.getSelectionIndex());
+ return (ArtifactSubtypeDescriptor) typeList.getData(itemName);
+ }
+
+ public Branch getSelectedBranch() {
+ if (chkReuseArtifacts.getSelection()) {
+ return destinationArtifact.getBranch();
+ } else {
+ String itemName = branchList.getItem(branchList.getSelectionIndex());
+ return (Branch) branchList.getData(itemName);
+ }
+ }
+
+ public Artifact getImportRoot() throws SQLException {
+ Artifact importRoot;
+
+ if (radImportUnderDhRoot.getSelection()) {
+ importRoot = artifactManager.getDefaultHierarchyRootArtifact(getSelectedBranch());
+ } else if (radImportUnderNamedRootFolder.getSelection()) {
+ importRoot =
+ artifactManager.getDefaultHierarchyRootArtifact(getSelectedBranch()).getChild(
+ txtImportUnderFolderName.getText());
+ } else if (radImportUnderSelection.getSelection()) {
+ importRoot = destinationArtifact;
+ } else {
+ throw new IllegalStateException("One of the 3 radio buttons should be selected.");
+ }
+
+ return importRoot;
+ }
+
+ public Artifact getReuseArtifactRoot() {
+ if (chkReuseArtifacts.getSelection()) {
+ return destinationArtifact;
+ }
+ return null;
+ }
+
+ /*
+ * The page may not be init'd here
+ */
+ @Override
+ protected void updateWidgetEnablements() {
+ super.updateWidgetEnablements();
+
+ if (built) {
+ branchList.setEnabled(!radImportUnderSelection.getSelection());
+
+ txtImportUnderFolderName.setEnabled(false);// TODO future development
+ radImportUnderSelection.setEnabled(destinationArtifact != null);
+
+ typeList.setEnabled(radGeneralExtractor.getSelection() || radWordOutlineExtractor.getSelection() || radWholeWordExtractor.getSelection());
+ }
+
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPageTest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPageTest.java
new file mode 100644
index 00000000000..912e538b65a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportPageTest.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import junit.framework.TestCase;
+import org.eclipse.core.runtime.AssertionFailedException;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ArtifactImportPageTest extends TestCase {
+
+ /**
+ * Test method for
+ * {@link org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportPage#ArtifactImportPage(java.io.File, org.eclipse.osee.framework.skynet.core.artifact.Artifact)}.
+ */
+ public void testArtifactImportPageFileArtifact() {
+ try {
+ new ArtifactImportPage(new File("somefile.txt"), null);
+ fail("Expect AssertionFailedException");
+ } catch (AssertionFailedException ex) {
+ // Pass
+ }
+ try {
+ new ArtifactImportPage(null, null);
+ fail("Expect AssertionFailedException");
+ } catch (Exception ex) {
+ // Pass
+ }
+ try {
+ new ArtifactImportPage(null, SkynetAuthentication.getInstance().getAuthenticatedUser());
+ fail("Expect AssertionFailedException");
+ } catch (Exception ex) {
+ // Pass
+ }
+
+ // This should not generate an exception
+ new ArtifactImportPage(new File("somefile.txt"), SkynetAuthentication.getInstance().getAuthenticatedUser());
+ }
+
+ /**
+ * Test method for
+ * {@link org.eclipse.osee.framework.ui.skynet.Import.ArtifactImportPage#ArtifactImportPage(org.eclipse.jface.viewers.IStructuredSelection)}.
+ */
+ public void testArtifactImportPageIStructuredSelection() {
+ // null should not generate any exceptions
+ new ArtifactImportPage(null);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportWizard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportWizard.java
new file mode 100644
index 00000000000..ca3aee0a9f0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ArtifactImportWizard.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactImportWizard extends Wizard implements IImportWizard {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactImportWizard.class);
+ private static final String TITLE = "Import artifacts into Define";
+
+ private ArtifactImportPage mainPage;
+ private AttributeTypePage attributeTypePage;
+ private OutlineContentHandlerPage handlerPage;
+ private File importFile;
+ private Artifact reuseRootArtifact;
+
+ public ArtifactImportWizard() {
+ super();
+ setDialogSettings(SkynetGuiPlugin.getInstance().getDialogSettings());
+ setWindowTitle("Artifact Import Wizard");
+ }
+
+ public void setImportResourceAndArtifactDestination(File importFile, Artifact reuseRootArtifact) {
+ Assert.isNotNull(importFile);
+ Assert.isNotNull(reuseRootArtifact);
+
+ this.importFile = importFile;
+ this.reuseRootArtifact = reuseRootArtifact;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ File file = mainPage.getImportFile();
+ Branch branch = mainPage.getSelectedBranch();
+ IArtifactImportResolver artifactResolver = null;
+
+ Artifact reuseArtifactRoot = mainPage.getReuseArtifactRoot();
+ if (reuseArtifactRoot != null) { // only non-null when reuse artifacts is checked
+ Collection<DynamicAttributeDescriptor> identifyingAttributes =
+ attributeTypePage.getSelectedAttributeDescriptors();
+ artifactResolver = new RootAndAttributeBasedArtifactResolver(identifyingAttributes);
+ }
+
+ ArtifactSubtypeDescriptor mainDescriptor = null;
+
+ if (mainPage.isGeneralDocumentExtractor() || mainPage.isWholeWordExtractor() || mainPage.isWordOutlineExtractor()) {
+ mainDescriptor = mainPage.getSelectedType();
+ }
+
+ try {
+ ArtifactExtractor extractor = getNewArtifactExtractor(mainDescriptor, branch, reuseArtifactRoot != null);
+ Artifact importRoot = mainPage.getImportRoot();
+ Jobs.startJob(new ArtifactImportJob(file, importRoot, extractor, branch, artifactResolver));
+ } catch (SQLException ex) {
+ ErrorDialog.openError(getShell(), "Define Import Error", "An error has occured while importing a document.",
+ new Status(IStatus.ERROR, "org.eclipse.osee.framework.jdk.core", IStatus.ERROR,
+ "Exception occured during artifact import", ex));
+ }
+ return true;
+ }
+
+ public ArtifactExtractor getNewArtifactExtractor(ArtifactSubtypeDescriptor primaryDescriptor, Branch branch, boolean reuseArtifacts) throws SQLException {
+ if (mainPage.isWordOutlineExtractor()) {
+ return new WordOutlineExtractor(primaryDescriptor, branch, 0, handlerPage.getSelectedOutlineContentHandler());
+ } else if (mainPage.isExcelExtractor()) {
+ return new ExcelArtifactExtractor(branch, reuseArtifacts);
+ } else if (mainPage.isWholeWordExtractor()) {
+ return new WholeWordDocumentExtractor(primaryDescriptor, branch);
+ } else if (mainPage.isGeneralDocumentExtractor()) {
+ return new NativeDocumentExtractor(primaryDescriptor, branch);
+ } else {
+ throw new IllegalStateException("None of the expected extractor buttons are selected");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
+ * org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ if (importFile != null && reuseRootArtifact != null) {
+ this.mainPage = new ArtifactImportPage(importFile, reuseRootArtifact);
+ } else {
+ this.mainPage = new ArtifactImportPage(selection);
+ }
+ this.attributeTypePage = new AttributeTypePage();
+ this.handlerPage = new OutlineContentHandlerPage();
+
+ mainPage.setTitle(TITLE);
+ mainPage.setDescription("Import artifacts into Define");
+ attributeTypePage.setTitle(TITLE);
+ handlerPage.setTitle(TITLE);
+ handlerPage.setDescription("Handler to use for getting Artifacts from the outline");
+ }
+
+ /**
+ * (non-Javadoc) Method declared on Wizard.
+ */
+ public void addPages() {
+ addPage(mainPage);
+ addPage(attributeTypePage);
+ addPage(handlerPage);
+ }
+
+ @Override
+ public IWizardPage getNextPage(IWizardPage page) {
+ if (page == mainPage && mainPage.getReuseArtifactRoot() != null) {
+ try {
+ ConfigurationPersistenceManager manager = ConfigurationPersistenceManager.getInstance();
+ ArtifactSubtypeDescriptor rootDescriptor = mainPage.getReuseArtifactRoot().getDescriptor();
+ ArtifactSubtypeDescriptor importDescriptor = mainPage.getSelectedType();
+
+ HashSet<DynamicAttributeDescriptor> rootAttributes =
+ new HashSet<DynamicAttributeDescriptor>(manager.getAttributeTypesFromArtifactType(rootDescriptor));
+
+ if (rootDescriptor == importDescriptor) {
+ attributeTypePage.setDescription("Identifying attributes for " + rootDescriptor.getName() + " artifacts");
+ attributeTypePage.setDescriptors(rootAttributes);
+ } else {
+ HashSet<DynamicAttributeDescriptor> importAttributes =
+ new HashSet<DynamicAttributeDescriptor>(
+ manager.getAttributeTypesFromArtifactType(importDescriptor));
+
+ attributeTypePage.setDescription("Identifying attributes common to " + rootDescriptor.getName() + " and " + importDescriptor.getName() + " artifacts");
+
+ importAttributes.addAll(rootAttributes);
+ attributeTypePage.setDescriptors(importAttributes);
+ // attributeTypePage.setDescriptors(Sets.intersect(rootAttributes,
+ // importAttributes));
+
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ return attributeTypePage;
+ } else if (mainPage.isWordOutlineExtractor() && page != handlerPage) {
+ return handlerPage;
+ }
+ return null;
+ }
+
+ @Override
+ public IWizardPage getPreviousPage(IWizardPage page) {
+ if (page == attributeTypePage || (page == handlerPage && mainPage.getReuseArtifactRoot() == null)) {
+ return mainPage;
+ } else if (page == handlerPage) {
+ return attributeTypePage;
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean canFinish() {
+ return mainPage.isPageComplete() && (mainPage.getReuseArtifactRoot() == null || attributeTypePage.isPageComplete()) && (!mainPage.isWordOutlineExtractor() || handlerPage.isPageComplete());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeImportType.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeImportType.java
new file mode 100644
index 00000000000..175594667f2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeImportType.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+/**
+ * @author Andrew M. Finkbeiner
+ */
+public enum AttributeImportType {
+ UNIQUE, UPDATE, NONE
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeTypePage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeTypePage.java
new file mode 100644
index 00000000000..3bf0dd80ef6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/AttributeTypePage.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class AttributeTypePage extends WizardDataTransferPage implements Listener {
+ public static final String PAGE_NAME = "osee.define.wizardPage.attributeTypePage";
+ private List typeList;
+ private boolean hasDescriptors;
+
+ /**
+ * @param descriptors Available descriptors to select from
+ */
+ public AttributeTypePage() {
+ super(PAGE_NAME);
+
+ hasDescriptors = false;
+ }
+
+ /**
+ * (non-Javadoc) Method declared on IDialogPage.
+ */
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setFont(parent.getFont());
+
+ createOptionsGroup(composite);
+
+ updateWidgetEnablements();
+ setPageComplete(determinePageCompletion());
+
+ setControl(composite);
+ }
+
+ /**
+ * The <code>WizardResourceImportPage</code> implementation of this <code>Listener</code> method handles all
+ * events and enablements for controls on this page. Subclasses may extend.
+ *
+ * @param event Event
+ */
+ public void handleEvent(Event event) {
+ setPageComplete(determinePageCompletion());
+
+ updateWidgetEnablements();
+ }
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ // policy: wizards are not allowed to come up with an error message
+ if (visible) {
+ setErrorMessage(null);
+ }
+ }
+
+ protected void createOptionsGroup(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setText("Attribute Types");
+ composite.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, true, true));
+ composite.setLayout(new GridLayout(1, true));
+
+ typeList = new List(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI);
+ typeList.addListener(SWT.Selection, this);
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = 300;
+ typeList.setLayoutData(gridData);
+
+ }
+
+ /**
+ * @param descriptors the descriptors to set
+ */
+ public void setDescriptors(Collection<DynamicAttributeDescriptor> descriptors) {
+ java.util.List<DynamicAttributeDescriptor> sortedDescriptors =
+ new ArrayList<DynamicAttributeDescriptor>(descriptors);
+ Collections.sort(sortedDescriptors, new Comparator<DynamicAttributeDescriptor>() {
+ public int compare(DynamicAttributeDescriptor o1, DynamicAttributeDescriptor o2) {
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ });
+
+ String[] selection = typeList.getSelection();
+ typeList.removeAll();
+
+ hasDescriptors = !sortedDescriptors.isEmpty();
+ if (hasDescriptors) {
+ for (DynamicAttributeDescriptor descriptor : sortedDescriptors) {
+ typeList.add(descriptor.getName());
+ typeList.setData(descriptor.getName(), descriptor);
+ }
+ } else {
+ typeList.add("<No Attribute Types>");
+ }
+
+ // Restore any prior selections
+ typeList.setSelection(selection);
+ typeList.getParent().pack(true);
+ }
+
+ @Override
+ protected boolean allowNewContainerName() {
+ return false;
+ }
+
+ public Collection<DynamicAttributeDescriptor> getSelectedAttributeDescriptors() {
+ Collection<DynamicAttributeDescriptor> selectedAttributeDescriptors =
+ new ArrayList<DynamicAttributeDescriptor>(typeList.getSelectionCount());
+
+ if (hasDescriptors) {
+ for (String attributeName : typeList.getSelection()) {
+ selectedAttributeDescriptors.add((DynamicAttributeDescriptor) typeList.getData(attributeName));
+ }
+ }
+
+ return selectedAttributeDescriptors;
+ }
+
+ @Override
+ protected boolean validateOptionsGroup() {
+ return hasDescriptors && typeList.getSelectionCount() > 0;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportPage.java
new file mode 100644
index 00000000000..152c7fc8950
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportPage.java
@@ -0,0 +1,257 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.FileSelector;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BranchImportPage extends WizardDataTransferPage {
+ public enum ImportMethod {
+ EXCEL, GENERAL, POWER_POINT, WHOLE_WORD, WORD_OUTLINE, VISIO
+ };
+
+ public static final String PAGE_NAME = "osee.define.wizardPage.artifactImportPage";
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchImportPage.class);
+
+ private Button chkIncludeMainLevelBranch;
+ private Button chkIncludeDescendantBranches;
+ private FileSelector fileSelector;
+ private List branchList;
+
+ private File importResource;
+ private final Branch destinationBranch;
+
+ /**
+ * Constructor used by the Skynet drag-n-drop
+ */
+ public BranchImportPage(File importResource, Branch destinationBranch) {
+ super(PAGE_NAME);
+ if (importResource == null) throw new IllegalArgumentException("importResource can not be null");
+ if (destinationBranch == null) throw new IllegalArgumentException("destinationBranch can not be null");
+
+ // Assert.isNotNull(importResource, "importResource");
+ // Assert.isNotNull(reuseRootArtifact, "reuseRootArtifact");
+
+ this.importResource = importResource;
+ this.destinationBranch = destinationBranch;
+ }
+
+ /**
+ * Constructor that is used by the Eclipse framework
+ *
+ * @param pageName
+ * @param selection
+ */
+ public BranchImportPage(IStructuredSelection selection) {
+ super(PAGE_NAME);
+
+ this.importResource = null;
+ Branch selectedBranch = null;
+ if (selection != null && selection.size() == 1) {
+ Object firstElement = selection.getFirstElement();
+ if (firstElement instanceof IAdaptable) {
+ IAdaptable adaptable = (IAdaptable) firstElement;
+ Object adapter = adaptable.getAdapter(IResource.class);
+ if (adapter instanceof IResource) {
+ importResource = ((IResource) adapter).getLocation().toFile();
+ }
+ adapter = adaptable.getAdapter(Branch.class);
+ if (adapter instanceof Branch) {
+ selectedBranch = (Branch) adapter;
+ }
+ }
+ }
+
+ this.destinationBranch = selectedBranch;
+ }
+
+ /**
+ * (non-Javadoc) Method declared on IDialogPage.
+ */
+ public void createControl(Composite parent) {
+
+ initializeDialogUnits(parent);
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setFont(parent.getFont());
+
+ createSourceGroup(composite);
+
+ createOptionsGroup(composite);
+
+ restoreWidgetValues();
+ updateWidgetEnablements();
+ setPageComplete(determinePageCompletion());
+
+ setControl(composite);
+ }
+
+ /**
+ * The <code>WizardResourceImportPage</code> implementation of this <code>Listener</code> method handles all
+ * events and enablements for controls on this page. Subclasses may extend.
+ *
+ * @param event Event
+ */
+ public void handleEvent(Event event) {
+ setPageComplete(determinePageCompletion());
+
+ updateWidgetEnablements();
+ }
+
+ private void createSourceGroup(Composite parent) {
+ createImportSource(parent);
+ setPageComplete(determinePageCompletion());
+ }
+
+ private void createImportSource(Composite parent) {
+
+ fileSelector = new FileSelector(parent, SWT.NONE, "Import Source", this);
+
+ Group composite = new Group(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(1, false);
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ chkIncludeMainLevelBranch = new Button(composite, SWT.CHECK);
+ chkIncludeMainLevelBranch.addListener(SWT.Selection, this);
+ chkIncludeMainLevelBranch.setText("Main Level Branch");
+ chkIncludeMainLevelBranch.setToolTipText("Import the main level branch from the import file");
+ chkIncludeMainLevelBranch.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false));
+
+ chkIncludeDescendantBranches = new Button(composite, SWT.CHECK);
+ chkIncludeDescendantBranches.addListener(SWT.Selection, this);
+ chkIncludeDescendantBranches.setText("Descendant Branches");
+ chkIncludeDescendantBranches.setToolTipText("Import the desendant branches from the import file");
+ chkIncludeDescendantBranches.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false));
+
+ // Setup initial selections
+ chkIncludeMainLevelBranch.setSelection(true);
+ chkIncludeDescendantBranches.setSelection(true);
+
+ if (importResource != null) {
+ fileSelector.setText(importResource.getAbsolutePath());
+ }
+ }
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ // policy: wizards are not allowed to come up with an error message
+ if (visible) {
+ setErrorMessage(null);
+ }
+ }
+
+ @Override
+ protected boolean validateSourceGroup() {
+ return fileSelector.validate(this) && (chkIncludeDescendantBranches.getSelection() || chkIncludeMainLevelBranch.getSelection());
+ }
+
+ protected void createOptionsGroup(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setText("Destination");
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ composite.setLayout(new GridLayout(1, true));
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Branch:");
+ label.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
+
+ branchList = new List(composite, SWT.BORDER | SWT.V_SCROLL);
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.heightHint = 300;
+ branchList.setLayoutData(gridData);
+
+ Branch defaultBranch;
+ if (destinationBranch == null) {
+ defaultBranch = BranchPersistenceManager.getInstance().getDefaultBranch();
+ } else {
+ defaultBranch = destinationBranch;
+ }
+
+ try {
+ int defaultBranchIndex = 0;
+ for (Branch branch : BranchPersistenceManager.getInstance().getBranches()) {
+ branchList.add(branch.getBranchName());
+ branchList.setData(branch.getBranchName(), branch);
+ if (branch.equals(defaultBranch)) {
+ branchList.select(defaultBranchIndex);
+ } else {
+ defaultBranchIndex++;
+ }
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.dialogs.WizardResourceImportPage#allowNewContainerName()
+ */
+ @Override
+ protected boolean allowNewContainerName() {
+ return true;
+ }
+
+ public File getImportFile() {
+ return fileSelector.getFile();
+ }
+
+ /**
+ * @return returns the selectedBranch
+ */
+ public Branch getSelectedBranch() {
+ String itemName = branchList.getItem(branchList.getSelectionIndex());
+ return (Branch) branchList.getData(itemName);
+ }
+
+ /**
+ * @return returns the includeMainLevelBranch
+ */
+ public boolean isIncludeMainLevelBranch() {
+ return chkIncludeMainLevelBranch.getSelection();
+ }
+
+ /**
+ * @return returns the includeDescendantBranches
+ */
+ public boolean isIncludeDescendantBranches() {
+ return chkIncludeDescendantBranches.getSelection();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportWizard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportWizard.java
new file mode 100644
index 00000000000..4083d3251ed
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/BranchImportWizard.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.export.ImportBranchJob;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * Wizard for importing branches from XML produced by the BranchExporter class.
+ *
+ * @author Robert A. Fisher
+ */
+public class BranchImportWizard extends Wizard implements IImportWizard {
+ private static final String TITLE = "Import branches into Skynet";
+
+ private BranchImportPage mainPage;
+ private File importFile;
+ private Branch destinationBranch;
+
+ public BranchImportWizard() {
+ super();
+ setDialogSettings(SkynetGuiPlugin.getInstance().getDialogSettings());
+ setWindowTitle("Branch Import Wizard");
+ }
+
+ public void setImportResourceAndArtifactDestination(File importFile, Branch destinationBranch) {
+ if (importFile == null) throw new IllegalArgumentException("importFile can not be null");
+ if (destinationBranch == null) throw new IllegalArgumentException("destinationBranch can not be null");
+
+ this.destinationBranch = destinationBranch;
+ this.importFile = importFile;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ File file = mainPage.getImportFile();
+ Branch branch = mainPage.getSelectedBranch();
+ boolean includeMainLevelBranch = mainPage.isIncludeMainLevelBranch();
+ boolean includeDescendantBranches = mainPage.isIncludeDescendantBranches();
+
+ Jobs.startJob(new ImportBranchJob(file, branch, includeMainLevelBranch, includeDescendantBranches));
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
+ * org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ if (importFile != null) {
+ this.mainPage = new BranchImportPage(importFile, destinationBranch);
+ } else {
+ this.mainPage = new BranchImportPage(selection);
+ }
+
+ mainPage.setTitle(TITLE);
+ mainPage.setDescription(TITLE);
+ }
+
+ /**
+ * (non-Javadoc) Method declared on Wizard.
+ */
+ public void addPages() {
+ addPage(mainPage);
+ }
+
+ @Override
+ public boolean canFinish() {
+ return mainPage.isPageComplete();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ExcelArtifactExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ExcelArtifactExtractor.java
new file mode 100644
index 00000000000..332dddd612e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ExcelArtifactExtractor.java
@@ -0,0 +1,231 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.sql.SQLException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.type.DoubleKeyHashMap;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.ExcelSaxHandler;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor;
+import org.eclipse.osee.framework.skynet.core.SkynetActivator;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ExcelArtifactExtractor extends AbstractArtifactExtractor implements RowProcessor {
+ private static final String description =
+ "Extract each row as an artifact - header <section #, atrribute1, atrribute2 ...>";
+ private ExcelSaxHandler excelHandler;
+ private String[] headerRow;
+ private ArtifactSubtypeDescriptor primaryDescriptor;
+ private boolean importingRelations;
+ private boolean reuseArtifacts;
+ private AttributeImportType[] types;
+ private int rowCount;
+ private DoubleKeyHashMap<String, Integer, RoughArtifact> relationHelper;
+ private static final Pattern guidPattern = Pattern.compile("(\\d*);(.*)");
+ private final Matcher guidMatcher;
+
+ public static String getDescription() {
+ return description;
+ }
+
+ public ExcelArtifactExtractor(Branch branch, boolean reuseArtifacts) {
+ super(branch);
+ this.reuseArtifacts = reuseArtifacts;
+ relationHelper = new DoubleKeyHashMap<String, Integer, RoughArtifact>();
+ guidMatcher = guidPattern.matcher("");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.Import.RowProcessor#processHeaderRow(java.lang.String[])
+ */
+ public void processHeaderRow(String[] headerRow) {
+ rowCount++;
+ this.headerRow = headerRow.clone();
+ for (int i = 0; i < this.headerRow.length; i++) {
+ if (headerRow[i] != null && headerRow[i].trim().length() == 0) {
+ this.headerRow[i] = null;
+ }
+ }
+ types = new AttributeImportType[headerRow.length];
+ for (int i = 0; i < types.length; i++) {
+ types[i] = AttributeImportType.NONE;
+ }
+ }
+
+ /**
+ * import Artifacts
+ *
+ * @param row
+ */
+ public void processRow(String[] row) {
+ rowCount++;
+ if (importingRelations) {
+ String guida = null;
+ String guidb = null;
+ try {
+ guida = getGuid(row[1]);
+ guidb = getGuid(row[2]);
+ } catch (Exception ex) {
+ throw new IllegalStateException(ex);
+ }
+
+ if (guida == null || guidb == null) {
+ OSEELog.logWarning(SkynetActivator.class,
+ "we failed to add a relation because at least on of the guids is null", false);
+ }
+ addRoughRelation(new RoughRelation(row[0], guida, guidb, row[5], Integer.parseInt(row[3]),
+ Integer.parseInt(row[4])));
+ } else {
+ RoughArtifact roughArtifact = new RoughArtifact();
+ roughArtifact.setHeadingDescriptor(primaryDescriptor);
+ roughArtifact.setPrimaryDescriptor(primaryDescriptor);
+ for (int i = 0; i < row.length; i++) {
+ if (headerRow[i] == null) continue;
+ if (headerRow[i].equalsIgnoreCase("Outline Number")) {
+ if (row[i] == null) {
+ throw new IllegalArgumentException("Outline Number must not be blank");
+ }
+ roughArtifact.setSectionNumber(row[i]);
+ } else if (headerRow[i].equalsIgnoreCase("GUID")) {
+ roughArtifact.setGuid(row[i]);
+ } else if (headerRow[i].equalsIgnoreCase("Human Readable Id")) {
+ roughArtifact.setHumandReadableId(row[i]);
+ } else {
+ roughArtifact.addAttribute(headerRow[i], row[i], types[i]);
+ }
+ }
+ addRoughArtifact(roughArtifact);
+
+ relationHelper.put(primaryDescriptor.getName(), new Integer(rowCount), roughArtifact);
+ }
+ }
+
+ /**
+ * @param string
+ * @throws Exception
+ * @throws SQLException
+ */
+ private String getGuid(String string) throws Exception {
+ if (GUID.isValid(string)) {//it may be real guid
+ return string;
+ }
+ guidMatcher.reset(string);
+ if (guidMatcher.matches()) {
+ Integer row = Integer.parseInt(guidMatcher.group(1));
+ String sheet = guidMatcher.group(2);
+ RoughArtifact artifact = relationHelper.get(sheet, row);
+ return artifact.getGuid();
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.ArtifactExtractor#discoverArtifactAndRelationData(java.io.File)
+ */
+ public void discoverArtifactAndRelationData(File artifactsFile) throws Exception {
+ XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+ excelHandler = new ExcelSaxHandler(this, true);
+ xmlReader.setContentHandler(excelHandler);
+ xmlReader.parse(new InputSource(new InputStreamReader(new FileInputStream(artifactsFile), "UTF-8")));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.Import.RowProcessor#processEmptyRow()
+ */
+ public void processEmptyRow() {
+ rowCount++;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.Import.RowProcessor#processCommentRow(java.lang.String[])
+ */
+ public void processCommentRow(String[] row) {
+ rowCount++;
+ if (reuseArtifacts) {
+ for (int i = 0; i < row.length; i++) {
+ if (row[i] != null) {
+ try {
+ types[i] = AttributeImportType.valueOf(row[i]);
+ } catch (Throwable th) {
+ types[i] = AttributeImportType.NONE;
+ }
+ } else {
+ types[i] = AttributeImportType.NONE;
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.Import.RowProcessor#reachedEndOfWorksheet()
+ */
+ public void reachedEndOfWorksheet() {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.RowProcessor#detectedTotalRowCount(int)
+ */
+ public void detectedRowAndColumnCounts(int rowCount, int columnCount) {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.RowProcessor#foundStartOfWorksheet(java.lang.String)
+ */
+ public void foundStartOfWorksheet(String sheetName) {
+ rowCount = 0;
+ try {
+ if (sheetName.equals("relations")) {
+ importingRelations = true;
+ return;
+ }
+ primaryDescriptor = configurationPersistenceManager.getArtifactSubtypeDescriptor(sheetName, branch);
+ if (primaryDescriptor == null) {
+ throw new IllegalArgumentException("The sheet name: " + sheetName + " is not a valid artifact type name.");
+ }
+ } catch (SQLException ex) {
+ throw new IllegalArgumentException(
+ "The sheet name: " + sheetName + " is not a valid artifact type name: " + ex.getLocalizedMessage());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.Import.ArtifactExtractor#getFileFilter()
+ */
+ public FileFilter getFileFilter() {
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return file.isDirectory() || (file.isFile() && file.getName().endsWith(".xml"));
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IArtifactImportResolver.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IArtifactImportResolver.java
new file mode 100644
index 00000000000..03a4074a59c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IArtifactImportResolver.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * Used during imports that ask for artifact re-use to resolve the Artifact to be used for a particular RoughArtifact
+ *
+ * @author Robert A. Fisher
+ */
+public interface IArtifactImportResolver {
+
+ public Artifact resolve(RoughArtifact roughArtifact) throws Exception;
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IWordOutlineContentHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IWordOutlineContentHandler.java
new file mode 100644
index 00000000000..7fbb1c15a8c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/IWordOutlineContentHandler.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+
+/**
+ * @author Robert A. Fisher
+ */
+public interface IWordOutlineContentHandler extends IExecutableExtension {
+
+ /**
+ * Opportunity to setup state data prior to an outline being processed. This method may be called many times on the
+ * same object.
+ *
+ * @param extractor The extractor where RoughArtifacts that are created can be added to
+ * @param headingDescriptor The descriptor to use for headings
+ * @param mainDescriptor
+ */
+ public void init(WordOutlineExtractor extractor, ArtifactSubtypeDescriptor headingDescriptor, ArtifactSubtypeDescriptor mainDescriptor);
+
+ /**
+ * Opportunity to release resources. This method may be called many times on the same object.
+ */
+ public void dispose();
+
+ /**
+ * Provides a name that can be displayed in the UI for the user to make a decision on which extension point should be
+ * used.
+ */
+ public String getName();
+
+ /**
+ * Called as content is parsed out of a WordML source. A typical action to take would be to create a RoughArtifact
+ * and initialize it with data from the content, or to append the content to the last, or a prior created
+ * RoughArtifact.
+ *
+ * @param forceBody
+ * @param forcePrimaryType
+ * @param headerNumber
+ * @param listIdentifier
+ * @param paragraphStyle
+ * @param content
+ * @param isParagraph
+ */
+ public void processContent(boolean forceBody, boolean forcePrimaryType, String headerNumber, String listIdentifier, String paragraphStyle, String content, boolean isParagraph);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaJob.java
new file mode 100644
index 00000000000..e8e0df0a8f9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaJob.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.io.FileInputStream;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.util.io.ExtensionFilter;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.importing.SkynetTypesImporter;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Robert A. Fisher
+ * @author Jeff C. Phillips
+ */
+public class ImportMetaJob extends Job {
+ private final Branch branch;
+ private final File file;
+
+ public ImportMetaJob(File file, Branch branch) {
+ super("Importing Skynet Types");
+ this.branch = branch;
+ this.file = file;
+ }
+
+ public IStatus run(IProgressMonitor monitor) {
+ try {
+
+ SkynetTypesImporter importer = new SkynetTypesImporter(branch);
+ if (file.isFile()) {
+ monitor.beginTask("Importing " + file.getName(), 2);
+ importer.extractTypesFromSheet(new FileInputStream(file));
+ monitor.worked(1);
+ } else if (file.isDirectory()) {
+ File[] children = file.listFiles(new ExtensionFilter(".xml"));
+ monitor.beginTask("Importing files", children.length + 1);
+ for (File childFile : children) {
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return Status.CANCEL_STATUS;
+ }
+
+ monitor.subTask(childFile.getName());
+ importer.extractTypesFromSheet(new FileInputStream(childFile));
+ monitor.worked(1);
+ }
+ }
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return Status.CANCEL_STATUS;
+ }
+
+ monitor.subTask("Finalizing");
+ importer.finish();
+ monitor.done();
+ return Status.OK_STATUS;
+ } catch (Exception ex) {
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.getLocalizedMessage(), ex);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPage.java
new file mode 100644
index 00000000000..8a80ccdbb12
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPage.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.sql.SQLException;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.DirectoryOrFileSelector;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Robert A. Fisher
+ * @author Jeff C. Phillips
+ */
+public class ImportMetaPage extends WizardDataTransferPage {
+ public static final String PAGE_NAME = "osee.define.wizardPage.importMetaPage";
+
+ private DirectoryOrFileSelector directoryFileSelector;
+ private List branchList;
+
+ private IResource currentResourceSelection;
+
+ /**
+ * @param name
+ * @param selection
+ */
+ public ImportMetaPage(IStructuredSelection selection) {
+ super(PAGE_NAME);
+
+ if (selection != null && selection.size() == 1) {
+ Object firstElement = selection.getFirstElement();
+ if (firstElement instanceof IAdaptable) {
+ currentResourceSelection = (IResource) ((IAdaptable) firstElement).getAdapter(IResource.class);
+ }
+ }
+ }
+
+ /**
+ * (non-Javadoc) Method declared on IDialogPage.
+ */
+ public void createControl(Composite parent) {
+
+ initializeDialogUnits(parent);
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ composite.setFont(parent.getFont());
+
+ createSourceGroup(composite);
+
+ restoreWidgetValues();
+ updateWidgetEnablements();
+ setPageComplete(determinePageCompletion());
+
+ setControl(composite);
+ }
+
+ /**
+ * The <code>WizardResourceImportPage</code> implementation of this <code>Listener</code> method handles all
+ * events and enablements for controls on this page. Subclasses may extend.
+ *
+ * @param event Event
+ */
+ public void handleEvent(Event event) {
+ setPageComplete(determinePageCompletion());
+ }
+
+ protected void createSourceGroup(Composite parent) {
+ directoryFileSelector = new DirectoryOrFileSelector(parent, SWT.NONE, "Import Source", this);
+
+ if (currentResourceSelection == null) {
+ // Select directory as the default
+ directoryFileSelector.setDirectorySelected(true);
+ } else {
+ directoryFileSelector.setDirectorySelected(currentResourceSelection.getType() != IResource.FILE);
+ directoryFileSelector.setText(currentResourceSelection.getLocation().toString());
+ }
+
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setText("Destination Branch");
+ GridLayout gd = new GridLayout();
+ composite.setLayout(gd);
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ branchList = new List(composite, SWT.BORDER | SWT.V_SCROLL);
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.heightHint = 300;
+ branchList.setLayoutData(gridData);
+
+ try {
+ Branch defaultBranch = BranchPersistenceManager.getInstance().getDefaultBranch();
+
+ int defaultBranchIndex = 0;
+ for (Branch branch : BranchPersistenceManager.getInstance().getBranches()) {
+ branchList.add(branch.getBranchName());
+ branchList.setData(branch.getBranchName(), branch);
+ if (branch.equals(defaultBranch)) {
+ branchList.select(defaultBranchIndex);
+ } else {
+ defaultBranchIndex++;
+ }
+ }
+ } catch (SQLException ex) {
+ branchList.add(ex.getLocalizedMessage());
+ OSEELog.logException(getClass(), ex, false);
+ }
+
+ setPageComplete(determinePageCompletion());
+ }
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ // policy: wizards are not allowed to come up with an error message
+ if (visible) {
+ setErrorMessage(null);
+ }
+ }
+
+ @Override
+ protected boolean validateSourceGroup() {
+ return directoryFileSelector.validate(this);
+ }
+
+ public File getImportFile() {
+ return directoryFileSelector.getFile();
+ }
+
+ public Branch getSelectedBranch() {
+ String itemName = branchList.getItem(branchList.getSelectionIndex());
+ return (Branch) branchList.getData(itemName);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.dialogs.WizardResourceImportPage#allowNewContainerName()
+ */
+ @Override
+ protected boolean allowNewContainerName() {
+ return false;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPageTest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPageTest.java
new file mode 100644
index 00000000000..fc427cdd802
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaPageTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import junit.framework.TestCase;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ImportMetaPageTest extends TestCase {
+
+ /**
+ * Test method for {@link org.eclipse.osee.framework.ui.skynet.Import.ImportMetaPage#getSelectedBranch()}.
+ */
+ public void testGetSelectedBranch() {
+ ImportMetaPage page = new ImportMetaPage(null);
+ page.createControl(AWorkbench.getActivePage().getWorkbenchWindow().getShell());
+
+ assertEquals(page.getSelectedBranch(), BranchPersistenceManager.getInstance().getDefaultBranch());
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaWizard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaWizard.java
new file mode 100644
index 00000000000..82f92ae9ea9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ImportMetaWizard.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * @author Robert A. Fisher
+ * @author Jeff C. Phillips
+ */
+public class ImportMetaWizard extends Wizard implements IImportWizard {
+ private ImportMetaPage mainPage;
+ private IStructuredSelection selection;
+
+ /**
+ *
+ */
+ public ImportMetaWizard() {
+ super();
+ setWindowTitle("Skynet Types Import Wizard");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ try {
+ Branch branch = mainPage.getSelectedBranch();
+ File file = mainPage.getImportFile();
+ Jobs.startJob(new ImportMetaJob(file, branch));
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), "Define Import Error", ex, true);
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
+ * org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.selection = selection;
+ }
+
+ /**
+ * (non-Javadoc) Method declared on Wizard.
+ */
+ public void addPages() {
+ mainPage = new ImportMetaPage(selection);
+ mainPage.setTitle("Import Skynet types into Define");
+ mainPage.setDescription("Import Skynet types into Define");
+
+ addPage(mainPage);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/NativeDocumentExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/NativeDocumentExtractor.java
new file mode 100644
index 00000000000..15fa4265926
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/NativeDocumentExtractor.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.sql.SQLException;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.NativeArtifact;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+
+public class NativeDocumentExtractor extends AbstractArtifactExtractor {
+ private final static String description = "Extract the content of each native document as one artifact";
+ private final ArtifactSubtypeDescriptor folderDescriptor;
+ private final ArtifactSubtypeDescriptor primaryDescriptor;
+
+ public NativeDocumentExtractor(ArtifactSubtypeDescriptor primaryDescriptor, Branch branch) throws SQLException {
+ super(branch);
+ folderDescriptor = configurationPersistenceManager.getArtifactSubtypeDescriptor("Folder", branch);
+ this.primaryDescriptor = primaryDescriptor;
+ }
+
+ public static String getDescription() {
+ return description;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.ArtifactExtractor#discoverArtifactAndRelationData(java.io.File)
+ */
+ public void discoverArtifactAndRelationData(File importFile) throws Exception {
+ RoughArtifact roughArtifact = new RoughArtifact(Lib.stripExtension(importFile.getName()));
+ roughArtifact.setHeadingDescriptor(folderDescriptor);
+ roughArtifact.setPrimaryDescriptor(primaryDescriptor);
+ addRoughArtifact(roughArtifact);
+ roughArtifact.addAttribute("Extension", Lib.getExtension(importFile.getName()));
+ roughArtifact.addFileAttribute(NativeArtifact.CONTENT_NAME, importFile);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.Import.ArtifactExtractor#getFileFilter()
+ */
+ public FileFilter getFileFilter() {
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return true;
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/OutlineContentHandlerPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/OutlineContentHandlerPage.java
new file mode 100644
index 00000000000..99ed40eadc0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/OutlineContentHandlerPage.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class OutlineContentHandlerPage extends WizardDataTransferPage implements Listener {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(OutlineContentHandlerPage.class);
+ public static final String PAGE_NAME = "osee.define.wizardPage.outlineContentHandlerPage";
+ private List handlerList;
+ private boolean hasHandlers;
+
+ /**
+ * @param descriptors Available descriptors to select from
+ */
+ public OutlineContentHandlerPage() {
+ super(PAGE_NAME);
+
+ hasHandlers = false;
+ }
+
+ /**
+ * (non-Javadoc) Method declared on IDialogPage.
+ */
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setFont(parent.getFont());
+
+ createOptionsGroup(composite);
+
+ updateWidgetEnablements();
+ setPageComplete(determinePageCompletion());
+
+ setControl(composite);
+ }
+
+ /**
+ * The <code>WizardResourceImportPage</code> implementation of this <code>Listener</code> method handles all
+ * events and enablements for controls on this page. Subclasses may extend.
+ *
+ * @param event Event
+ */
+ public void handleEvent(Event event) {
+ setPageComplete(determinePageCompletion());
+
+ updateWidgetEnablements();
+ }
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ // policy: wizards are not allowed to come up with an error message
+ if (visible) {
+ setErrorMessage(null);
+ }
+ }
+
+ protected void createOptionsGroup(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setText("Outline Handlers");
+ composite.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, true, true));
+ composite.setLayout(new GridLayout(1, true));
+
+ handlerList = new List(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE);
+ handlerList.addListener(SWT.Selection, this);
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = 300;
+ handlerList.setLayoutData(gridData);
+
+ initList();
+ }
+
+ private void initList() {
+ java.util.List<IWordOutlineContentHandler> extensionPointHandlers = new LinkedList<IWordOutlineContentHandler>();
+
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint(
+ "org.eclipse.osee.framework.ui.skynet.WordOutlineContentHandler");
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ for (IConfigurationElement element : elements) {
+ if (element.getName().equals("Handler")) {
+ try {
+ extensionPointHandlers.add((IWordOutlineContentHandler) element.createExecutableExtension("class"));
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ }
+ }
+
+ hasHandlers = !extensionPointHandlers.isEmpty();
+ if (hasHandlers) {
+ Collections.sort(extensionPointHandlers, new Comparator<IWordOutlineContentHandler>() {
+
+ public int compare(IWordOutlineContentHandler o1, IWordOutlineContentHandler o2) {
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ });
+
+ for (IWordOutlineContentHandler handler : extensionPointHandlers) {
+ handlerList.add(handler.getName());
+ handlerList.setData(handler.getName(), handler);
+ }
+ } else {
+ handlerList.add("<No Handlers Installed>");
+ }
+
+ handlerList.getParent().pack(true);
+ }
+
+ @Override
+ protected boolean allowNewContainerName() {
+ return false;
+ }
+
+ public IWordOutlineContentHandler getSelectedOutlineContentHandler() {
+ if (handlerList.getSelectionCount() == 1) {
+ return (IWordOutlineContentHandler) handlerList.getData(handlerList.getSelection()[0]);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ protected boolean validateOptionsGroup() {
+ return hasHandlers && handlerList.getSelectionCount() == 1;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ReqNumbering.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ReqNumbering.java
new file mode 100644
index 00000000000..f2fb10ba524
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/ReqNumbering.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ReqNumbering {
+ private String number;
+ private String[] values;
+
+ public ReqNumbering(String number) {
+ this.number = number;
+ values = tokenize();
+ }
+
+ public String getNumberString() {
+ return number;
+ }
+
+ /**
+ * @param numbering
+ * @return returns whether the numbering argument is a child of this number
+ */
+ public boolean isChild(ReqNumbering numbering) {
+ String[] numberVals = numbering.values;
+ if ((values.length + 1) != numberVals.length) {
+ return false;
+ }
+
+ for (int i = 0; i < values.length; i++) {
+ if (!values[i].equals(numberVals[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private String[] tokenize() {
+ String[] returnVal = number.split("\\.");
+
+ // If the very last token is a 0, then chop it off
+ if (returnVal[returnVal.length - 1].equals("0")) {
+ String[] temp = new String[returnVal.length - 1];
+ System.arraycopy(returnVal, 0, temp, 0, temp.length);
+ returnVal = temp;
+ }
+ return returnVal;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RootAndAttributeBasedArtifactResolver.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RootAndAttributeBasedArtifactResolver.java
new file mode 100644
index 00000000000..ebe1b3b43de
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RootAndAttributeBasedArtifactResolver.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.ui.skynet.Import.RoughArtifact.NameAndVal;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class RootAndAttributeBasedArtifactResolver implements IArtifactImportResolver {
+ private final LinkedList<DynamicAttributeDescriptor> identifyingAttributeDescriptors;
+ private final Collection<String> EMPTY = new ArrayList<String>(0);
+
+ /**
+ * @param identifyingAttributeDescriptors
+ */
+ public RootAndAttributeBasedArtifactResolver(Collection<DynamicAttributeDescriptor> identifyingAttributeDescriptors) {
+ if (identifyingAttributeDescriptors == null) throw new IllegalArgumentException(
+ "identifyingAttributeDescriptors can not be null");
+ if (identifyingAttributeDescriptors.isEmpty()) throw new IllegalArgumentException(
+ "identifyingAttributeDescriptors can not be empty");
+
+ this.identifyingAttributeDescriptors =
+ new LinkedList<DynamicAttributeDescriptor>(identifyingAttributeDescriptors);
+ }
+
+ private boolean attributeValuesMatch(RoughArtifact roughArtifact, Artifact artifact) throws SQLException {
+
+ Collection<NameAndVal> roughAttributeCollection = roughArtifact.getAttributes();
+ HashCollection<String, String> roughAttributeMap = new HashCollection<String, String>();
+ for (NameAndVal roughAttribute : roughAttributeCollection) {
+ roughAttributeMap.put(roughAttribute.getName(), roughAttribute.getValue());
+ }
+
+ for (DynamicAttributeDescriptor descriptor : identifyingAttributeDescriptors) {
+ Collection<Attribute> attributes = artifact.getAttributeManager(descriptor.getName()).getAttributes();
+ Collection<String> roughAttributes = roughAttributeMap.getValues(descriptor.getName());
+
+ if (roughAttributes == null) {
+ roughAttributes = EMPTY;
+ }
+
+ if (attributes.size() == roughAttributes.size()) {
+ for (Attribute attribute : attributes) {
+ boolean attributeEqual = false;
+ Iterator<String> iter = roughAttributes.iterator();
+
+ String normalizedAttributeValue = normalizeAttributeValue(attribute.getStringData());
+ while (iter.hasNext()) {
+ String otherAttribute = iter.next();
+
+ if (normalizedAttributeValue.equals(normalizeAttributeValue(otherAttribute))) {
+ // Make sure we don't count this attribute more than once for equality
+ iter.remove();
+ attributeEqual = true;
+ break;
+ }
+ }
+
+ if (!attributeEqual) {
+ return false;
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
+ private String normalizeAttributeValue(String value) {
+ return value.trim().replaceAll("\\.$", "").toLowerCase();
+ }
+
+ public Artifact resolve(RoughArtifact roughArtifact) throws SQLException {
+ Set<Artifact> siblings = roughArtifact.getRoughParent().getAssociatedArtifact().getChildren();
+ Collection<Artifact> candidates = new LinkedList<Artifact>();
+
+ for (Artifact artifact : siblings) {
+ if (attributeValuesMatch(roughArtifact, artifact)) {
+ candidates.add(artifact);
+ }
+ }
+
+ if (candidates.size() == 1) {
+ return candidates.iterator().next();
+ } else if (candidates.size() > 1) {
+ OSEELog.logInfo(getClass(),
+ "Found " + candidates.size() + " candidates during reuse import for " + roughArtifact.getName(), false);
+ }
+ return null;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughArtifact.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughArtifact.java
new file mode 100644
index 00000000000..31441294997
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughArtifact.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.factory.PolymorphicArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.skynet.core.attribute.FullPortableExport;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class RoughArtifact {
+ private static PolymorphicArtifactFactory factory = PolymorphicArtifactFactory.getInstance();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(RoughArtifact.class);
+ private static boolean usePolymorphicArtifactFactory = false;
+
+ private Artifact realArtifact;
+ private RoughArtifact roughParent;
+ private ReqNumbering number;
+ private List<NameAndVal> attributes;
+ private Collection<RoughArtifact> children;
+ private String guid;
+ private String humandReadableId;
+ private ArtifactSubtypeDescriptor headingDescriptor;
+ private ArtifactSubtypeDescriptor primaryDescriptor;
+ private boolean forcePrimaryType;
+ private HashMap<String, File> fileAttributes;
+
+ public RoughArtifact() {
+ attributes = new ArrayList<NameAndVal>();
+ children = new ArrayList<RoughArtifact>();
+ forcePrimaryType = false;
+ }
+
+ public RoughArtifact(Artifact associatedArtifact) {
+ this();
+ realArtifact = associatedArtifact;
+ }
+
+ public boolean hasHierarchicalRelation() {
+ return number != null;
+ }
+
+ public RoughArtifact(String name) {
+ this();
+ addAttribute("Name", name);
+ }
+
+ public void addChild(RoughArtifact child) {
+ child.roughParent = this;
+ children.add(child);
+ }
+
+ public boolean hasParent() {
+ return roughParent != null;
+ }
+
+ /**
+ * @return the roughParent
+ */
+ public RoughArtifact getRoughParent() {
+ return roughParent;
+ }
+
+ public Artifact getAssociatedArtifact() {
+ return realArtifact;
+ }
+
+ public String toString() {
+ return getName();
+ }
+
+ public void addFileAttribute(String name, File file) {
+ if (fileAttributes == null) {
+ fileAttributes = new HashMap<String, File>(2, 1);
+ }
+ fileAttributes.put(name, file);
+ }
+
+ public void addAttribute(String name, String value) {
+ attributes.add(new NameAndVal(name, value));
+ }
+
+ public void addAttribute(String name, String value, AttributeImportType type) {
+ attributes.add(new NameAndVal(name, value, type));
+ }
+
+ public boolean isChild(RoughArtifact otherArtifact) {
+ return number.isChild(otherArtifact.number);
+ }
+
+ private void conferAttributesUpon(Artifact artifact) throws FileNotFoundException, SQLException {
+ for (NameAndVal attr : attributes) {
+ String attributeName = attr.getName();
+ String fullValue = attr.getValue();
+
+ if (fullValue != null) {
+ try {
+ DynamicAttributeManager attributeManager = artifact.getAttributeManager(attributeName);
+ DynamicAttributeDescriptor descriptor = attributeManager.getDescriptor();
+ if (descriptor.getMinOccurrences() == 1 && descriptor.getMaxOccurrences() == 1) {
+ attributeManager.setValue(fullValue);
+ } else {
+ for (String value : fullValue.split(FullPortableExport.ATTRIBUTE_VALUE_DELIMITER_REGEX)) {
+ attributeManager.getNewAttribute().setStringData(value);
+ }
+ }
+ } catch (IllegalStateException ex) {
+ logger.log(Level.SEVERE, "", ex);
+ }
+ }
+ }
+
+ setFileAttributes(artifact);
+ }
+
+ private void setFileAttributes(Artifact artifact) throws FileNotFoundException, SQLException {
+ if (fileAttributes != null) {
+ for (Entry<String, File> entry : fileAttributes.entrySet()) {
+ DynamicAttributeManager attributeManager = artifact.getAttributeManager(entry.getKey());
+ attributeManager.setData(new FileInputStream(entry.getValue()));
+ }
+ }
+ }
+
+ /**
+ * @param number The number to set.
+ */
+ public void setSectionNumber(String number) {
+ this.number = new ReqNumbering(number);
+ }
+
+ public class NameAndVal {
+ private String name;
+ private String value;
+ private AttributeImportType type;
+
+ /**
+ * @param name
+ * @param value
+ */
+ public NameAndVal(String name, String value, AttributeImportType type) {
+ super();
+ this.name = name;
+ this.value = value;
+ this.type = type;
+ }
+
+ public NameAndVal(String name, String value) {
+ this(name, value, AttributeImportType.NONE);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public AttributeImportType getType() {
+ return type;
+ }
+
+ public String toString() {
+ return name + ": " + value;
+ }
+ }
+
+ public Collection<NameAndVal> getAttributes() {
+ return attributes;
+ }
+
+ /**
+ * @return Returns the children.
+ */
+ public Collection<RoughArtifact> getChildren() {
+ return children;
+ }
+
+ public Artifact getReal(Branch branch, IProgressMonitor monitor, IArtifactImportResolver artifactResolver) throws Exception {
+ if (realArtifact != null) {
+ return realArtifact;
+ }
+
+ ArtifactSubtypeDescriptor descriptor = getDescriptorForGetReal();
+
+ realArtifact = artifactResolver.resolve(this);
+
+ if (realArtifact != null) {
+ logger.log(Level.INFO, "found artifact already : " + realArtifact.toString());
+ updateValues(realArtifact);
+ } else {
+
+ if (usePolymorphicArtifactFactory) {
+ realArtifact = factory.makeNewArtifact(descriptor, guid, humandReadableId);
+ } else {
+ realArtifact = descriptor.makeNewArtifact(guid, humandReadableId);
+ }
+
+ // Try to confer attributes in 'initialization mode' to avoid default attributes
+ // on optional attributes. The attributes would be loaded at this point from
+ // onBirth() code in the artifact.
+ if (realArtifact.attributesNotLoaded()) {
+ realArtifact.startAttributeInitialization();
+ conferAttributesUpon(realArtifact);
+ realArtifact.finalizeAttributeInitialization();
+ } else {
+ conferAttributesUpon(realArtifact);
+ }
+
+ }
+
+ if (monitor != null) {
+ monitor.subTask(realArtifact.getDescriptiveName());
+ monitor.worked(1);
+ }
+
+ for (RoughArtifact roughArtifact : children) {
+ Artifact tempArtifact = roughArtifact.getReal(branch, monitor, artifactResolver);
+ if (tempArtifact.getParent() == null) {
+ realArtifact.addChild(tempArtifact);
+ } else if (tempArtifact.getParent() != realArtifact) {
+ throw new IllegalStateException("Artifact already has a parent that is not inline with the import parent");
+ }
+ }
+
+ realArtifact.persist(true);
+ return realArtifact;
+ }
+
+ private ArtifactSubtypeDescriptor getDescriptorForGetReal() {
+ return children.isEmpty() || forcePrimaryType ? primaryDescriptor : headingDescriptor;
+ }
+
+ private void updateValues(Artifact artifact) throws SQLException, FileNotFoundException {
+ for (NameAndVal value : attributes) {
+ artifact.setAttribute(value.getName(), value.getValue());
+ }
+
+ setFileAttributes(artifact);
+ }
+
+ /**
+ * @param guid The guid to set.
+ */
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ /**
+ * @return Returns the guid.
+ */
+ public String getGuid() {
+ return guid;
+ }
+
+ /**
+ * @param humandReadableId The humandReadableId to set.
+ */
+ public void setHumandReadableId(String humandReadableId) {
+ this.humandReadableId = humandReadableId;
+ }
+
+ /**
+ * @param headingDescriptor The headingDescriptor to set.
+ */
+ public void setHeadingDescriptor(ArtifactSubtypeDescriptor headingDescriptor) {
+ this.headingDescriptor = headingDescriptor;
+ }
+
+ /**
+ * @param primaryDescriptor The leafDescriptor to set.
+ */
+ public void setPrimaryDescriptor(ArtifactSubtypeDescriptor primaryDescriptor) {
+ this.primaryDescriptor = primaryDescriptor;
+ }
+
+ /**
+ * @param forcePrimaryType The forcePrimaryType to set.
+ */
+ public void setForcePrimaryType(boolean forcePrimaryType) {
+ this.forcePrimaryType = forcePrimaryType;
+ }
+
+ public String getName() {
+ if (realArtifact != null) {
+ return realArtifact.getDescriptiveName();
+ }
+ for (NameAndVal attr : attributes) {
+ if (attr.getName().equals("Name")) {
+ return attr.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * @return the usePolymorphicArtifactFactory
+ */
+ public static boolean isUsePolymorphicArtifactFactory() {
+ return usePolymorphicArtifactFactory;
+ }
+
+ /**
+ * @param usePolymorphicArtifactFactory the usePolymorphicArtifactFactory to set
+ */
+ public static void setUsePolymorphicArtifactFactory(boolean usePolymorphicArtifactFactory) {
+ RoughArtifact.usePolymorphicArtifactFactory = usePolymorphicArtifactFactory;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughRelation.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughRelation.java
new file mode 100644
index 00000000000..eceeee9a6e7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/RoughRelation.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class RoughRelation {
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(RoughRelation.class);
+
+ private String relTypeName;
+ private String aGuid;
+ private String bGuid;
+ private String rationale;
+ private int aOrderValue;
+ private int bOrderValue;
+
+ private static final RelationPersistenceManager relManager = RelationPersistenceManager.getInstance();
+ private static final ArtifactPersistenceManager artManager = ArtifactPersistenceManager.getInstance();
+
+ public RoughRelation(String relTypeName, String aGuid, String bGuid, String rationale, int aOrderValue, int bOrderValue) {
+ this.relTypeName = relTypeName;
+ this.aGuid = aGuid;
+ this.bGuid = bGuid;
+ this.rationale = rationale;
+ this.aOrderValue = aOrderValue;
+ this.bOrderValue = bOrderValue;
+ }
+
+ public void makeReal(Branch branch, IProgressMonitor monitor) {
+ try {
+ IRelationLinkDescriptor descriptor = relManager.getIRelationLinkDescriptor(relTypeName, branch);
+ Artifact aArt = artManager.getArtifact(aGuid, branch);
+ Artifact bArt = artManager.getArtifact(bGuid, branch);
+
+ if (aArt != null && bArt != null && aArt.getLinkManager().ensureRelationGroupExists(descriptor, false).getArtifacts().contains(
+ bArt)) {
+ logger.log(
+ Level.INFO,
+ "Relation Already Exists : " + aArt.getHumanReadableId() + " - " + aArt.toString() + " => " + descriptor.getName() + " => " + bArt.getHumanReadableId() + " - " + bArt.toString());
+ }
+
+ if (aArt == null || bArt == null) {
+ logger.log(Level.WARNING, "The relation of type " + relTypeName + " could not be created.");
+ if (aArt == null) {
+ logger.log(Level.WARNING, "The artifact with guid: " + aGuid + " does not exist.");
+ }
+ if (bArt == null) {
+ logger.log(Level.WARNING, "The artifact with guid: " + bGuid + " does not exist.");
+ }
+ } else {
+ try {
+ monitor.subTask(aArt.getDescriptiveName() + " <--> " + bArt.getDescriptiveName());
+ monitor.worked(1);
+ aArt.getLinkManager().ensureRelationGroupExists(descriptor, false).addArtifact(bArt, rationale, true,
+ aOrderValue, bOrderValue);
+ } catch (IllegalArgumentException ex) {
+ logger.log(Level.WARNING, ex.toString());
+ }
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ /**
+ * @return Returns the relTypeName.
+ */
+ public String getRelTypeName() {
+ return relTypeName;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WholeWordDocumentExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WholeWordDocumentExtractor.java
new file mode 100644
index 00000000000..d29a96c26d6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WholeWordDocumentExtractor.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.sql.SQLException;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.WordAttribute;
+
+public class WholeWordDocumentExtractor extends WordExtractor {
+ private static final String description = "Extract all the content of each Word XML document as one artifact";
+ private final ArtifactSubtypeDescriptor primaryDescriptor;
+
+ public WholeWordDocumentExtractor(ArtifactSubtypeDescriptor primaryDescriptor, Branch branch) throws SQLException {
+ super(branch);
+ this.primaryDescriptor = primaryDescriptor;
+ }
+
+ public static String getDescription() {
+ return description;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.Import.ArtifactExtractor#discoverArtifactAndRelationData(java.io.File)
+ */
+ public void discoverArtifactAndRelationData(File importFile) throws Exception {
+ if (importFile == null) throw new IllegalArgumentException("importFile can not be null");
+
+ RoughArtifact roughArtifact = new RoughArtifact(Lib.stripExtension(importFile.getName()));
+ roughArtifact.setPrimaryDescriptor(primaryDescriptor);
+ addRoughArtifact(roughArtifact);
+
+ String contents = Lib.fileToString(importFile);
+ int beginIndex = contents.indexOf(BODY_START);
+ int endIndex = contents.indexOf(BODY_END);
+
+ if (beginIndex == -1 || endIndex == -1 || endIndex < beginIndex) {
+ throw new IllegalArgumentException("The file " + importFile.getName() + " is not the right format");
+ }
+ beginIndex += BODY_START.length();
+ contents = contents.substring(beginIndex, endIndex);
+
+ roughArtifact.addAttribute(WordAttribute.CONTENT_NAME, contents);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.Import.ArtifactExtractor#getFileFilter()
+ */
+ public FileFilter getFileFilter() {
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return file.isDirectory() || (file.isFile() && file.getName().endsWith(".xml"));
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordExtractor.java
new file mode 100644
index 00000000000..153aa4a09a0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordExtractor.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class WordExtractor extends AbstractArtifactExtractor {
+
+ protected static final String BODY_START = "<w:body>";
+ protected static final String BODY_END = "</w:body>";
+
+ /**
+ * @param branch
+ * @throws SQLException
+ */
+ public WordExtractor(Branch branch) {
+ super(branch);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineContentHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineContentHandler.java
new file mode 100644
index 00000000000..fdc0c232456
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineContentHandler.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+
+/**
+ * @author Robert A. Fisher
+ */
+public abstract class WordOutlineContentHandler implements IWordOutlineContentHandler {
+ protected WordOutlineExtractor extractor;
+ protected ArtifactSubtypeDescriptor headingDescriptor;
+ protected ArtifactSubtypeDescriptor mainDescriptor;
+ private String name;
+
+ public WordOutlineContentHandler() {
+ this.extractor = null;
+ this.headingDescriptor = null;
+ this.mainDescriptor = null;
+ this.name = null;
+ }
+
+ /**
+ * Returns the name that was in the extension point. Clients may re-implement this method.
+ */
+ public String getName() {
+ if (name == null) {
+ throw new IllegalStateException("Not yet initialized");
+ }
+ return name;
+ }
+
+ /**
+ * Setup the name from the extension point.
+ */
+ public final void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
+ name = config.getAttribute("name");
+ if (name == null || name.equals("")) {
+ name = "<no name>";
+ }
+ }
+
+ /**
+ * Get rid of references setup in init. Subclasses should extend this method if any other resources should be
+ * released.
+ */
+ public void dispose() {
+ extractor = null;
+ headingDescriptor = null;
+ mainDescriptor = null;
+ }
+
+ /**
+ * Save off references. Subclasses should extend this method if anyother resources need to be setup.
+ */
+ public void init(WordOutlineExtractor extractor, ArtifactSubtypeDescriptor headingDescriptor, ArtifactSubtypeDescriptor mainDescriptor) {
+ this.extractor = extractor;
+ this.headingDescriptor = headingDescriptor;
+ this.mainDescriptor = mainDescriptor;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineExtractor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineExtractor.java
new file mode 100644
index 00000000000..35019b507bc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/Import/WordOutlineExtractor.java
@@ -0,0 +1,276 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.Import;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.sql.SQLException;
+import java.util.Iterator;
+import java.util.Stack;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.Readers;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.util.WordUtil;
+
+/**
+ * @author Andrew M. Finkbeiner
+ * @author Robert A. Fisher
+ */
+public class WordOutlineExtractor extends WordExtractor {
+ private static final String description =
+ "Extract data from a Word XML file with an outline, making an artifact for each outline numbered section";
+ private static final String PARAGRAPH_TAG_WITH_ATTRS = "<w:p ";
+ private static final String PARAGRAPH_TAG_EMPTY = "<w:p/>";
+ private static final String PARAGRAPH_TAG = "<w:p>";
+ private static final String TABLE_TAG_WITH_ATTRS = "<w:tbl ";
+ private static final String TABLE_TAG_EMPTY = "<w:tbl/>";
+ private static final String TABLE_TAG = "<w:tbl>";
+ private static final CharSequence[] BODY_TAGS =
+ new CharSequence[] {PARAGRAPH_TAG, PARAGRAPH_TAG_EMPTY, PARAGRAPH_TAG_WITH_ATTRS, TABLE_TAG, TABLE_TAG_EMPTY,
+ TABLE_TAG_WITH_ATTRS, BODY_END};
+
+ // A regex for reading xml elements. Assumes that an element never has a descendant with the same name as itself
+ private static final Pattern internalAttributeElementsPattern =
+ Pattern.compile("<((\\w+:)?(\\w+))(\\s+.*?)((/>)|(>(.*?)</\\1>))",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern proofErrTagKiller = Pattern.compile("</?w:proofErr.*?/?>");
+ private static final int NAMESPACE_GROUP = 2;
+ private static final int ELEMENT_NAME_GROUP = 3;
+ private static final int ATTRIBUTE_BLOCK_GROUP = 4;
+ private static final int CONTENT_GROUP = 8;
+
+ private Matcher reqNumberMatcher;
+ private Matcher reqListMatcher;
+ private Stack<String> currentListStack;
+ private Stack<String> clonedCurrentListStack;
+ private int lastDepthNumber;
+ private String headerNumber;
+ private String listIdentifier;
+ private final ArtifactSubtypeDescriptor headingDescriptor;
+ private final ArtifactSubtypeDescriptor mainDescriptor;
+ private final int maxExtractionDepth;
+ private boolean forceBody;
+ private boolean forcePrimaryType;
+ private String paragraphStyle;
+
+ private final IWordOutlineContentHandler handler;
+
+ public WordOutlineExtractor(ArtifactSubtypeDescriptor mainDescriptor, Branch branch, int maxExtractionDepth, IWordOutlineContentHandler handler) throws SQLException {
+
+ super(branch);
+
+ if (mainDescriptor == null) throw new IllegalArgumentException("mainDescriptor can not be null");
+ if (branch == null) throw new IllegalArgumentException("branch can not be null");
+ if (handler == null) throw new IllegalArgumentException("handler can not be null");
+
+ this.handler = handler;
+
+ this.headerNumber = "";
+ this.listIdentifier = "";
+ this.reqNumberMatcher = Pattern.compile("(\\d+\\.)*(\\d+\\.?)\\s*").matcher("");
+ this.reqListMatcher = Pattern.compile("\\w+\\)", Pattern.CASE_INSENSITIVE).matcher("");
+
+ this.currentListStack = new Stack<String>();
+ this.clonedCurrentListStack = new Stack<String>();
+ this.headingDescriptor = configurationPersistenceManager.getArtifactSubtypeDescriptor("Heading", branch);
+ this.mainDescriptor = mainDescriptor;
+ this.maxExtractionDepth = maxExtractionDepth;
+ }
+
+ public static String getDescription() {
+ return description;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void discoverArtifactAndRelationData(File importFile) throws Exception {
+
+ Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(importFile), "UTF-8"));
+
+ if (Readers.forward(reader, BODY_START) == null) {
+ throwFileFormatError(importFile, "no start of body tag");
+ }
+
+ handler.init(this, headingDescriptor, mainDescriptor);
+
+ try {
+ CharSequence element;
+ StringBuilder content = new StringBuilder(2000);
+
+ // Process the next available body tag
+ while ((element = Readers.forward(reader, BODY_TAGS)) != null) {
+
+ if (element == BODY_END) {
+ return;
+ } else {
+ // Get the next parsable chunk from the stream. This will throttle the amount of the file read in to
+ // memory at one time to the smallest area that will provide all the necessary context.
+ content.setLength(0);
+ content.append(element);
+
+ boolean emptyTagWithAttrs = false;
+ // If the tag had attributes, check that it isn't empty
+ if (element == PARAGRAPH_TAG_WITH_ATTRS || element == TABLE_TAG_WITH_ATTRS) {
+ if (Readers.forward(reader, (Appendable) content, ">") == null) {
+ throwFileFormatError(importFile, "did not find expected end of tag");
+ }
+ emptyTagWithAttrs = content.toString().endsWith("/>");
+ }
+
+ if (element == PARAGRAPH_TAG || (!emptyTagWithAttrs && element == PARAGRAPH_TAG_WITH_ATTRS)) {
+ Readers.xmlForward(reader, (Appendable) content, "w:p");
+ } else if (element == TABLE_TAG || (!emptyTagWithAttrs && element == TABLE_TAG_WITH_ATTRS)) {
+ Readers.xmlForward(reader, (Appendable) content, "w:tbl");
+ } else if (element != PARAGRAPH_TAG_WITH_ATTRS && element != TABLE_TAG_WITH_ATTRS && element != PARAGRAPH_TAG_EMPTY && element != TABLE_TAG_EMPTY) {
+ throw new IllegalStateException("Unexpected element returned");
+ }
+
+ // Word places proofErr tags in manners discontigous with the standard XML tree so only some
+ // of them get picked up causing a misbalance from what Word expects, and effectively corrupting
+ // the content as far as Word is concerned, so just remove all of them and let word recompute
+ // them if it is really that concerned about our grammar
+ content = new StringBuilder(proofErrTagKiller.matcher(content).replaceAll(""));
+
+ // forceBody doesn't reset per paragraph
+ forcePrimaryType = false;
+ headerNumber = "";
+ listIdentifier = "";
+ paragraphStyle = null;
+ parseContentDetails(content, new Stack<String>());
+ handler.processContent(forceBody, forcePrimaryType, headerNumber, listIdentifier, paragraphStyle,
+ content.toString(), element == PARAGRAPH_TAG);
+ }
+ }
+ } finally {
+ handler.dispose();
+ }
+
+ throwFileFormatError(importFile, "did not find expected end of body tag");
+ }
+
+ private void parseContentDetails(CharSequence content, Stack<String> parentElementNames) {
+
+ Matcher matcher = internalAttributeElementsPattern.matcher(content);
+
+ String elementNamespace;
+ String elementName;
+ String elementAttributes;
+ String elementContent;
+ while (matcher.find()) {
+ elementName = matcher.group(ELEMENT_NAME_GROUP);
+ elementNamespace = matcher.group(NAMESPACE_GROUP);
+ elementAttributes = matcher.group(ATTRIBUTE_BLOCK_GROUP) == null ? "" : matcher.group(ATTRIBUTE_BLOCK_GROUP);
+ elementContent = matcher.group(CONTENT_GROUP) == null ? "" : matcher.group(CONTENT_GROUP);
+
+ if (elementName.equals("forceBodyOn")) {
+ forceBody = true;
+ } else if (elementName.equals("forceBodyOff")) {
+ forceBody = false;
+ } else if (elementName.equals("pStyle")) {
+ paragraphStyle = getAttributeValue("w:val", elementAttributes);
+ } else if (elementName.equals("forcePrimaryType")) {
+ forcePrimaryType = true;
+ } else if (elementNamespace.startsWith("w") && elementName.equals("t")) {
+ String numberCandidate = getAttributeValue("wx:val", elementAttributes);
+
+ reqNumberMatcher.reset(numberCandidate);
+ reqListMatcher.reset(numberCandidate);
+
+ if (reqNumberMatcher.matches()) {
+ if (WordUtil.isHeadingStyle(paragraphStyle)) {
+ headerNumber = numberCandidate;
+ if (headerNumber.endsWith(".0")) {
+ headerNumber = headerNumber.substring(0, headerNumber.length() - 2);
+ }
+ }
+ } else if (reqListMatcher.matches()) {
+ if (isListStyle(parentElementNames)) {
+ listIdentifier =
+ processListId(Integer.parseInt(getAttributeValue("w:val", elementAttributes)), numberCandidate);
+ }
+ }
+ }
+
+ parentElementNames.push(elementName);
+ parseContentDetails(elementContent, parentElementNames);
+ parentElementNames.pop();
+ }
+ }
+
+ private static final String getAttributeValue(String attributeName, String attributeStorage) {
+
+ attributeName += "=\"";
+
+ int index = attributeStorage.indexOf(attributeName);
+ if (index == -1) {
+ return "";
+ } else {
+ int startIndex = index + attributeName.length();
+ return attributeStorage.substring(startIndex, attributeStorage.indexOf('"', startIndex + 1)).trim();
+ }
+ }
+
+ private static final void throwFileFormatError(File file, String msg) {
+ throw new IllegalArgumentException("File " + file.getName() + " not of expected format: " + msg);
+ }
+
+ private boolean isListStyle(Stack<String> parentElementNames) {
+ Iterator<String> iter = parentElementNames.iterator();
+
+ return iter.hasNext() && iter.next().equals("ilvl") && iter.hasNext() && iter.next().equals("listPr");
+ }
+
+ @SuppressWarnings("unchecked")
+ private String processListId(int currentDepthNumber, String numberCandidate) throws IllegalArgumentException {
+ String id = "";
+
+ if (currentDepthNumber == 0) {
+ currentListStack.clear();
+
+ currentListStack.push(numberCandidate);
+ clonedCurrentListStack = (Stack) currentListStack.clone();
+ lastDepthNumber = currentDepthNumber;
+ } else {
+
+ for (int i = currentDepthNumber; i <= lastDepthNumber; i++) {
+ currentListStack.pop();
+ }
+
+ lastDepthNumber = currentDepthNumber;
+ currentListStack.push(numberCandidate);
+ clonedCurrentListStack = (Stack) currentListStack.clone();
+ }
+ while (!clonedCurrentListStack.empty()) {
+ id = clonedCurrentListStack.pop() + id;
+ }
+
+ if (currentDepthNumber > maxExtractionDepth) {
+ return null;
+ }
+ return id.replaceAll("\\)", ".");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.Import.ArtifactExtractor#getFileFilter()
+ */
+ public FileFilter getFileFilter() {
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return file.isDirectory() || (file.isFile() && file.getName().endsWith(".xml"));
+ }
+ };
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/LabelSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/LabelSorter.java
new file mode 100644
index 00000000000..b08a4be0810
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/LabelSorter.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import org.eclipse.jface.viewers.ContentViewer;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+public class LabelSorter extends ViewerSorter {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerSorter#category(java.lang.Object)
+ */
+ @Override
+ public int category(Object element) {
+ return super.category(element);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+
+ Artifact art1 = null;
+ Artifact art2 = null;
+
+ if (e1 instanceof Artifact) art1 = (Artifact) e1;
+ if (e2 instanceof Artifact) art2 = (Artifact) e2;
+
+ boolean e1IsHeading = (art1 != null && art1.getArtifactTypeName().equals("Heading"));
+ boolean e2IsHeading = (art2 != null && art2.getArtifactTypeName().equals("Heading"));
+ boolean e1IsNarrative = (art1 != null && !e1IsHeading && art1.getArtifactTypeName().equals("Narrative"));
+ boolean e2IsNarrative = (art2 != null && !e2IsHeading && art2.getArtifactTypeName().equals("Narrative"));
+
+ if (e1IsHeading ^ e2IsHeading) return (e1IsHeading ? -1 : 1);
+
+ if (e1IsNarrative ^ e2IsNarrative) return (e1IsNarrative ? -1 : 1);
+
+ int cat1 = category(e1);
+ int cat2 = category(e2);
+
+ if (cat1 != cat2) return cat1 - cat2;
+
+ String name1;
+ String name2;
+
+ if (viewer == null || !(viewer instanceof ContentViewer)) {
+ name1 = e1.toString();
+ name2 = e2.toString();
+ } else {
+ IBaseLabelProvider prov = ((ContentViewer) viewer).getLabelProvider();
+ if (prov instanceof ILabelProvider) {
+ ILabelProvider lprov = (ILabelProvider) prov;
+ name1 = lprov.getText(e1);
+ name2 = lprov.getText(e2);
+ } else {
+ name1 = e1.toString();
+ name2 = e2.toString();
+ }
+ }
+ if (name1 == null) name1 = "";
+ if (name2 == null) name2 = "";
+ return getComparator().compare(name1, name2);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerSorter#isSorterProperty(java.lang.Object, java.lang.String)
+ */
+ @Override
+ public boolean isSorterProperty(Object element, String property) {
+ return super.isSorterProperty(element, property);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ViewerSorter#sort(org.eclipse.jface.viewers.Viewer, java.lang.Object[])
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void sort(final Viewer viewer, Object[] elements) {
+ Arrays.sort(elements, new Comparator() {
+ public int compare(Object a, Object b) {
+ return LabelSorter.this.compare(viewer, a, b);
+ }
+ });
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ModifyAttributesListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ModifyAttributesListener.java
new file mode 100644
index 00000000000..42660e459f9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ModifyAttributesListener.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class ModifyAttributesListener {
+
+ public abstract void handleEvent();
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseePreferencePage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseePreferencePage.java
new file mode 100644
index 00000000000..508c7e6ee57
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseePreferencePage.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.osee.framework.jdk.core.util.Network;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * This class represents a preference page that is contributed to the Preferences dialog. By subclassing
+ * <samp>FieldEditorPreferencePage</samp>, we can use the field support built into JFace that allows us to create a
+ * page that is small and knows how to save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They are stored in the preference store that belongs to the main
+ * plug-in class. That way, preferences can be accessed directly via the preference store.
+ */
+
+public class OseePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(OseePreferencePage.class);
+ public static final String INETADDRESS_KEY =
+ "org.eclipse.osee.framework.jdk.core.OseePreferencePage.InetAddressDefault";
+ public static final String WORDWRAP_KEY = "org.eclipse.osee.framework.jdk.core.OseePreferencePage.WordWrap";
+ private HashMap<InetAddress, Button> networkButtons;
+ private Button wordWrapChkBox;
+ private OseeUiActivator plugin = SkynetGuiPlugin.getInstance();
+
+ private void createNetworkAdapterArea(Composite parent) {
+ addDialogControls(parent);
+ setupWordWrapChkButton();
+ }
+
+ private void addDialogControls(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setLayout(new GridLayout(2, false));
+
+ GridData gd = new GridData();
+ gd.verticalAlignment = GridData.FILL;
+ gd.horizontalAlignment = GridData.FILL;
+ gd.grabExcessHorizontalSpace = true;
+ group.setLayoutData(gd);
+
+ wordWrapChkBox = new Button(group, SWT.CHECK);
+ wordWrapChkBox.setText("Use alternate hyperlink drag method");
+
+ // setup the default network selection
+ Group networkAdapter = new Group(parent, SWT.NONE);
+ networkAdapter.setLayout(new GridLayout());
+ networkAdapter.setText("Select a Default Network Adaptor");
+
+ gd = new GridData();
+ gd.verticalAlignment = GridData.FILL;
+ gd.horizontalAlignment = GridData.FILL;
+ gd.grabExcessHorizontalSpace = true;
+ networkAdapter.setLayoutData(gd);
+
+ setupInetAddressButtons(networkAdapter);
+ }
+
+ private void setupInetAddressButtons(Group group) {
+ InetAddress[] addrs = null;
+ try {
+ addrs = Network.getLocalNetworkAdapters();
+ } catch (UnknownHostException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+
+ networkButtons = new HashMap<InetAddress, Button>();
+
+ Button defaultButton = new Button(group, SWT.RADIO);
+ defaultButton.setText("Default");
+ for (int i = 0; addrs != null && i < addrs.length; i++) {
+ Button button = new Button(group, SWT.RADIO);
+ button.setText(addrs[i].getHostAddress() + " " + addrs[i].getHostName());
+ networkButtons.put(addrs[i], button);
+ }
+
+ IPreferenceStore prefStore = plugin.getPreferenceStore();
+ String inetaddress = prefStore.getString(INETADDRESS_KEY);
+
+ boolean addressSelected = false;
+ if (inetaddress != null && !inetaddress.equals("")) {
+ for (InetAddress address : networkButtons.keySet()) {
+ if (address.getHostAddress().equals(inetaddress)) {
+ networkButtons.get(address).setSelection(true);
+ addressSelected = true;
+ }
+ }
+ }
+
+ if (!addressSelected) {
+ defaultButton.setSelection(true);
+ }
+ }
+
+ private void setupWordWrapChkButton() {
+ IPreferenceStore prefStore = plugin.getPreferenceStore();
+ wordWrapChkBox.setSelection(prefStore.getString(WORDWRAP_KEY) != null && prefStore.getString(WORDWRAP_KEY).equals(
+ IPreferenceStore.TRUE));
+ }
+
+ private void createBlankArea(Composite parent, int height, boolean allVertical) {
+ Composite blank = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout();
+ GridData gd = new GridData();
+ gd.minimumHeight = height;
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = allVertical;
+ blank.setLayout(gridLayout);
+ blank.setLayoutData(gd);
+ }
+
+ protected Control createContents(Composite parent) {
+ createNetworkAdapterArea(parent);
+ createBlankArea(parent, 300, true);
+
+ return parent;
+ }
+
+ public static InetAddress getDefaultInetAddress() throws UnknownHostException {
+ IPreferenceStore prefStore = SkynetGuiPlugin.getInstance().getPreferenceStore();
+ String inetaddress = prefStore.getString(INETADDRESS_KEY);
+ if (inetaddress != null && !inetaddress.equals("")) {
+ return InetAddress.getByName(inetaddress);
+ }
+ return Network.getValidIP();
+ }
+
+ /**
+ * initialize the preference store to use with the workbench
+ */
+ public void init(IWorkbench workbench) {
+ // Initialize the preference store we wish to use
+ setPreferenceStore(plugin.getPreferenceStore());
+ }
+
+ protected void performDefaults() {
+ }
+
+ protected void performApply() {
+ performOk();
+ }
+
+ public boolean performOk() {
+ IPreferenceStore prefStore = plugin.getPreferenceStore();
+
+ prefStore.putValue(INETADDRESS_KEY, "");
+ for (InetAddress address : networkButtons.keySet()) {
+ if (networkButtons.get(address).getSelection()) {
+ prefStore.putValue(INETADDRESS_KEY, address.getHostAddress());
+ break;
+ }
+ }
+
+ prefStore.putValue(WORDWRAP_KEY, wordWrapChkBox.getSelection() ? IPreferenceStore.TRUE : IPreferenceStore.FALSE);
+
+ return super.performOk();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationCellModifier.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationCellModifier.java
new file mode 100644
index 00000000000..4c5090da70b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationCellModifier.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.PermissionList;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLink;
+import org.eclipse.swt.widgets.Item;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class RelationCellModifier implements ICellModifier {
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private TreeViewer treeViewer;
+
+ private PermissionList pList;
+
+ /**
+ *
+ */
+ public RelationCellModifier(TreeViewer treeViewer) {
+ super();
+ this.treeViewer = treeViewer;
+ pList = new PermissionList();
+ // pList.addPermission(Permission.PermPermissionEnum.EDITREQUIREMENT);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
+ */
+ public boolean canModify(Object element, String property) {
+ try {
+ SkynetGuiPlugin.securityManager.checkPermission(skynetAuth.getAuthenticatedUser(), pList);
+ } catch (SecurityException ex) {
+ ex.printStackTrace();
+ return false;
+ }
+ return element instanceof IRelationLink;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
+ */
+ public Object getValue(Object element, String property) {
+ IRelationLink relLink = (IRelationLink) element;
+ return relLink.getRationale();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String,
+ * java.lang.Object)
+ */
+ public void modify(Object element, String property, Object value) {
+ // Note that it is possible for an SWT Item to be passed instead of the model element.
+ if (element instanceof Item) {
+ element = ((Item) element).getData();
+ }
+ IRelationLink relLink = (IRelationLink) element;
+ relLink.setRationale((String) value, true);
+ treeViewer.update(element, null);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationContentProvider.java
new file mode 100644
index 00000000000..a996511d4b1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationContentProvider.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.logging.Level;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.LinkManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.osee.framework.skynet.core.relation.RelationModifiedEvent;
+
+/**
+ * The basis for the comments in this class can be found at
+ * http://www.eclipse.org/articles/treeviewer-cg/TreeViewerArticle.htm
+ *
+ * @author Ryan D. Brooks
+ */
+public class RelationContentProvider implements ITreeContentProvider {
+ private static Object[] EMPTY_ARRAY = new Object[0];
+ protected TreeViewer viewer;
+ private SkynetEventManager eventManager;
+ private final RelationsComposite relComp;
+
+ // private static final int EXPAND_CHILDREN_LEVEL = 7;
+
+ public RelationContentProvider(RelationsComposite relComp) {
+ this.relComp = relComp;
+ this.eventManager = SkynetEventManager.getInstance();
+ }
+
+ /*
+ * @see IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /**
+ * Notifies this content provider that the given viewer's input has been switched to a different element.
+ * <p>
+ * A typical use for this method is registering the content provider as a listener to changes on the new input (using
+ * model-specific means), and deregistering the viewer from the old input. In response to these change notifications,
+ * the content provider propagates the changes to the viewer.
+ * </p>
+ *
+ * @param viewer the viewer
+ * @param oldInput the old input element, or <code>null</code> if the viewer did not previously have an input
+ * @param newInput the new input element, or <code>null</code> if the viewer does not have an input
+ * @see IContentProvider#inputChanged(Viewer, Object, Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = (TreeViewer) viewer;
+ }
+
+ /**
+ * The tree viewer calls its content provider&#8217;s getChildren method when it needs to create or display the child
+ * elements of the domain object, <b>parent </b>. This method should answer an array of domain objects that represent
+ * the unfiltered children of <b>parent </b>
+ *
+ * @see ITreeContentProvider#getChildren(Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+
+ try {
+ if (parentElement instanceof IRelationLinkDescriptor) {
+ IRelationLinkDescriptor descriptor = (IRelationLinkDescriptor) parentElement;
+ Artifact parent = (Artifact) viewer.getInput();
+ LinkManager linkManager = parent.getLinkManager();
+
+ Collection<RelationLinkGroup> groups = new LinkedList<RelationLinkGroup>();
+ RelationLinkGroup group;
+
+ group = linkManager.getSideAGroup(descriptor);
+ if (group != null) {
+ groups.add(group);
+ for (Artifact art : group.getArtifacts())
+ eventManager.register(RelationModifiedEvent.class, art, relComp);
+ }
+ group = linkManager.getSideBGroup(descriptor);
+ if (group != null) {
+ groups.add(group);
+ for (Artifact art : group.getArtifacts())
+ eventManager.register(RelationModifiedEvent.class, art, relComp);
+ }
+ return groups.toArray();
+ } else if (parentElement instanceof RelationLinkGroup) {
+ return ((RelationLinkGroup) parentElement).getGroupSide().toArray();
+ }
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ return EMPTY_ARRAY;
+ }
+
+ // /**
+ // * Expands the parents children if the number of children are less than or equal the maxium
+ // * number allowed.
+ // */
+ // private void expandTreeViewer(TreeViewer treeViewer, Object parent, int numberOfChildren) {
+ // if (numberOfChildren <= EXPAND_CHILDREN_LEVEL) {
+ // treeViewer.expandToLevel(parent, 1);
+ // }
+ // }
+
+ /*
+ * @see ITreeContentProvider#getParent(Object)
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ /**
+ * The tree viewer asks its content provider if the domain object represented by <b>element </b> has any children.
+ * This method is used by the tree viewer to determine whether or not a plus or minus should appear on the tree
+ * widget.
+ *
+ * @see ITreeContentProvider#hasChildren(Object)
+ */
+ public boolean hasChildren(Object element) {
+ // might be inefficient if getChildren is not a lightweight operation
+ int numberOfChildren = getChildren(element).length;
+ // expandTreeViewer(viewer, element, numberOfChildren);
+
+ return numberOfChildren > 0;
+ }
+
+ /**
+ * This is the method invoked by calling the <b>setInput </b> method on the tree viewer. In fact, the <b>getElements
+ * </b> method is called only in response to the tree viewer's <b>setInput </b> method and should answer with the
+ * appropriate domain objects of the inputElement. The <b>getElements </b> and <b>getChildren </b> methods operate in
+ * a similar way. Depending on your domain objects, you may have the <b>getElements </b> simply return the result of
+ * calling <b>getChildren </b>. The two methods are kept distinct because it provides a clean way to differentiate
+ * between the root domain object and all other domain objects.
+ *
+ * @see IStructuredContentProvider#getElements(Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ try {
+ if (inputElement instanceof Artifact) {
+ return ((Artifact) inputElement).getLinkManager().getLinkDescriptors().toArray();
+ }
+ throw new IllegalArgumentException("Unsupported input type:" + inputElement.getClass().getCanonicalName());
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ return new Object[] {};
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationLabelProvider.java
new file mode 100644
index 00000000000..ee99a60504f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationLabelProvider.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.text.NumberFormat;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class RelationLabelProvider implements ITableLabelProvider, ILabelProvider {
+ private static NumberFormat numberFormat = NumberFormat.getNumberInstance();
+ private static Image RELATION_IMAGE = SkynetGuiPlugin.getInstance().getImage("relate.gif");
+ private Artifact artifact;
+
+ /**
+ *
+ */
+ public RelationLabelProvider(Artifact artifact) {
+ super();
+ this.artifact = artifact;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (element instanceof IRelationLinkDescriptor && columnIndex == 0) {
+ return RELATION_IMAGE;
+ } else if (element instanceof IRelationLink && columnIndex == 0) {
+ IRelationLink link = (IRelationLink) element;
+ return (link.getArtifactA() == artifact) ? link.getArtifactB().getDescriptor().getImage() : link.getArtifactA().getDescriptor().getImage();
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof RelationLinkGroup) {
+ if (columnIndex == 0) return ((RelationLinkGroup) element).getSideName();
+ } else if (element instanceof IRelationLinkDescriptor) {
+ if (columnIndex == 0) return ((IRelationLinkDescriptor) element).getName();
+ } else if (element instanceof IRelationLink) {
+ IRelationLink link = (IRelationLink) element;
+ if (columnIndex == 0)
+ return (link.getArtifactA() == artifact) ? link.getArtifactB().getDescriptiveName() : link.getArtifactA().getDescriptiveName();
+ else if (columnIndex == 1)
+ return link.getRationale();
+ else if (columnIndex == 2) return (link.getArtifactA() == artifact) ? numberFormat.format(link.getAOrder()) : numberFormat.format(link.getBOrder());
+ } else {
+ throw new IllegalArgumentException("wrong type: " + element.getClass().getName());
+ }
+ return "";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public Image getImage(Object element) {
+ if (element instanceof IRelationLinkDescriptor) {
+ return RELATION_IMAGE;
+ }
+ return null;
+ }
+
+ public String getText(Object element) {
+ return getColumnText(element, 0);
+ }
+
+ /**
+ * @param artifact The artifact to set.
+ */
+ public void setArtifact(Artifact artifact) {
+ this.artifact = artifact;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationsComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationsComposite.java
new file mode 100644
index 00000000000..75e858ce879
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/RelationsComposite.java
@@ -0,0 +1,797 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeViewerListener;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.TreeExpansionEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.relation.DynamicRelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.osee.framework.skynet.core.relation.RelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.skynet.artifact.RelationGroupDialog;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.relation.explorer.RelationExplorerWindow;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MenuAdapter;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseMoveListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class RelationsComposite extends Composite implements IEventReceiver {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(RelationsComposite.class);
+ private TreeViewer treeViewer;
+ private Tree tree;
+ private NeedSelectedArtifactListener needSelectedArtifactListener;
+ private NeedArtifactMenuListener needArtifactListener;
+ private IDirtiableEditor editor;
+ public static final String VIEW_ID = "osee.define.relation.RelationExplorer";
+ public static final String[] columnNames = new String[] {" ", "Rationale"};
+ // the index of column order
+ private static int COLUMN_ORDER = 1;
+
+ private MenuItem openMenuItem;
+ private MenuItem editMenuItem;
+ private MenuItem newMenuItem;
+ private MenuItem viewRelationTreeItem;
+ private MenuItem deleteMenuItem;
+ private MenuItem massEditMenuItem;
+ private Artifact artifact;
+ private SkynetEventManager eventManager;
+ private final boolean readOnly;
+ private RelationLabelProvider relationLabelProvider;
+ private ToolBar toolBar;
+
+ private Map<Integer, IRelationLink> artifactToLinkMap;
+
+ public RelationsComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact) {
+ this(editor, parent, style, artifact, false, null);
+ }
+
+ public RelationsComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact, ToolBar toolBar) {
+ this(editor, parent, style, artifact, false, toolBar);
+ }
+
+ public RelationsComposite(IDirtiableEditor editor, Composite parent, int style, Artifact artifact, boolean readOnly, ToolBar toolBar) {
+ super(parent, style);
+ this.readOnly = readOnly;
+
+ if (artifact == null) throw new IllegalArgumentException("Can not edit a null artifact");
+
+ this.artifact = artifact;
+ this.editor = editor;
+ this.relationLabelProvider = new RelationLabelProvider(artifact);
+ this.artifactToLinkMap = new HashMap<Integer, IRelationLink>();
+
+ createPartControl();
+ eventManager = SkynetEventManager.getInstance();
+ eventManager.register(RelationModifiedEvent.class, artifact, this);
+
+ this.toolBar = toolBar;
+ }
+
+ public TreeViewer getTreeViewer() {
+ return treeViewer;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createPartControl() {
+ this.setLayout(new GridLayout());
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ createTreeArea(this);
+ createColumns();
+ packColumnData();
+
+ needSelectedArtifactListener = new NeedSelectedArtifactListener();
+ needArtifactListener = new NeedArtifactMenuListener();
+ tree.setMenu(getPopupMenu());
+
+ setHelpContexts();
+ }
+
+ private void createTreeArea(Composite parent) {
+ treeViewer = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.MULTI);
+ tree = treeViewer.getTree();
+ tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ tree.setHeaderVisible(true);
+
+ CellEditor[] editors = new CellEditor[columnNames.length];
+ editors[1] = new TextCellEditor(tree);
+ treeViewer.setCellEditors(editors);
+ treeViewer.setCellModifier(new RelationCellModifier(treeViewer));
+ treeViewer.setColumnProperties(columnNames);
+ treeViewer.setContentProvider(new RelationContentProvider(this));
+ treeViewer.setLabelProvider(relationLabelProvider);
+ // treeViewer.addSelectionChangedListener(this.getParent());
+ treeViewer.setSorter(new LabelSorter() {
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ if (e1 instanceof IRelationLink && e2 instanceof IRelationLink) {
+ IRelationLink link1 = (IRelationLink) e1;
+ IRelationLink link2 = (IRelationLink) e2;
+
+ float val;
+ if (link1.getArtifactA() == artifact)
+ val = link1.getAOrder() - link2.getAOrder();
+ else
+ val = link1.getBOrder() - link2.getBOrder();
+
+ if (val > 0)
+ return 1;
+ else
+ return -1;
+ }
+ return super.compare(viewer, e1, e2);
+ }
+ });
+ treeViewer.setUseHashlookup(true);
+ treeViewer.setInput(artifact);
+
+ treeViewer.addDoubleClickListener(new DoubleClickListener());
+ tree.addKeyListener(new keySelectedListener());
+ treeViewer.addTreeListener(new ITreeViewerListener() {
+
+ public void treeCollapsed(TreeExpansionEvent event) {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ packColumnData();
+ }
+ });
+
+ }
+
+ public void treeExpanded(TreeExpansionEvent event) {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ packColumnData();
+ }
+ });
+ }
+
+ });
+
+ tree.addMouseMoveListener(new MouseMoveListener() {
+
+ public void mouseMove(MouseEvent e) {
+ // System.out.println("MouseEvent at " + e.x + "," + e.y);
+ // TreeItem item = tree.getItem(new Point(e.x, e.y));
+ // if (item != null)
+ // System.out.println("WOOT");
+ // tree.setInsertMark(item, true);
+
+ }
+ });
+
+ new RelationSkynetDragAndDrop(tree, VIEW_ID);
+ }
+
+ private void createColumns() {
+ for (int index = 0; index < columnNames.length; index++) {
+ TreeColumn column = new TreeColumn(tree, SWT.LEFT, index);
+ column.setText(columnNames[index]);
+ }
+ }
+
+ private void packColumnData() {
+ TreeColumn[] columns = treeViewer.getTree().getColumns();
+ for (TreeColumn column : columns) {
+ column.pack();
+ }
+ }
+
+ public Menu getPopupMenu() {
+ Menu popupMenu = new Menu(this);
+ popupMenu.addMenuListener(needSelectedArtifactListener);
+ popupMenu.addMenuListener(needArtifactListener);
+
+ createOpenMenuItem(popupMenu);
+ if (!readOnly) {
+ createEditMenuItem(popupMenu);
+ createMassEditMenuItem(popupMenu);
+ }
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createNewMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createViewRelationTreeMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createDeleteMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+
+ createExpandAllMenuItem(popupMenu);
+ createSelectAllMenuItem(popupMenu);
+
+ popupMenu.addMenuListener(new RelationMenuListener());
+ return popupMenu;
+ }
+
+ public class DoubleClickListener implements IDoubleClickListener {
+ public void doubleClick(DoubleClickEvent event) {
+ openViewer((IStructuredSelection) event.getSelection());
+ }
+ }
+
+ private class CreateNewRelationSelectedListener implements Listener {
+ private Shell shell;
+
+ public CreateNewRelationSelectedListener(Shell shell) {
+ this.shell = shell;
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void handleEvent(Event event) {
+ try {
+ boolean isNewRelationCreated = false;
+ IRelationLinkDescriptor selectedDescriptor = (IRelationLinkDescriptor) ((MenuItem) event.widget).getData();
+
+ boolean canBeOnSideA = canBeOnSide(selectedDescriptor, true);
+ boolean canBeOnSideB = canBeOnSide(selectedDescriptor, false);
+
+ if (canBeOnSideA && canBeOnSideB) {
+ RelationGroupDialog dialog =
+ new RelationGroupDialog(shell, "Select New Relation Side", null,
+ "Please select the relation side onto which you intend to drag related artifacts.",
+ selectedDescriptor, artifact);
+ int response = dialog.open();
+ if (response == 0) isNewRelationCreated = true;
+
+ } else if (canBeOnSideA || canBeOnSideB) {
+ artifact.getLinkManager().ensureRelationGroupExists(selectedDescriptor, canBeOnSideB);
+ isNewRelationCreated = true;
+ }
+
+ if (isNewRelationCreated) {
+ treeViewer.refresh();
+ treeViewer.expandToLevel(selectedDescriptor, 1);
+ editor.onDirtied();
+ }
+
+ packColumnData();
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ }
+
+ private boolean canBeOnSide(IRelationLinkDescriptor descriptor, boolean sideA) throws SQLException {
+ int sideMax = descriptor.getRestrictionSizeFor(artifact.getArtTypeId(), sideA);
+ RelationLinkGroup otherSideGroup = artifact.getLinkManager().getSideGroup(descriptor, !sideA);
+
+ return sideMax > 0 && otherSideGroup == null;
+ }
+
+ private void createDeleteMenuItem(final Menu parentMenu) {
+ deleteMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ deleteMenuItem.setText("&Delete");
+ deleteMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+
+ performDelete(selection);
+ }
+ });
+
+ deleteMenuItem.setEnabled(true);
+ }
+
+ private void createMassEditMenuItem(final Menu parentMenu) {
+ massEditMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ massEditMenuItem.setText("&Mass Edit");
+ massEditMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+
+ performMassEdit(selection);
+ }
+ });
+
+ massEditMenuItem.setEnabled(true);
+ }
+
+ private void createViewRelationTreeMenuItem(Menu menu) {
+ viewRelationTreeItem = new MenuItem(menu, SWT.PUSH);
+ viewRelationTreeItem.setText("&View Relation Table Report");
+ viewRelationTreeItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ TreeViewerReport report =
+ new TreeViewerReport("Relation View Report for " + artifact.getDescriptiveName(), treeViewer);
+ ArrayList<Integer> ignoreCols = new ArrayList<Integer>();
+ ignoreCols.add(COLUMN_ORDER);
+ report.setIgnoreColumns(ignoreCols);
+ report.open();
+ }
+ });
+ }
+
+ private void createNewMenuItem(final Menu parentMenu) {
+ newMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ newMenuItem.setText("&New Relation");
+ Menu newMenu = new Menu(parentMenu.getShell(), SWT.DROP_DOWN);
+ boolean isRelatable = false;
+
+ for (IRelationLinkDescriptor relationDescriptor : RelationPersistenceManager.getInstance().getIRelationLinkDescriptors(
+ artifact.getDescriptor())) {
+ MenuItem mItem = new MenuItem(newMenu, SWT.PUSH);
+ mItem.setData(relationDescriptor);
+ mItem.setText(relationDescriptor.getName());
+ mItem.addListener(SWT.Selection, new CreateNewRelationSelectedListener(parentMenu.getShell()));
+
+ isRelatable = true;
+ }
+
+ if (isRelatable) {
+ newMenuItem.setText("&New Relation");
+ } else {
+ newMenuItem.setText("New Relation - No valid relations");
+ }
+
+ newMenuItem.setEnabled(isRelatable);
+ newMenuItem.setMenu(newMenu);
+
+ newMenu.addMenuListener(new MenuAdapter() {
+
+ public void menuShown(MenuEvent e) {
+ try {
+ Menu dropDown = (Menu) e.getSource();
+ MenuItem[] items = dropDown.getItems();
+ boolean canBeOnSideA;
+ boolean canBeOnSideB;
+
+ for (MenuItem item : items) {
+ IRelationLinkDescriptor descriptor = (IRelationLinkDescriptor) item.getData();
+ canBeOnSideA = canBeOnSide(descriptor, true);
+ canBeOnSideB = canBeOnSide(descriptor, false);
+
+ String title = descriptor.getName();
+ if (canBeOnSideA && canBeOnSideB)
+ title += "...";
+ else if (canBeOnSideA)
+ title += " (" + descriptor.getSideBName() + ")";
+ else if (canBeOnSideB) title += " (" + descriptor.getSideAName() + ")";
+
+ item.setText(title);
+
+ item.setEnabled(canBeOnSideA || canBeOnSideB);
+ }
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ });
+ }
+
+ private void createOpenMenuItem(Menu parentMenu) {
+ openMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ openMenuItem.setText("Open");
+
+ needArtifactListener.add(openMenuItem);
+ needSelectedArtifactListener.add(openMenuItem);
+ openMenuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ openViewer((IStructuredSelection) treeViewer.getSelection());
+ }
+ });
+ }
+
+ private void openViewer(IStructuredSelection selection) {
+ // TODO: check permission
+ Object object = selection.getFirstElement();
+ Artifact selectedArtifact;
+
+ if (object instanceof IRelationLink) {
+ IRelationLink link = (IRelationLink) object;
+ selectedArtifact = (link.getArtifactA() == artifact) ? link.getArtifactB() : link.getArtifactA();
+
+ ArtifactEditor.editArtifact(selectedArtifact);
+ }
+ }
+
+ private void performMassEdit(IStructuredSelection selection) {
+ // TODO: check permission
+ Set<Artifact> selectedArtifacts = new HashSet<Artifact>();
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ Object object = iter.next();
+ if (object instanceof IRelationLink) {
+ IRelationLink link = (IRelationLink) object;
+ selectedArtifacts.add(link.getArtifactB());
+ }
+ }
+ MassArtifactEditor.editArtifacts("Mass Edit", selectedArtifacts);
+ }
+
+ private void createEditMenuItem(Menu parentMenu) {
+ editMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ editMenuItem.setText("&Edit");
+
+ needArtifactListener.add(editMenuItem);
+ editMenuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Object object = selection.getFirstElement();
+
+ if (object instanceof Artifact) {
+ RendererManager.getInstance().editInJob((Artifact) object);
+ }
+ }
+ });
+ }
+
+ private void createExpandAllMenuItem(Menu parentMenu) {
+ MenuItem menuItem = new MenuItem(parentMenu, SWT.PUSH);
+ menuItem.setText("Expand All\tCtrl+X");
+ menuItem.addSelectionListener(new ExpandListener());
+ }
+
+ public class ExpandListener extends SelectionAdapter {
+ public void widgetSelected(SelectionEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ treeViewer.expandToLevel(iter.next(), TreeViewer.ALL_LEVELS);
+ }
+ packColumnData();
+ }
+ }
+
+ public class NeedSelectedArtifactListener implements MenuListener {
+ Collection<MenuItem> items;
+
+ public NeedSelectedArtifactListener() {
+ this.items = new LinkedList<MenuItem>();
+ }
+
+ public void add(MenuItem item) {
+ items.add(item);
+ }
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ boolean valid = selection.getFirstElement() instanceof Artifact;
+ for (MenuItem item : items)
+ item.setEnabled(valid);
+ }
+ }
+
+ public class NeedArtifactMenuListener implements MenuListener {
+ Collection<MenuItem> items;
+
+ public NeedArtifactMenuListener() {
+ this.items = new LinkedList<MenuItem>();
+ }
+
+ public void add(MenuItem item) {
+ items.add(item);
+ }
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ boolean valid = treeViewer.getInput() instanceof Artifact;
+ for (MenuItem item : items)
+ item.setEnabled(valid);
+ }
+ }
+
+ public class RelationMenuListener implements MenuListener {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.ArmListener#widgetArmed(org.eclipse.swt.events.ArmEvent)
+ */
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ // check permission
+ }
+ }
+
+ private void createSelectAllMenuItem(Menu parentMenu) {
+ MenuItem menuItem = new MenuItem(parentMenu, SWT.PUSH);
+ menuItem.setText("&Select All\tCtrl+A");
+ menuItem.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ treeViewer.getTree().selectAll();
+ }
+ });
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ eventManager.unRegisterAll(this);
+ }
+
+ private void expandAll(IStructuredSelection selection) {
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ treeViewer.expandToLevel(iter.next(), TreeViewer.ALL_LEVELS);
+ }
+ this.packColumnData();
+ }
+
+ /**
+ * Performs the deletion functionality
+ *
+ * @param selection
+ */
+ private void performDelete(IStructuredSelection selection) {
+ Object object = selection.getFirstElement();
+
+ try {
+ if (object instanceof IRelationLink) {
+ ((IRelationLink) object).delete();
+ }
+
+ else if (object instanceof IRelationLinkDescriptor) {
+ IRelationLinkDescriptor descriptor = (IRelationLinkDescriptor) object;
+ artifact.getLinkManager().deleteGroups(descriptor);
+ }
+
+ else if (object instanceof RelationLinkGroup) {
+ RelationLinkGroup group = (RelationLinkGroup) object;
+ artifact.getLinkManager().deleteGroupSide(group);
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+
+ refresh();
+ }
+
+ public void refresh() {
+ if (!treeViewer.getTree().isDisposed()) {
+ treeViewer.refresh();
+ packColumnData();
+ }
+ }
+
+ private class keySelectedListener implements KeyListener {
+ public void keyPressed(KeyEvent e) {
+ if (e.keyCode == SWT.DEL) {
+ performDelete((IStructuredSelection) treeViewer.getSelection());
+ }
+ if (e.keyCode == 'a' && e.stateMask == SWT.CONTROL) {
+ treeViewer.getTree().selectAll();
+ }
+ if (e.keyCode == 'x' && e.stateMask == SWT.CONTROL) {
+ expandAll((IStructuredSelection) treeViewer.getSelection());
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+ }
+
+ /**
+ * @return Returns the artifact.
+ */
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ public void onEvent(org.eclipse.osee.framework.ui.plugin.event.Event event) {
+ if (treeViewer != null && treeViewer.getInput() instanceof Artifact) refresh();
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ public void refreshArtifact(Artifact newArtifact) {
+ relationLabelProvider.setArtifact(newArtifact);
+ treeViewer.setInput(newArtifact);
+
+ refresh();
+ }
+
+ private class RelationSkynetDragAndDrop extends SkynetDragAndDrop {
+ boolean isFeedbackAfter = false;
+
+ public RelationSkynetDragAndDrop(Tree tree, String viewId) {
+ super(tree, viewId);
+ }
+
+ @Override
+ public Artifact[] getArtifacts() {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> i = selection.iterator();
+ Artifact[] artifacts = null;
+
+ if (i.hasNext()) {
+ Artifact selectedArtifact = null;
+ Object object = i.next();
+
+ // get other artifact from link
+ if (object instanceof DynamicRelationLink) {
+ DynamicRelationLink link;
+ String sideName;
+
+ Object[] objects = selection.toArray();
+ artifacts = new Artifact[objects.length];
+
+ for (int index = 0; index < objects.length; index++) {
+ link = (DynamicRelationLink) objects[index];
+ sideName = link.getSideNameForOtherArtifact(artifact);
+ selectedArtifact = link.getArtifact(sideName);
+ artifacts[index] = selectedArtifact;
+
+ artifactToLinkMap.put(selectedArtifact.getArtId(), link);
+ }
+ }
+ }
+ return artifacts;
+ }
+
+ @Override
+ public void performDragOver(DropTargetEvent event) {
+ Tree tree = treeViewer.getTree();
+ TreeItem selected = tree.getItem(treeViewer.getTree().toControl(event.x, event.y));
+
+ event.feedback = DND.FEEDBACK_EXPAND;
+ event.detail = DND.DROP_NONE;
+
+ if (selected != null && selected.getData() instanceof RelationLinkGroup) {
+ event.detail = DND.DROP_COPY;
+ tree.setInsertMark(null, false);
+ } else if (selected != null && selected.getData() instanceof IRelationLink) {
+ IRelationLink targetLink = (IRelationLink) selected.getData();
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Object obj = selection.getFirstElement();
+ if (obj instanceof IRelationLink) {
+ IRelationLink dropTarget = (IRelationLink) obj;
+
+ // the links must be in the same group
+ if ((targetLink.getLinkDescriptor().getName() + targetLink.getSideNameForOtherArtifact(artifact)).equals(dropTarget.getLinkDescriptor().getName() + dropTarget.getSideNameForOtherArtifact(artifact))) {
+ if (isFeedbackAfter) {
+ event.feedback = DND.FEEDBACK_INSERT_AFTER;
+ } else {
+ event.feedback = DND.FEEDBACK_INSERT_BEFORE;
+ }
+ event.detail = DND.DROP_MOVE;
+ }
+ }
+ } else {
+ tree.setInsertMark(null, false);
+ }
+ }
+
+ @Override
+ public void operationChanged(DropTargetEvent event) {
+ if (!isCtrlPressed(event)) {
+ isFeedbackAfter = false;
+ }
+ }
+
+ private boolean isCtrlPressed(DropTargetEvent event) {
+ boolean ctrPressed = (event.detail == 1);
+
+ if (ctrPressed) {
+ isFeedbackAfter = true;
+ }
+ return ctrPressed;
+ }
+
+ @Override
+ public void performDrop(DropTargetEvent event) {
+ TreeItem selected = treeViewer.getTree().getItem(treeViewer.getTree().toControl(event.x, event.y));
+ Object object = selected.getData();
+
+ if (object instanceof IRelationLink) {
+ IRelationLink targetLink = (IRelationLink) object;
+ Artifact transferredArtifact = ((ArtifactData) event.data).getArtifacts()[0];
+ IRelationLink dropLink = artifactToLinkMap.remove(transferredArtifact.getArtId());
+ RelationLinkGroup group;
+
+ try {
+ group =
+ artifact.getLinkManager().getSideGroup(dropLink.getLinkDescriptor(),
+ transferredArtifact.equals(dropLink.getArtifactA()));
+
+ group.moveLink(targetLink, dropLink, !isFeedbackAfter);
+ treeViewer.refresh();
+ editor.onDirtied();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), true);
+ }
+ } else {
+ RelationLinkGroup group = (RelationLinkGroup) selected.getData();
+ RelationExplorerWindow window = new RelationExplorerWindow(treeViewer, group);
+
+ ArtifactDragDropSupport.performDragDrop(event, window,
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+ window.createArtifactInformationBox(null);
+ }
+
+ isFeedbackAfter = false;
+ }
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(treeViewer.getControl(), "relation_page_tree_viewer");
+ }
+
+ /**
+ * @return the toolBar
+ */
+ public ToolBar getToolBar() {
+ return toolBar;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetAuthenticationContributionItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetAuthenticationContributionItem.java
new file mode 100644
index 00000000000..b9cb2af7471
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetAuthenticationContributionItem.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.AuthenticationEvent;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.security.AuthenticationDialog;
+import org.eclipse.osee.framework.ui.plugin.security.OseeAuthentication;
+import org.eclipse.osee.framework.ui.plugin.security.UserCredentials.UserCredentialEnum;
+import org.eclipse.osee.framework.ui.plugin.util.OverlayImage;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class SkynetAuthenticationContributionItem extends SkynetContributionItem {
+
+ private static final String ID = "skynet.authentication";
+
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final OseeAuthentication oseeAuthentication = OseeAuthentication.getInstance();
+ private static final SkynetAuthentication skynetAuthentication = SkynetAuthentication.getInstance();
+
+ private static final Image ENABLED_IMAGE = SkynetGuiPlugin.getInstance().getImage("user.gif");
+ private static final Image DISABLED_IMAGE =
+ new OverlayImage(ENABLED_IMAGE, SkynetGuiPlugin.getInstance().getImageDescriptor("red_slash.gif")).createImage();
+
+ private static String ENABLED_TOOLTIP = "Authenticated as: ";
+ private static String DISABLED_TOOLTIP = "Not Authenticated.\n" + "Double-Click to Log On.";
+
+ public SkynetAuthenticationContributionItem() {
+ super(ID, ENABLED_IMAGE, DISABLED_IMAGE, ENABLED_TOOLTIP, DISABLED_TOOLTIP, eventManager);
+ init();
+ }
+
+ private void init() {
+ setActionHandler(new Action() {
+
+ public void run() {
+ if (oseeAuthentication.isAuthenticated()) {
+ boolean result =
+ MessageDialog.openQuestion(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Log Off...",
+ "Are you sure you want to log off and exit OSEE?");
+ if (result) {
+ oseeAuthentication.logOff();
+ PlatformUI.getWorkbench().close();
+ }
+ } else {
+ if (oseeAuthentication.isLoginAllowed()) {
+ AuthenticationDialog.openDialog();
+ } else {
+ oseeAuthentication.authenticate("", "", "", false);
+ }
+ }
+ notifyListeners();
+ }
+ });
+
+ eventManager.register(AuthenticationEvent.class, this);
+ notifyListeners();
+ }
+
+ private void notifyListeners() {
+ eventManager.kick(new AuthenticationEvent(this));
+ }
+
+ public static void addTo(IStatusLineManager manager) {
+ for (IContributionItem item : manager.getItems())
+ if (item instanceof SkynetAuthenticationContributionItem) return;
+ manager.add(new SkynetAuthenticationContributionItem());
+ }
+
+ public void onEvent(Event event) {
+ if (event instanceof AuthenticationEvent) {
+
+ if (oseeAuthentication.isAuthenticated()) {
+ User skynetName = skynetAuthentication.getAuthenticatedUser();
+
+ this.setEnabledToolTip(String.format(ENABLED_TOOLTIP + "%s (%s)\nDouble-Click to Log Off.",
+ (skynetName != null ? skynetName.getName() : skynetName),
+ oseeAuthentication.getCredentials().getField(UserCredentialEnum.Id)));
+ }
+ updateStatus(oseeAuthentication.isAuthenticated());
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ @Override
+ public void dispose() {
+ eventManager.unRegister(AuthenticationEvent.class, this);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetConnectionContributionItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetConnectionContributionItem.java
new file mode 100644
index 00000000000..ecc5d437b17
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetConnectionContributionItem.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.plugin.core.config.data.DbDetailData;
+import org.eclipse.osee.framework.ui.plugin.event.ConnectionEvent;
+import org.eclipse.osee.framework.ui.plugin.event.CoreEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.util.OverlayImage;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class SkynetConnectionContributionItem extends SkynetContributionItem {
+ private static final DbDetailData dbData =
+ ConfigUtil.getConfigFactory().getOseeConfig().getDefaultClientData().getDatabaseDetails();
+ private static final String dbName = dbData.getFieldValue(DbDetailData.ConfigField.DatabaseName);
+ private static final String userName = dbData.getFieldValue(DbDetailData.ConfigField.UserName);
+ private static final String ID = "skynet.connection";
+ private static final SkynetGuiPlugin skynetGuiPlugin = SkynetGuiPlugin.getInstance();
+ private static final Image ENABLED = skynetGuiPlugin.getImage("repository.gif");
+ private static final Image DISABLED =
+ new OverlayImage(ENABLED, skynetGuiPlugin.getImageDescriptor("red_slash.gif")).createImage();
+ private static final String ENABLED_TOOLTIP = "Database is connected to " + dbName + " as " + userName + ".";
+ private static final String DISABLED_TOOLTIP = "Database is disconnected.";
+ private static final CoreEventManager eventManager = CoreEventManager.getInstance();
+
+ public SkynetConnectionContributionItem() {
+ super(ID, ENABLED, DISABLED, ENABLED_TOOLTIP, DISABLED_TOOLTIP, eventManager);
+ init();
+ }
+
+ private void init() {
+ updateStatus(ConnectionHandler.isOpen());
+ eventManager.register(ConnectionEvent.class, this);
+ }
+
+ public static void addTo(IStatusLineManager manager) {
+ for (IContributionItem item : manager.getItems())
+ if (item instanceof SkynetConnectionContributionItem) return;
+ manager.add(new SkynetConnectionContributionItem());
+ }
+
+ public static void addTo(ViewPart view, boolean update) {
+ addTo(view.getViewSite().getActionBars().getStatusLineManager());
+
+ if (update) view.getViewSite().getActionBars().updateActionBars();
+ }
+
+ public void onEvent(Event event) {
+ if (event instanceof ConnectionEvent) updateStatus(ConnectionHandler.isOpen());
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetContributionItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetContributionItem.java
new file mode 100644
index 00000000000..f4bfef1939c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetContributionItem.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.ui.plugin.event.EventManager;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchViewPage;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.texteditor.StatusLineContributionItem;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public abstract class SkynetContributionItem extends StatusLineContributionItem implements IEventReceiver {
+ private EventManager eventManager;
+ private Image enabled;
+ private Image disabled;
+ private String enabledToolTip;
+ private String disabledToolTip;
+
+ public SkynetContributionItem(String id, Image enabled, Image disabled, String enabledToolTip, String disabledToolTip, EventManager eventManager) {
+ this(id, enabled, disabled, enabledToolTip, disabledToolTip, eventManager, 4);
+ }
+
+ public SkynetContributionItem(String id, Image enabled, Image disabled, String enabledToolTip, String disabledToolTip, EventManager eventManager, int width) {
+ super(id, true, width);
+ this.enabled = enabled;
+ this.disabled = disabled;
+ this.enabledToolTip = enabledToolTip;
+ this.disabledToolTip = disabledToolTip;
+ this.eventManager = eventManager;
+
+ if (enabled == null || enabledToolTip == null || disabled == null || disabledToolTip == null) throw new IllegalStateException(
+ "Enabled and disabled images must be set.");
+
+ }
+
+ public void setDisabledToolTip(String disabledToolTip) {
+ this.disabledToolTip = disabledToolTip;
+ }
+
+ public void setEnabledToolTip(String enabledToolTip) {
+ this.enabledToolTip = enabledToolTip;
+ }
+
+ protected void updateStatus(boolean active) {
+ if (active) {
+ setImage(enabled);
+ setToolTipText(enabledToolTip);
+ } else {
+ setImage(disabled);
+ setToolTipText(disabledToolTip);
+ }
+ }
+
+ public static void addTo(IStatusLineManager manager) {
+ if (OseeProperties.getInstance().isAtsAdmin()) AdminContributionItem.addTo(manager);
+ SkynetServiceContributionItem.addTo(manager);
+ SkynetConnectionContributionItem.addTo(manager);
+ SkynetAuthenticationContributionItem.addTo(manager);
+ }
+
+ public static void addTo(AbstractArtifactSearchViewPage view, boolean update) {
+ addTo(view.getSite().getActionBars().getStatusLineManager());
+
+ if (update) view.getSite().getActionBars().updateActionBars();
+ }
+
+ public static void addTo(ViewPart view, boolean update) {
+ addTo(view.getViewSite().getActionBars().getStatusLineManager());
+
+ if (update) view.getViewSite().getActionBars().updateActionBars();
+ }
+
+ public static void addTo(MultiPageEditorPart editorPart, boolean update) {
+ addTo(editorPart.getEditorSite().getActionBars().getStatusLineManager());
+ if (update) editorPart.getEditorSite().getActionBars().updateActionBars();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ eventManager.unRegisterAll(this);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetDefaultBranchContributionItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetDefaultBranchContributionItem.java
new file mode 100644
index 00000000000..8cbe2abe1a9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetDefaultBranchContributionItem.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchLabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class SkynetDefaultBranchContributionItem extends SkynetContributionItem {
+ private static final String ID = "skynet.defaultBranch";
+ private static final SkynetGuiPlugin skynetGuiPlugin = SkynetGuiPlugin.getInstance();
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+ private static final Image ENABLED = skynetGuiPlugin.getImage("branch.gif");
+ private static final Image DISABLED = ENABLED;
+ private static final String ENABLED_TOOLTIP = "The default branch that Skynet is working from.";
+ private static final String DISABLED_TOOLTIP = ENABLED_TOOLTIP;
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+
+ public SkynetDefaultBranchContributionItem() {
+ super(ID, ENABLED, DISABLED, ENABLED_TOOLTIP, DISABLED_TOOLTIP, eventManager, 60);
+ init();
+ }
+
+ private void init() {
+ updateStatus(true);
+ updateInfo();
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+ }
+
+ private void updateInfo() {
+ setText(branchPersistenceManager.getDefaultBranch().getDisplayName());
+ setImage(BranchLabelProvider.getBranchImage(branchPersistenceManager.getDefaultBranch()));
+ }
+
+ public static void addTo(IStatusLineManager manager) {
+ manager.add(new SkynetDefaultBranchContributionItem());
+ }
+
+ public static void addTo(ViewPart view, boolean update) {
+ addTo(view.getViewSite().getActionBars().getStatusLineManager());
+
+ if (update) view.getViewSite().getActionBars().updateActionBars();
+ }
+
+ public void onEvent(Event event) {
+ if (event instanceof DefaultBranchChangedEvent) updateInfo();
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetGuiPlugin.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetGuiPlugin.java
new file mode 100644
index 00000000000..74fb16bee72
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetGuiPlugin.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.BroadcastEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.plugin.OseeFormActivator;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.access.OseeSecurityManager;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class SkynetGuiPlugin extends OseeFormActivator implements IEventReceiver {
+ private static SkynetGuiPlugin pluginInstance; // The shared instance.
+ public static final String PLUGIN_ID = "org.eclipse.osee.framework.ui.skynet";
+ public static final String CHANGE_REPORT_ATTRIBUTES_PREF =
+ "org.eclipse.osee.framework.ui.skynet.changeReportAttributes";
+ public static final String ARTIFACT_EXPLORER_ATTRIBUTES_PREF =
+ "org.eclipse.osee.framework.ui.skynet.artifactExplorerAttributes";
+ public static OseeSecurityManager securityManager;
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(SkynetGuiPlugin.class);
+
+ public SkynetGuiPlugin() {
+ super();
+ pluginInstance = this;
+ securityManager = OseeSecurityManager.getInstance();
+ SkynetEventManager.getInstance().register(BroadcastEvent.class, this);
+ }
+
+ /**
+ * Returns the shared instance.
+ */
+ public static SkynetGuiPlugin getInstance() {
+ return pluginInstance;
+ }
+
+ public static Logger getLogger() {
+ return logger;
+ }
+
+ public void onEvent(Event event) {
+ if (event instanceof BroadcastEvent) AWorkbench.popup("Broadcast Message", ((BroadcastEvent) event).getMessage());
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.plugin.core.util.plugin.OseePlugin#getPluginName()
+ */
+ @Override
+ protected String getPluginName() {
+ return PLUGIN_ID;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetHttpServerApplication.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetHttpServerApplication.java
new file mode 100644
index 00000000000..08f374a1508
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetHttpServerApplication.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.osee.framework.skynet.core.linking.HttpServer;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class SkynetHttpServerApplication implements IApplication {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
+ */
+ public Object start(IApplicationContext context) throws Exception {
+ HttpServer.remoteServerStartup();
+ while (true)
+ ;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.equinox.app.IApplication#stop()
+ */
+ public void stop() {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java
new file mode 100644
index 00000000000..e4d50a684f2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.SkynetServiceEvent;
+import org.eclipse.osee.framework.skynet.core.remoteEvent.RemoteEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.util.OverlayImage;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class SkynetServiceContributionItem extends SkynetContributionItem {
+
+ public static final String ID = "skynet.service";
+ private static final SkynetGuiPlugin skynetGuiPlugin = SkynetGuiPlugin.getInstance();
+ private static final RemoteEventManager remoteManager = RemoteEventManager.getInstance();
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final Image ENABLED =
+ new OverlayImage(skynetGuiPlugin.getImage("gear.gif"), skynetGuiPlugin.getImageDescriptor("laser_8_8.gif")).createImage();
+ private static final Image DISABLED =
+ new OverlayImage(ENABLED, skynetGuiPlugin.getImageDescriptor("red_slash.gif")).createImage();
+ private static final String ENABLED_TOOLTIP = "Remote event service is connected.";
+ private static final String DISABLED_TOOLTIP = "Remote event service is disconnected.";
+
+ public SkynetServiceContributionItem() {
+ super(ID, ENABLED, DISABLED, ENABLED_TOOLTIP, DISABLED_TOOLTIP, eventManager);
+ init();
+ }
+
+ public void onEvent(Event event) {
+ if (event instanceof SkynetServiceEvent) {
+ SkynetServiceEvent skynetServiceEvent = (SkynetServiceEvent) event;
+ updateStatus(skynetServiceEvent.isActive());
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ private void init() {
+ updateStatus(remoteManager.isConnected());
+ eventManager.register(SkynetServiceEvent.class, this);
+ }
+
+ public static void addTo(IStatusLineManager manager) {
+ for (IContributionItem item : manager.getItems())
+ if (item instanceof SkynetServiceContributionItem) return;
+ manager.add(new SkynetServiceContributionItem());
+ }
+
+ public static void addTo(ViewPart view, boolean update) {
+ addTo(view.getViewSite().getActionBars().getStatusLineManager());
+
+ if (update) view.getViewSite().getActionBars().updateActionBars();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/StringViewerSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/StringViewerSorter.java
new file mode 100644
index 00000000000..5671acc2ee7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/StringViewerSorter.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.text.Collator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class StringViewerSorter extends ViewerSorter {
+
+ /**
+ *
+ */
+ public StringViewerSorter() {
+ }
+
+ /**
+ * @param collator
+ */
+ public StringViewerSorter(Collator collator) {
+ super(collator);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare((String) e1, (String) e2);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TableViewerReport.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TableViewerReport.java
new file mode 100644
index 00000000000..4bd70dd7b28
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TableViewerReport.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultPage.Manipulations;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+public class TableViewerReport {
+
+ private final TableViewer tableViewer;
+ private final String title;
+
+ public TableViewerReport(String title, TableViewer tableViewer) {
+ this.title = title;
+ this.tableViewer = tableViewer;
+ }
+
+ public TableViewerReport(TableViewer tableViewer) {
+ this("Table View Report", tableViewer);
+ }
+
+ public void open() {
+ open(tableViewer.getTable().getItems());
+ }
+
+ public void open(TableItem items[]) {
+ String html = getHtml(items);
+ XResultData xResultData = new XResultData(SkynetGuiPlugin.getLogger());
+ xResultData.addRaw(html);
+ xResultData.report(title, Manipulations.RAW_HTML);
+ }
+
+ public String getHtml(TableItem items[]) {
+ String html = "<html><body>";
+ html += AHTML.beginMultiColumnTable(100, 1);
+ TableColumn cols[] = tableViewer.getTable().getColumns();
+ Integer width[] = new Integer[cols.length + 1];
+ String colNames[] = new String[cols.length + 1];
+ for (int x = 0; x < cols.length + 1; x++) {
+ if (x < cols.length) {
+ TableColumn col = cols[x];
+ width[x] = col.getWidth();
+ colNames[x] = col.getText();
+ } else {
+ width[x] = 20;
+ colNames[x] = "ID";
+ }
+ }
+ html += AHTML.addHeaderRowMultiColumnTable(colNames, width);
+ // Get column widths and column name and setup the columns
+ IBaseLabelProvider labelProvider = tableViewer.getLabelProvider();
+ ArrayList<String[]> list = new ArrayList<String[]>();
+ for (TableItem item : items) {
+ addRow(item, list, labelProvider, cols.length > 0 ? cols.length : 1, 1);
+ }
+ for (String[] strs : list) {
+ html += AHTML.addRowMultiColumnTable(strs);
+ }
+ html += AHTML.endMultiColumnTable();
+ html += "</body></html>";
+ return html;
+ }
+
+ public void addRow(TableItem item, ArrayList<String[]> list, IBaseLabelProvider labelProvider, int numCols, int level) {
+ String str[] = new String[numCols + 1];
+ for (int x = 0; x < numCols; x++) {
+ str[x] = "";
+ if (x == 0) {
+ for (int y = 0; y < level; y++)
+ str[x] += "&nbsp;&nbsp;&nbsp;&nbsp;";
+ }
+
+ if (labelProvider instanceof LabelProvider) {
+ str[x] += ((LabelProvider) labelProvider).getText(item.getData());
+ } else if (labelProvider instanceof ITableLabelProvider) {
+ str[x] += ((ITableLabelProvider) labelProvider).getColumnText(item.getData(), x);
+ }
+ // str[numCols] = GUID.toHumanId(((BaseModel)item.getData()).guid.get());
+ }
+ list.add(str);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TagArtifactsJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TagArtifactsJob.java
new file mode 100644
index 00000000000..78ae90b4069
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TagArtifactsJob.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.Collection;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.skynet.core.SkynetActivator;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.tagging.TagManager;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenuListener;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu.GlobalMenuItem;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TagArtifactsJob extends Job {
+
+ private static final TagManager tagManager = TagManager.getInstance();
+ private Collection<Artifact> artifacts;
+ private final GlobalMenu globalMenu;
+
+ public TagArtifactsJob(Collection<Artifact> artifacts, GlobalMenu globalMenu) {
+ super("Tag Artifacts");
+ this.artifacts = artifacts;
+ this.globalMenu = globalMenu;
+ }
+
+ public TagArtifactsJob(Collection<Artifact> artifacts) {
+ this(artifacts, null);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask("Tag Artifacts", artifacts.size());
+ if (globalMenu != null) {
+ try {
+ for (GlobalMenuListener listener : globalMenu.getGlobalMenuListeners()) {
+ Result result = listener.actioning(GlobalMenuItem.TagArtifacts, artifacts);
+ if (result.isFalse()) {
+ result.popup();
+ return new Status(Status.ERROR, SkynetActivator.PLUGIN_ID, Status.OK, result.getText(), null);
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ for (Artifact artifact : artifacts) {
+ monitor.subTask(artifact.getDescriptiveName());
+ try {
+ tagManager.autoTag(true, artifact);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ monitor.worked(1);
+
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return Status.CANCEL_STATUS;
+ }
+ }
+ if (globalMenu != null) {
+ try {
+ for (GlobalMenuListener listener : globalMenu.getGlobalMenuListeners()) {
+ listener.actioned(GlobalMenuItem.TagArtifacts, artifacts);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+
+ monitor.done();
+
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ToStringViewerSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ToStringViewerSorter.java
new file mode 100644
index 00000000000..eee05c72480
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ToStringViewerSorter.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.text.Collator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ToStringViewerSorter extends ViewerSorter {
+
+ /**
+ *
+ */
+ public ToStringViewerSorter() {
+ }
+
+ /**
+ * @param collator
+ */
+ public ToStringViewerSorter(Collator collator) {
+ super(collator);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(e1.toString(), e2.toString());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TreeViewerReport.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TreeViewerReport.java
new file mode 100644
index 00000000000..017d44b17ef
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/TreeViewerReport.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultPage.Manipulations;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+
+public class TreeViewerReport {
+
+ private final TreeViewer treeViewer;
+ private ArrayList<Integer> ignoreCols = new ArrayList<Integer>();
+ private final String title;
+
+ public TreeViewerReport(String title, TreeViewer treeViewer) {
+ this.title = title;
+ this.treeViewer = treeViewer;
+ }
+
+ public TreeViewerReport(TreeViewer treeViewer) {
+ this("Table View Report", treeViewer);
+ }
+
+ public void open() {
+ open(treeViewer.getTree().getItems());
+ }
+
+ public void setIgnoreColumns(ArrayList<Integer> ignoreCols) {
+ this.ignoreCols = ignoreCols;
+ }
+
+ public void open(TreeItem items[]) {
+ String html = getHtml(items);
+ XResultData xResultData = new XResultData(SkynetGuiPlugin.getLogger());
+ xResultData.addRaw(html);
+ xResultData.report(title, Manipulations.RAW_HTML);
+ }
+
+ public String getHtml(TreeItem items[]) {
+ String html = "<html><body>";
+ if (!title.equals("WebDialog")) {
+ html += AHTML.heading(3, title);
+ }
+ html += AHTML.beginMultiColumnTable(100, 1);
+ TreeColumn cols[] = treeViewer.getTree().getColumns();
+ Integer width[] = new Integer[cols.length - ignoreCols.size()];
+ String colNames[] = new String[cols.length - ignoreCols.size()];
+ int colNum = 0;
+ for (int x = 0; x < cols.length; x++) {
+ if (!ignoreCols.contains(x)) {
+ TreeColumn col = cols[x];
+ width[colNum] = col.getWidth();
+ colNames[colNum++] = col.getText();
+ }
+ }
+ html += AHTML.addHeaderRowMultiColumnTable(colNames, width);
+ // Get column widths and column name and setup the columns
+ ITableLabelProvider labelProv = (ITableLabelProvider) treeViewer.getLabelProvider();
+ ArrayList<String[]> list = new ArrayList<String[]>();
+ for (TreeItem item : items) {
+ addRow(item, list, labelProv, cols.length, 1);
+ }
+ for (String[] strs : list) {
+ html += AHTML.addRowMultiColumnTable(strs);
+ }
+ html += AHTML.endMultiColumnTable();
+ html += "</body></html>";
+ return html;
+ }
+
+ public void addRow(TreeItem item, ArrayList<String[]> list, ITableLabelProvider labelProv, int numCols, int level) {
+ String str[] = new String[numCols - ignoreCols.size()];
+ int colNum = 0;
+ for (int x = 0; x < numCols; x++) {
+ if (!ignoreCols.contains(x)) {
+ str[colNum] = "";
+ if (x == 0) {
+ for (int y = 0; y < level; y++)
+ str[colNum] += "&nbsp;&nbsp;&nbsp;&nbsp;";
+ }
+ str[colNum++] += labelProv.getColumnText(item.getData(), x);
+ }
+ }
+ list.add(str);
+ if (item.getExpanded()) {
+ for (TreeItem i : item.getItems()) {
+ addRow(i, list, labelProv, numCols, level + 1);
+ }
+ }
+
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XFormToolkit.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XFormToolkit.java
new file mode 100644
index 00000000000..b207edcfd44
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XFormToolkit.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.FormColors;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ImageHyperlink;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class XFormToolkit extends FormToolkit {
+
+ /**
+ * @param display
+ */
+ public XFormToolkit(Display display) {
+ super(display);
+ }
+
+ /**
+ * @param colors
+ */
+ public XFormToolkit(FormColors colors) {
+ super(colors);
+ }
+
+ public Combo createCombo(Composite parent, int style) {
+ Combo combo = new Combo(parent, style | SWT.FLAT);
+ adapt(combo, true, true);
+ return combo;
+ }
+
+ public Composite createClientContainer(Section section, int span) {
+ Composite container = createContainer(section, span);
+ section.setClient(container);
+ return container;
+ }
+
+ public Composite createContainer(Composite parent, int span) {
+ Composite container = createComposite(parent);
+ GridLayout layout = new GridLayout(span, false);
+ layout.marginWidth = layout.marginHeight = 2;
+ container.setLayout(layout);
+ paintBordersFor(container);
+ return container;
+ }
+
+ public void addHelpLinkToSection(Section section, final String helpPath) {
+ Control control = section.getTextClient();
+ Composite parent = null;
+ if (control == null) {
+ parent = section;
+ } else {
+ parent = (Composite) control; // assumes that if this link is being added with exising controls they are contained in a composite
+ }
+ ImageHyperlink helpLink = new ImageHyperlink(parent, SWT.NULL);
+ adapt(helpLink, true, true);
+ helpLink.setImage(SkynetGuiPlugin.getInstance().getImage("help.gif"));
+ helpLink.setBackground(section.getTitleBarGradientBackground());
+ helpLink.addHyperlinkListener(new HyperlinkAdapter() {
+ public void linkActivated(HyperlinkEvent e) {
+ PlatformUI.getWorkbench().getHelpSystem().displayHelpResource(helpPath);
+ }
+ });
+ if (control == null) {
+ section.setTextClient(helpLink);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XWidgetParser.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XWidgetParser.java
new file mode 100644
index 00000000000..db6d6c135fc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/XWidgetParser.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.parsers.ParserConfigurationException;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData.Align;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData.Fill;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class XWidgetParser {
+
+ public XWidgetParser() {
+ super();
+ }
+
+ public List<DynamicXWidgetLayoutData> extractWorkAttributes(DynamicXWidgetLayout dynamicXWidgetLayout, String xml) throws ParserConfigurationException, SAXException, IOException {
+ Document document = Jaxp.readXmlDocument(xml);
+ Element rootElement = document.getDocumentElement();
+
+ return extractlayoutDatas(dynamicXWidgetLayout, rootElement);
+ }
+
+ public List<DynamicXWidgetLayoutData> extractlayoutDatas(DynamicXWidgetLayout dynamicXWidgetLayout, Element xWidgets) throws ParserConfigurationException, SAXException, IOException {
+ NodeList widgets = xWidgets.getElementsByTagName(DynamicXWidgetLayout.XWIDGET);
+ List<DynamicXWidgetLayoutData> layoutDatas = new ArrayList<DynamicXWidgetLayoutData>(widgets.getLength());
+
+ for (int i = 0; i < widgets.getLength(); i++) {
+ layoutDatas.add(extractWorkAttribute(dynamicXWidgetLayout, (Element) widgets.item(i)));
+ }
+ return layoutDatas;
+ }
+
+ private DynamicXWidgetLayoutData extractWorkAttribute(DynamicXWidgetLayout dynamicXWidgetLayout, Element widget) {
+ DynamicXWidgetLayoutData dynamicXWidgetLayoutData = new DynamicXWidgetLayoutData(dynamicXWidgetLayout);
+
+ // Loop through attributes to ensure all are valid and processed
+ NamedNodeMap attributes = widget.getAttributes();
+ for (int x = 0; x < attributes.getLength(); x++) {
+ Node node = attributes.item(x);
+ String nodeName = node.getNodeName();
+ if (nodeName.equals("displayName")) {
+ dynamicXWidgetLayoutData.setName(node.getNodeValue());
+ if (dynamicXWidgetLayoutData.getLayoutName().equals("")) dynamicXWidgetLayoutData.setlayoutName(node.getNodeValue());
+ } else if (nodeName.equals("storageName")) {
+ dynamicXWidgetLayoutData.setlayoutName(node.getNodeValue());
+ if (dynamicXWidgetLayoutData.getName().equals("")) dynamicXWidgetLayoutData.setName(node.getNodeValue());
+ } else if (nodeName.equals("toolTip"))
+ dynamicXWidgetLayoutData.setToolTip(node.getNodeValue());
+ else if (nodeName.equals("helpContextId")) {
+ // Not used anymore
+ } else if (nodeName.equals("helpPluginId")) {
+ // Not used anymore
+ } else if (nodeName.equals("beginComposite"))
+ dynamicXWidgetLayoutData.setBeginComposite(Integer.parseInt(node.getNodeValue()));
+ else if (nodeName.equals("endComposite"))
+ dynamicXWidgetLayoutData.setEndComposite(Boolean.parseBoolean((node.getNodeValue())));
+ else if (nodeName.equals("horizontalLabel"))
+ dynamicXWidgetLayoutData.setHorizontalLabel(Boolean.parseBoolean((node.getNodeValue())));
+ else if (nodeName.equals("labelAfter"))
+ dynamicXWidgetLayoutData.setLabelAfter(Boolean.parseBoolean((node.getNodeValue())));
+ else if (nodeName.equals("required"))
+ dynamicXWidgetLayoutData.setRequired(Boolean.parseBoolean(node.getNodeValue()));
+ else if (nodeName.equals("xwidgetType"))
+ dynamicXWidgetLayoutData.setXWidgetName(node.getNodeValue());
+ else if (nodeName.equals("fill"))
+ dynamicXWidgetLayoutData.setFill(Fill.valueOf(node.getNodeValue()));
+ else if (nodeName.equals("height"))
+ dynamicXWidgetLayoutData.setHeight(Integer.parseInt(node.getNodeValue()));
+ else if (nodeName.equals("align"))
+ dynamicXWidgetLayoutData.setAlign(Align.valueOf(node.getNodeValue()));
+ else {
+ OSEELog.logException(SkynetGuiPlugin.class, new Exception(
+ "Unsupported XWidget attribute \"" + nodeName + "\""), false);
+ }
+ }
+
+ return dynamicXWidgetLayoutData;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/OseeSecurityManager.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/OseeSecurityManager.java
new file mode 100644
index 00000000000..56c386e1da6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/OseeSecurityManager.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.access;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.access.NoPoliciesException;
+import org.eclipse.osee.framework.skynet.core.access.PermissionList;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * Provides security for OSEE applications
+ *
+ * @author Jeff C. Phillips
+ */
+
+public class OseeSecurityManager extends SecurityManager {
+
+ private static OseeSecurityManager ref = null;
+
+ // private AccessControl accessControl = null;
+
+ OseeSecurityManager() {
+ // accessControl = new AccessControl();
+ }
+
+ public static synchronized OseeSecurityManager getInstance() {
+ if (ref == null) {
+ ref = new OseeSecurityManager();
+ }
+ return ref;
+ }
+
+ /**
+ * @param person
+ * @param policyIds
+ * @throws SecurityException if a person does not have permission for action
+ * @throws NoPoliciesException if a person does not have any policies
+ */
+ public void checkPermission(User person, ArrayList<Integer> policyIds) throws SecurityException, NoPoliciesException {
+ return;
+
+ // for (int policyId : policyIds)
+ // checkPermission(person, null, policyId);
+ }
+
+ public void checkPermission(MenuItem[] items, User person, ArrayList<Integer> policyIds) {
+ return;
+
+ // for (MenuItem item : items)
+ // for (int policyId : policyIds)
+ // checkPermission(item, person, policyId);
+ }
+
+ public void checkPermission(MenuItem item, User person, ArrayList<Integer> policyIds) {
+ return;
+
+ // for (int policyId : policyIds)
+ // checkPermission(item, person, policyId);
+ }
+
+ /**
+ * @param item
+ * @param person
+ * @param policyId
+ * @throws SecurityException
+ * @throws NoPoliciesException
+ */
+ public void checkPermission(MenuItem item, User person, int policyId) {
+ return;
+
+ // try {
+ // checkPermission(person, null, policyId);
+ // item.setEnabled(true);
+ // item.setImage(null);
+ // }
+ // catch (NoPoliciesException ex) {
+ // item.setEnabled(false);
+ // item.setImage(CorePlugin.getInstance().getImage("errorSm.gif"));
+ // }
+ // catch (SecurityException ex) {
+ // item.setEnabled(false);
+ // item.setImage(CorePlugin.getInstance().getImage("permission.bmp"));
+ // }
+ }
+
+ /**
+ * @param person
+ * @param permission
+ * @throws SecurityException if a person does not have permission for action
+ * @throws NoPoliciesException if a person does not have any policies
+ */
+ public void checkPermission(User person, PermissionList permission) throws SecurityException, NoPoliciesException {
+ return;
+
+ // checkPermission(person, permission, -1);
+ }
+
+ /**
+ * @param person person object containing policies
+ * @param permission permission to perform a specific action
+ * @throws SecurityException if a person does not have permission for action
+ * @throws NoPoliciesException if a person does not have any policies
+ */
+ public void checkPermission(User person, PermissionList permission, int policyId) throws SecurityException, NoPoliciesException {
+ return;
+
+ // if (ConfigUtil.getConfigFactory().getOseeConfig().isBypassSecurity() || true)
+ // return;
+ //
+ // if (person == null)
+ // return;
+ //
+ // if (!person.getPolicies().isEmpty()) {
+ //
+ // if (policyId < 0 && permission != null)
+ // accessControl.checkPermission(person, permission);
+ // else
+ // accessControl.checkPermission(person, policyId);
+ // }
+ // else
+ // throw new NoPoliciesException(person.getName());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyDialog.java
new file mode 100644
index 00000000000..44e6b0d2631
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyDialog.java
@@ -0,0 +1,217 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.access;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlData;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactTypeSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.Operator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+
+/**
+ * GUI that is used to maintain an <Code>Artifact</Code> access contol list.
+ *
+ * @author Jeff C. Phillips
+ */
+public class PolicyDialog extends Dialog {
+
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(PolicyDialog.class);
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final SkynetAuthentication skynetAuthentication = SkynetAuthentication.getInstance();
+ private PolicyTableViewer tableViewer;
+ private Button radEnabled;
+ private Button radDisabled;
+ private Button btnAdd;
+ private Button chkChildrenPermission;
+ private Combo cmbUsers;
+ private Combo cmbPermissionLevel;
+ private Object object;
+
+ public PolicyDialog(Shell parentShell, Object object) {
+ super(parentShell);
+
+ this.object = object;
+ setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | getDefaultOrientation() | SWT.RESIZE);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ getShell().setText("Access Control List: " + getHeadertName(object));
+ Composite mainComposite = new Composite(parent, SWT.NONE);
+ mainComposite.setFont(parent.getFont());
+ mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ mainComposite.setLayout(new GridLayout(1, false));
+
+ addDialogContols(mainComposite);
+ setInputs();
+ addListeners();
+ checkEnabled();
+
+ return mainComposite;
+ }
+
+ private void setInputs() {
+ cmbUsers.setText("-Select Person-");
+ cmbPermissionLevel.setText("-Select Permission-");
+ ArrayList<Artifact> subjectList = new ArrayList<Artifact>();
+ subjectList.addAll(skynetAuthentication.getUsers());
+ try {
+ subjectList.addAll(artifactManager.getArtifacts(new ArtifactTypeSearch("User Group", Operator.EQUAL),
+ branchManager.getCommonBranch()));
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+
+ Artifact[] subjectsArray = (Artifact[]) subjectList.toArray(Artifact.EMPTY_ARRAY);
+ Arrays.sort(subjectsArray, new Comparator<Artifact>() {
+
+ public int compare(Artifact o1, Artifact o2) {
+ return o1.getDescriptiveName().compareToIgnoreCase(o2.getDescriptiveName());
+ }
+ });
+
+ for (Artifact subject : subjectsArray) {
+ String name = subject.getDescriptiveName();
+ cmbUsers.add(name);
+ cmbUsers.setData(name, subject);
+ }
+
+ PermissionEnum[] permissions = PermissionEnum.values();
+ Arrays.sort(permissions, new Comparator<PermissionEnum>() {
+
+ public int compare(PermissionEnum o1, PermissionEnum o2) {
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ });
+
+ for (PermissionEnum permission : permissions) {
+ if (!permission.equals(PermissionEnum.LOCK)) {
+ cmbPermissionLevel.add(permission.getName());
+ cmbPermissionLevel.setData(permission.getName(), permission);
+ }
+ }
+ }
+
+ private void addListeners() {
+ radDisabled.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ checkEnabled();
+ }
+ });
+
+ radEnabled.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ checkEnabled();
+ }
+ });
+
+ btnAdd.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Artifact subject = (Artifact) cmbUsers.getData(cmbUsers.getText());
+ PermissionEnum permission = (PermissionEnum) cmbPermissionLevel.getData(cmbPermissionLevel.getText());
+
+ if (subject != null && permission != null) {
+ tableViewer.addItem(subject, object, permission);
+ }
+ }
+ });
+ }
+
+ private void addDialogContols(Composite mainComposite) {
+ radDisabled = new Button(mainComposite, SWT.RADIO);
+ radDisabled.setText("Disabled");
+ radDisabled.setEnabled(false);
+
+ radEnabled = new Button(mainComposite, SWT.RADIO);
+ radEnabled.setText("Enabled");
+
+ Group group = new Group(mainComposite, SWT.NULL);
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ group.setLayout(new GridLayout(1, false));
+
+ Table table = new Table(group, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE | SWT.FULL_SELECTION);
+ tableViewer = new PolicyTableViewer(table, object);
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = 100;
+ gridData.widthHint = 500;
+ table.setLayoutData(gridData);
+
+ Composite composite = new Composite(group, SWT.NONE);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ composite.setLayout(new GridLayout(3, false));
+
+ cmbUsers = new Combo(composite, SWT.NONE);
+ cmbPermissionLevel = new Combo(composite, SWT.NONE);
+ btnAdd = new Button(composite, SWT.PUSH);
+ btnAdd.setText("Add");
+
+ chkChildrenPermission = new Button(mainComposite, SWT.CHECK);
+ chkChildrenPermission.setText("Set permission for artifact's default hierarchy descendents.");
+ }
+
+ private void checkEnabled() {
+ // get information from db
+ radEnabled.setSelection(true);
+
+ boolean enable = radEnabled.getSelection();
+ boolean isArtifact = object instanceof Artifact;
+
+ cmbUsers.setEnabled(enable);
+ cmbPermissionLevel.setEnabled(enable);
+ btnAdd.setEnabled(enable);
+ tableViewer.getTable().setEnabled(enable);
+
+ chkChildrenPermission.setEnabled(isArtifact);
+ }
+
+ @Override
+ protected void okPressed() {
+ for (AccessControlData data : tableViewer.getAccessControlList().values()) {
+ if (data.isDirty()) data.persist(chkChildrenPermission.getSelection());
+ }
+ super.okPressed();
+ }
+
+ private String getHeadertName(Object object) {
+ String name = "";
+ if (object instanceof Artifact) {
+ name = ((Artifact) object).getDescriptiveName();
+ } else if (object instanceof Branch) {
+ name = ((Branch) object).getBranchName();
+ }
+ return name;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyLabelProvider.java
new file mode 100644
index 00000000000..28bb8e0ef5f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyLabelProvider.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.access;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlData;
+import org.eclipse.osee.framework.ui.plugin.OseePluginUiActivator;
+import org.eclipse.swt.graphics.Image;
+
+public class PolicyLabelProvider implements ITableLabelProvider {
+
+ public PolicyLabelProvider() {
+ super();
+ };
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ String result = "";
+
+ if (element instanceof AccessControlData) {
+ AccessControlData data = (AccessControlData) element;
+
+ switch (columnIndex) {
+ case PolicyTableViewer.DELETE_NUM:
+ // This only has an image
+ break;
+ case PolicyTableViewer.PERSON_NUM:
+ result = data.getSubject().getDescriptiveName();
+ break;
+ case PolicyTableViewer.ARTIFACT_POLICY_LEVEL_NUM:
+ result = String.valueOf(data.getPermission().getName());
+ break;
+ default:
+ break;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ Image result = null;
+
+ switch (columnIndex) {
+ case PolicyTableViewer.DELETE_NUM:
+ result = OseePluginUiActivator.getInstance().getImage("remove.gif");
+ }
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableCellModifier.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableCellModifier.java
new file mode 100644
index 00000000000..4730a8025ae
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableCellModifier.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.access;
+
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlData;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class PolicyTableCellModifier implements ICellModifier {
+
+ private PolicyTableViewer policyTableViewer;
+
+ public PolicyTableCellModifier(PolicyTableViewer policyTableViewer) {
+ super();
+ this.policyTableViewer = policyTableViewer;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
+ */
+ public boolean canModify(Object element, String property) {
+ // Find the index of the column
+ int columnIndex = policyTableViewer.getColumnNames().indexOf(property);
+
+ switch (columnIndex) {
+ case PolicyTableViewer.DELETE_NUM:
+ return true;
+ }
+ return true;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
+ */
+ public Object getValue(Object element, String property) {
+ // Find the index of the column
+ int columnIndex = policyTableViewer.getColumnNames().indexOf(property);
+
+ switch (columnIndex) {
+ case PolicyTableViewer.DELETE_NUM:
+ return new Boolean(false);
+ case PolicyTableViewer.ARTIFACT_POLICY_LEVEL_NUM:
+ return ((AccessControlData) element).getPermission().ordinal();
+ }
+ return "";
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
+ */
+ public void modify(Object element, String property, Object value) {
+
+ // Find the index of the column
+ int columnIndex = policyTableViewer.getColumnNames().indexOf(property);
+
+ TableItem item = (TableItem) element;
+ AccessControlData data = (AccessControlData) item.getData();
+
+ switch (columnIndex) {
+ case PolicyTableViewer.DELETE_NUM:
+ policyTableViewer.removeData(data);
+ break;
+ case PolicyTableViewer.ARTIFACT_POLICY_LEVEL_NUM:
+ int index = (Integer) value;
+
+ if (index != -1) policyTableViewer.modifyPermissionLevel(data, PermissionEnum.values()[index]);
+ break;
+
+ default:
+ }
+ policyTableViewer.refresh();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableViewer.java
new file mode 100644
index 00000000000..d7a6e027e95
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/PolicyTableViewer.java
@@ -0,0 +1,213 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.access;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlData;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.AccessObject;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+/**
+ * Displays an <Code>Artifact</Code> access contol list, used by the <Code>PolicyDialog</Code>.
+ *
+ * @author Jeff C. Phillips
+ */
+public class PolicyTableViewer {
+
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private Table table;
+ private TableViewer tableViewer;
+ private Map<String, AccessControlData> accessControlList;
+ private Object object;
+
+ public static final int DELETE_NUM = 0;
+ public static final int PERSON_NUM = 1;
+ public static final int ARTIFACT_POLICY_LEVEL_NUM = 2;
+ public static final int BRANCH_POLICY_LEVEL_NUM = 3;
+ public static final int ARTIFACT_TYPE_POLICY_LEVEL_NUM = 4;
+ public static final int TOTAL_POLICY_LEVEL_NUM = 5;
+
+ private final static int[] columnWidths = new int[] {75, 300, 100, 100, 100, 100};
+ private static final String[] columnNames =
+ new String[] {"Remove", "Person", "Branch Permission", "Artifact Type Permission", "Artifact Permission",
+ "Total Permission"};
+
+ /**
+ * @param table -
+ */
+ public PolicyTableViewer(Table table, Object object) {
+ this.table = table;
+ this.createControl();
+ this.accessControlList = new HashMap<String, AccessControlData>();
+ this.object = object;
+
+ tableViewer.setContentProvider(new PolicyContentProvider());
+ tableViewer.setLabelProvider(new PolicyLabelProvider());
+ tableViewer.setInput(accessControlList.values());
+ }
+
+ public void addItem(Artifact subject, Object object, PermissionEnum permission) {
+ AccessObject accessObject = accessManager.getAccessObject(object);
+ AccessControlData data = new AccessControlData(subject, accessObject, permission, true);
+ accessControlList.put(data.getSubject().getGuid(), data);
+ tableViewer.refresh();
+ }
+
+ private void createControl() {
+ createColumns();
+ createTableViewer();
+ }
+
+ /**
+ * Create the TableViewer
+ */
+ private void createTableViewer() {
+
+ tableViewer = new TableViewer(table);
+ tableViewer.setUseHashlookup(true);
+ tableViewer.setColumnProperties(columnNames);
+
+ CellEditor[] validEditors = new CellEditor[columnNames.length];
+ validEditors[DELETE_NUM] = new CheckboxCellEditor(table, SWT.NONE);
+ validEditors[ARTIFACT_POLICY_LEVEL_NUM] =
+ new ComboBoxCellEditor(table, PermissionEnum.getPermissionNames(), SWT.READ_ONLY);
+
+ // Assign the cell editors to the viewer
+ tableViewer.setCellEditors(validEditors);
+ // Assign the cell modifier to the viewer
+ tableViewer.setCellModifier(new PolicyTableCellModifier(this));
+ }
+
+ /**
+ * Create the Columns
+ */
+ private void createColumns() {
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ TableColumn column = new TableColumn(table, SWT.LEFT, DELETE_NUM);
+ column.setText(columnNames[DELETE_NUM]);
+ column.setWidth(columnWidths[DELETE_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, PERSON_NUM);
+ column.setText(columnNames[PERSON_NUM]);
+ column.setWidth(columnWidths[PERSON_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, ARTIFACT_POLICY_LEVEL_NUM);
+ column.setText(columnNames[ARTIFACT_POLICY_LEVEL_NUM]);
+ column.setWidth(columnWidths[ARTIFACT_POLICY_LEVEL_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, BRANCH_POLICY_LEVEL_NUM);
+ column.setText(columnNames[BRANCH_POLICY_LEVEL_NUM]);
+ column.setWidth(columnWidths[BRANCH_POLICY_LEVEL_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, ARTIFACT_TYPE_POLICY_LEVEL_NUM);
+ column.setText(columnNames[ARTIFACT_TYPE_POLICY_LEVEL_NUM]);
+ column.setWidth(columnWidths[ARTIFACT_TYPE_POLICY_LEVEL_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, TOTAL_POLICY_LEVEL_NUM);
+ column.setText(columnNames[TOTAL_POLICY_LEVEL_NUM]);
+ column.setWidth(columnWidths[TOTAL_POLICY_LEVEL_NUM]);
+ }
+
+ public List<String> getColumnNames() {
+ return Arrays.asList(columnNames);
+ }
+
+ public Map<String, AccessControlData> getAccessControlList() {
+ return this.accessControlList;
+ }
+
+ public void refresh() {
+ tableViewer.refresh();
+ }
+
+ /**
+ * @return Returns the table.
+ */
+ public Table getTable() {
+ return table;
+ }
+
+ public void removeData(AccessControlData data) {
+ accessManager.removeAccessControlData(data);
+ accessControlList.remove(data.getSubject().getGuid());
+ }
+
+ public void modifyPermissionLevel(AccessControlData data, PermissionEnum permission) {
+ data.setPermission(permission);
+ }
+
+ public int getCount() {
+ return accessControlList.size();
+ }
+ /**
+ * InnerClass that acts as a proxy for the FilterModelList providing content for the Table. It implements the
+ * IFilterListViewer interface since it must register changeListeners with the FilterModelList
+ */
+ class PolicyContentProvider implements IStructuredContentProvider {
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ }
+
+ public void dispose() {
+ }
+
+ public Object[] getElements(Object object) {
+ populateSubjectsFromDb();
+ Object[] accessControlListArray = accessControlList.values().toArray();
+ Arrays.sort(accessControlListArray);
+ return accessControlListArray;
+ }
+
+ private void populateSubjectsFromDb() {
+ Collection<AccessControlData> datas = accessManager.getAccessControlList(object);
+
+ for (AccessControlData data : datas) {
+ if (!accessControlList.containsKey(data.getSubject().getGuid()) && data.getPermission() != PermissionEnum.LOCK) accessControlList.put(
+ data.getSubject().getGuid(), data);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IFilterListViewer#addFilter(FilterModel)
+ */
+ public void addFilter(AccessControlData data) {
+ tableViewer.add(data);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IFilterListViewer#removeFilter(FilterModel)
+ */
+ public void removeFilter(AccessControlData data) {
+ tableViewer.remove(data);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/ArtifactPromptChange.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/ArtifactPromptChange.java
new file mode 100644
index 00000000000..0fbab2c5a61
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/ArtifactPromptChange.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.artifact;
+
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.BooleanAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DateAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.skynet.core.attribute.EnumeratedAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.FloatingPointAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.IntegerAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.StringAttribute;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.EnumSelectionDialog.Selection;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.DateSelectionDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactPromptChange {
+
+ private final static String VALID_FLOAT_REG_EX = "^[0-9\\.]+$";
+ private final static String VALID_INTEGER_REG_EX = "^[0-9]+$";
+ private final static String VALID_PERCENT_REG_EX =
+ "^(0*100{1,1}\\.?((?<=\\.)0*)?%?$)|(^0*\\d{0,2}\\.?((?<=\\.)\\d*)?%?)$";
+
+ public static boolean promptChangeAttribute(String attributeName, String displayName, final Collection<? extends Artifact> artifacts, boolean persist) throws SQLException {
+ try {
+ DynamicAttributeManager dam = artifacts.iterator().next().getAttributeManager(attributeName);
+ if (dam.getDescriptor().getBaseAttributeClass().equals(DateAttribute.class)) {
+ return ArtifactPromptChange.promptChangeDate(attributeName, displayName, artifacts, persist);
+ } else if (dam.getDescriptor().getBaseAttributeClass().equals(FloatingPointAttribute.class)) {
+ return ArtifactPromptChange.promptChangeFloatAttribute(attributeName, displayName, artifacts, persist);
+ } else if (dam.getDescriptor().getBaseAttributeClass().equals(IntegerAttribute.class)) {
+ return ArtifactPromptChange.promptChangeIntegerAttribute(attributeName, displayName, artifacts, persist);
+ } else if (dam.getDescriptor().getBaseAttributeClass().equals(BooleanAttribute.class)) {
+ return ArtifactPromptChange.promptChangeBoolean(attributeName, displayName, artifacts, null, persist);
+ } else if (dam.getDescriptor().getBaseAttributeClass().equals(EnumeratedAttribute.class)) {
+ return ArtifactPromptChange.promptChangeEnumeratedAttribute(attributeName, displayName, artifacts, persist);
+ } else if (dam.getDescriptor().getBaseAttributeClass().equals(StringAttribute.class)) {
+ return ArtifactPromptChange.promptChangeStringAttribute(attributeName, displayName, artifacts, persist);
+ } else
+ AWorkbench.popup("ERROR", "Unhandled attribute type. Can't edit through this view");
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return false;
+ }
+
+ public static boolean promptChangeIntegerAttribute(String attributeName, String displayName, final Collection<? extends Artifact> artifacts, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, VALID_INTEGER_REG_EX, artifacts, persist);
+ }
+
+ public static boolean promptChangeIntegerAttribute(String attributeName, String displayName, final Artifact artifact, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, VALID_INTEGER_REG_EX,
+ Arrays.asList(new Artifact[] {artifact}), persist);
+ }
+
+ public static boolean promptChangePercentAttribute(String attributeName, String displayName, final Artifact artifact, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, VALID_PERCENT_REG_EX,
+ Arrays.asList(new Artifact[] {artifact}), persist);
+ }
+
+ public static boolean promptChangePercentAttribute(String attributeName, String displayName, final Collection<? extends Artifact> artifacts, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, VALID_PERCENT_REG_EX, artifacts, persist);
+ }
+
+ public static boolean promptChangeFloatAttribute(String attributeName, String displayName, final Artifact artifact, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, VALID_FLOAT_REG_EX,
+ Arrays.asList(new Artifact[] {artifact}), persist);
+ }
+
+ public static boolean promptChangeFloatAttribute(String attributeName, String displayName, final Collection<? extends Artifact> smas, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, VALID_FLOAT_REG_EX, smas, persist);
+ }
+
+ public static boolean promptChangeStringAttribute(String attributeName, String displayName, final Artifact artifact, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, null, Arrays.asList(new Artifact[] {artifact}),
+ persist);
+ }
+
+ public static boolean promptChangeStringAttribute(String attributeName, String displayName, final Collection<? extends Artifact> smas, boolean persist) throws SQLException {
+ return promptChangeStringAttribute(attributeName, displayName, null, smas, persist);
+ }
+
+ public static boolean promptChangeDate(String attributeName, String displayName, Artifact artifact, boolean persist) throws SQLException {
+ return promptChangeDate(attributeName, displayName, Arrays.asList(new Artifact[] {artifact}), persist);
+ }
+
+ public static boolean promptChangeDate(String attributeName, String displayName, final Collection<? extends Artifact> artifacts, boolean persist) throws SQLException {
+ // prompt that current release is (get from attribute); want to
+ // change
+ DateSelectionDialog diag =
+ new DateSelectionDialog("Select " + displayName, "Select " + displayName,
+ artifacts.size() == 1 ? artifacts.iterator().next().getSoleDateAttributeValue(attributeName) : null);
+ if (diag.open() == 0) {
+ for (Artifact artifact : artifacts) {
+ if (diag.isNoneSelected())
+ artifact.clearSoleAttributeValue(attributeName);
+ else
+ artifact.setSoleAttributeValue(attributeName, diag.getSelectedDate().getTime() + "");
+ if (persist) artifact.persist();
+ }
+ }
+ return true;
+ }
+
+ public static boolean promptChangeEnumeratedAttribute(String attributeName, String displayName, Artifact artifact, boolean persist) throws SQLException {
+ return promptChangeEnumeratedAttribute(attributeName, displayName, Arrays.asList(new Artifact[] {artifact}),
+ persist);
+ }
+
+ public static boolean promptChangeEnumeratedAttribute(String attributeName, String displayName, final Collection<? extends Artifact> artifacts, boolean persist) throws SQLException {
+ String type = artifacts.iterator().next().getArtifactTypeName();
+ for (Artifact art : artifacts) {
+ if (!type.equals(art.getArtifactTypeName())) {
+ AWorkbench.popup("ERROR", "Artifact types must all match to change enumerated type.");
+ return false;
+ }
+ }
+ EnumSelectionDialog diag = new EnumSelectionDialog(attributeName, artifacts);
+ if (diag.open() == 0) {
+ Set<String> selected = new HashSet<String>();
+ for (Object obj : diag.getResult())
+ selected.add((String) obj);
+ for (Artifact artifact : artifacts) {
+ Set<String> current = artifact.getAttributesToStringCollection(attributeName);
+ if (diag.getSelected() == Selection.AddSelection) {
+ current.addAll(selected);
+ artifact.setDamAttributes(attributeName, current);
+ } else if (diag.getSelected() == Selection.DeleteSelected) {
+ current.removeAll(selected);
+ artifact.setDamAttributes(attributeName, current);
+ } else if (diag.getSelected() == Selection.ReplaceAll) {
+ artifact.setDamAttributes(attributeName, selected);
+ } else {
+ AWorkbench.popup("ERROR", "Unhandled selection type => " + diag.getSelected().name());
+ return false;
+ }
+ if (persist) artifact.persist();
+ }
+ }
+ return true;
+ }
+
+ public static boolean promptChangeStringAttribute(String attributeName, String displayName, String validationRegEx, final Collection<? extends Artifact> smas, boolean persist) throws SQLException {
+ EntryDialog ed =
+ new EntryDialog(Display.getCurrent().getActiveShell(), "Enter " + displayName, null,
+ "Enter " + displayName, MessageDialog.QUESTION, new String[] {"OK", "Clear", "Cancel"}, 0);
+ if (smas.size() == 1) ed.setEntry(smas.iterator().next().getSoleAttributeValue(attributeName));
+ if (validationRegEx != null) ed.setValidationRegularExpression(validationRegEx);
+ int result = ed.open();
+ if (result == 0 || result == 1) {
+ for (Artifact sma : smas) {
+ if (result == 0)
+ sma.setSoleAttributeValue(attributeName, ed.getEntry());
+ else
+ sma.setSoleAttributeValue(attributeName, "");
+ if (persist) sma.persist();
+ }
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean promptChangeBoolean(String attributeName, String displayName, final Artifact artifact, String toggleMessage, boolean persist) throws SQLException {
+ return promptChangeBoolean(attributeName, displayName, Arrays.asList(new Artifact[] {artifact}), toggleMessage,
+ persist);
+ }
+
+ public static boolean promptChangeBoolean(String attributeName, String displayName, final Collection<? extends Artifact> smas, String toggleMessage, boolean persist) throws SQLException {
+ boolean set = false;
+ if (smas.size() == 1) set = smas.iterator().next().getSoleBooleanAttributeValue(attributeName);
+ MessageDialogWithToggle md =
+ new MessageDialogWithToggle(Display.getCurrent().getActiveShell(), displayName, null, displayName,
+ MessageDialog.QUESTION, new String[] {"Ok", "Cancel"}, MessageDialog.OK,
+ toggleMessage != null ? toggleMessage : displayName, set);
+
+ int result = md.open();
+ if (result == 256) {
+ for (Artifact sma : smas) {
+ sma.setSoleBooleanAttributeValue(attributeName, md.getToggleState());
+ if (persist) sma.persist();
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSelectionDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSelectionDialog.java
new file mode 100644
index 00000000000..517cf408c3d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSelectionDialog.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.StringViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.util.StringLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.widgets.XRadioButton;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EnumSelectionDialog extends CheckedTreeSelectionDialog {
+
+ private XRadioButton addSelectedRadioButton =
+ new XRadioButton("Add selected item(s) to existing if not already chosen.");
+ private XRadioButton replaceAllRadioButton = new XRadioButton("Replace all existing with selected item(s)");
+ private XRadioButton deleteSelectedRadioButton = new XRadioButton("Remove selected item(s) if already chosen.");
+ public static enum Selection {
+ AddSelection, ReplaceAll, DeleteSelected
+ };
+ private Selection selected = Selection.AddSelection;
+
+ /**
+ * @param parent
+ * @param artifacts
+ */
+ public EnumSelectionDialog(String attributeName, Collection<? extends Artifact> artifacts) {
+ super(Display.getCurrent().getActiveShell(), new StringLabelProvider(), new ArrayTreeContentProvider());
+ setTitle("Select Options");
+ setMessage("Select option(s) to add, delete or replace.");
+ Set<String> options;
+ try {
+ options =
+ ConfigurationPersistenceManager.getInstance().getValidEnumerationAttributeValues(attributeName,
+ artifacts.iterator().next().getBranch());
+ } catch (Exception ex) {
+ options = new HashSet<String>();
+ options.add(ex.getLocalizedMessage());
+ }
+ setInput(options);
+ setComparator(new StringViewerSorter());
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+
+ Composite comp = new Composite(container, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+
+ addSelectedRadioButton.createWidgets(comp, 2);
+ addSelectedRadioButton.setSelected(true);
+ addSelectedRadioButton.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ if (addSelectedRadioButton.isSelected()) selected = Selection.AddSelection;
+ }
+ });
+
+ replaceAllRadioButton.createWidgets(comp, 2);
+ replaceAllRadioButton.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ if (replaceAllRadioButton.isSelected()) selected = Selection.ReplaceAll;
+ }
+ });
+
+ deleteSelectedRadioButton.createWidgets(comp, 2);
+ deleteSelectedRadioButton.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ if (deleteSelectedRadioButton.isSelected()) selected = Selection.DeleteSelected;
+ }
+ });
+ return c;
+ }
+
+ public Selection getSelected() {
+ return selected;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/OpenArtifactAction.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/OpenArtifactAction.java
new file mode 100644
index 00000000000..a67d5475507
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/OpenArtifactAction.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceFileArtifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceURL;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkspace;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class OpenArtifactAction implements IObjectActionDelegate {
+ private IWorkbenchPart targetPart;
+ private Shell shell;
+
+ public OpenArtifactAction() {
+ super();
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ this.targetPart = targetPart;
+ shell = targetPart.getSite().getShell();
+ }
+
+ public void run(IAction action) {
+ Object object = (Object) AWorkspace.getSelection(targetPart).getFirstElement();
+ Artifact artifact = null;
+ IFile iFile = null;
+
+ if (object instanceof IFile) {
+ iFile = (IFile) object;
+ artifact = WorkspaceFileArtifact.getArtifactFromWorkspaceFile(WorkspaceURL.getURL(iFile), shell);
+
+ if (artifact != null) {
+ ArtifactEditor.editArtifact(artifact);
+ }
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/RelationGroupDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/RelationGroupDialog.java
new file mode 100644
index 00000000000..8add343c221
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/RelationGroupDialog.java
@@ -0,0 +1,280 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact;
+
+import java.sql.SQLException;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+
+public class RelationGroupDialog extends MessageDialog {
+
+ public final static int NONE = 0;
+ public final static int ERROR = 1;
+ public final static int INFORMATION = 2;
+ public final static int QUESTION = 3;
+ public final static int WARNING = 4;
+ private String title;
+ private Image titleImage;
+ private Image image = null;
+ private Label errorLabel;
+ private Composite composite;
+ private IRelationLinkDescriptor descriptor;
+ private Artifact artifact;
+ private String sideName;
+
+ String validationRegularExpression = null;
+ String validationErrorString = "";
+
+ /**
+ * The custom dialog area.
+ */
+ private Control customArea;
+
+ /**
+ * Create a message dialog. Note that the dialog will have no visual representation (no widgets) until it is told to
+ * open.
+ * <p>
+ * The labels of the buttons to appear in the button bar are supplied in this constructor as an array. The
+ * <code>open</code> method will return the index of the label in this array corresponding to the button that was
+ * pressed to close the dialog. If the dialog was dismissed without pressing a button (ESC, etc.) then -1 is
+ * returned. Note that the <code>open</code> method blocks.
+ * </p>
+ *
+ * @param parentShell the parent shell
+ * @param dialogTitle the dialog title, or <code>null</code> if none
+ * @param dialogTitleImage the dialog title image, or <code>null</code> if none
+ * @param dialogMessage the dialog message
+ * @param descriptor -
+ * @param artifact -
+ */
+ public RelationGroupDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, IRelationLinkDescriptor descriptor, Artifact artifact) {
+ super(parentShell, dialogMessage, dialogTitleImage, dialogMessage, MessageDialog.INFORMATION, new String[] {"OK",
+ "Cancel"}, 0);
+ this.title = dialogTitle;
+ this.titleImage = dialogTitleImage;
+ this.message = dialogMessage;
+ this.descriptor = descriptor;
+ this.artifact = artifact;
+ }
+
+ /**
+ * Calling will enable dialog to loose focus
+ */
+ public void setModeless() {
+ setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS);
+ setBlockOnOpen(false);
+ }
+
+ /**
+ * override this method to make own checks on entry this will be called with every keystroke
+ *
+ * @return true if entry is valid
+ */
+ public boolean isEntryValid() {
+ if (validationRegularExpression == null) {
+ return true;
+ }
+ return true;
+ }
+
+ public void setValidationRegularExpression(String regExp) {
+ validationRegularExpression = regExp;
+ }
+
+ public void setValidationErrorString(String errorText) {
+ validationErrorString = errorText;
+ }
+
+ /*
+ * (non-Javadoc) Method declared on Dialog.
+ */
+ protected void buttonPressed(int buttonId) {
+ if (buttonId == 0) okPressed();
+ setReturnCode(buttonId);
+ close();
+ }
+
+ /*
+ * (non-Javadoc) Method declared in Window.
+ */
+ protected void configureShell(Shell shell) {
+ super.configureShell(shell);
+ if (title != null) shell.setText(title);
+ if (titleImage != null) shell.setImage(titleImage);
+ }
+
+ /**
+ * Creates and returns the contents of an area of the dialog which appears below the message and above the button
+ * bar.
+ * <p>
+ * The default implementation of this framework method returns <code>null</code>. Subclasses may override.
+ * </p>
+ *
+ * @param parent parent composite to contain the custom area
+ * @return Control custom area control, or <code>null</code>
+ */
+ protected Control createCustomArea(Composite parent) {
+ return null;
+ }
+
+ /**
+ * This implementation of the <code>Dialog</code> framework method creates and lays out a composite and calls
+ * <code>createMessageArea</code> and <code>createCustomArea</code> to populate it. Subclasses should override
+ * <code>createCustomArea</code> to add contents below the message.
+ */
+ protected Control createDialogArea(Composite parent) {
+
+ // create message area
+ createMessageArea(parent);
+
+ // create the top level composite for the dialog area
+ composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ composite.setLayout(layout);
+
+ // Create error label
+ errorLabel = new Label(composite, SWT.NONE);
+ errorLabel.setSize(errorLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ errorLabel.setText("");
+
+ Button radioButtonA = new Button(composite, SWT.RADIO);
+ radioButtonA.setText(descriptor.getSideAName());
+ radioButtonA.setData(descriptor.getSideAName());
+ radioButtonA.setBounds(10, 5, 75, 30);
+ radioButtonA.setSelection(true);
+ radioButtonA.addListener(SWT.Selection, new selectionListener());
+
+ Button radioButtonB = new Button(composite, SWT.RADIO);
+ radioButtonB.setText(descriptor.getSideBName());
+ radioButtonB.setData(descriptor.getSideBName());
+ radioButtonB.setBounds(10, 5, 75, 30);
+ radioButtonB.addListener(SWT.Selection, new selectionListener());
+
+ sideName = (String) radioButtonA.getData();
+
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.horizontalSpan = 2;
+
+ composite.setLayoutData(data);
+ composite.setFont(parent.getFont());
+
+ // allow subclasses to add custom controls
+ customArea = createCustomArea(composite);
+
+ // If it is null create a dummy label for spacing purposes
+ if (customArea == null) customArea = new Label(composite, SWT.NULL);
+
+ return composite;
+ }
+
+ private class selectionListener implements Listener {
+
+ public void handleEvent(Event event) {
+ sideName = (String) ((Button) event.widget).getData();
+ }
+
+ }
+
+ /**
+ * Returns the minimum message area width in pixels This determines the minimum width of the dialog.
+ * <p>
+ * Subclasses may override.
+ * </p>
+ *
+ * @return the minimum message area width (in pixels)
+ */
+ protected int getMinimumMessageWidth() {
+ return convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
+ }
+
+ /*
+ * (non-Javadoc) Method declared on Dialog. Sets a return code of -1 since none of the dialog
+ * buttons were pressed to close the dialog.
+ */
+ protected void handleShellCloseEvent() {
+ super.handleShellCloseEvent();
+ setReturnCode(-1);
+ }
+
+ /**
+ * Convenience method to open a simple confirm (OK/Cancel) dialog.
+ *
+ * @param parent the parent shell of the dialog, or <code>null</code> if none
+ * @param title the dialog's title, or <code>null</code> if none
+ * @param message the message
+ * @return <code>true</code> if the user presses the OK button, <code>false</code> otherwise
+ */
+ public static boolean openTextEntry(Shell parent, String title, String message) {
+ MessageDialog dialog = new MessageDialog(parent, title, null,
+ // accept the default window icon
+ message, QUESTION, new String[] {IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL}, 0);
+ // OK is the default
+ return dialog.open() == 0;
+ }
+
+ public void setEntry(String entry) {
+ // text.setText(entry);
+ }
+
+ /**
+ * Return whether or not we should apply the workaround where we take focus for the default button or if that should
+ * be determined by the dialog. By default only return true if the custom area is a label or CLabel that cannot take
+ * focus.
+ *
+ * @return boolean
+ */
+ protected boolean customShouldTakeFocus() {
+ if (customArea instanceof Label) return false;
+
+ if (customArea instanceof CLabel) return (customArea.getStyle() & SWT.NO_FOCUS) > 0;
+
+ return true;
+ }
+
+ /*
+ * @see IconAndMessageDialog#getImage()
+ */
+ public Image getImage() {
+ return image;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+ try {
+ artifact.getLinkManager().ensureRelationGroupExists(descriptor, sideName);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/SkynetGuiArtifactFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/SkynetGuiArtifactFactory.java
new file mode 100644
index 00000000000..c3d795f1d5e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/SkynetGuiArtifactFactory.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.GlobalPreferences;
+import org.eclipse.osee.framework.skynet.core.artifact.factory.ArtifactFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.XViewerCustomizationArtifact;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class SkynetGuiArtifactFactory extends ArtifactFactory<Artifact> {
+ private static SkynetGuiArtifactFactory factory = null;
+
+ private SkynetGuiArtifactFactory(int factoryId) {
+ super(factoryId);
+ }
+
+ public static SkynetGuiArtifactFactory getInstance(int factoryId) {
+ if (factory == null) {
+ factory = new SkynetGuiArtifactFactory(factoryId);
+ }
+ return factory;
+ }
+
+ public static SkynetGuiArtifactFactory getInstance() {
+ return factory;
+ }
+
+ public @Override
+ Artifact getNewArtifact(String guid, String humandReadableId, String factoryKey, Branch branch) throws SQLException {
+ if (factoryKey.equals(XViewerCustomizationArtifact.ARTIFACT_TYPE_NAME)) {
+ return new XViewerCustomizationArtifact(this, guid, humandReadableId, branch);
+ }
+ if (factoryKey.equals(GlobalPreferences.ARTIFACT_NAME)) {
+ return new GlobalPreferences(this, guid, humandReadableId, branch);
+ }
+
+ throw new IllegalArgumentException("did not recognize the factory key: " + factoryKey);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AnnotationComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AnnotationComposite.java
new file mode 100644
index 00000000000..64f6d86b7b2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AnnotationComposite.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.annotation;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.annotation.ArtifactAnnotation;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AnnotationComposite extends Composite {
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public AnnotationComposite(Composite parent, int style, Artifact artifact) {
+ this(null, parent, style, artifact);
+ }
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public AnnotationComposite(FormToolkit toolkit, Composite parent, int style, Artifact artifact) {
+ super(parent, style);
+
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 4;
+ setLayoutData(gd);
+ setLayout(ALayout.getZeroMarginLayout(2, false));
+
+ for (ArtifactAnnotation.Type type : ArtifactAnnotation.Type.getOrderedTypes()) {
+ for (ArtifactAnnotation notify : artifact.getAnnotations()) {
+ if (notify.getType() != type) continue;
+ if (notify.getType() == ArtifactAnnotation.Type.None) {
+ OSEELog.logException(SkynetGuiPlugin.class, new IllegalStateException(
+ "None is an invalid annotation type - " + artifact.getHumanReadableId()), false);
+ continue;
+ }
+ Label iconLabel = toolkit != null ? toolkit.createLabel(this, "") : new Label(this, SWT.NONE);
+ iconLabel.setImage(notify.getType().getImage());
+
+ Label alertLabel = toolkit != null ? toolkit.createLabel(this, "") : new Label(this, SWT.NONE);
+ alertLabel.setText(notify.getType().name() + ": " + notify.getContent());
+ }
+ }
+ if (toolkit != null) toolkit.adapt(this);
+
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AttributeAnnotationHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AttributeAnnotationHandler.java
new file mode 100644
index 00000000000..4209846bd91
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/annotation/AttributeAnnotationHandler.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.annotation;
+
+import java.sql.SQLException;
+import java.util.Set;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.annotation.ArtifactAnnotation;
+import org.eclipse.osee.framework.skynet.core.artifact.annotation.AttributeAnnotationManager;
+import org.eclipse.osee.framework.skynet.core.artifact.annotation.IArtifactAnnotation;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AttributeAnnotationHandler implements IArtifactAnnotation {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.artifact.annotation.IArtifactAnnotation#getAnnotations(org.eclipse.osee.framework.skynet.core.artifact.Artifact)
+ */
+ public void getAnnotations(Artifact artifact, Set<ArtifactAnnotation> annotations) {
+ if (artifact.isAttributeTypeValid(AttributeAnnotationManager.ANNOTATION_ATTRIBUTE)) {
+ try {
+ if (artifact.getAttributeManager(AttributeAnnotationManager.ANNOTATION_ATTRIBUTE).getAttributes().size() > 0) {
+ AttributeAnnotationManager mgr = new AttributeAnnotationManager(artifact);
+ annotations.addAll(mgr.getAnnotations());
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractArtifactEditor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractArtifactEditor.java
new file mode 100644
index 00000000000..d36bfafa990
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractArtifactEditor.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.editor;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.editor.FormEditor;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class AbstractArtifactEditor extends FormEditor implements IDirtiableEditor {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.forms.editor.FormEditor#createToolkit(org.eclipse.swt.widgets.Display)
+ */
+ @Override
+ protected XFormToolkit createToolkit(Display display) {
+ // Create a toolkit that shares colors between editors.
+ // the toolkit will be disposed by the super class (FormEditor)
+ return new XFormToolkit(SkynetGuiPlugin.getInstance().getSharedFormColors(display));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.EditorPart#doSaveAs()
+ */
+ @Override
+ public void doSaveAs() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
+ */
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.jdk.core.swt.IDirtiableEditor#onDirtied()
+ */
+ public void onDirtied() {
+ }
+
+ public ArtifactEditorInput getEditorInput() {
+ return (ArtifactEditorInput) super.getEditorInput();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.editor.FormEditor#getToolkit()
+ */
+ @Override
+ public XFormToolkit getToolkit() {
+ return (XFormToolkit) super.getToolkit();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditor.java
new file mode 100644
index 00000000000..46b8b5630c7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditor.java
@@ -0,0 +1,616 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.artifact.editor;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.ArtifactVersionIncrementedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.CacheArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.TransactionArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent.ModType;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactLockStatusChanged;
+import org.eclipse.osee.framework.skynet.core.event.LocalCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.VisitorEvent;
+import org.eclipse.osee.framework.skynet.core.relation.CacheRelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.relation.RelationModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.relation.TransactionRelationModifiedEvent;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.skynet.ArtifactExplorer;
+import org.eclipse.osee.framework.ui.skynet.AttributesComposite;
+import org.eclipse.osee.framework.ui.skynet.RelationsComposite;
+import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.access.PolicyDialog;
+import org.eclipse.osee.framework.ui.skynet.artifact.annotation.AnnotationComposite;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchView;
+import org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView;
+import org.eclipse.osee.framework.ui.skynet.render.EditingFolderVisitor;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.ProgressEvent;
+import org.eclipse.swt.browser.ProgressListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactEditor extends MultiPageEditorPart implements IDirtiableEditor, IEventReceiver, IActionable {
+ public static final String EDITOR_ID = "org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor";
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactEditor.class);
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final ArtifactPersistenceManager artifactPersistenceManager =
+ ArtifactPersistenceManager.getInstance();
+ private int previewPageIndex;
+ private int attributesPageIndex;
+ private int relationsPageIndex;
+ private BrowserComposite previewComposite;
+ private RelationsComposite relationsComposite;
+ private AttributesComposite attributeComposite;
+ private ToolItem forward;
+ private ToolItem back;
+
+ // correspond to the indices of tool items on the toolbar
+ private static final int REVEAL_ARTIFACT_INDEX = 2;
+ private static final int EDIT_ARTIFACT_INDEX = 4;
+
+ public ArtifactEditor() {
+ super();
+ }
+
+ public RelationsComposite getRelationsComposite() {
+ return relationsComposite;
+ }
+
+ public static void editArtifacts(final Collection<Artifact> artifacts) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ try {
+ for (Artifact artifact : artifacts) {
+ AWorkbench.getActivePage().openEditor(new ArtifactEditorInput(artifact), EDITOR_ID);
+ }
+ } catch (PartInitException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ });
+ }
+
+ public static void editArtifact(final Artifact artifact) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ try {
+ if (artifact != null) {
+ AWorkbench.getActivePage().openEditor(new ArtifactEditorInput(artifact), EDITOR_ID);
+ }
+ } catch (PartInitException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ });
+ }
+
+ @Override
+ public boolean isDirty() {
+ Artifact artifact = getEditorInput().getArtifact();
+
+ if (artifact.isDeleted()) return false;
+
+ try {
+ return !artifact.isReadOnly() && artifact.isDirty(true);
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ return false;
+ }
+
+ public void onDirtied() {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ firePropertyChange(PROP_DIRTY);
+ }
+ });
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()
+ */
+ @Override
+ protected void createPages() {
+ SkynetContributionItem.addTo(this, true);
+
+ previewPageIndex = createPreviewPage();
+ setPageText(previewPageIndex, "Preview");
+
+ attributesPageIndex = createAttributesPage();
+ setPageText(attributesPageIndex, "Attributes");
+
+ relationsPageIndex = createRelationsPage();
+ setPageText(relationsPageIndex, "Relations");
+ setPartName(getEditorInput().getName());
+ setTitleImage(getEditorInput().getArtifact().getImage());
+
+ String guid = getEditorInput().getArtifact().getGuid();
+ eventManager.register(CacheArtifactModifiedEvent.class, guid, this);
+ eventManager.register(CacheRelationModifiedEvent.class, this);
+ eventManager.register(ArtifactVersionIncrementedEvent.class, this);
+ eventManager.register(RemoteTransactionEvent.class, this);
+ eventManager.register(TransactionRelationModifiedEvent.class, this);
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+ eventManager.register(TransactionArtifactModifiedEvent.class, this);
+ eventManager.register(VisitorEvent.class, this);
+ eventManager.register(LocalCommitBranchEvent.class, this);
+ eventManager.register(RemoteCommitBranchEvent.class, this);
+ eventManager.register(ArtifactLockStatusChanged.class, this);
+ eventManager.register(LocalTransactionEvent.class, this);
+
+ }
+
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ Artifact artifact = getEditorInput().getArtifact();
+ try {
+ artifact.persist();
+ artifact.getLinkManager().persistLinks();
+ firePropertyChange(PROP_DIRTY);
+ } catch (SQLException ex) {
+ onDirtied();
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+
+ @Override
+ public void doSaveAs() {
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ @Override
+ public void setFocus() {
+ int activePage = getActivePage();
+
+ if (activePage == previewPageIndex) {
+ previewComposite.setFocus();
+ } else if (activePage == attributesPageIndex) {
+ attributeComposite.setFocus();
+ } else if (activePage == relationsPageIndex) {
+ relationsComposite.setFocus();
+ } else {
+ super.setFocus();
+ }
+ }
+
+ private int createPreviewPage() {
+
+ renderPreviewPage();
+ return addPage(previewComposite.getParent());
+ }
+
+ private void renderPreviewPage() {
+ if (previewComposite == null) {
+ Composite composite = createCommonPageComposite();
+ previewComposite = new BrowserComposite(composite, SWT.BORDER, createToolBar(composite));
+ if (getEditorInput().getArtifact().getAnnotations().size() > 0) {
+ new AnnotationComposite(previewComposite, SWT.BORDER, getEditorInput().getArtifact());
+ }
+ previewComposite.addProgressListener(new BrowserProgressListener(previewComposite, back, forward));
+ }
+
+ RendererManager.getInstance().previewInComposite(previewComposite, getEditorInput().getArtifact());
+ }
+
+ private int createAttributesPage() {
+ Composite composite = createCommonPageComposite();
+ attributeComposite =
+ new AttributesComposite(this, composite, SWT.NONE, getEditorInput().getArtifact(), createToolBar(composite));
+
+ return addPage(composite);
+ }
+
+ private Composite createCommonPageComposite() {
+ Composite composite = new Composite(getContainer(), SWT.NONE);
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 0;
+ composite.setLayout(layout);
+
+ return composite;
+ }
+
+ private int createRelationsPage() {
+ Composite composite = createCommonPageComposite();
+ relationsComposite =
+ new RelationsComposite(this, composite, SWT.NONE, getEditorInput().getArtifact(), createToolBar(composite));
+
+ return addPage(composite);
+ }
+
+ private ToolBar createToolBar(Composite parent) {
+ Composite toolBarComposite = new Composite(parent, SWT.BORDER);
+ GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false, 1, 1);
+ toolBarComposite.setLayoutData(gridData);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ toolBarComposite.setLayout(layout);
+
+ ToolBar toolBar = new ToolBar(toolBarComposite, SWT.FLAT | SWT.RIGHT);
+
+ gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, true, 1, 1);
+ toolBar.setLayoutData(gridData);
+ SkynetGuiPlugin skynetGuiPlugin = SkynetGuiPlugin.getInstance();
+ ToolItem item;
+
+ OseeAts.addButtonToEditorToolBar(this, SkynetGuiPlugin.getInstance(), toolBar, EDITOR_ID, "Artifact Editor");
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(skynetGuiPlugin.getImage("edit.gif"));
+ item.setToolTipText("Show this artifact in the Resource History");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ RevisionHistoryView.open(getEditorInput().getArtifact());
+ }
+ });
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(skynetGuiPlugin.getImage("magnify.gif"));
+ item.setToolTipText("Reveal this artifact in the Artifact Explorer");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Artifact artifact = getEditorInput().getArtifact();
+ try {
+ ArtifactExplorer.revealArtifact(artifactPersistenceManager.getArtifact(artifact.getGuid(),
+ artifact.getBranch()));
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ });
+ item.setEnabled(getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+
+ item = new ToolItem(toolBar, SWT.SEPARATOR);
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(skynetGuiPlugin.getImage("edit_artifact.gif"));
+ item.setToolTipText("Present this artifact for editing");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ RendererManager.getInstance().editInJob(getEditorInput().getArtifact());
+ }
+ });
+ item.setEnabled(!getEditorInput().getArtifact().isReadOnly() && getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(skynetGuiPlugin.getImage("preview_artifact.gif"));
+ item.setToolTipText("Present this artifact for previewing (read-only)");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ RendererManager.getInstance().previewInJob(getEditorInput().getArtifact());
+ }
+ });
+
+ item = new ToolItem(toolBar, SWT.SEPARATOR);
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(SkynetGuiPlugin.getInstance().getImage("branch.gif"));
+ item.setToolTipText("Reveal the branch this artifact is on in the Branch Manager");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ BranchView.revealBranch(getEditorInput().getArtifact().getBranch());
+ }
+ });
+
+ item = new ToolItem(toolBar, SWT.SEPARATOR);
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(SkynetGuiPlugin.getInstance().getImage("authenticated.gif"));
+ item.setToolTipText("Access Control");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ PolicyDialog pd = new PolicyDialog(Display.getCurrent().getActiveShell(), getEditorInput().getArtifact());
+ pd.open();
+ }
+ });
+
+ item = new ToolItem(toolBar, SWT.SEPARATOR);
+
+ // Add Navigation Browser Navigation Buttons
+ back = new ToolItem(toolBar, SWT.NONE);
+ back.setImage(skynetGuiPlugin.getImage("nav_backward.gif"));
+ back.setToolTipText("Back to previous page");
+ back.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ previewComposite.back();
+ }
+ });
+ forward = new ToolItem(toolBar, SWT.NONE);
+ forward.setImage(skynetGuiPlugin.getImage("nav_forward.gif"));
+ forward.setToolTipText("Forward to the next page.");
+ forward.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ previewComposite.forward();
+ }
+ });
+
+ ToolItem refresh = new ToolItem(toolBar, SWT.NONE);
+ refresh.setImage(skynetGuiPlugin.getImage("refresh.gif"));
+ refresh.setToolTipText("Refresh the current page");
+ refresh.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ previewComposite.refresh();
+ }
+ });
+
+ Text artifactInfoLabel = new Text(toolBarComposite, SWT.END);
+ artifactInfoLabel.setEditable(false);
+ artifactInfoLabel.addMouseListener(new MouseAdapter() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.MouseAdapter#mouseDoubleClick(org.eclipse.swt.events.MouseEvent)
+ */
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+
+ StringBuilder counters = new StringBuilder();
+
+ for (int i = 0; i < EditingFolderVisitor.visitorCounters.length; i++) {
+ counters.append("Level : " + i + " ");
+ counters.append(EditingFolderVisitor.visitorCounters[i]);
+ counters.append(",");
+ }
+
+ logger.log(Level.INFO, counters.toString());
+ super.mouseDoubleClick(e);
+ }
+ });
+
+ Artifact artifact = getEditorInput().getArtifact();
+ artifactInfoLabel.setText("Type: \"" + artifact.getArtifactTypeName() + "\" Guid: " + artifact.getGuid() + " HRID: " + artifact.getHumanReadableId() + " Art Id: " + artifact.getArtId());
+ artifactInfoLabel.setToolTipText("The human readable id and database id for this artifact");
+
+ return toolBar;
+ }
+
+ private void checkEnabledTooltems() {
+ if (!attributeComposite.isDisposed()) {
+ previewComposite.getToolBar().getItem(REVEAL_ARTIFACT_INDEX).setEnabled(
+ getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+ previewComposite.getToolBar().getItem(EDIT_ARTIFACT_INDEX).setEnabled(
+ !getEditorInput().getArtifact().isReadOnly() && getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+ previewComposite.getToolBar().update();
+
+ attributeComposite.getToolBar().getItem(REVEAL_ARTIFACT_INDEX).setEnabled(
+ getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+ attributeComposite.getToolBar().getItem(EDIT_ARTIFACT_INDEX).setEnabled(
+ !getEditorInput().getArtifact().isReadOnly() && getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+ attributeComposite.getToolBar().update();
+
+ relationsComposite.getToolBar().getItem(REVEAL_ARTIFACT_INDEX).setEnabled(
+ getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+ relationsComposite.getToolBar().getItem(EDIT_ARTIFACT_INDEX).setEnabled(
+ !getEditorInput().getArtifact().isReadOnly() && getEditorInput().getArtifact().getBranch() == branchManager.getDefaultBranch());
+ relationsComposite.getToolBar().update();
+ }
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ public ArtifactEditorInput getEditorInput() {
+ return (ArtifactEditorInput) super.getEditorInput();
+ }
+
+ @Override
+ public void dispose() {
+ try {
+ // If the artifact is dirty when the editor get's disposed, then it needs to be reverted
+ Artifact artifact = getEditorInput().getArtifact();
+
+ if (!artifact.isDeleted() && (artifact.isDirty(true))) {
+ try {
+ artifact.revert();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ } else
+ artifact.getLinkManager().clearEmptyRelationGroups();
+
+ eventManager.unRegisterAll(this);
+ super.dispose();
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ public void onEvent(final Event event) {
+ final ArtifactEditor editor = this;
+
+ if (event instanceof TransactionEvent) {
+ ((TransactionEvent) event).fireSingleEvent(this);
+ } else if (event instanceof ArtifactModifiedEvent) {
+ ModType modType = ((ArtifactModifiedEvent) event).getType();
+
+ if (modType == ModType.Deleted) {
+ AWorkbench.getActivePage().closeEditor(editor, false);
+ } else if (modType == ModType.Changed || modType == ModType.Reverted) {
+ Artifact artifact = getEditorInput().getArtifact();
+ setPartName(getEditorInput().getName());
+ setTitleImage(artifact.getImage());
+ attributeComposite.refreshArtifact(artifact);
+
+ onDirtied();
+ }
+ } else if (event instanceof RelationModifiedEvent) {
+ onDirtied();
+
+ if (!relationsComposite.isDisposed()) {
+
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ relationsComposite.refresh();
+ }
+ });
+ }
+ } else if (event instanceof ArtifactVersionIncrementedEvent) {
+ ArtifactVersionIncrementedEvent verEvent = (ArtifactVersionIncrementedEvent) event;
+
+ if (getEditorInput().getArtifact() == verEvent.getOldVersion()) {
+ changeToArtifact(verEvent.getNewVersion());
+ }
+ } else if (event instanceof RemoteTransactionEvent) {
+ ((RemoteTransactionEvent) event).fireSingleEvent(editor);
+
+ } else if (event instanceof DefaultBranchChangedEvent) {
+ try {
+ Artifact artifact = getEditorInput().getArtifact();
+ if (artifact.getBranch() != branchManager.getDefaultBranch() && !artifact.isReadOnly()) {
+ changeToArtifact(ArtifactPersistenceManager.getInstance().getArtifact(artifact.getGuid(),
+ branchManager.getDefaultBranch()));
+ }
+ checkEnabledTooltems();
+ } catch (SQLException e) {
+ logger.log(Level.SEVERE, e.toString(), e);
+ }
+ } else if (event instanceof VisitorEvent) {
+ VisitorEvent visitorevent = (VisitorEvent) event;
+
+ if (visitorevent.getArtifact().equals(getEditorInput().getArtifact())) {
+ firePropertyChange(PROP_DIRTY);
+ renderPreviewPage();
+ }
+ } else if (event instanceof ArtifactLockStatusChanged) {
+ setTitleImage(getEditorInput().getArtifact().getImage());
+ } else if ((event instanceof LocalCommitBranchEvent) || (event instanceof RemoteCommitBranchEvent)) {
+ Artifact artifact = getEditorInput().getArtifact();
+ try {
+ changeToArtifact(ArtifactPersistenceManager.getInstance().getArtifact(artifact.getGuid(),
+ branchManager.getDefaultBranch()));
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ } else {
+ throw new IllegalStateException("Not registered for legal event.");
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ private void changeToArtifact(final Artifact artifact) {
+ if (artifact == null || getEditorInput().getArtifact() == null) {
+ AWorkbench.getActivePage().closeEditor(this, false);
+ return;
+ }
+
+ // The events coming to this editor are based on guid, so it is important that this case is
+ // always true.
+ if (!artifact.getGuid().equals(getEditorInput().getArtifact().getGuid())) throw new IllegalArgumentException(
+ "Can only change the editor to a different version of the Artifact being editted");
+
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+
+ ArtifactEditorInput input = new ArtifactEditorInput(artifact);
+ setInput(input);
+ setPartName(artifact.getDescriptiveName());
+ setTitleImage(getEditorInput().getArtifact().getImage());
+
+ attributeComposite.refreshArtifact(artifact);
+ relationsComposite.refreshArtifact(artifact);
+ renderPreviewPage();
+ }
+ });
+ }
+
+ private final class BrowserProgressListener implements ProgressListener {
+
+ private BrowserComposite browserComposite;
+ private ToolItem back;
+ private ToolItem forward;
+
+ private BrowserProgressListener(BrowserComposite browserComposite, ToolItem back, ToolItem forward) {
+ this.browserComposite = browserComposite;
+ this.back = back;
+ this.forward = forward;
+ }
+
+ private void updateBackNextBusy() {
+ back.setEnabled(browserComposite.isBackEnabled());
+ forward.setEnabled(browserComposite.isForwardEnabled());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.browser.ProgressListener#changed(org.eclipse.swt.browser.ProgressEvent)
+ */
+ public void changed(ProgressEvent event) {
+ if (event.total != 0) {
+ updateBackNextBusy();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.browser.ProgressListener#completed(org.eclipse.swt.browser.ProgressEvent)
+ */
+ public void completed(ProgressEvent event) {
+ updateBackNextBusy();
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorContributor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorContributor.java
new file mode 100644
index 00000000000..8fec2bd1eab
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorContributor.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.editor;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ICoolBarManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.SelectionCountChangeListener;
+import org.eclipse.osee.framework.ui.skynet.ArtifactExplorer;
+import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchLabelProvider;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
+import org.eclipse.ui.texteditor.StatusLineContributionItem;
+
+/**
+ * Manages the installation/deinstallation of global actions for multi-page editors. Responsible for the redirection of
+ * global actions to the active editor. Multi-page contributor replaces the contributors for the individual editors in
+ * the multi-page editor.
+ */
+public class ArtifactEditorContributor extends MultiPageEditorActionBarContributor {
+
+ private StatusLineContributionItem branchStatusItem;
+ private StatusLineContributionItem typeStatusItem;
+ private ShowInExplorerAction showInExplorerAction;
+
+ /**
+ * Creates a multi-page contributor.
+ */
+ public ArtifactEditorContributor() {
+ super();
+
+ createActions();
+ }
+
+ public void setActiveEditor(IEditorPart part) {
+ super.setActiveEditor(part);
+ if (part instanceof ArtifactEditor) {
+ ArtifactEditor artifactEditor = (ArtifactEditor) part;
+ Artifact artifact = artifactEditor.getEditorInput().getArtifact();
+ branchStatusItem.setText(artifact.getBranch().getDisplayName());
+ branchStatusItem.setImage(BranchLabelProvider.getBranchImage(artifact.getBranch()));
+ typeStatusItem.setText(artifact.getDescriptor().getName());
+ typeStatusItem.setImage(artifact.getDescriptor().getImage());
+ showInExplorerAction.setArtifact(artifact);
+
+ artifactEditor.getRelationsComposite().getTreeViewer().addSelectionChangedListener(
+ new SelectionCountChangeListener(this.getActionBars().getStatusLineManager()));
+ }
+ }
+
+ public void setActivePage(IEditorPart part) {
+ }
+
+ private void createActions() {
+ branchStatusItem = new StatusLineContributionItem("skynet.branch", true, 30);
+ branchStatusItem.setToolTipText("The branch that the artifact being edited is from.");
+
+ typeStatusItem = new StatusLineContributionItem("skynet.artifactType", true, 25);
+ typeStatusItem.setToolTipText("The type of the artifact being edited.");
+
+ showInExplorerAction = new ShowInExplorerAction();
+ }
+
+ @Override
+ public void contributeToStatusLine(IStatusLineManager statusLineManager) {
+ statusLineManager.add(typeStatusItem);
+ statusLineManager.add(branchStatusItem);
+ SkynetContributionItem.addTo(statusLineManager);
+ }
+
+ @Override
+ public void contributeToCoolBar(ICoolBarManager coolBarManager) {
+ coolBarManager.add(showInExplorerAction);
+ }
+
+ private static class ShowInExplorerAction extends Action {
+ private Artifact artifact;
+
+ public ShowInExplorerAction() {
+ setText("Show in Artifact Explorer");
+ setToolTipText("Show the Artifact being edited in the Artifact Explorer");
+ }
+
+ public void setArtifact(Artifact artifact) {
+ this.artifact = artifact;
+ }
+
+ @Override
+ public void run() {
+ try {
+ ArtifactExplorer.revealArtifact(artifact);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorInput.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorInput.java
new file mode 100644
index 00000000000..88120377267
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorInput.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.editor;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactEditorInput implements IEditorInput {
+ protected Artifact artifact;
+
+ public ArtifactEditorInput(Artifact artifact) {
+ this.artifact = artifact;
+ }
+
+ public boolean equals(Object obj) {
+ if (obj instanceof ArtifactEditorInput) {
+ ArtifactEditorInput otherEdInput = (ArtifactEditorInput) obj;
+
+ return artifact == otherEdInput.artifact;
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IEditorInput#exists()
+ */
+ public boolean exists() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IEditorInput#getName()
+ */
+ public String getName() {
+ if (artifact == null) {
+ return "No Artifact Input Provided";
+ }
+ return artifact.getVersionedName();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IEditorInput#getPersistable()
+ */
+ public IPersistableElement getPersistable() {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IEditorInput#getToolTipText()
+ */
+ public String getToolTipText() {
+ return getName();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ public Object getAdapter(Class adapter) {
+ return null;
+ }
+
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ /**
+ * @param artifact the artifact to set
+ */
+ public void setArtifact(Artifact artifact) {
+ this.artifact = artifact;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/BrowserComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/BrowserComposite.java
new file mode 100644
index 00000000000..aaca8b7ac46
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/BrowserComposite.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.artifact.editor;
+
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.browser.ProgressListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ToolBar;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BrowserComposite extends Composite {
+ private Browser previewBrowser;
+ private ToolBar toolBar;
+
+ public BrowserComposite(Composite parent, int style) {
+ this(parent, style, null);
+ }
+
+ public BrowserComposite(Composite parent, int style, ToolBar toolBar) {
+ super(parent, style);
+ setLayout(ALayout.getZeroMarginLayout());
+ GridData gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
+ setLayoutData(gridData);
+
+ previewBrowser = new Browser(this, SWT.NONE);
+ gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
+ previewBrowser.setLayoutData(gridData);
+
+ this.toolBar = toolBar;
+ }
+
+ public void setHtml(String html) throws SWTException, IllegalArgumentException {
+ previewBrowser.setText(html);
+ }
+
+ public void setUrl(String url) throws SWTException, IllegalArgumentException {
+ previewBrowser.setUrl(url);
+ }
+
+ public void refresh() {
+ previewBrowser.refresh();
+ }
+
+ public boolean back() {
+ if (previewBrowser == null) return false;
+ return previewBrowser.back();
+ }
+
+ public boolean forward() {
+ if (previewBrowser == null) return false;
+ return previewBrowser.forward();
+ }
+
+ public boolean isBackEnabled() {
+ if (previewBrowser == null) return false;
+ return previewBrowser.isBackEnabled();
+ }
+
+ public boolean isForwardEnabled() {
+ if (previewBrowser == null) return false;
+ return previewBrowser.isForwardEnabled();
+ }
+
+ public void addProgressListener(ProgressListener listener) {
+ previewBrowser.addProgressListener(listener);
+ }
+
+ /**
+ * @return the toolBar
+ */
+ protected ToolBar getToolBar() {
+ return toolBar;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java
new file mode 100644
index 00000000000..136e9a8304c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditor.java
@@ -0,0 +1,318 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.AbstractArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class MassArtifactEditor extends AbstractArtifactEditor implements IDirtiableEditor, IEventReceiver, IActionable {
+ public static final String EDITOR_ID = "org.eclipse.osee.framework.ui.skynet.massEditor.MassArtifactEditor";
+ private int artifactsPageIndex;
+ private Collection<? extends Artifact> artifacts = new HashSet<Artifact>();
+ private MassXViewer xViewer;
+ private Label branchLabel;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.artifact.editor.AbstractArtifactEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ for (Artifact art : artifacts)
+ try {
+ art.persist(true);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ onDirtied();
+ }
+
+ public static void editArtifacts(final String name, final Collection<? extends Artifact> artifacts) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ try {
+ AWorkbench.getActivePage().openEditor(new MassArtifactEditorInput(name, artifacts), EDITOR_ID);
+ } catch (PartInitException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ });
+ }
+
+ public static void editArtifact(final Artifact artifact) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ try {
+ AWorkbench.getActivePage().openEditor(
+ new MassArtifactEditorInput("", Arrays.asList(new Artifact[] {artifact})), EDITOR_ID);
+ } catch (PartInitException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ });
+ }
+
+ public void createTaskActionBar(Composite parent) {
+
+ // Button composite for state transitions, etc
+ Composite bComp = new Composite(parent, SWT.NONE);
+ // bComp.setBackground(mainSComp.getDisplay().getSystemColor(SWT.COLOR_CYAN));
+ bComp.setLayout(ALayout.getZeroMarginLayout(2, false));
+ bComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Composite leftComp = new Composite(bComp, SWT.NONE);
+ leftComp.setLayout(new GridLayout());
+ leftComp.setLayoutData(new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL));
+
+ branchLabel = new Label(leftComp, SWT.NONE);
+ branchLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Composite rightComp = new Composite(bComp, SWT.NONE);
+ rightComp.setLayout(new GridLayout());
+ rightComp.setLayoutData(new GridData(GridData.END));
+
+ ToolBar toolBar = new ToolBar(rightComp, SWT.FLAT | SWT.RIGHT);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ toolBar.setLayoutData(gd);
+ ToolItem item = null;
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(SkynetGuiPlugin.getInstance().getImage("refresh.gif"));
+ item.setToolTipText("Refresh");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ xViewer.refresh();
+ }
+ });
+
+ item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(SkynetGuiPlugin.getInstance().getImage("customize.gif"));
+ item.setToolTipText("Customize Table");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ xViewer.getCustomize().handleTableCustomization();
+ }
+ });
+
+ OseeAts.addButtonToEditorToolBar(this, SkynetGuiPlugin.getInstance(), toolBar, EDITOR_ID, "Mass Artifact Editor");
+ }
+
+ public static void editArtifacts(MassArtifactEditorInput input) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ page.openEditor(input, EDITOR_ID);
+ } catch (PartInitException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ public boolean isSaveOnCloseNeeded() {
+ return isDirty();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ for (Artifact taskArt : artifacts)
+ try {
+ if (taskArt != null && !taskArt.isDeleted() && taskArt.isDirty()) taskArt.revert();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.forms.editor.FormEditor#isDirty()
+ */
+ @Override
+ public boolean isDirty() {
+ for (Artifact taskArt : artifacts)
+ if (taskArt.isDeleted())
+ continue;
+ else
+ try {
+ if (taskArt.isDirty()) return true;
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ return false;
+ }
+
+ public String toString() {
+ return "MassArtifactEditor";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.forms.editor.FormEditor#addPages()
+ */
+ @Override
+ protected void addPages() {
+
+ IEditorInput editorInput = getEditorInput();
+ if (editorInput instanceof MassArtifactEditorInput) {
+ MassArtifactEditorInput aei = (MassArtifactEditorInput) editorInput;
+ artifacts = ((MassArtifactEditorInput) aei).getArtifacts();
+ } else
+ throw new IllegalArgumentException("Editor Input not TaskEditorInput");
+
+ if (((MassArtifactEditorInput) editorInput).getName().equals(""))
+ setPartName("Mass Artifact Editor");
+ else
+ setPartName(((MassArtifactEditorInput) editorInput).getName());
+
+ SkynetGuiPlugin.getInstance().setHelp(getContainer(), "mass_artifact_editor");
+
+ Composite comp = new Composite(getContainer(), SWT.NONE);
+ comp.setLayout(new GridLayout(1, true));
+ comp.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ createTaskActionBar(comp);
+
+ xViewer = new MassXViewer(comp, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION, this);
+ xViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
+ xViewer.setContentProvider(new org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassContentProvider(
+ xViewer));
+ xViewer.setLabelProvider(new org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassLabelProvider(xViewer));
+ branchLabel.setText("Branch: " + ((MassArtifactEditorInput) editorInput).getArtifacts().iterator().next().getBranch().getBranchName());
+ artifactsPageIndex = addPage(comp);
+ setPageText(artifactsPageIndex, "Artifacts");
+
+ Tree tree = xViewer.getTree();
+ GridData gridData = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL | GridData.GRAB_HORIZONTAL);
+ tree.setLayoutData(gridData);
+ tree.setHeaderVisible(true);
+ tree.setLinesVisible(true);
+ SkynetEventManager.getInstance().register(DefaultBranchChangedEvent.class, this);
+
+ setActivePage(artifactsPageIndex);
+ xViewer.set(((MassArtifactEditorInput) editorInput).getArtifacts());
+ }
+
+ @Override
+ public void onDirtied() {
+ Displays.ensureInDisplayThread(new Runnable() {
+
+ public void run() {
+ firePropertyChange(PROP_DIRTY);
+ }
+ });
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.plugin.core.event.IEventReceiver#runOnEventInDisplayThread()
+ */
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.ats.util.widgets.task.IXTaskViewer#getCurrentStateName()
+ */
+ public String getCurrentStateName() {
+ return "";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.ats.util.widgets.task.IXTaskViewer#getEditor()
+ */
+ public IDirtiableEditor getEditor() {
+ return this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.ats.util.widgets.task.IXTaskViewer#isTasksEditable()
+ */
+ public boolean isArtifactsEditable() {
+ return true;
+ }
+
+ /**
+ * @return the artifacts
+ */
+ public Collection<? extends Artifact> getArtifacts() {
+ return artifacts;
+ }
+
+ public void onEvent(final Event event) {
+
+ if (event instanceof DefaultBranchChangedEvent) {
+ if (artifacts.size() == 0) return;
+ Artifact artifact = artifacts.iterator().next();
+ try {
+ if (artifact.getBranch() != BranchPersistenceManager.getInstance().getAtsBranch() && artifact.getBranch() != BranchPersistenceManager.getInstance().getDefaultBranch()) {
+ if (artifact == null || getEditorInput().getArtifact() == null) {
+ AWorkbench.getActivePage().closeEditor(this, false);
+ return;
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ } else {
+ throw new IllegalStateException("Not registered for legal event.");
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.ats.IActionable#getActionDescription()
+ */
+ public String getActionDescription() {
+ return "";
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditorInput.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditorInput.java
new file mode 100644
index 00000000000..a4b515206af
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactEditorInput.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.util.Collection;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class MassArtifactEditorInput extends ArtifactEditorInput {
+
+ private final Collection<? extends Artifact> artifacts;
+ private final String name;
+
+ /**
+ * @param artifact
+ */
+ public MassArtifactEditorInput(String name, Collection<? extends Artifact> artifacts) {
+ super(null);
+ this.name = name;
+ this.artifacts = artifacts;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditorInput#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ return false;
+ }
+
+ /**
+ * @return the taskArts
+ */
+ public Collection<? extends Artifact> getArtifacts() {
+ return artifacts;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#exists()
+ */
+ public boolean exists() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getPersistable()
+ */
+ public IPersistableElement getPersistable() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getToolTipText()
+ */
+ public String getToolTipText() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ public Object getAdapter(Class adapter) {
+ return null;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactItem.java
new file mode 100644
index 00000000000..f7575c79af7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassArtifactItem.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.osee.framework.skynet.core.SkynetDebug;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.event.LocalTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent.EventData;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class MassArtifactItem implements IEventReceiver {
+
+ private Artifact artifact;
+ private final MassXViewer xViewer;
+ protected List<MassArtifactItem> artifactList;
+ protected MassArtifactItem parentItem;
+ protected static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private SkynetDebug debug = new SkynetDebug(false, "WorldArtifactItem");
+
+ public MassArtifactItem(MassXViewer xViewer, Artifact artifact, MassArtifactItem parentItem) {
+ this.xViewer = xViewer;
+ this.artifact = artifact;
+ this.parentItem = parentItem;
+ artifactList = new ArrayList<MassArtifactItem>();
+ if (artifact != null) {
+ eventManager.register(RemoteTransactionEvent.class, this);
+ eventManager.register(LocalTransactionEvent.class, this);
+ }
+ }
+
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ public List<MassArtifactItem> getArtifactItems() {
+ return artifactList;
+ }
+
+ public MassArtifactItem getParentItem() {
+ return parentItem;
+ }
+
+ protected void addArtifactItem(MassArtifactItem artifactItem) {
+ artifactList.add(artifactItem);
+ artifactItem.parentItem = this;
+ }
+
+ protected void removeArtifactItem(MassArtifactItem artifactItem) {
+ artifactList.remove(artifactItem);
+ fireRemove(artifactItem);
+ }
+
+ protected void fireRemove(Object removed) {
+ eventManager.unRegisterAll(this);
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren() {
+ debug.report("getChildren()");
+ return null;
+ }
+
+ public void dispose() {
+ eventManager.unRegisterAll(this);
+ }
+
+ public void onEvent(final Event event) {
+ if (artifact.isDeleted() || xViewer.getTree().isDisposed()) {
+ if (!xViewer.getTree().isDisposed()) xViewer.remove(this);
+ dispose();
+ return;
+ }
+ final MassArtifactItem wai = this;
+
+ if (event instanceof TransactionEvent) {
+ EventData ed = ((TransactionEvent) event).getEventData(artifact);
+ if (ed.isRemoved()) {
+ xViewer.remove(wai);
+ } else if (ed.getAvie() != null && ed.getAvie().getOldVersion().equals(artifact)) {
+ artifact = (Artifact) ed.getAvie().getNewVersion();
+ xViewer.update(wai, null);
+ } else if (ed.isModified() || ed.isRelChange()) {
+ xViewer.update(wai, null);
+ }
+ } else
+ OSEELog.logSevere(SkynetGuiPlugin.class, "Unexpected event => " + event, true);
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassContentProvider.java
new file mode 100644
index 00000000000..4190de09021
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassContentProvider.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.SkynetDebug;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+
+public class MassContentProvider implements ITreeContentProvider {
+
+ protected Collection<MassArtifactItem> rootSet = new HashSet<MassArtifactItem>();
+ private final MassXViewer xViewer;
+ private static Object[] EMPTY_ARRAY = new Object[0];
+ private SkynetDebug debug = new SkynetDebug(false, "WorldTreeContentProvider");
+
+ public MassContentProvider(MassXViewer xViewer) {
+ super();
+ this.xViewer = xViewer;
+ }
+
+ public void add(final MassArtifactItem item) {
+ add(Arrays.asList(new MassArtifactItem[] {item}));
+ }
+
+ public void add(final Collection<? extends MassArtifactItem> items) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ if (xViewer.getInput() == null) xViewer.setInput(rootSet);
+ rootSet.addAll(items);
+ xViewer.refresh();
+ };
+ });
+ }
+
+ public void set(final Collection<? extends MassArtifactItem> arts) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ if (xViewer.getInput() == null) xViewer.setInput(rootSet);
+ clear();
+ add(arts);
+ };
+ });
+ }
+
+ public void remove(final Artifact art) {
+ remove(Arrays.asList(new Artifact[] {art}));
+ }
+
+ public void remove(final Collection<? extends Artifact> arts) {
+ if (xViewer.getInput() == null) xViewer.setInput(rootSet);
+ ArrayList<MassArtifactItem> delItems = new ArrayList<MassArtifactItem>();
+ delItems.addAll(rootSet);
+ for (Artifact art : arts) {
+ for (MassArtifactItem wai : rootSet)
+ if (wai.getArtifact().equals(art)) delItems.add(wai);
+ }
+ removeItems(delItems);
+ }
+
+ public void removeItems(final Collection<? extends MassArtifactItem> arts) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ if (xViewer.getInput() == null) xViewer.setInput(rootSet);
+ rootSet.remove(arts);
+ xViewer.refresh();
+ };
+ });
+ }
+
+ public void clear() {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ if (xViewer.getInput() == null) xViewer.setInput(rootSet);
+ for (MassArtifactItem wai : rootSet)
+ wai.dispose();
+ rootSet.clear();
+ xViewer.refresh();
+ };
+ });
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ debug.report("getChildren");
+ if (parentElement instanceof Collection) {
+ return ((Collection) parentElement).toArray();
+ }
+ if (parentElement instanceof MassArtifactItem) {
+ return ((MassArtifactItem) parentElement).getChildren();
+ }
+ return EMPTY_ARRAY;
+ }
+
+ public Object getParent(Object element) {
+ debug.report("getParent");
+ if (element instanceof MassArtifactItem) {
+ return ((MassArtifactItem) element).getParentItem();
+ }
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ debug.report("hasChildren");
+ if (element instanceof Collection) return true;
+ return false;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ debug.report("getElements");
+ if (inputElement instanceof String) return new Object[] {inputElement};
+ return getChildren(inputElement);
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassLabelProvider.java
new file mode 100644
index 00000000000..995905d9e37
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassLabelProvider.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.sql.SQLException;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.DateAttribute;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassXViewer.Extra_Columns;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.TreeColumn;
+
+public class MassLabelProvider implements ITableLabelProvider {
+
+ private final MassXViewer treeViewer;
+
+ public MassLabelProvider(MassXViewer treeViewer) {
+ super();
+ this.treeViewer = treeViewer;
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof String) {
+ if (columnIndex == 1)
+ return (String) element;
+ else
+ return "";
+ }
+ Artifact artifact = ((MassArtifactItem) element).getArtifact();
+ if (artifact == null || artifact.isDeleted()) return "";
+ // Handle case where columns haven't been loaded yet
+ if (columnIndex > (getTreeViewer().getTree().getColumns().length - 1)) {
+ return "";
+ }
+ TreeColumn treeCol = getTreeViewer().getTree().getColumns()[columnIndex];
+ String colName = treeCol.getText();
+ if (colName.equals(Extra_Columns.HRID.name()))
+ return artifact.getHumanReadableId();
+ else if (colName.equals(Extra_Columns.GUID.name()))
+ return artifact.getGuid();
+ else if (colName.equals(Extra_Columns.Artifact_Type.name())) return artifact.getArtifactTypeName();
+ if (!artifact.isAttributeTypeValid(colName)) return "";
+ try {
+ if (artifact.getAttributeManager(colName).getDescriptor().getBaseAttributeClass().equals(DateAttribute.class)) {
+ if (artifact.getAttributeManager(colName).getAttributes().size() > 0) return ((DateAttribute) artifact.getAttributeManager(
+ colName).getAttributes().iterator().next()).getStringValue(DateAttribute.MMDDYYHHMM);
+ return "";
+ }
+
+ return artifact.getAttributesToString(colName);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ return ex.getLocalizedMessage();
+ }
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public MassXViewer getTreeViewer() {
+ return treeViewer;
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ Artifact artifact = ((MassArtifactItem) element).getArtifact();
+ if (artifact == null || artifact.isDeleted()) return null;
+ if (columnIndex == 0) return artifact.getImage();
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewer.java
new file mode 100644
index 00000000000..cacd4c0d97b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewer.java
@@ -0,0 +1,349 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.BooleanAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DateAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.skynet.core.attribute.FloatingPointAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.IntegerAttribute;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.ArtifactPromptChange;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn.SortDataType;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.swt.IDirtiableEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSource;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.DropTargetAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class MassXViewer extends XViewer {
+
+ private static String NAMESPACE = "org.eclipse.osee.framework.ui.skynet.massEditor.ArtifactXViewer";
+ private String title;
+ private Collection<? extends Artifact> artifacts;
+ private final IDirtiableEditor editor;
+ public static enum Extra_Columns {
+ HRID, GUID, Artifact_Type
+ };
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public MassXViewer(Composite parent, int style, IDirtiableEditor editor) {
+ this(parent, style, NAMESPACE, new MassXViewerFactory(), editor);
+ }
+
+ public MassXViewer(Composite parent, int style, String nameSpace, IXViewerFactory xViewerFactory, IDirtiableEditor editor) {
+ super(parent, style, nameSpace, xViewerFactory);
+ this.editor = editor;
+ this.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(org.eclipse.jface.viewers.DoubleClickEvent event) {
+ handleDoubleClick();
+ };
+ });
+ }
+
+ @Override
+ public void handleColumnMultiEdit(TreeColumn treeColumn, Collection<TreeItem> treeItems) {
+ String colName = treeColumn.getText();
+ Set<Artifact> useArts = new HashSet<Artifact>();
+ for (TreeItem item : treeItems) {
+ useArts.add(((MassArtifactItem) item.getData()).getArtifact());
+ }
+ try {
+ if (ArtifactPromptChange.promptChangeAttribute(colName, colName, useArts, false)) {
+ refresh();
+ editor.onDirtied();
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ @Override
+ public boolean isColumnMultiEditable(TreeColumn treeColumn, Collection<TreeItem> treeItems) {
+ if (treeColumn.getText().equals(Extra_Columns.Artifact_Type.name()) || treeColumn.getText().equals(
+ Extra_Columns.HRID.name()) || treeColumn.getText().equals(Extra_Columns.GUID.name())) return false;
+ return true;
+ }
+
+ @Override
+ public boolean isColumnMultiEditEnabled() {
+ return true;
+ }
+
+ @Override
+ public boolean handleAltLeftClick(TreeColumn treeColumn, TreeItem treeItem) {
+ return handleAltLeftClick(treeColumn, treeItem, false);
+ }
+
+ public boolean handleAltLeftClick(TreeColumn treeColumn, TreeItem treeItem, boolean persist) {
+ try {
+ super.handleAltLeftClick(treeColumn, treeItem);
+ // System.out.println("Column " + treeColumn.getText() + " item " +
+ // treeItem);
+ String colName = treeColumn.getText();
+ if (colName.equals(Extra_Columns.Artifact_Type.name()) || colName.equals(Extra_Columns.HRID.name()) || colName.equals(Extra_Columns.GUID.name())) {
+ AWorkbench.popup("ERROR", "Can't change the field " + colName);
+ }
+ Artifact useArt = ((MassArtifactItem) treeItem.getData()).getArtifact();
+ if (ArtifactPromptChange.promptChangeAttribute(colName, colName, Arrays.asList(new Artifact[] {useArt}),
+ persist)) {
+ refresh();
+ editor.onDirtied();
+ return true;
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer#createSupportWidgets(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected void createSupportWidgets(Composite parent) {
+ super.createSupportWidgets(parent);
+ setupDragAndDropSupport();
+ }
+
+ private void setupDragAndDropSupport() {
+
+ // Do not allow drag if artifacts in this table are not on same branch as default branch
+ DragSource source = new DragSource(getTree(), DND.DROP_COPY);
+ source.setTransfer(new Transfer[] {ArtifactTransfer.getInstance()});
+ source.addDragListener(new DragSourceListener() {
+
+ public void dragFinished(DragSourceEvent event) {
+ refresh();
+ }
+
+ public void dragSetData(DragSourceEvent event) {
+ Collection<Artifact> arts = getSelectedArtifacts();
+ if (arts.size() > 0) {
+ Artifact artifact = arts.iterator().next();
+ if (artifact.getBranch() == BranchPersistenceManager.getInstance().getDefaultBranch()) event.data =
+ new ArtifactData(arts.toArray(new Artifact[arts.size()]), "", MassArtifactEditor.EDITOR_ID);
+ }
+ }
+
+ public void dragStart(DragSourceEvent event) {
+ event.doit = false;
+ Collection<Artifact> arts = getSelectedArtifacts();
+ if (arts.size() > 0) {
+ Artifact artifact = arts.iterator().next();
+ if (artifact.getBranch() == BranchPersistenceManager.getInstance().getDefaultBranch()) event.doit = true;
+ }
+ }
+ });
+
+ // Do not allow drop if default branch is not same as artifacts that reside in this table
+ DropTarget target = new DropTarget(getTree(), DND.DROP_COPY);
+ target.setTransfer(new Transfer[] {FileTransfer.getInstance(), TextTransfer.getInstance(),
+ ArtifactTransfer.getInstance()});
+ target.addDropListener(new DropTargetAdapter() {
+
+ public void drop(DropTargetEvent event) {
+ performDrop(event);
+ }
+
+ public void dragOver(DropTargetEvent event) {
+ // if ((event.data instanceof ArtifactData) && ((ArtifactData)
+ // event.data).getArtifacts().length > 0)
+ event.detail = DND.DROP_COPY;
+ }
+
+ public void dropAccept(DropTargetEvent event) {
+ }
+ });
+ }
+
+ private void performDrop(DropTargetEvent e) {
+ if (e.data instanceof ArtifactData) {
+ Artifact[] artsToAdd = ((ArtifactData) e.data).getArtifacts();
+ Set<Artifact> arts = new HashSet<Artifact>();
+ arts.addAll(artifacts);
+ for (Artifact art : artsToAdd)
+ arts.add(art);
+ set(arts);
+ }
+ refresh();
+ }
+
+ public void handleDoubleClick() {
+ if (getSelectedArtifactItems().size() == 0) return;
+ Artifact art = getSelectedArtifactItems().iterator().next().getArtifact();
+ ArtifactEditor.editArtifact(art);
+ }
+
+ public ArrayList<Artifact> getLoadedArtifacts() {
+ ArrayList<Artifact> arts = new ArrayList<Artifact>();
+ TreeItem items[] = getTree().getItems();
+ if (items.length > 0) for (TreeItem item : items)
+ arts.add(((MassArtifactItem) item.getData()).getArtifact());
+ return arts;
+ }
+
+ /**
+ * Release resources
+ */
+ public void dispose() {
+ // Tell the label provider to release its ressources
+ getLabelProvider().dispose();
+ }
+
+ public ArrayList<Artifact> getSelectedArtifacts() {
+ ArrayList<Artifact> arts = new ArrayList<Artifact>();
+ TreeItem items[] = getTree().getSelection();
+ if (items.length > 0) for (TreeItem item : items)
+ arts.add((Artifact) ((MassArtifactItem) item.getData()).getArtifact());
+ return arts;
+ }
+
+ /**
+ * @return Returns the title.
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ public void add(Collection<Artifact> artifacts) {
+ Set<MassArtifactItem> items = new HashSet<MassArtifactItem>();
+ for (Artifact art : artifacts)
+ items.add(new MassArtifactItem(this, art, null));
+ resetColumns(artifacts);
+ ((MassContentProvider) getContentProvider()).add(items);
+ }
+
+ public void set(Collection<? extends Artifact> artifacts) {
+ Set<MassArtifactItem> items = new HashSet<MassArtifactItem>();
+ for (Artifact art : artifacts)
+ items.add(new MassArtifactItem(this, art, null));
+ resetColumns(artifacts);
+ this.artifacts = artifacts;
+ ((MassContentProvider) getContentProvider()).set(items);
+ }
+
+ public void resetColumns(Collection<? extends Artifact> artifacts) {
+ CustomizeData custData = new CustomizeData();
+
+ Set<DynamicAttributeManager> dams = new HashSet<DynamicAttributeManager>();
+
+ try {
+ for (Artifact art : artifacts) {
+ dams.addAll(art.getAttributes());
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+
+ ArrayList<XViewerColumn> cols = new ArrayList<XViewerColumn>();
+ Set<String> attrNames = new HashSet<String>();
+ // Add Name first
+ XViewerColumn newCol = new XViewerColumn(this, "Name", 150, 150, SWT.LEFT);
+
+ int x = 0;
+ newCol.setOrderNum(x++);
+ newCol.setTreeViewer(this);
+ cols.add(newCol);
+ attrNames.add("Name");
+
+ // Add other attributes
+ for (DynamicAttributeManager dam : dams) {
+ if (!attrNames.contains(dam.getDescriptor().getName())) {
+ // System.out.println(dam.getDescriptor().getName());
+ SortDataType sortType = SortDataType.String;
+ if (dam.getDescriptor().getBaseAttributeClass().equals(DateAttribute.class))
+ sortType = SortDataType.Date;
+ else if (dam.getDescriptor().getBaseAttributeClass().equals(FloatingPointAttribute.class))
+ sortType = SortDataType.Float;
+ else if (dam.getDescriptor().getBaseAttributeClass().equals(IntegerAttribute.class))
+ sortType = SortDataType.Integer;
+ else if (dam.getDescriptor().getBaseAttributeClass().equals(BooleanAttribute.class)) sortType =
+ SortDataType.Boolean;
+ newCol = new XViewerColumn(this, dam.getDescriptor().getName(), 75, 75, SWT.CENTER);
+ newCol.setSortDataType(sortType);
+ newCol.setOrderNum(x++);
+ newCol.setTreeViewer(this);
+ cols.add(newCol);
+ attrNames.add(dam.getDescriptor().getName());
+ }
+ }
+
+ // Add HRID and GUID
+ for (Extra_Columns col : Extra_Columns.values()) {
+ newCol = new XViewerColumn(this, col.name(), 75, 75, SWT.LEFT);
+ newCol.setOrderNum(x++);
+ newCol.setTreeViewer(this);
+ cols.add(newCol);
+ }
+
+ custData.getColumnData().setColumns(cols);
+ custData.getSortingData().setSortingNames(Arrays.asList(new String[] {"Name"}));
+ getCustomize().setCustomization(custData);
+ ((MassXViewerFactory) getXViewerFactory()).setDefaultCustData(custData);
+ }
+
+ public ArrayList<MassArtifactItem> getSelectedArtifactItems() {
+ ArrayList<MassArtifactItem> arts = new ArrayList<MassArtifactItem>();
+ TreeItem items[] = getTree().getSelection();
+ if (items.length > 0) for (TreeItem item : items)
+ arts.add((MassArtifactItem) item.getData());
+ return arts;
+ }
+
+ public Object[] getSelectedArtifactItemsArray() {
+ return getSelectedArtifactItems().toArray(new MassArtifactItem[getSelectedArtifactItems().size()]);
+ }
+
+ /**
+ * @return the artifacts
+ */
+ public Collection<? extends Artifact> getArtifacts() {
+ return artifacts;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewerFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewerFactory.java
new file mode 100644
index 00000000000..0008954d5b2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/massEditor/MassXViewerFactory.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.massEditor;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewerFactory;
+import org.eclipse.swt.SWT;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class MassXViewerFactory extends SkynetXViewerFactory {
+
+ private XViewer xViewer;
+ private CustomizeData custData;
+
+ /**
+ *
+ */
+ public MassXViewerFactory() {
+ }
+
+ public XViewerSorter createNewXSorter(XViewer xViewer) {
+ this.xViewer = xViewer;
+ return new XViewerSorter(xViewer);
+ }
+
+ public CustomizeData getDefaultTableCustomizeData() {
+ CustomizeData custData = new CustomizeData();
+ int x = 0;
+ ArrayList<XViewerColumn> cols = new ArrayList<XViewerColumn>();
+
+ XViewerColumn newCol = new XViewerColumn(xViewer, "Name", 150, 150, SWT.CENTER);
+ newCol.setOrderNum(x++);
+ newCol.setTreeViewer(xViewer);
+ cols.add(newCol);
+
+ custData.getColumnData().setColumns(cols);
+ return custData;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#getDefaultXViewerColumn()
+ */
+ public XViewerColumn getDefaultXViewerColumn(String name) {
+ if (custData != null) for (XViewerColumn xCol : custData.getColumnData().getColumns())
+ if (xCol.getDisplayName().equals(name)) return xCol;
+ return new XViewerColumn(xViewer, "Name", 50, 50, SWT.CENTER);
+ }
+
+ /**
+ * @param custData the custData to set
+ */
+ public void setDefaultCustData(CustomizeData custData) {
+ this.custData = custData;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshot.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshot.java
new file mode 100644
index 00000000000..16caedc353f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshot.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.snapshot;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public final class ArtifactSnapshot implements Serializable {
+ private static final long serialVersionUID = -8702924997281390156L;
+
+ private String namespace;
+ private String key;
+ private String renderedData;
+ private int gammaId;
+ private Timestamp createdOn;
+ private Map<String, byte[]> binaryData;
+
+ protected ArtifactSnapshot(String namespace, String key, Artifact artifact) {
+ this.namespace = namespace;
+ this.key = key;
+ this.gammaId = getGamma(artifact);
+ this.binaryData = new HashMap<String, byte[]>();
+ this.createdOn = getCreationDate(artifact);
+ }
+
+ public Timestamp getCreatedOn() {
+ return createdOn;
+ }
+
+ protected void setRenderedData(String data) {
+ this.renderedData = data;
+ }
+
+ protected void addBinaryData(String key, byte[] data) {
+ this.binaryData.put(key, data);
+ }
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ public String getRenderedData() {
+ return renderedData;
+ }
+
+ public int getGamma() {
+ return gammaId;
+ }
+
+ public byte[] getBinaryData(String key) {
+ byte[] toReturn = binaryData.get(key);
+ return toReturn != null ? toReturn : new byte[0];
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String toString() {
+ return String.format("Snapshot: %s - %s \nCreated On: %s\t Binary Objects: %s", getNamespace(), getKey(),
+ getCreatedOn(), binaryData.size());
+ }
+
+ /**
+ * Determine whether data in the snapshot is stale compared to data in the artifact
+ *
+ * @param artifact The artifact in question
+ * @return isStale <b>true</b> if the snapshot is stale, otherwise <b>false</b>
+ */
+ public boolean isStaleComparedTo(Artifact artifact) {
+ boolean snapshotGammaLessThanArts = this.getGamma() < getGamma(artifact);
+ boolean snapshotCreationAfterArtifacts = this.getCreatedOn().before(getCreationDate(artifact));
+ return snapshotGammaLessThanArts && snapshotCreationAfterArtifacts;
+ }
+
+ /**
+ * Determine whether this snapshot is a valid representation of the artifact
+ *
+ * @param artifact The artifact in question
+ * @return isValid <b>true</b> if the snapshot pertains to this version of the artifact, otherwise <b>false</b>
+ */
+ public boolean isValidFor(Artifact artifact) {
+ boolean gammasAreEqual = this.getGamma() == getGamma(artifact);
+ long snapTime = this.getCreatedOn().getTime();
+ long artTime = getCreationDate(artifact).getTime();
+ boolean creationDatesMatch = snapTime >= artTime;
+ return gammasAreEqual && creationDatesMatch;
+ }
+
+ private int getGamma(Artifact artifact) {
+ return artifact.getPersistenceMemo().getGammaId();
+ }
+
+ private Timestamp getCreationDate(Artifact artifact) {
+ Timestamp toReturn = null;
+ TransactionId artifactTxId = artifact.getPersistenceMemo().getTransactionId();
+ artifactTxId.getTransactionNumber();
+ List<TransactionData> txData =
+ new ArrayList<TransactionData>(RevisionManager.getInstance().getTransactionsPerArtifact(artifact));
+ for (TransactionData data : txData) {
+ if (artifact.getArtId() == data.getAssociatedArtId()) {
+ toReturn = data.getTimeStamp();
+ break;
+ }
+ }
+ return toReturn;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotFactory.java
new file mode 100644
index 00000000000..1ea26a429ae
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotFactory.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.snapshot;
+
+import java.io.ByteArrayOutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.httpRequests.HttpImageProcessor;
+import org.eclipse.osee.framework.skynet.core.linking.HttpServer;
+import org.eclipse.osee.framework.ui.skynet.httpRequests.HttpImageRequest;
+import org.eclipse.osee.framework.ui.skynet.render.IRenderer;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.Renderer;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+
+/**
+ * Factory class used to create artifact snapshots
+ *
+ * @author Roberto E. Escobar
+ */
+public class ArtifactSnapshotFactory {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactSnapshotFactory.class);
+ private static final ArtifactSnapshotFactory instance = new ArtifactSnapshotFactory();
+
+ private HttpImageRequest httpImageRequest;
+ private HttpImageProcessor httpImageProcessor;
+ private KeyGenerator keyGenerator;
+
+ private ArtifactSnapshotFactory() {
+ this.keyGenerator = new KeyGenerator();
+ this.httpImageRequest = HttpImageRequest.getInstance();
+ this.httpImageProcessor = HttpImageProcessor.getInstance();
+ }
+
+ protected static ArtifactSnapshotFactory getInstance() {
+ return ArtifactSnapshotFactory.instance;
+ }
+
+ /**
+ * Takes a snapshot of the Artifact
+ *
+ * @param artifact source
+ * @return snapshot of the artifact
+ * @throws UnsupportedEncodingException
+ */
+ public ArtifactSnapshot createSnapshot(Artifact artifact) throws UnsupportedEncodingException {
+ Pair<String, String> key = keyGenerator.getKeyPair(artifact);
+ ArtifactSnapshot snapshotData = new ArtifactSnapshot(key.getKey(), key.getValue(), artifact);
+ snapshotData.setRenderedData(getRenderedArtifactData(artifact));
+ processImageLinks(snapshotData);
+ return snapshotData;
+ }
+
+ /**
+ * Get key generator used to create snapshots
+ *
+ * @return key generator
+ */
+ public KeyGenerator getKeyGenerator() {
+ return keyGenerator;
+ }
+
+ /**
+ * Appends HTTP server address and port information to links.
+ *
+ * @param original pre-rendered Artifact data containing images
+ * @return modified pre-rendered artifact data
+ */
+ protected String toAbsoluteUrls(String original) {
+ ChangeSet changeSet = new ChangeSet(original);
+ String tag = httpImageRequest.getRequestType();
+ Pattern pattern = Pattern.compile("src=\"(" + tag.replace(".", "\\.") + ")");
+ Matcher matcher = pattern.matcher(original);
+ while (matcher.find()) {
+ if (matcher.groupCount() > 0) {
+ String entry = matcher.group(1);
+ if (Strings.isValid(entry)) {
+ try {
+ String result = "src=\"" + HttpServer.getDefaultServiceUrlPrefix() + "/" + tag;
+ changeSet.replace(matcher.start(), matcher.end(), result);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, String.format("Error adding http server address."), ex);
+ }
+ }
+ }
+ }
+ return changeSet.applyChangesToSelf().toString();
+ }
+
+ /**
+ * Renders artifact
+ *
+ * @param artifact to render
+ * @return rendered artifact data
+ */
+ private String getRenderedArtifactData(Artifact artifact) {
+ String toReturn = null;
+ IRenderer render = RendererManager.getInstance().getBestRenderer(PresentationType.PREVIEW_IN_COMPOSITE, artifact);
+ if (render instanceof Renderer) {
+ toReturn = ((Renderer) render).generateHtml(artifact, new NullProgressMonitor());
+ } else {
+ if (!Strings.isValid(toReturn)) {
+ toReturn =
+ String.format(
+ "Unable to generate html for: %s on branch %s <br><br><form><input type=button onClick='window.opener=self;window.close()' value='Close'></form>",
+ artifact.getDescriptiveName(), artifact.getBranch());
+ }
+ }
+ return toReturn;
+ }
+
+ /**
+ * Stores image data into snapshot and updates links with namespace/key and image key information. Also adds the HTTP
+ * image request to the image url.
+ *
+ * @param snapshotData snapshot containing image links
+ */
+ private void processImageLinks(ArtifactSnapshot snapshotData) {
+ String original = snapshotData.getRenderedData();
+ String tag = httpImageProcessor.getImageProcessingMarker();
+ Pattern pattern = Pattern.compile("(" + tag + ".*?)\"");
+ Matcher matcher = pattern.matcher(original);
+ ChangeSet changeSet = new ChangeSet(original);
+ while (matcher.find()) {
+ if (matcher.groupCount() > 0) {
+ String url = matcher.group(1);
+ String imageKey = url.replace(tag, "");
+ if (Strings.isValid(imageKey)) {
+ try {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ httpImageProcessor.processRequest(imageKey, outputStream);
+ snapshotData.addBinaryData(imageKey, outputStream.toByteArray());
+ String result =
+ httpImageRequest.getRequestUrl(snapshotData.getNamespace(), snapshotData.getKey(), imageKey);
+ changeSet.replace(matcher.start(), matcher.end(), result + "\"");
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, String.format("Image processing error. Unable to take a snapshot of: [%s]",
+ imageKey), ex);
+ }
+ }
+ }
+ }
+ snapshotData.setRenderedData(changeSet.applyChangesToSelf().toString());
+ }
+
+ protected final class KeyGenerator {
+
+ /**
+ * Creates namespace/key pair object from an artifact
+ *
+ * @param artifact source
+ * @return key pair
+ * @throws UnsupportedEncodingException
+ */
+ public Pair<String, String> getKeyPair(Artifact artifact) throws UnsupportedEncodingException {
+ String namespace = getNamespace(artifact);
+ String key = "GAMMA" + artifact.getPersistenceMemo().getGammaId();
+ return new Pair<String, String>(namespace, encode(key));
+ }
+
+ /**
+ * Generates a namespace key for an artifact
+ *
+ * @param artifact artifact to use when generating the namespace
+ * @return namespace
+ * @throws UnsupportedEncodingException
+ */
+ private String getNamespace(Artifact artifact) throws UnsupportedEncodingException {
+ StringBuffer namespace = new StringBuffer();
+ namespace.append(artifact.getGuid());
+ namespace.append("BRANCH");
+ namespace.append(artifact.getBranch().getBranchId());
+ return encode(namespace.toString());
+ }
+
+ /**
+ * Convert key pair into a local cache key
+ *
+ * @param key Pair containing namespace and key information
+ * @return local cache key
+ */
+ public String toLocalCacheKey(Pair<String, String> key) {
+ return key.getKey() + "&" + key.getValue();
+ }
+
+ /**
+ * Convert key pair into a local cache key
+ *
+ * @param namespace to use
+ * @param key to use
+ * @return local cache key
+ */
+ public String toLocalCacheKey(String namespace, String key) {
+ return namespace + "&" + key;
+ }
+
+ private String encode(String value) throws UnsupportedEncodingException {
+ return URLEncoder.encode(value, "UTF-8");
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotManager.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotManager.java
new file mode 100644
index 00000000000..dfcabe84e01
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/snapshot/ArtifactSnapshotManager.java
@@ -0,0 +1,243 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.artifact.snapshot;
+
+import java.io.BufferedOutputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SnapshotPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.util.WordConverter;
+import org.eclipse.osee.framework.ui.skynet.artifact.snapshot.ArtifactSnapshotFactory.KeyGenerator;
+import org.osgi.framework.Bundle;
+
+/**
+ * This manager is used to store and retrieve artifact pre-rendered data to be used during previews. The manager stores
+ * and maintains head revision snapshots in a database and revisions other than head revisions in a local cache.
+ *
+ * @author Roberto E. Escobar
+ */
+public class ArtifactSnapshotManager {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactSnapshotManager.class);
+ private static final String PREVIEW_DATA = "artifact.preview.data";
+ private static ArtifactSnapshotManager instance = null;
+
+ private SnapshotPersistenceManager snapshotRemoteRepository;
+ private ArtifactSnapshotFactory snapshotFactory;
+ private KeyGenerator keyGenerator;
+ private Map<String, ArtifactSnapshot> snapshotLocalCache;
+
+ private ArtifactSnapshotManager() {
+ this.snapshotLocalCache = Collections.synchronizedMap(new HashMap<String, ArtifactSnapshot>());
+ this.snapshotFactory = ArtifactSnapshotFactory.getInstance();
+ this.keyGenerator = snapshotFactory.getKeyGenerator();
+ this.snapshotRemoteRepository = SnapshotPersistenceManager.getInstance();
+ }
+
+ public static ArtifactSnapshotManager getInstance() {
+ if (instance == null) {
+ instance = new ArtifactSnapshotManager();
+ }
+ return instance;
+ }
+
+ /**
+ * Retrieves rendered artifact data.
+ *
+ * @param artifact get rendered data for this artifact
+ * @param forceUpdate artifact data into snapshot repository
+ * @return rendered data
+ * @throws Exception
+ */
+ public String getDataSnapshot(Artifact artifact, boolean forceUpdate) throws Exception {
+ checkArtifact(artifact);
+ if (forceUpdate == true) {
+ try {
+ doSave(artifact);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ ArtifactSnapshot snapshot = getSnapshotForRenderRetrieval(artifact);
+ return snapshotFactory.toAbsoluteUrls(snapshot.getRenderedData());
+ }
+
+ /**
+ * Retrieves image data from the snapshot repository
+ *
+ * @param namespace artifact snapshot namespace
+ * @param key artifact snapshot key
+ * @param imageKey image to get
+ * @param outputStream where image should be sent to
+ * @throws Exception
+ */
+ public void getImageSnapshot(String namespace, String key, String imageKey, OutputStream outputStream) throws Exception {
+ Pair<String, String> keyPair = new Pair<String, String>(namespace, key);
+ ArtifactSnapshot snapshot = getSnapshotFromRemoteStorage(keyPair);
+ if (snapshot == null || !snapshot.getKey().equals(key)) {
+ snapshot = snapshotLocalCache.get(keyGenerator.toLocalCacheKey(keyPair));
+ }
+ try {
+ byte[] imageData = snapshot.getBinaryData(imageKey);
+ BufferedOutputStream bos = new BufferedOutputStream(outputStream);
+ bos.write(imageData, 0, imageData.length);
+ bos.flush();
+ } catch (Exception ex) {
+ if (snapshot == null) {
+ throw new Exception("Image snapshot unavailable.");
+ } else {
+ throw new Exception("Error transmitting Image.", ex);
+ }
+ }
+ }
+
+ /**
+ * Check that the requested artifact is valid
+ *
+ * @param artifact in question
+ * @throws IllegalArgumentException if invalid
+ */
+ private void checkArtifact(Artifact artifact) {
+ if (artifact == null) {
+ throw new IllegalArgumentException("Error artifact was null");
+ }
+ }
+
+ /**
+ * Determine whether a delete in the remote storage is needed.
+ *
+ * @param snapshot to store
+ * @return <b>true</b> if deletion is needed, otherwise <b>false</b>
+ * @throws SQLException
+ */
+ private boolean isDeleteRequired(ArtifactSnapshot snapshot) throws SQLException {
+ boolean oneOrMoreExists = snapshotRemoteRepository.getKeys(snapshot.getNamespace()).size() > 0;
+ boolean snapshotIsNotOneOfThem =
+ snapshotRemoteRepository.getSnapshot(snapshot.getNamespace(), snapshot.getKey()) == null;
+ return oneOrMoreExists && snapshotIsNotOneOfThem;
+ }
+
+ /**
+ * Create artifact snapshot and stores data into the snapshot remote repository
+ *
+ * @param artifact to store into snapshot repository
+ * @throws SQLException
+ */
+ private void doSave(Artifact artifact) throws Exception {
+ checkArtifact(artifact);
+ // TODO Windows dependency needs to be removed once wordML transforms are independent of
+ // windows and native transform.
+ Bundle bundle = Platform.getBundle("external.osee.xslt.transform.engine");
+
+ if (Lib.isWindows() && bundle != null && bundle.getState() == Bundle.ACTIVE && WordConverter.getInstance().isDefaultConverter() == false) {
+ ArtifactSnapshot snapshot = snapshotFactory.createSnapshot(artifact);
+ if (true == isDeleteRequired(snapshot)) {
+ snapshotRemoteRepository.deleteAll(snapshot.getNamespace());
+ }
+ snapshotRemoteRepository.persistSnapshot(snapshot.getNamespace(), PREVIEW_DATA, snapshot);
+ }
+ }
+
+ /**
+ * Get the Artifact Snapshot from remote repository and update if needed
+ *
+ * @param artifact Identifying the snapshot to get
+ * @return The artifact snapshot
+ * @throws UnsupportedEncodingException
+ */
+ private ArtifactSnapshot getRemoteSnapshotAndUpdateIfNeeded(Artifact artifact) throws UnsupportedEncodingException {
+ Pair<String, String> snapshotKey = keyGenerator.getKeyPair(artifact);
+ ArtifactSnapshot currentSnapshot = getSnapshotFromRemoteStorage(snapshotKey);
+ if (currentSnapshot == null || currentSnapshot.isStaleComparedTo(artifact) == true) {
+ try {
+ doSave(artifact);
+ currentSnapshot = getSnapshotFromRemoteStorage(snapshotKey);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ return currentSnapshot;
+ }
+
+ /**
+ * Retrieve snapshot from remote storage. This method returns null if no snapshot is found in remote storage.
+ *
+ * @param keyPair
+ * @return snapshot instance from remote storage
+ * @throws UnsupportedEncodingException
+ */
+ private ArtifactSnapshot getSnapshotFromRemoteStorage(Pair<String, String> key) throws UnsupportedEncodingException {
+ ArtifactSnapshot toReturn = null;
+ Pair<Object, Date> data = snapshotRemoteRepository.getSnapshot(key.getKey(), PREVIEW_DATA);
+ if (data != null) {
+ Object object = data.getKey();
+ if (object != null) {
+ if (object instanceof ArtifactSnapshot) {
+ toReturn = (ArtifactSnapshot) data.getKey();
+ }
+ }
+ }
+ return toReturn;
+ }
+
+ /**
+ * Retrieve snapshot from local storage
+ *
+ * @param artifact
+ * @return snapshot from local cache
+ * @throws UnsupportedEncodingException
+ */
+ private ArtifactSnapshot getSnapshotFromLocalCacheAndUpdateIfNeeded(Artifact artifact) throws UnsupportedEncodingException {
+ Pair<String, String> key = keyGenerator.getKeyPair(artifact);
+ String localCacheKey = keyGenerator.toLocalCacheKey(key);
+ ArtifactSnapshot toReturn = snapshotLocalCache.get(localCacheKey);
+ if (toReturn == null) {
+ toReturn = snapshotFactory.createSnapshot(artifact);
+ // Do not allow more than 10 cached snapshots at any given time
+ if (snapshotLocalCache.size() > 10) {
+ snapshotLocalCache.clear();
+ }
+ snapshotLocalCache.put(localCacheKey, toReturn);
+ }
+ return toReturn;
+ }
+
+ /**
+ * Retrieves snapshot for this artifact checking remote storage and local cache.
+ *
+ * @param artifact to search snapshot for
+ * @return snapshot
+ * @throws UnsupportedEncodingException
+ */
+ private ArtifactSnapshot getSnapshotForRenderRetrieval(Artifact artifact) throws UnsupportedEncodingException {
+ ArtifactSnapshot data = null;
+ try {
+ data = getRemoteSnapshotAndUpdateIfNeeded(artifact);
+ } catch (UnsupportedEncodingException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ if (data == null || data.isValidFor(artifact) != true) {
+ data = getSnapshotFromLocalCacheAndUpdateIfNeeded(artifact);
+ }
+ return data;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/AtsOpenOption.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/AtsOpenOption.java
new file mode 100644
index 00000000000..57d34647dc2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/AtsOpenOption.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.ats;
+
+/**
+ * @author Donald G. Dunne
+ */
+public enum AtsOpenOption {
+ OpenAll, // Open all teams
+ OpenOneOrPopupSelect, // Popup selection dialog if more than one team
+ AtsWorld
+ // populate
+
+};
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IActionable.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IActionable.java
new file mode 100644
index 00000000000..4f47a366844
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IActionable.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.ats;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IActionable {
+
+ /**
+ * Provide description over and above the viewpart name and version to be used by ATS
+ *
+ * @return description
+ */
+ public String getActionDescription();
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IAtsLib.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IAtsLib.java
new file mode 100644
index 00000000000..667fa8b8dfa
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/IAtsLib.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.ats;
+
+import java.util.Collection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IAtsLib {
+
+ public void openATSAction(final Artifact art, final AtsOpenOption option);
+
+ public void createATSAction(String initialDescription, String actionableItem);
+
+ public void openArtifact(String guid, OseeAts.OpenView view);
+
+ public void openArtifact(String guidOrHrid, Integer branchId, OseeAts.OpenView view);
+
+ public void openInAtsWorld(String name, Collection<Artifact> artifacts);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/NoteType.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/NoteType.java
new file mode 100644
index 00000000000..9066cc428de
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/NoteType.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.ats;
+
+import java.util.ArrayList;
+
+/**
+ * @author Donald G. Dunne
+ */
+public enum NoteType {
+ Comment, Question, Error, Other;
+
+ public static NoteType getType(String type) {
+ for (NoteType e : NoteType.values()) {
+ if (e.name().equals(type)) {
+ return e;
+ }
+ }
+ throw new IllegalArgumentException("Unhandled NoteType");
+ }
+
+ public static ArrayList<String> getNames() {
+ ArrayList<String> names = new ArrayList<String>();
+ for (NoteType e : NoteType.values()) {
+ names.add(e.name());
+ }
+ return names;
+ }
+
+};
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/OseeAts.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/OseeAts.java
new file mode 100644
index 00000000000..c1ab7a818c4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ats/OseeAts.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.ats;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.ViewPart;
+import org.osgi.framework.Bundle;
+
+public class OseeAts {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(OseeAts.class);
+ public static enum OpenView {
+ ActionEditor, ArtifactEditor, ArtifactHyperViewer
+ };
+ private static IAtsLib atsLib;
+ private static String BUG_TITLE = "Generate Action Against This Tool";
+
+ public OseeAts() {
+ super();
+ }
+
+ public static boolean isAtsAdmin() {
+ return OseeProperties.getInstance().isAtsAdmin();
+ }
+
+ public static void addButtonToEditorToolBar(final MultiPageEditorPart editorPart, IActionable actionableObject, final OseeUiActivator oseePlugin, IToolBarManager toolBar, final String editorId, final String actionableItem) {
+
+ Action bugAction = new Action(BUG_TITLE, Action.AS_PUSH_BUTTON) {
+ public void run() {
+ String version = (String) oseePlugin.getBundle().getHeaders().get("Bundle-Version");
+ String desc = String.format("Found in \"%s\" version %s.", editorId, version);
+ if (editorPart instanceof IActionable) {
+ String moreDesc = ((IActionable) editorPart).getActionDescription();
+ if (!moreDesc.equals("")) desc += "\n" + moreDesc;
+ }
+ createActionViaBug(desc, actionableItem);
+ }
+ };
+ bugAction.setToolTipText(BUG_TITLE);
+ bugAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("bug.gif"));
+ toolBar.add(bugAction);
+ }
+
+ public static void addButtonToEditorToolBar(IActionable actionableObject, final OseeUiActivator oseePlugin, ToolBar toolBar, final String editorId, String actionableItem) {
+ addButtonToEditorToolBar(actionableObject, oseePlugin, toolBar, null, editorId, actionableItem);
+ }
+
+ public static void addButtonToEditorToolBar(IActionable actionableObject, final OseeUiActivator oseePlugin, Composite comp, final String editorId, String actionableItem) {
+ addButtonToEditorToolBar(actionableObject, oseePlugin, null, comp, editorId, actionableItem);
+ }
+
+ private static void addButtonToEditorToolBar(final IActionable actionableObject, final OseeUiActivator oseePlugin, ToolBar toolBar, Composite comp, final String editorId, final String aspect) {
+ if (actionableObject == null) throw new IllegalArgumentException(
+ String.format("actionableObject can not be null"));
+ if (editorId == null || editorId.equals("")) throw new IllegalArgumentException(
+ String.format("editorId can not be null or empty"));
+ if (aspect == null) throw new IllegalArgumentException(String.format("aspect can not be null"));
+
+ if (toolBar != null) {
+ ToolItem item = new ToolItem(toolBar, SWT.PUSH);
+ item.setImage(SkynetGuiPlugin.getInstance().getImage("bug.gif"));
+ item.setToolTipText(BUG_TITLE);
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ String version = (String) oseePlugin.getBundle().getHeaders().get("Bundle-Version");
+ String desc = String.format("\n\nItem: %s\nVersion: %s", editorId, version);
+ if (actionableObject != null) {
+ String moreDesc = actionableObject.getActionDescription();
+ if (moreDesc != null && !moreDesc.equals("")) desc += "\n" + moreDesc;
+ }
+ createActionViaBug(desc, aspect);
+ }
+ });
+ } else if (comp != null) {
+ Button bugButton = new Button(comp, SWT.PUSH);
+ bugButton.setToolTipText(BUG_TITLE);
+ bugButton.setImage(SkynetGuiPlugin.getInstance().getImage("bug.gif"));
+ bugButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ String version = (String) oseePlugin.getBundle().getHeaders().get("Bundle-Version");
+ String desc = String.format("\n\nItem: %s\nVersion: %s", editorId, version);
+ if (actionableObject != null) {
+ String moreDesc = actionableObject.getActionDescription();
+ if (moreDesc != null && !moreDesc.equals("")) desc += "\n" + moreDesc;
+ }
+ createActionViaBug(desc, aspect);
+ }
+
+ });
+ } else
+ throw new IllegalArgumentException("Can't determine bug target.");
+ }
+
+ /**
+ * Uses the ActionJob extension point to kickoff ATS code to create and open the action
+ *
+ * @param version
+ * @param desc
+ */
+ private static void createActionViaBug(String desc, String actionableItem) {
+ try {
+ getAtsLib().createATSAction(desc, actionableItem);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ /**
+ * @param viewPart
+ * @param actionableObject
+ * @param oseePlugin
+ * @param viewId
+ * @param actionableItem match the name of one of the configured Actionable Items in ATS
+ */
+ public static void addBugToViewToolbar(final ViewPart viewPart, final IActionable actionableObject, final OseeUiActivator oseePlugin, final String viewId, final String actionableItem) {
+ if (viewId == null || viewId.equals("")) throw new IllegalArgumentException(
+ String.format("viewId can not be null or empty"));
+ if (actionableItem == null) throw new IllegalArgumentException("Aspect can not be null.");
+ Action bugAction = new Action("Generate Action Against This View") {
+ public void run() {
+ String version = (String) oseePlugin.getBundle().getHeaders().get("Bundle-Version");
+ String desc = String.format("\n\nItem: %s\nVersion: %s", viewId, version);
+ String moreDesc = actionableObject.getActionDescription();
+ if (!moreDesc.equals("")) desc += "\n" + moreDesc;
+ createActionViaBug(desc, actionableItem);
+ }
+ };
+ bugAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("bug.gif"));
+ bugAction.setToolTipText("Generate Action Against This View");
+
+ IToolBarManager toolbarManager = viewPart.getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(bugAction);
+ }
+
+ public static void openATSArtifact(String guid) {
+ try {
+ Artifact art =
+ ArtifactPersistenceManager.getInstance().getArtifact(guid,
+ BranchPersistenceManager.getInstance().getCommonBranch());
+ if (art.getArtifactTypeName().equals("Action"))
+ atsLib.openATSAction(art, AtsOpenOption.OpenOneOrPopupSelect);
+ else
+ AWorkbench.popup("ERROR", "Trying to open " + art.getArtifactTypeName() + " with SMAEditor");
+ } catch (Exception ex) {
+ AWorkbench.popup("ERROR", ex.getLocalizedMessage());
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ public static void openATSArtifact(Artifact art) {
+ if (art instanceof IATSArtifact) {
+ try {
+ getAtsLib().openATSAction(art, AtsOpenOption.OpenOneOrPopupSelect);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ AWorkbench.popup("ERROR", ex.getLocalizedMessage());
+ }
+ } else {
+ AWorkbench.popup("ERROR", "Trying to open " + art.getArtifactTypeName() + " with SMAEditor");
+ }
+ }
+
+ public static IAtsLib getAtsLib() throws ClassNotFoundException, IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
+ if (atsLib == null) {
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.skynet.core.AtsLib");
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("AtsLib")) {
+ String className = el.getAttribute("classname");
+ String bundleName = el.getContributor().getName();
+ if (className != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ Class<?> interfaceClass = bundle.loadClass(className);
+ atsLib = (IAtsLib) interfaceClass.getConstructor().newInstance();
+ }
+ }
+ }
+ }
+ }
+ return atsLib;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFactory.java
new file mode 100644
index 00000000000..a1296931b5d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFactory.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.factory.ArtifactFactory;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BlamFactory extends ArtifactFactory<Artifact> {
+ private static BlamFactory factory = null;
+
+ private BlamFactory(int factoryId) {
+ super(factoryId);
+ }
+
+ public static BlamFactory getInstance(int factoryId) {
+ if (factory == null) {
+ factory = new BlamFactory(factoryId);
+ }
+ return factory;
+ }
+
+ public static BlamFactory getInstance() {
+ return factory;
+ }
+
+ public @Override
+ Artifact getNewArtifact(String guid, String humandReadableId, String factoryKey, Branch branch) throws SQLException {
+ if (factoryKey.equals(BlamWorkflow.ARTIFACT_NAME)) {
+ return new BlamWorkflow(this, guid, humandReadableId, branch);
+ }
+ throw new IllegalArgumentException("did not recognize the factory key: " + factoryKey);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFinishedEvent.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFinishedEvent.java
new file mode 100644
index 00000000000..39de99e1804
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamFinishedEvent.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+/**
+ * @author Jeff C. Phillips
+ * @author Robert A. Fisher
+ */
+public class BlamFinishedEvent implements IBlamEvent {
+
+ private final long duration;
+
+ /**
+ * @param duration
+ */
+ public BlamFinishedEvent(long duration) {
+ super();
+
+ this.duration = duration;
+ }
+
+ /**
+ * @return the duration
+ */
+ public long getDurationMillis() {
+ return duration;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamJob.java
new file mode 100644
index 00000000000..06b57566313
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamJob.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BlamJob extends Job {
+ private final BlamWorkflow workflow;
+ private final BlamVariableMap variableMap;
+ private final Branch branch;
+ private final Collection<IBlamEventListener> listeners;
+
+ public BlamJob(BlamVariableMap variableMap, BlamWorkflow workflow, Branch branch, String name) {
+ super(name);
+
+ if (variableMap == null) {
+ throw new IllegalArgumentException("VariableMap can not be null");
+ }
+ if (workflow == null) {
+ throw new IllegalArgumentException("Workflow can not be null");
+ }
+ if (branch == null) {
+ throw new IllegalArgumentException("Branch can not be null");
+ }
+
+ this.branch = branch;
+ this.variableMap = variableMap;
+ this.workflow = workflow;
+ this.listeners = new LinkedList<IBlamEventListener>();
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IStatus toReturn = Status.CANCEL_STATUS;
+ long startTime = System.currentTimeMillis();
+ notifyListeners(new BlamStartedEvent());
+ try {
+ new BlamOperationTx(branch, monitor).execute();
+ toReturn = Status.OK_STATUS;
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ toReturn = new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.getLocalizedMessage(), ex);
+ } finally {
+ monitor.done();
+ notifyListeners(new BlamFinishedEvent(System.currentTimeMillis() - startTime));
+ }
+ return toReturn;
+ }
+
+ public void addListener(IBlamEventListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("listener can not be null");
+ }
+
+ listeners.add(listener);
+ }
+
+ public boolean removeListener(IBlamEventListener listener) {
+ return listeners.remove(listener);
+ }
+
+ private void notifyListeners(IBlamEvent event) {
+ for (IBlamEventListener listener : listeners) {
+ listener.onEvent(event);
+ }
+ }
+
+ final private class BlamOperationTx extends AbstractSkynetTxTemplate {
+ private IProgressMonitor monitor;
+
+ public BlamOperationTx(Branch branch, IProgressMonitor monitor) {
+ super(branch);
+ this.monitor = monitor;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.skynet.core.transaction.AbstractTxTemplate#handleTxWork()
+ */
+ @Override
+ protected void handleTxWork() throws Exception {
+ List<BlamOperation> operations = workflow.getOperations();
+ if (operations.size() == 0) {
+ throw new IllegalStateException("No operations were found for this workflow");
+ }
+
+ for (BlamOperation operation : operations) {
+ operation.runOperation(variableMap, branch, monitor);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamParameter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamParameter.java
new file mode 100644
index 00000000000..d0ae9e8849f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamParameter.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BlamParameter {
+ @SuppressWarnings("unused")
+ private final String name;
+ @SuppressWarnings("unused")
+ private final Class<?> clazz;
+ @SuppressWarnings("unused")
+ private String binding;
+
+ /**
+ * @param name
+ * @param clazz
+ * @param binding
+ */
+ public BlamParameter(String name, Class<?> clazz, String binding) {
+ super();
+ this.name = name;
+ this.clazz = clazz;
+ this.binding = binding;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamStartedEvent.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamStartedEvent.java
new file mode 100644
index 00000000000..7b05de4f6a1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamStartedEvent.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.Date;
+
+/**
+ * @author Jeff C. Phillips
+ * @author Robert A. Fisher
+ */
+public class BlamStartedEvent implements IBlamEvent {
+
+ private final Date date;
+
+ /**
+ * @param date
+ */
+ public BlamStartedEvent() {
+ super();
+ this.date = new Date();
+ }
+
+ /**
+ * @return the date
+ */
+ public Date getDate() {
+ return date;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamVariableMap.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamVariableMap.java
new file mode 100644
index 00000000000..a080e5b0347
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamVariableMap.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BlamVariableMap {
+ public static enum BlamVariableType {
+ STRING, INTEGER, REAL, ARTIFACT
+ };
+
+ private final HashMap<String, BlamVariable> variableMap;
+
+ public BlamVariableMap() {
+ super();
+ variableMap = new HashMap<String, BlamVariable>();
+ }
+
+ /**
+ * This method is used by the Blam engine to put all Blam variables (parameters and local) into the map and should
+ * not be used directly by Blam operations
+ *
+ * @param name
+ * @param object
+ */
+ protected void addBlamVariable(String name, Object object) {
+ variableMap.put(name, new BlamVariable(object));
+ }
+
+ private BlamVariable getBlamVariable(String name) throws IllegalArgumentException {
+ BlamVariable variable = variableMap.get(name);
+ if (variable == null) {
+ throw new IllegalArgumentException("No variable existing with the name " + name);
+ }
+ return variable;
+ }
+
+ protected void aliasVariable(String existingName, String alias) {
+ BlamVariable variable = getBlamVariable(existingName);
+ variableMap.put(alias, variable);
+ }
+
+ public Object getValue(String variableName) {
+ return getBlamVariable(variableName).getValue();
+ }
+
+ public void setValue(String variableName, Object value) {
+ try {
+ getBlamVariable(variableName).setValue(value);
+ } catch (Exception e) {
+ addBlamVariable(variableName, value);
+ }
+ }
+
+ private static class BlamVariable {
+ private Object value;
+
+ public BlamVariable(Object value) {
+ this.value = value;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+ }
+
+ public List<Artifact> getArtifacts(String parameterName) {
+ Collection<Object> objects = getCollection(parameterName);
+
+ List<Artifact> artifacts = new ArrayList<Artifact>(objects.size());
+ for (Object object : objects) {
+ artifacts.add((Artifact) object);
+ }
+ return artifacts;
+ }
+
+ public ArtifactSubtypeDescriptor getArtifactSubtypeDescriptor(String parameterName) {
+ Object object = getSingleCollectionValue(parameterName);
+
+ if (!(object instanceof ArtifactSubtypeDescriptor)) {
+ throw new IllegalArgumentException(
+ "Expecting object of type ArtifactSubtypeDescriptor not " + object.getClass().getName());
+ }
+
+ return (ArtifactSubtypeDescriptor) object;
+ }
+
+ public DynamicAttributeDescriptor getAttributeDescriptor(String parameterName) {
+ Object object = getSingleCollectionValue(parameterName);
+
+ if (!(object instanceof DynamicAttributeDescriptor)) {
+ throw new IllegalArgumentException(
+ "Expecting object of type DynamicAttributeDescriptor not " + object.getClass().getName());
+ }
+
+ return (DynamicAttributeDescriptor) object;
+ }
+
+ public String getString(String parameterName) {
+ Object object = getValue(parameterName);
+
+ if (object == null) {
+ throw new IllegalArgumentException("Parameter can not be null");
+ }
+ if (!(object instanceof String)) {
+ throw new IllegalArgumentException("Expecting object of type String not " + object.getClass().getName());
+ }
+ return (String) object;
+ }
+
+ @SuppressWarnings("unchecked")
+ private Collection<Object> getCollection(String parameterName) {
+ Object object = getValue(parameterName);
+
+ if (object == null) {
+ throw new IllegalArgumentException("Parameter can not be null");
+ }
+ if (!(object instanceof Collection)) {
+ throw new IllegalArgumentException("Expecting object of type Collection not " + object.getClass().getName());
+ }
+ return (Collection<Object>) object;
+ }
+
+ private Object getSingleCollectionValue(String parameterName) {
+ Collection<Object> objects = getCollection(parameterName);
+ if (objects.size() != 1) {
+ throw new IllegalArgumentException("Require a collection of size 1 not " + objects.size());
+ }
+ return objects.iterator().next();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamWorkflow.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamWorkflow.java
new file mode 100644
index 00000000000..f1cc4406f1c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/BlamWorkflow.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import javax.xml.parsers.ParserConfigurationException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.factory.IArtifactFactory;
+import org.eclipse.osee.framework.ui.skynet.XWidgetParser;
+import org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BlamWorkflow extends Artifact {
+ public static final String ARTIFACT_NAME = "Blam Workflow";
+ private final List<BlamOperation> operations;
+ private XWidgetParser xWidgetParser;
+ private List<DynamicXWidgetLayoutData> layoutDatas;
+ private DynamicXWidgetLayout dynamicXWidgetLayout;
+
+ /**
+ * @param parentFactory
+ * @param guid
+ * @param humanReadableId
+ * @param branch
+ * @throws SQLException
+ */
+ public BlamWorkflow(IArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch) throws SQLException {
+ super(parentFactory, guid, humanReadableId, branch);
+
+ this.operations = new ArrayList<BlamOperation>();
+ this.xWidgetParser = new XWidgetParser();
+ this.dynamicXWidgetLayout = new DynamicXWidgetLayout();
+ this.layoutDatas = new LinkedList<DynamicXWidgetLayoutData>();
+ }
+
+ @Override
+ public void onBirth() throws SQLException {
+ super.onBirth();
+ setSoleAttributeValue("Workflow Definition",
+ "<Workflow><Operation name=\"org.my.plugin.blamExtensionId\" /></Workflow>");
+ }
+
+ private void loadFromXml() throws ParserConfigurationException, SAXException, IOException, IllegalArgumentException, CoreException {
+ String blamXml = getSoleAttributeValue("Workflow Definition");
+ Document document = Jaxp.readXmlDocument(blamXml);
+ Element rootElement = document.getDocumentElement();
+
+ NodeList operations = rootElement.getElementsByTagName("Operation");
+ for (int i = 0; i < operations.getLength(); i++) {
+ loadBlamOperationFromXml((Element) operations.item(i));
+ }
+
+ NodeList xwidgets = rootElement.getElementsByTagName("Widgets");
+ for (int i = 0; i < xwidgets.getLength(); i++) {
+ setLayoutData((Element) xwidgets.item(i));
+ }
+ }
+
+ public void saveLayoutData(String xml) throws ParserConfigurationException, SAXException, IOException, IllegalArgumentException, CoreException, SQLException {
+ String blamXml = getSoleAttributeValue("Workflow Definition");
+ Document document = Jaxp.readXmlDocument(blamXml);
+ Element rootElement = document.getDocumentElement();
+
+ NodeList oldXwidgets = rootElement.getElementsByTagName("Widgets");
+
+ // delete all old Xwidgets
+ for (int i = 0; i < oldXwidgets.getLength(); i++) {
+ rootElement.removeChild(oldXwidgets.item(i));
+ }
+
+ String doc = Jaxp.getDocumentXml(document);
+ doc = doc.replace("<Workflow>", "<Workflow>" + xml);
+
+ setSoleAttributeValue("Workflow Definition", doc);
+ persist();
+ }
+
+ private String getOperationsListing(IExtensionRegistry registry) {
+ StringBuilder strB = new StringBuilder(1000);
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.ui.skynet.BlamOperation");
+ IExtension[] extensions = point.getExtensions();
+
+ for (IExtension extension : extensions) {
+ strB.append("Ext Point Id: ");
+ strB.append(extension.getUniqueIdentifier());
+ strB.append('\n');
+ }
+ return strB.toString();
+ }
+
+ private void loadBlamOperationFromXml(Element operation) throws CoreException, IllegalArgumentException {
+ String operationName = operation.getAttribute("name");
+ if (operationName.equals("")) {
+ throw new IllegalArgumentException("The operation name must be specified");
+ }
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtension extension = registry.getExtension("org.eclipse.osee.framework.ui.skynet.BlamOperation", operationName);
+
+ if (extension == null) {
+ throw new IllegalArgumentException(
+ "No extension for org.eclipse.osee.framework.ui.skynet.BlamOperation with the name " + operationName + " was found.\n\n" + getOperationsListing(registry));
+ }
+
+ IConfigurationElement[] configElements = null;
+ configElements = extension.getConfigurationElements();
+ for (int j = 0; j < configElements.length; j++) {
+ BlamOperation blamOperation = (BlamOperation) configElements[j].createExecutableExtension("className");
+ operations.add(blamOperation);
+ }
+ }
+
+ public List<DynamicXWidgetLayoutData> getLayoutDatas() throws IllegalArgumentException, ParserConfigurationException, SAXException, IOException, CoreException {
+ if (layoutDatas.isEmpty()) {
+ getOperations();
+ }
+ return layoutDatas;
+ }
+
+ private void setLayoutData(Element element) throws ParserConfigurationException, SAXException, IOException {
+ layoutDatas = xWidgetParser.extractlayoutDatas(dynamicXWidgetLayout, element);
+ }
+
+ public List<BlamOperation> getOperations() throws IllegalArgumentException, ParserConfigurationException, SAXException, IOException, CoreException {
+ operations.clear();
+ loadFromXml();
+ return operations;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/DynamicBlamOperation.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/DynamicBlamOperation.java
new file mode 100644
index 00000000000..f3228f30f05
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/DynamicBlamOperation.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.rmi.activation.ActivationException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.update.core.IFeature;
+import org.eclipse.update.core.ISite;
+import org.eclipse.update.core.ISiteFeatureReference;
+import org.eclipse.update.core.SiteManager;
+import org.eclipse.update.operations.IOperationFactory;
+import org.eclipse.update.operations.OperationsManager;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class DynamicBlamOperation {
+ private Method mainMethod;
+ private BlamParameter[] parameters;
+
+ public void installAssociatedPlugin() throws MalformedURLException, CoreException {
+ IOperationFactory operationFactory = OperationsManager.getOperationFactory();
+ ISite site = SiteManager.getSite(new URL("http://www.eclipse.org/osee/"), null);
+ ISiteFeatureReference[] refs = site.getFeatureReferences();
+ IFeature feature = refs[0].getFeature(null);
+ operationFactory.createInstallOperation(site.getCurrentConfiguredSite(), feature, null, null, null);
+ }
+
+ public void init() throws ActivationException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
+ mainMethod = findMainMethod(getMainMethodName());
+
+ String[] parameterNames = getParameterNames();
+ Class<?>[] parameterTypes = mainMethod.getParameterTypes();
+ if (parameterNames.length != parameterTypes.length) {
+ throw new ActivationException(
+ "The method " + getMainMethodName() + " has " + parameterTypes.length + " parameters, but " + parameterNames.length + " parameter names.");
+ }
+
+ parameters = new BlamParameter[parameterTypes.length];
+ for (int i = 0; i < parameterTypes.length; i++) {
+ parameters[i] = new BlamParameter(parameterNames[i], parameterTypes[i], null);
+ }
+
+ }
+
+ public void executeOperation(Object[] actualParameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ mainMethod.invoke(this, actualParameters);
+ }
+
+ private Method findMainMethod(String mainMethodName) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
+ Class<? extends DynamicBlamOperation> classRep = getClass();
+ Method[] methods = classRep.getDeclaredMethods(); // get only the methods declared directly in the given class
+
+ for (Method method : methods) {
+ if (method.getName().equals(mainMethodName)) {
+ return method;
+ }
+ }
+ throw new NoSuchMethodException(mainMethodName);
+ }
+
+ /**
+ * should return user oriented names for input values in the same order that they should be passed to the operation's
+ * configured execution method
+ *
+ * @return array of parameter names
+ */
+ public abstract String[] getParameterNames();
+
+ public abstract String getMainMethodName();
+
+ public BlamParameter[] getParameters() {
+ return parameters;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEvent.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEvent.java
new file mode 100644
index 00000000000..ef112384127
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEvent.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public interface IBlamEvent {
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEventListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEventListener.java
new file mode 100644
index 00000000000..275f571f733
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/IBlamEventListener.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public interface IBlamEventListener {
+
+ public void onEvent(IBlamEvent blamEvent);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OperationsPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OperationsPage.java
new file mode 100644
index 00000000000..9b76ca65727
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OperationsPage.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class OperationsPage {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(OperationsPage.class);
+
+ public void findAllOperations() {
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.ui.skynet.BlamOperation");
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ extension.getUniqueIdentifier();
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("Renderer")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ }
+ }
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> renderClass = bundle.loadClass(classname);
+ renderClass.newInstance();
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ } catch (NoClassDefFoundError er) {
+ logger.log(Level.WARNING,
+ "Failed to find a class definition for " + classname + ", registered from bundle " + bundleName,
+ er);
+ }
+ }
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OverviewPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OverviewPage.java
new file mode 100644
index 00000000000..c3f0df0ada8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/OverviewPage.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.List;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.IHelpContextIds;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormText;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class OverviewPage extends FormPage implements IActionable, XModifiedListener {
+ private static final SkynetGuiPlugin plugin = SkynetGuiPlugin.getInstance();
+ private final BlamWorkflow workflow;
+ private final DynamicXWidgetLayout dynamicXWidgetLayout;
+ private final XFormToolkit toolkit;
+ private Composite parametersContainer;
+ private final WorkflowEditor editor;
+ private Text outputText;
+ private Section parameterSection;
+
+ public OverviewPage(WorkflowEditor editor) {
+ super(editor, "overview", "Blam Workflow");
+
+ this.editor = editor;
+ this.toolkit = editor.getToolkit();
+ this.workflow = (BlamWorkflow) editor.getEditorInput().getArtifact();
+ this.dynamicXWidgetLayout = new DynamicXWidgetLayout();
+ }
+
+ public void update(DynamicXWidgetLayout dynamicXWidgetLayout) {
+ //dispose old widgets before adding the new ones.
+ for (Control control : parametersContainer.getChildren()) {
+ control.dispose();
+ }
+
+ dynamicXWidgetLayout.createBody(toolkit, parametersContainer, null, this, true);
+ parametersContainer.layout();
+ parametersContainer.getParent().layout();
+ }
+
+ /**
+ * Loads stored DynamicXWidgetLayoutData and updates the overview page
+ *
+ * @param workflow
+ */
+ private void loadStoredLayoutData(BlamWorkflow workflow) {
+ List<DynamicXWidgetLayoutData> layoutDatas = null;
+ try {
+ layoutDatas = workflow.getLayoutDatas();
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+
+ if (layoutDatas != null && !layoutDatas.isEmpty()) {
+ dynamicXWidgetLayout.addWorkLayoutDatas(layoutDatas);
+ update(dynamicXWidgetLayout);
+ }
+ parameterSection.setExpanded(true);
+ }
+
+ protected void createFormContent(IManagedForm managedForm) {
+ ScrolledForm form = managedForm.getForm();
+ form.setText(getEditorInput().getName());
+ createToolBarActions(form);
+ form.updateToolBar();
+ fillBody(managedForm);
+
+ loadStoredLayoutData(workflow);
+
+ managedForm.refresh();
+ }
+
+ private void createToolBarActions(ScrolledForm form) {
+ Action runAction = new Action("Run Workflow in Job", Action.AS_PUSH_BUTTON) {
+ public void run() {
+ BlamJob blamJob =
+ new BlamJob(editor.getBlamVariableMap(), editor.getWorkflow(),
+ BranchPersistenceManager.getInstance().getDefaultBranch(),
+ editor.getWorkflow().getDescriptiveName());
+ blamJob.addListener(editor);
+ Jobs.startJob(blamJob);
+ }
+ };
+ runAction.setToolTipText("Starts the workflow in a platform job");
+ runAction.setImageDescriptor(plugin.getImageDescriptor("run_exc.gif"));
+ form.getToolBarManager().add(runAction);
+
+ OseeAts.addButtonToEditorToolBar(editor, this, SkynetGuiPlugin.getInstance(), form.getToolBarManager(),
+ WorkflowEditor.EDITOR_ID, "Blam Workflow Editor");
+
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ private void fillBody(IManagedForm managedForm) {
+ Composite body = managedForm.getForm().getBody();
+ GridLayout gridLayout = new GridLayout(1, true);
+ body.setLayout(gridLayout);
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(body, IHelpContextIds.MAIN_WORKFLOW_PAGE);
+
+ createUsageSection(body);
+ createParametersSection(body);
+ createOutputSection(body);
+ }
+
+ private void createUsageSection(Composite body) {
+ Section section = toolkit.createSection(body, Section.TWISTIE | Section.TITLE_BAR);
+ section.setText("Description and Usage");
+ section.setExpanded(true);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ toolkit.addHelpLinkToSection(section, "/org.eclipse.pde.doc.user/guide/pde_running.htm");
+
+ FormText formText = toolkit.createFormText(section, true);
+ formText.setWhitespaceNormalized(true);
+ formText.setFont("header", JFaceResources.getHeaderFont());
+ formText.setFont("code", JFaceResources.getTextFont());
+ formText.setText("Select parameters below and click the play button at the top right.", false, false);
+ section.setClient(formText);
+ }
+
+ private void createParametersSection(Composite body) {
+ parameterSection = toolkit.createSection(body, Section.TWISTIE | Section.TITLE_BAR);
+ parameterSection.setText("Parameters");
+ parameterSection.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ parametersContainer = toolkit.createClientContainer(parameterSection, 2);
+
+ /*
+ * for (int i = 0; i < 4; i++) { Label parameterNameLabel = toolkit.createLabel(container,
+ * "Parameter Name" + i + ":"); parameterNameLabel.setLayoutData(new GridData(SWT.FILL,
+ * SWT.TOP, false, false)); FormText formText = toolkit.createFormText(container, true);
+ * formText.setText("parameter documentation should go here which could even wrap several
+ * lines and long as it does then ", false, false); formText.setLayoutData(new
+ * GridData(SWT.FILL, SWT.FILL, true, true, 1, 2)); Text parameterValueWidget =
+ * toolkit.createText(container, "default value"); parameterValueWidget.setLayoutData(new
+ * GridData(SWT.FILL, SWT.TOP, false, false)); }
+ */
+ }
+
+ private void createOutputSection(Composite body) {
+ Section section = toolkit.createSection(body, Section.TWISTIE | Section.TITLE_BAR);
+ section.setText("Output");
+ section.setExpanded(true);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite outputContainer = toolkit.createClientContainer(section, 2);
+
+ outputText = toolkit.createText(outputContainer, "Workflow has not yet run", SWT.MULTI);
+ outputText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ }
+
+ /**
+ * @param line
+ */
+ public void appendOuputText(String additionalOutput) {
+ outputText.append(additionalOutput);
+ }
+
+ /**
+ * @param line
+ */
+ public void setOuputText(String output) {
+ outputText.setText(output);
+ }
+
+ public void widgetModified(XWidget widget) {
+ editor.getBlamVariableMap().setValue(widget.getLabel(), widget.getData());
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowDataPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowDataPage.java
new file mode 100644
index 00000000000..ddc8db62b90
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowDataPage.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.ui.skynet.IHelpContextIds;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.XWidgetParser;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.ImageHyperlink;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class WorkflowDataPage extends FormPage {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(WorkflowDataPage.class);
+ private BlamWorkflow workflow;
+ private static final SkynetGuiPlugin plugin = SkynetGuiPlugin.getInstance();
+ private final XFormToolkit toolkit;
+ private List<Text> parameters;
+ private List<Text> localVariables;
+ private final OverviewPage overviewPage;
+ private final DynamicXWidgetLayout dynamicXWidgetLayout;
+
+ public WorkflowDataPage(WorkflowEditor editor, OverviewPage overviewPage) {
+ super(editor, "overview", "Workflow Data");
+
+ this.workflow = (BlamWorkflow) editor.getEditorInput().getArtifact();
+ this.toolkit = editor.getToolkit();
+ this.parameters = new LinkedList<Text>();
+ this.localVariables = new LinkedList<Text>();
+ this.overviewPage = overviewPage;
+ this.dynamicXWidgetLayout = new DynamicXWidgetLayout();
+ }
+
+ protected void createFormContent(IManagedForm managedForm) {
+ ScrolledForm form = managedForm.getForm();
+ form.setText("Workflow Data");
+ createToolBarActions(form);
+ form.updateToolBar();
+ fillBody(managedForm);
+ managedForm.refresh();
+ }
+
+ private void createToolBarActions(final ScrolledForm form) {
+ Action runAction = new Action("Generate Workflow Overview Page", Action.AS_PUSH_BUTTON) {
+ public void run() {
+ StringBuilder strB = new StringBuilder(parameters.size() * 140);
+ strB.append("<Widgets>");
+ for (Text variableText : parameters) {
+ strB.append(variableText.getText());
+ }
+ strB.append("</Widgets>");
+ XWidgetParser widgetParser = new XWidgetParser();
+
+ String widgetXml = strB.toString();
+
+ try {
+ dynamicXWidgetLayout.addWorkLayoutDatas(widgetParser.extractWorkAttributes(dynamicXWidgetLayout,
+ widgetXml));
+ overviewPage.update(dynamicXWidgetLayout);
+
+ workflow.saveLayoutData(widgetXml);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ MessageDialog.openError(form.getShell(), "Error", ex.getLocalizedMessage());
+ }
+ }
+ };
+ runAction.setToolTipText("Generates or regenerates the workflow overview page based on the widgets defined here");
+ runAction.setImageDescriptor(plugin.getImageDescriptor("gear.gif"));
+ form.getToolBarManager().add(runAction);
+ }
+
+ private void fillBody(IManagedForm managedForm) {
+ Composite body = managedForm.getForm().getBody();
+ GridLayout gridLayout = new GridLayout(1, true);
+ body.setLayout(gridLayout);
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(body, IHelpContextIds.MAIN_WORKFLOW_PAGE);
+
+ createParametersSection(body);
+ createLocalVariablesSection(body);
+ }
+
+ private void createLocalVariablesSection(Composite body) {
+ Section section = toolkit.createSection(body, Section.TWISTIE | Section.TITLE_BAR);
+ section.setText("Local Variables");
+ section.setExpanded(true);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ toolkit.addHelpLinkToSection(section, "/org.eclipse.pde.doc.user/guide/pde_running.htm");
+
+ Composite variablesComposite = toolkit.createClientContainer(section, 2);
+ addNewVariableLinkToSection(section, variablesComposite, localVariables);
+ }
+
+ private void createParametersSection(Composite body) {
+ Section section = toolkit.createSection(body, Section.TWISTIE | Section.TITLE_BAR);
+ section.setText("Workflow Parameters");
+ section.setExpanded(true);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite variablesComposite = toolkit.createClientContainer(section, 2);
+ addNewVariableLinkToSection(section, variablesComposite, parameters);
+ }
+
+ private void addNewVariableLinkToSection(final Section section, Composite variablesComposite, List<Text> variableTexts) {
+ ImageHyperlink addLink = new ImageHyperlink(section, SWT.NULL);
+ toolkit.adapt(addLink, true, true);
+ addLink.setImage(plugin.getImage("add.gif"));
+ addLink.setBackground(section.getTitleBarGradientBackground());
+ addLink.addHyperlinkListener(new AddListener(variablesComposite, variableTexts));
+ section.setTextClient(addLink);
+ }
+
+ private class AddListener extends HyperlinkAdapter {
+ private Composite variablesComposite;
+ private List<Text> variableTexts;
+ private RemoveListener removeListener;
+
+ public AddListener(Composite variablesComposite, List<Text> variableTexts) {
+ this.variablesComposite = variablesComposite;
+ this.variableTexts = variableTexts;
+ removeListener = new RemoveListener(variableTexts);
+ }
+
+ public void linkActivated(HyperlinkEvent ev) {
+ ImageHyperlink removeLink = new ImageHyperlink(variablesComposite, SWT.NULL);
+ toolkit.adapt(removeLink, true, true);
+ removeLink.setImage(plugin.getImage("remove.gif"));
+ removeLink.addHyperlinkListener(removeListener);
+
+ Text variableWidget =
+ toolkit.createText(variablesComposite,
+ "<XWidget xwidgetType=\"XListDropViewer\" displayName=\"Get This\" />");
+ removeLink.setData(variableWidget);
+ variableTexts.add(variableWidget);
+ variableWidget.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ variablesComposite.getParent().getParent().layout();
+ }
+ }
+
+ private class RemoveListener extends HyperlinkAdapter {
+ private List<Text> variableTexts;
+
+ public RemoveListener(List<Text> variableTexts) {
+ this.variableTexts = variableTexts;
+ }
+
+ public void linkActivated(HyperlinkEvent ev) {
+ ImageHyperlink removeLink = (ImageHyperlink) ev.widget;
+ Text variableWidget = (Text) removeLink.getData();
+
+ GridData gridData = ((GridData) variableWidget.getLayoutData());
+ gridData.exclude = true;
+ variableWidget.setVisible(false);
+ variableTexts.remove(variableWidget);
+
+ gridData = ((GridData) removeLink.getLayoutData());
+ gridData.exclude = true;
+ removeLink.setVisible(false);
+ removeLink.getParent().getParent().getParent().layout();
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowEditor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowEditor.java
new file mode 100644
index 00000000000..98bf60a7de3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowEditor.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.AbstractArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditorInput;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class WorkflowEditor extends AbstractArtifactEditor implements IBlamEventListener {
+ public static final String EDITOR_ID = "org.eclipse.osee.framework.ui.skynet.blam.WorkflowEditor";
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(WorkflowEditor.class);
+ private OverviewPage overviewPage;
+ private List<XWidget> widgets;
+ private BlamVariableMap blamVariableMap;
+
+ @Override
+ protected void addPages() {
+ try {
+ overviewPage = new OverviewPage(this);
+ addPage(overviewPage);
+ addPage(new WorkflowDataPage(this, overviewPage));
+ } catch (PartInitException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ public void appendOuputText(String additionalOutput) {
+ overviewPage.appendOuputText(additionalOutput);
+ }
+
+ private void setOutputText(final String output) {
+ Displays.ensureInDisplayThread(new Runnable() {
+
+ public void run() {
+ overviewPage.setOuputText(output);
+ }
+
+ });
+ }
+
+ public BlamWorkflow getWorkflow() {
+ return (BlamWorkflow) getEditorInput().getArtifact();
+ }
+
+ /**
+ * artifact must be of type Workflow. The paramter type is artifact to allow this method to have the same signature
+ * as the corresponding method in ArtifactExloper in the hope on day this will use a common interface
+ *
+ * @param artifact
+ * @throws PartInitException
+ */
+ public static void editArtifact(final Artifact artifact) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ try {
+ AWorkbench.getActivePage().openEditor(new ArtifactEditorInput(artifact), EDITOR_ID);
+ } catch (PartInitException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ });
+ }
+
+ /**
+ * @return the widgets
+ */
+ public List<XWidget> getWidgets() {
+ return widgets;
+ }
+
+ public void onEvent(IBlamEvent blamEvent) {
+
+ if (blamEvent instanceof BlamStartedEvent) {
+ BlamStartedEvent blamStartEvent = (BlamStartedEvent) blamEvent;
+ setOutputText("Starting workflow at " + blamStartEvent.getDate());
+
+ } else if (blamEvent instanceof BlamFinishedEvent) {
+ BlamFinishedEvent blamFinishedEvent = (BlamFinishedEvent) blamEvent;
+ setOutputText("Workflow completed in " + (blamFinishedEvent.getDurationMillis() / 1000) + " secs");
+ }
+ }
+
+ @Override
+ protected void setInput(IEditorInput input) {
+ super.setInput(input);
+
+ blamVariableMap = new BlamVariableMap();
+ }
+
+ /**
+ * @return the blamVariableMap
+ */
+ protected BlamVariableMap getBlamVariableMap() {
+ return blamVariableMap;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowJob.java
new file mode 100644
index 00000000000..2f2844e3b03
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/WorkflowJob.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class WorkflowJob extends Job {
+
+ /**
+ * @param name
+ */
+ public WorkflowJob(String name) {
+ super(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+
+ } catch (Exception ex) {
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, Status.OK, ex.getMessage(), ex);
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/AddTemplate.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/AddTemplate.java
new file mode 100644
index 00000000000..d0d285b4fa1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/AddTemplate.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.render.WordRenderer;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class AddTemplate implements BlamOperation {
+
+ /**
+ * <XWidget xwidgetType="XText" displayName="presentationType" /> PREVIEW <XWidget xwidgetType="XText"
+ * displayName="bundleName" /> org.eclipse.osee.framework.ui.skynet <XWidget xwidgetType="XText"
+ * displayName="templateName" /> My Template <XWidget xwidgetType="XText" displayName="templatePath" />
+ * support/templates/My_Template.xml
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap,
+ * org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+
+ String presentationType = variableMap.getString("presentationType");
+ String bundleName = variableMap.getString("bundleName");
+ String templateName = variableMap.getString("templateName");
+ String templatePath = variableMap.getString("templatePath");
+
+ WordRenderer wordRenderer =
+ (WordRenderer) RendererManager.getInstance().getRendererById("org.eclipse.osee.framework.ui.skynet.word");
+ wordRenderer.addTemplate(PresentationType.valueOf(presentationType), bundleName, templateName, templatePath,
+ branch);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/BlamOperation.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/BlamOperation.java
new file mode 100644
index 00000000000..dffb097f1c3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/BlamOperation.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public interface BlamOperation {
+
+ public abstract void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception;
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteArchivedBranches.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteArchivedBranches.java
new file mode 100644
index 00000000000..6005bdf3a22
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteArchivedBranches.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class DeleteArchivedBranches implements BlamOperation {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ BranchPersistenceManager.getInstance().deleteArchivedBranches();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteErroneousTagsFromWorkingBranches.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteErroneousTagsFromWorkingBranches.java
new file mode 100644
index 00000000000..aa4ca9af138
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteErroneousTagsFromWorkingBranches.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.sql.SQL3DataType;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class DeleteErroneousTagsFromWorkingBranches implements BlamOperation {
+ public static final String DELETE_ERRONEOUS_TAGS =
+ "Delete FROM osee_tag_art_map tam1 WHERE tam1.branch_id = ? AND NOT EXISTS (SELECT * FROM osee_define_tx_details txd1, osee_define_txs txs2, osee_define_artifact_version arv3 WHERE txd1.branch_id = ? AND txd1.transaction_id = txs2.transaction_id AND txs2.tx_type <> -4 AND txs2.gamma_id = arv3.gamma_id AND arv3.art_id = tam1.art_id)";
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branchIgnoreMe, IProgressMonitor monitor) throws Exception {
+ BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+
+ for (Branch branch : branchManager.getBranches()) {
+ if (branch.hasParentBranch()) {
+ ConnectionHandler.runPreparedUpdate(DELETE_ERRONEOUS_TAGS, SQL3DataType.INTEGER, branch.getBranchId(),
+ SQL3DataType.INTEGER, branch.getBranchId());
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteSelectedAttributes.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteSelectedAttributes.java
new file mode 100644
index 00000000000..6e0fa8a1fe9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteSelectedAttributes.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class DeleteSelectedAttributes implements BlamOperation {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ // <XWidget xwidgetType="XListDropViewer" displayName="artifacts" />
+ // <XWidget xwidgetType="XAttributeTypeListViewer" displayName="AttributeTypeDescriptor" />
+
+ List<Artifact> artifacts = variableMap.getArtifacts("artifacts");
+ DynamicAttributeDescriptor attributeDescriptor = variableMap.getAttributeDescriptor("AttributeTypeDescriptor");
+
+ monitor.beginTask("Delete Unspecified Partitions", IProgressMonitor.UNKNOWN);
+
+ for (Artifact artifact : artifacts) {
+ Collection<Attribute> attributes = artifact.getAttributeManager(attributeDescriptor).getAttributes();
+
+ if (attributes.size() > 1) {
+ for (Attribute attribute : attributes) {
+ if (attribute.getStringData().equals("Unspecified")) {
+ System.out.println(artifact.getDescriptiveName());
+ attribute.delete();
+ }
+ }
+ }
+ }
+ monitor.done();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteTransaction.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteTransaction.java
new file mode 100644
index 00000000000..3b080cb7fc9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/DeleteTransaction.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class DeleteTransaction implements BlamOperation {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ int[] transactionIds = new int[] {20813, 20814};
+
+ for (int transacionId : transactionIds) {
+
+ branchManager.deleteTransaction(transacionId);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/FindInvalidUTF8Chars.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/FindInvalidUTF8Chars.java
new file mode 100644
index 00000000000..ece4172db52
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/FindInvalidUTF8Chars.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ATTRIBUTE_VERSION_TABLE;
+import java.sql.ResultSet;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandlerStatement;
+import org.eclipse.osee.framework.ui.plugin.util.db.DbUtil;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class FindInvalidUTF8Chars implements BlamOperation {
+ private static final String READ_ATTRIBUTE_VALUES = "SELECT art_id, value FROM " + ATTRIBUTE_VERSION_TABLE;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+
+ int count = 0;
+ ConnectionHandlerStatement chStmt = null;
+ try {
+ chStmt = ConnectionHandler.runPreparedQuery(1000, READ_ATTRIBUTE_VALUES);
+ ResultSet rSet = chStmt.getRset();
+ while (chStmt.next()) {
+ String value = rSet.getString("value");
+ if (value != null) {
+ count++;
+ int length = value.length();
+ for (int i = 0; i < length; i++) {
+ char c = value.charAt(i);
+ // based on http://www.w3.org/TR/2006/REC-xml-20060816/#charsets
+ if ((c < 0x20 && c != 0x9 && c != 0xA && c != 0xD) || (c > 0xD7FF && c < 0xE000) || (c > 0xFFFD && c < 0x10000) || c > 0x10FFFF) {
+ System.out.println("artifact id: " + rSet.getInt("art_id") + " char: " + (int) c);
+ }
+ }
+ }
+ }
+ } finally {
+ DbUtil.close(chStmt);
+ System.out.println("count: " + count);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PrintBranchInfo.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PrintBranchInfo.java
new file mode 100644
index 00000000000..7b02124899a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PrintBranchInfo.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class PrintBranchInfo implements BlamOperation {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+
+ for (Branch branch1 : branchManager.getBranches()) {
+ System.out.print(branch1.getBranchName());
+ System.out.print(", ");
+ System.out.print(branch1.getBranchId());
+ System.out.print(", ");
+ System.out.println(artifactManager.getArtifactFromId(branch1.getAuthorId(), branchManager.getCommonBranch()).getDescriptiveName());
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PurgeArtifactType.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PurgeArtifactType.java
new file mode 100644
index 00000000000..9ed0b752df0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PurgeArtifactType.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import java.sql.ResultSet;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.ui.plugin.sql.SQL3DataType;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandlerStatement;
+import org.eclipse.osee.framework.ui.plugin.util.db.DbUtil;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.Table;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class PurgeArtifactType implements BlamOperation {
+ public static final String DELETE_VALID_REL_GAMMAS =
+ "delete from osee_define_txs txs3 where exists (select * from osee_define_valid_relations vrl1, osee_define_txs txs2 where vrl1.art_type_id = ? and vrl1.gamma_id = txs2.gamma_id AND txs2.gamma_id = txs3.gamma_id)";
+ public static final String DELETE_VALID_ATTRIBUTE_GAMMAS =
+ "delete from osee_define_txs txs3 where exists (select * from osee_define_valid_attributes vat1, osee_define_txs txs2 where vat1.art_type_id = ? and vat1.gamma_id = txs2.gamma_id AND txs2.gamma_id = txs3.gamma_id)";
+ public static final String DELETE_VALID_REL = "delete from osee_define_valid_relations where art_type_id = ?";
+ public static final String DELETE_VALID_ATTRIBUTE = "delete from osee_define_valid_attributes where art_type_id = ?";
+ public static final String COUNT_ARTIFACT_OCCURRENCE =
+ "select " + Table.alias("count(*)", "artCount") + " from osee_define_artifact where art_type_id = ?";
+ public static final String DELETE_ARIFACT_TYPE_GAMMAS =
+ "delete from osee_define_txs txs3 where exists (select * from osee_define_artifact_type ary1, osee_define_txs txs2 where ary1.art_type_id = ? and ary1.gamma_id = txs2.gamma_id AND txs2.gamma_id = txs3.gamma_id)";
+ public static final String DELETE_ARIFACT_TYPE = "delete from osee_define_artifact_type where art_type_id = ?";
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branchIgnoreMe, IProgressMonitor monitor) throws Exception {
+ // <XWidget xwidgetType="XArtifactTypeListViewer" displayName="Artifact Type" />
+
+ ArtifactSubtypeDescriptor artType = variableMap.getArtifactSubtypeDescriptor("Artifact Type");
+ int artTypeId = artType.getArtTypeId();
+
+ ConnectionHandlerStatement chStmt = null;
+
+ try {
+ chStmt = ConnectionHandler.runPreparedQuery(COUNT_ARTIFACT_OCCURRENCE, SQL3DataType.INTEGER, artTypeId);
+ ResultSet rSet = chStmt.getRset();
+ if (rSet.next() && rSet.getInt("artCount") != 0) {
+ throw new IllegalArgumentException(
+ "Can not delete artifact type " + artType.getName() + " because there are " + rSet.getInt("artCount") + " existing artifacts of this type.");
+ }
+ } finally {
+ DbUtil.close(chStmt);
+ }
+
+ ConnectionHandler.runPreparedUpdate(DELETE_VALID_REL_GAMMAS, SQL3DataType.INTEGER, artTypeId);
+ ConnectionHandler.runPreparedUpdate(DELETE_VALID_ATTRIBUTE_GAMMAS, SQL3DataType.INTEGER, artTypeId);
+ ConnectionHandler.runPreparedUpdate(DELETE_VALID_REL, SQL3DataType.INTEGER, artTypeId);
+ ConnectionHandler.runPreparedUpdate(DELETE_VALID_ATTRIBUTE, SQL3DataType.INTEGER, artTypeId);
+ ConnectionHandler.runPreparedUpdate(DELETE_ARIFACT_TYPE_GAMMAS, SQL3DataType.INTEGER, artTypeId);
+ ConnectionHandler.runPreparedUpdate(DELETE_ARIFACT_TYPE, SQL3DataType.INTEGER, artTypeId);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/RecursiveSaveOp.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/RecursiveSaveOp.java
new file mode 100644
index 00000000000..353ebbb077c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/RecursiveSaveOp.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class RecursiveSaveOp implements BlamOperation {
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ Artifact root = artifactManager.getDefaultHierarchyRootArtifact(branch);
+ root.getChild("System Requirements").persist(true);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/TagAllItems.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/TagAllItems.java
new file mode 100644
index 00000000000..b81d1961c3b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/TagAllItems.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactHasStaleTags;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactTypeSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.Operator;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.tagging.TagManager;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class TagAllItems implements BlamOperation {
+
+ public void runOperation(BlamVariableMap variableMap, Branch blamOperationBranch, IProgressMonitor monitor) throws Exception {
+ try {
+ Branch branch = (Branch) variableMap.getValue("Branch");
+
+ monitor.setTaskName("Loading Artifact Type Descriptors");
+ Collection<ArtifactSubtypeDescriptor> descriptors =
+ ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptors(branch);
+
+ monitor.beginTask("Tagging Artifacts", descriptors.size());
+
+ ArrayList<ISearchPrimitive> criteria = new ArrayList<ISearchPrimitive>(2);
+ criteria.add(new ArtifactHasStaleTags());
+
+ Collection<Artifact> staleArtifacts;
+ ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ TagManager tagManager = TagManager.getInstance();
+ int count, total;
+
+ for (ArtifactSubtypeDescriptor descriptor : descriptors) {
+ monitor.subTask("Loading stale " + descriptor.getName() + " artifacts");
+ criteria.set(1, new ArtifactTypeSearch(descriptor.getName(), Operator.EQUAL));
+ staleArtifacts = artifactManager.getArtifacts(criteria, true, branch);
+
+ count = 0;
+ total = staleArtifacts.size();
+ for (Artifact artifact : staleArtifacts) {
+ monitor.subTask("Tagging " + descriptor.getName() + " artifact " + ++count + " of " + total);
+ tagManager.autoTag(true, artifact);
+ monitor.worked(1);
+ if (monitor.isCanceled()) return;
+ }
+ }
+ } finally {
+ monitor.done();
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java
new file mode 100644
index 00000000000..b25f3f28ecb
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import java.sql.ResultSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandlerStatement;
+import org.eclipse.osee.framework.ui.plugin.util.db.DbUtil;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UniqueNumberOfCurrentOseeUsers implements BlamOperation {
+ private static final String SELECT_USER_COUNT =
+ "select count(*) from v$session t1 where t1.username='OSEE_CLIENT' and not exists (select null from v$session t2 where t1.machine=t2.machine and t2.sid < t1.sid)";
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(UniqueNumberOfCurrentOseeUsers.class);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+
+ /**
+ * must be connected using a admin schema
+ */
+ // removeColonFromActionNames
+ monitor.beginTask("Counting Users", IProgressMonitor.UNKNOWN);
+
+ ConnectionHandlerStatement chStmt = null;
+ try {
+ chStmt = ConnectionHandler.runPreparedQuery(SELECT_USER_COUNT);
+ ResultSet rSet = chStmt.getRset();
+ if (rSet.next()) {
+ logger.log(Level.INFO, "active user count: " + rSet.getInt("user_count"));
+ }
+ } finally {
+ DbUtil.close(chStmt);
+ }
+ monitor.done();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateAttributeValues.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateAttributeValues.java
new file mode 100644
index 00000000000..9822285b0e9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateAttributeValues.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UpdateAttributeValues implements BlamOperation {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ // <XWidget xwidgetType="XListDropViewer" displayName="artifacts" />
+ // <XWidget xwidgetType="XAttributeTypeListViewer" displayName="AttributeTypeDescriptor" />
+ // <XWidget xwidgetType="XText" displayName="newValue" />
+
+ List<Artifact> artifacts = variableMap.getArtifacts("artifacts");
+ DynamicAttributeDescriptor attributeDescriptor = variableMap.getAttributeDescriptor("AttributeTypeDescriptor");
+ String newValue = variableMap.getString("newValue");
+
+ monitor.beginTask("Update Attribute Values", IProgressMonitor.UNKNOWN);
+
+ for (Artifact artifact : artifacts) {
+ Collection<Attribute> attributes = artifact.getAttributeManager(attributeDescriptor).getAttributes();
+ for (Attribute attribute : attributes) {
+ attribute.setStringData(newValue);
+ }
+ artifact.persist();
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateFromParentBranch.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateFromParentBranch.java
new file mode 100644
index 00000000000..ba56010c7d6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateFromParentBranch.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ARTIFACT_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ARTIFACT_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ATTRIBUTE_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.RELATION_LINK_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.TRANSACTIONS_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.TRANSACTION_DETAIL_TABLE;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionType;
+import org.eclipse.osee.framework.ui.plugin.sql.SQL3DataType;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.LocalAliasTable;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UpdateFromParentBranch implements BlamOperation {
+ // private static final String SELECT_USER_COUNT = "select count(*) from v$session t1 where t1.username='OSEE_CLIENT' and not exists (select null from v$session t2 where t1.machine=t2.machine and t2.sid < t1.sid)";
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(UpdateFromParentBranch.class);
+
+ private static final LocalAliasTable ARTIFACT_VERSION_ALIAS_1 = new LocalAliasTable(ARTIFACT_VERSION_TABLE, "t1");
+ private static final LocalAliasTable ARTIFACT_VERSION_ALIAS_2 = new LocalAliasTable(ARTIFACT_VERSION_TABLE, "t2");
+
+ private static final LocalAliasTable ATTRIBUTE_ALIAS_1 = new LocalAliasTable(ATTRIBUTE_VERSION_TABLE, "t3");
+ private static final LocalAliasTable ATTRIBUTE_ALIAS_2 = new LocalAliasTable(ATTRIBUTE_VERSION_TABLE, "t4");
+
+ private static final LocalAliasTable LINK_ALIAS_1 = new LocalAliasTable(RELATION_LINK_VERSION_TABLE, "t9");
+ private static final LocalAliasTable LINK_ALIAS_2 = new LocalAliasTable(RELATION_LINK_VERSION_TABLE, "t10");
+
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ // <XWidget xwidgetType="XListDropViewer" displayName="artifacts" />
+ // <XWidget xwidgetType="XText" displayName="childBranchName" />
+
+ monitor.beginTask("Update From Parent Branch", IProgressMonitor.UNKNOWN);
+
+ List<Artifact> artifacts = variableMap.getArtifacts("Parent Branch Artifacts to update to Child Branch");
+ String childBranchName = variableMap.getString("Child Branch Name");
+ Branch childBranch = BranchPersistenceManager.getInstance().getBranch(childBranchName);
+
+ int baselineTransactionNumber =
+ transactionIdManager.getStartEndPoint(childBranch).getKey().getTransactionNumber();
+
+ Collection<Integer> artIdBlock = new ArrayList<Integer>(1000);
+ for (Artifact artifact : artifacts) {
+ artIdBlock.add(artifact.getArtId());
+ }
+
+ Branch parentBranch = childBranch.getParentBranch();
+ TransactionId parentTransactionId = transactionIdManager.getEditableTransactionId(parentBranch);
+ int parentTransactionNumber = parentTransactionId.getTransactionNumber();
+ int parentBranchId = childBranch.getParentBranch().getBranchId();
+
+ String INSERT_UPDATED_ARTIFACTS =
+ "INSERT INTO " + TRANSACTIONS_TABLE + "(transaction_id, gamma_id, tx_type) " + "SELECT ?, " + ARTIFACT_VERSION_ALIAS_1.column("gamma_id") + ", ?" + " FROM " + ARTIFACT_TABLE + " , " + ARTIFACT_VERSION_ALIAS_1 + "," + TRANSACTIONS_TABLE + " WHERE " + ARTIFACT_TABLE.column("art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + " AND " + ARTIFACT_TABLE.column("art_id") + " = " + ARTIFACT_VERSION_ALIAS_1.column("art_id") + " AND " + ARTIFACT_VERSION_ALIAS_1.column("gamma_id") + " = " + TRANSACTIONS_TABLE.column("gamma_id") + " AND " + TRANSACTIONS_TABLE.column("transaction_id") + "=" + "(SELECT " + TRANSACTION_DETAIL_TABLE.max("transaction_id") + " FROM " + ARTIFACT_VERSION_ALIAS_2 + "," + TRANSACTIONS_TABLE + "," + TRANSACTION_DETAIL_TABLE + " WHERE " + ARTIFACT_VERSION_ALIAS_1.column("art_id") + " = " + ARTIFACT_VERSION_ALIAS_2.column("art_id") + " AND " + ARTIFACT_VERSION_ALIAS_2.column("gamma_id") + " = " + TRANSACTIONS_TABLE.column("gamma_id") + " AND " + TRANSACTIONS_TABLE.column("transaction_id") + "=" + TRANSACTION_DETAIL_TABLE.column("transaction_id") + " AND " + TRANSACTION_DETAIL_TABLE.column("transaction_id") + "<=?" + " AND " + TRANSACTION_DETAIL_TABLE.column("branch_id") + "=?)";
+
+ String INSERT_UPDATED_ATTRIBUTES_GAMMAS =
+ "INSERT INTO " + TRANSACTIONS_TABLE + "(transaction_id, gamma_id, tx_type) " + "SELECT ?, " + ATTRIBUTE_ALIAS_1.columns("gamma_id") + ", ?" + " FROM " + TRANSACTIONS_TABLE + "," + ATTRIBUTE_ALIAS_1 + " WHERE " + ATTRIBUTE_ALIAS_1.column("art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + " AND " + ATTRIBUTE_ALIAS_1.column("gamma_id") + " = " + TRANSACTIONS_TABLE.column("gamma_id") + " AND " + TRANSACTIONS_TABLE.column("transaction_id") + "=" + "(SELECT " + TRANSACTION_DETAIL_TABLE.max("transaction_id") + " FROM " + ATTRIBUTE_ALIAS_2 + "," + TRANSACTIONS_TABLE + "," + TRANSACTION_DETAIL_TABLE + " WHERE " + ATTRIBUTE_ALIAS_1.column("attr_id") + " = " + ATTRIBUTE_ALIAS_2.column("attr_id") + " AND " + ATTRIBUTE_ALIAS_2.column("gamma_id") + " = " + TRANSACTIONS_TABLE.column("gamma_id") + " AND " + TRANSACTIONS_TABLE.column("transaction_id") + "=" + TRANSACTION_DETAIL_TABLE.column("transaction_id") + " AND " + TRANSACTION_DETAIL_TABLE.column("transaction_id") + "<=?" + " AND " + TRANSACTION_DETAIL_TABLE.column("branch_id") + "=?)";
+
+ String INSERT_UPDATED_LINKS_GAMMAS =
+ "INSERT INTO " + TRANSACTIONS_TABLE + "(transaction_id, gamma_id, tx_type) " + "SELECT ?, " + LINK_ALIAS_1.columns("gamma_id") + ", ?" + " FROM " + TRANSACTIONS_TABLE + "," + LINK_ALIAS_1 + " WHERE (" + LINK_ALIAS_1.column("a_art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + " OR " + LINK_ALIAS_1.column("b_art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + ") AND " + LINK_ALIAS_1.column("gamma_id") + " = " + TRANSACTIONS_TABLE.column("gamma_id") + " AND " + TRANSACTIONS_TABLE.column("transaction_id") + "=" + "(SELECT " + TRANSACTION_DETAIL_TABLE.max("transaction_id") + " FROM " + LINK_ALIAS_2 + "," + TRANSACTIONS_TABLE + "," + TRANSACTION_DETAIL_TABLE + " WHERE " + LINK_ALIAS_1.column("rel_link_id") + " = " + LINK_ALIAS_2.column("rel_link_id") + " AND " + LINK_ALIAS_2.column("gamma_id") + " = " + TRANSACTIONS_TABLE.column("gamma_id") + " AND " + TRANSACTIONS_TABLE.column("transaction_id") + "=" + TRANSACTION_DETAIL_TABLE.column("transaction_id") + " AND " + TRANSACTION_DETAIL_TABLE.column("transaction_id") + "<=?" + " AND " + TRANSACTION_DETAIL_TABLE.column("branch_id") + "=?)";
+
+ String DELETE_GAMMAS_FOR_UPDATES =
+ "DELETE FROM " + TRANSACTIONS_TABLE + " WHERE " + TRANSACTIONS_TABLE.column("transaction_id") + " = ? AND " + TRANSACTIONS_TABLE.column("gamma_id") + " IN " + "(SELECT " + RELATION_LINK_VERSION_TABLE.column("gamma_id") + " FROM " + RELATION_LINK_VERSION_TABLE + " WHERE " + RELATION_LINK_VERSION_TABLE.column("a_art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + " OR " + RELATION_LINK_VERSION_TABLE.column("b_art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + " UNION " + "SELECT " + ATTRIBUTE_VERSION_TABLE.columns("gamma_id") + " FROM " + ATTRIBUTE_VERSION_TABLE + " WHERE " + ATTRIBUTE_VERSION_TABLE.column("art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + " UNION " + "SELECT " + ARTIFACT_VERSION_TABLE.columns("gamma_id") + " FROM " + ARTIFACT_VERSION_TABLE + " WHERE " + ARTIFACT_VERSION_TABLE.column("art_id") + " IN " + Collections.toString(
+ artIdBlock, "(", ",", ")") + ")";
+
+ int count =
+ ConnectionHandler.runPreparedUpdateReturnCount(DELETE_GAMMAS_FOR_UPDATES, SQL3DataType.INTEGER,
+ baselineTransactionNumber);
+ logger.log(Level.INFO, "deleted " + count + " gammas");
+
+ count =
+ ConnectionHandler.runPreparedUpdateReturnCount(INSERT_UPDATED_ARTIFACTS, SQL3DataType.INTEGER,
+ baselineTransactionNumber, SQL3DataType.INTEGER, TransactionType.BRANCHED.getId(),
+ SQL3DataType.INTEGER, parentTransactionNumber, SQL3DataType.INTEGER, parentBranchId);
+ logger.log(Level.INFO, "inserted " + count + " artifacts");
+
+ count =
+ ConnectionHandler.runPreparedUpdateReturnCount(INSERT_UPDATED_ATTRIBUTES_GAMMAS, SQL3DataType.INTEGER,
+ baselineTransactionNumber, SQL3DataType.INTEGER, TransactionType.BRANCHED.getId(),
+ SQL3DataType.INTEGER, parentTransactionNumber, SQL3DataType.INTEGER, parentBranchId);
+ logger.log(Level.INFO, "inserted " + count + " attributes");
+
+ count =
+ ConnectionHandler.runPreparedUpdateReturnCount(INSERT_UPDATED_LINKS_GAMMAS, SQL3DataType.INTEGER,
+ baselineTransactionNumber, SQL3DataType.INTEGER, TransactionType.BRANCHED.getId(),
+ SQL3DataType.INTEGER, parentTransactionNumber, SQL3DataType.INTEGER, parentBranchId);
+ logger.log(Level.INFO, "inserted " + count + " relations");
+
+ monitor.done();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateTemplates.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateTemplates.java
new file mode 100644
index 00000000000..77df768a6f9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UpdateTemplates.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.blam.operation;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.render.WordRenderer;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UpdateTemplates implements BlamOperation {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.blam.operation.BlamOperation#runOperation(org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, org.eclipse.osee.framework.skynet.core.artifact.Branch)
+ */
+ public void runOperation(BlamVariableMap variableMap, Branch branch, IProgressMonitor monitor) throws Exception {
+ WordRenderer wordRenderer =
+ (WordRenderer) RendererManager.getInstance().getRendererById("org.eclipse.osee.framework.ui.skynet.word");
+
+ monitor.beginTask("Update Templates", PresentationType.values().length);
+ for (PresentationType presentationType : PresentationType.values()) {
+ wordRenderer.setDefaultTemplates(null, presentationType, branch);
+ monitor.worked(1);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchContentProvider.java
new file mode 100644
index 00000000000..401e0770560
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchContentProvider.java
@@ -0,0 +1,456 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.DELETE;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SnapshotPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactChangeListener;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ConflictingArtifactSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactNameDescriptorCache;
+import org.eclipse.osee.framework.skynet.core.revision.AttributeChange;
+import org.eclipse.osee.framework.skynet.core.revision.AttributeSummary;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeSummary;
+import org.eclipse.osee.framework.skynet.core.revision.RelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.RelationLinkSummary;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.plugin.util.JobbedNode;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.ChangeType;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase;
+import org.eclipse.osee.framework.ui.swt.IContentProviderRunnable;
+import org.eclipse.osee.framework.ui.swt.ITreeNode;
+import org.eclipse.osee.framework.ui.swt.TreeNode;
+
+/**
+ * @author Jeff C. Phillips
+ * @author Robert A. Fisher
+ */
+public class BranchContentProvider implements ITreeContentProvider, ArtifactChangeListener {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchContentProvider.class);
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final SnapshotPersistenceManager snapshotManager = SnapshotPersistenceManager.getInstance();
+ private static final RevisionManager revisionManager = RevisionManager.getInstance();
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+ private static final Object[] EMPTY_ARRAY = new Object[0];
+ private static final String EMPTY_REPORT = "No changes";
+ private static final Object[] EMPTY_REPORT_CHILDREN = new Object[] {EMPTY_REPORT};
+ private static final String NAMESPACE = "Branch Change Reports";
+
+ private static ArtifactNameDescriptorCache artifactNameDescriptorCache = new ArtifactNameDescriptorCache();
+ private JobbedNode root;
+ private IContentProviderRunnable providerRunnable;
+ private boolean showChildBranchesAtMainLevel;
+ private boolean showChildBranchesUnderParents;
+ private boolean showTransactions;
+
+ // private boolean myHideTransactions = false;
+
+ public BranchContentProvider() {
+ this.providerRunnable = new ChildrenRunnable();
+ this.root = null;
+ this.showChildBranchesAtMainLevel = false;
+ this.showChildBranchesUnderParents = true;
+ }
+
+ /**
+ * @return Returns the children of the parent element or null if there are none.
+ */
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof ITreeNode)
+ return ((ITreeNode) parentElement).getChildren();
+ else
+ return EMPTY_ARRAY;
+ }
+
+ /**
+ * @return Returns the elements.
+ */
+ public Object[] getElements(Object inputElement) {
+ return root.getChildren();
+ }
+
+ public void setShowTransactions(boolean showTransactions) {
+ this.showTransactions = showTransactions;
+ }
+
+ private final class ChildrenRunnable implements IContentProviderRunnable {
+
+ @SuppressWarnings("unchecked")
+ public Object[] run(Object parentElement) throws Exception {
+ if (parentElement instanceof BranchPersistenceManager) {
+ BranchPersistenceManager branchManager = (BranchPersistenceManager) parentElement;
+ try {
+ Collection<Branch> branches = branchManager.refreshBranches();
+ if (!showChildBranchesAtMainLevel) {
+ Iterator<Branch> iter = branches.iterator();
+ while (iter.hasNext()) {
+ if (iter.next().getParentBranch() != null) {
+ iter.remove();
+ }
+ }
+ }
+ return branches.toArray();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ } else if (parentElement instanceof Branch) {
+ Branch branch = (Branch) parentElement;
+ if (showChildBranchesUnderParents) {
+ List<Object> items = new LinkedList<Object>();
+ items.addAll(branch.getChildBranches());
+ items.addAll(getTransactions(branch));
+ return items.toArray();
+ } else {
+ return getTransactions(branch).toArray();
+ }
+ } else if (parentElement instanceof TransactionData) {
+ TransactionId tranId = ((TransactionData) parentElement).getTransactionId();
+ return getArtifactChanges(null, tranId, tranId);
+ } else if (parentElement instanceof Pair) {
+ Pair pair = (Pair) parentElement;
+ if (pair.getKey() instanceof TransactionId && pair.getValue() instanceof TransactionId) {
+ return getArtifactChanges(null, (TransactionId) pair.getKey(), (TransactionId) pair.getValue());
+ }
+ } else if (parentElement instanceof ChangeReportInput) {
+ ChangeReportInput input = (ChangeReportInput) parentElement;
+ return handleBranchChangeReportRequest(input);
+ } else if (parentElement instanceof ArtifactChange) {
+ ArtifactChange change = (ArtifactChange) parentElement;
+ if (change.getModType() != DELETE) {
+ return summarize(revisionManager.getTransactionChanges(change, artifactNameDescriptorCache)).toArray();
+ }
+ } else if (parentElement instanceof ChangeSummary) {
+ ChangeSummary change = (ChangeSummary) parentElement;
+ return change.getChanges().toArray();
+ } else if (parentElement instanceof Collection) {
+ Collection collection = (Collection) parentElement;
+ return collection.toArray();
+ }
+ return EMPTY_ARRAY;
+ }
+
+ private Collection<Object> getTransactions(Branch branch) {
+ if (!showTransactions) return Collections.emptyList();
+ List<TransactionData> transactions = revisionManager.getTransactionsPerBranch(branch);
+ Collections.sort(transactions, new Comparator<TransactionData>() {
+ public int compare(TransactionData o1, TransactionData o2) {
+ return o1.getTransactionNumber() - o2.getTransactionNumber();
+ }
+ });
+ if (transactions != null) {
+ return org.eclipse.osee.framework.jdk.core.util.Collections.getAggregateTree(new ArrayList<Object>(
+ transactions), 100);
+ } else {
+ return Collections.emptyList();
+ }
+ }
+ }
+
+ // This is synchronized so that successive calls to refresh will result in just one refresh. This
+ // will happen since
+ // the first job will shut off the forceRefresh flag on the input before the other jobs come in,
+ // so they will just
+ // use the snapshot that the first concurrently running job produced.
+ @SuppressWarnings("unchecked")
+ private synchronized Object[] handleBranchChangeReportRequest(ChangeReportInput input) throws SQLException {
+ String key = calculateKey(input);
+ Object[] changeReport = null;
+ Date changeTime = null;
+ Pair<Object, Date> snapshotData = null;
+ Pair<ChangeReportInput, Object[]> reportData;
+ ChangeReportInput oldInput = null;
+
+ try {
+ if (!input.isForceRefresh()) {
+ snapshotData = snapshotManager.getSnapshot(NAMESPACE, key);
+ }
+
+ // Check that the snapshot is the correct format, inherently performs null checking via
+ // instanceof
+ if (!(snapshotData instanceof Pair && snapshotData.getKey() instanceof Pair && ((Pair) snapshotData.getKey()).getKey() instanceof ChangeReportInput && ((Pair) snapshotData.getKey()).getValue() instanceof Object[])) {
+ changeReport = computeChangeReport(input);
+
+ snapshotManager.persistSnapshot(NAMESPACE, key, new Pair<ChangeReportInput, Object[]>(input, changeReport));
+
+ changeTime = new Date();
+ input.setForceRefresh(false);
+ oldInput = input;
+ } else {
+ reportData = (Pair<ChangeReportInput, Object[]>) snapshotData.getKey();
+ changeReport = reportData.getValue();
+ changeTime = snapshotData.getValue();
+ oldInput = reportData.getKey();
+ }
+
+ ITreeNode node = new TreeNode(new SnapshotDescription(oldInput, input, changeTime));
+ node.setChildren(changeReport);
+ changeReport = new Object[] {node};
+ } catch (IllegalArgumentException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+
+ return changeReport;
+ }
+
+ private String calculateKey(ChangeReportInput input) {
+ if (input.getBaseParentTransactionId() == null)
+ return "Transaction " + input.getBaseTransaction() + " to " + input.getToTransaction();
+ else
+ return "Branch " + input.getBaseTransaction().getBranch().getBranchId();
+ }
+
+ @SuppressWarnings("unchecked")
+ private Object[] computeChangeReport(ChangeReportInput input) throws SQLException {
+ Object[] items;
+ if (input.isEmptyChange()) {
+ items = EMPTY_REPORT_CHILDREN;
+ } else {
+
+ // Get a new cache with a backup mechanism to the parent if it is available
+ if (input.getBaseParentTransactionId() != null) {
+ artifactNameDescriptorCache =
+ new ArtifactNameDescriptorCache(input.getBaseParentTransactionId().getBranch());
+ }
+
+ items = getArtifactChanges(input);
+
+ Object childData;
+ for (int index = 0; index < items.length; index++) {
+ ITreeNode node = new TreeNode(items[index]);
+ TreeNode.fillNode(node, providerRunnable);
+ items[index] = node;
+
+ for (Object childObj : node.getChildren()) {
+ childData = ((TreeNode) childObj).getBackingData();
+ if (childData instanceof ChangeSummary && ((ChangeSummary) childData).isConflicted()) {
+ ((ArtifactChange) node.getBackingData()).setChangeType(ChangeType.CONFLICTING);
+ break;
+ }
+ }
+ }
+ }
+
+ return items;
+ }
+
+ public static Object[] getArtifactChanges(ChangeReportInput input) throws SQLException {
+ return getArtifactChanges(input.getBaseParentTransactionId(), input.getBaseTransaction(),
+ input.getToTransaction());
+ }
+
+ private static Object[] getArtifactChanges(TransactionId baseParentTransaction, TransactionId baseTransaction, TransactionId toTransaction) throws SQLException {
+ // Collection<Artifact> newAndModArts =
+ // revisionManager.getNewAndModifiedArtifacts(baseTransaction, toTransaction,
+ // true);
+
+ TransactionId headParentTransaction =
+ baseParentTransaction == null ? null : transactionIdManager.getStartEndPoint(
+ baseParentTransaction.getBranch()).getValue();
+
+ Collection<ArtifactChange> deletedArtChanges =
+ revisionManager.getDeletedArtifactChanges(baseParentTransaction, headParentTransaction, baseTransaction,
+ toTransaction, artifactNameDescriptorCache);
+ Collection<ArtifactChange> newAndModArtChanges =
+ revisionManager.getNewAndModArtifactChanges(baseParentTransaction, headParentTransaction, baseTransaction,
+ toTransaction, artifactNameDescriptorCache);
+
+ // Combine both the collections into one of them to return one continuous data set
+ newAndModArtChanges.addAll(deletedArtChanges);
+
+ // Perform conflict detection if a baseParentTransaction is available.
+ if (baseParentTransaction != null) {
+
+ // If the baseline hasn't moved, then we don't care to check for conflicts.
+ // Note that attempting to do conflict detection will be inaccurate as the search
+ // API will include the lower bound when the lower and upper bound match, which
+ // is not what we want.
+ if (baseParentTransaction != headParentTransaction) {
+ Map<Integer, Artifact> parentBranchModConflicts = new HashMap<Integer, Artifact>();
+ Collection<Integer> parentBranchDelConflicts = new HashSet<Integer>();
+
+ ISearchPrimitive conflictCriteria =
+ new ConflictingArtifactSearch(baseParentTransaction.getBranch().getBranchId(),
+ baseParentTransaction.getTransactionNumber(), headParentTransaction.getTransactionNumber(),
+ baseTransaction.getBranch().getBranchId(), baseTransaction.getTransactionNumber(),
+ toTransaction.getTransactionNumber());
+
+ // Collection<Artifact> artModConflicts = artifactManager.getArtifacts(new
+ // PrefetchSearch(conflictCriteria, headParentTransaction.getBranch()),
+ // headParentTransaction);
+ Collection<Artifact> artModConflicts =
+ artifactManager.getArtifacts(conflictCriteria, headParentTransaction);
+ for (Artifact artifact : artModConflicts)
+ parentBranchModConflicts.put(artifact.getArtId(), artifact);
+
+ Collection<ArtifactChange> artDelConflicts =
+ revisionManager.getDeletedArtifactChanges(null, null, baseParentTransaction, headParentTransaction,
+ null);
+ for (ArtifactChange change : artDelConflicts) {
+ parentBranchDelConflicts.add(change.getArtId());
+ }
+
+ for (ArtifactChange change : newAndModArtChanges) {
+ if (parentBranchDelConflicts.contains(change.getArtId())) {
+ change.setChangeType(ChangeType.CONFLICTING);
+ change.setConflictingModArtifact(change.getArtifact());
+ } else if (parentBranchModConflicts.containsKey(change.getArtId())) {
+ change.setConflictingModArtifact(parentBranchModConflicts.get(change.getArtId()));
+ }
+ }
+ }
+ }
+
+ return newAndModArtChanges.toArray();
+ }
+
+ /**
+ * @return Returns the parent element.
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ if (element instanceof ITreeNode) element = ((ITreeNode) element).getBackingData();
+ if (element == EMPTY_REPORT) return false;
+
+ if (element instanceof TransactionData) {
+ TransactionData data = (TransactionData) element;
+
+ if (data.getComment() != null && data.getComment().contains(BranchPersistenceManager.NEW_BRANCH_COMMENT)) return false;
+ }
+
+ return ((element instanceof Branch && accessControlManager.checkObjectPermission(element, PermissionEnum.READ)) || element instanceof TransactionData || element instanceof Pair || element instanceof SnapshotDescription || element instanceof ChangeSummary || element instanceof Collection || (element instanceof ArtifactChange && ((ArtifactChange) element).getModType() != DELETE));
+ }
+
+ public void dispose() {
+
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ root = new JobbedNode(newInput, viewer, providerRunnable);
+ }
+
+ public void refresh() {
+ if (root != null) {
+ root.refresh(false);
+ }
+ }
+
+ public void refresh(boolean expand) {
+ if (root != null) {
+ root.refresh(expand);
+ }
+ }
+
+ private Collection<Object> summarize(Collection<RevisionChange> changes) throws IllegalArgumentException, SQLException {
+ Collection<Object> summary = new LinkedList<Object>();
+ HashCollection<Integer, AttributeChange> attrChanges = new HashCollection<Integer, AttributeChange>();
+ HashCollection<Integer, RelationLinkChange> linkChanges = new HashCollection<Integer, RelationLinkChange>();
+
+ // Aggregate all of the data
+ for (RevisionChange change : changes) {
+ if (change instanceof AttributeChange) {
+ attrChanges.put(((AttributeChange) change).getAttrId(), (AttributeChange) change);
+ } else if (change instanceof RelationLinkChange) {
+ linkChanges.put(((RelationLinkChange) change).getRelLinkId(), (RelationLinkChange) change);
+ } else if (change instanceof ArtifactChange) {
+ ArtifactChange artifactChange = (ArtifactChange) change;
+
+ if (artifactChange.getModType() == SkynetDatabase.ModificationType.DELETE) {
+ summary.add(artifactChange);
+ }
+ } else {
+ throw new IllegalArgumentException(
+ "changes must be of type AttributeChange or RelationLinkChange, not " + change.getClass().getSimpleName());
+ }
+ }
+
+ for (Integer attrId : attrChanges.keySet()) {
+ Collection<AttributeChange> attrChangeSet = attrChanges.getValues(attrId);
+ if (attrChangeSet.size() == 1)
+ summary.add(attrChangeSet.iterator().next());
+ else
+ summary.add(new AttributeSummary(attrChangeSet));
+ }
+
+ for (Integer linkId : linkChanges.keySet()) {
+ Collection<RelationLinkChange> linkChangeSet = linkChanges.getValues(linkId);
+ if (linkChangeSet.size() == 1)
+ summary.add(linkChangeSet.iterator().next());
+ else
+ summary.add(new RelationLinkSummary(linkChangeSet));
+ }
+
+ return summary;
+ }
+
+ /**
+ * @return the showChildBranchesAtMainLevel
+ */
+ public boolean isShowChildBranchesAtMainLevel() {
+ return showChildBranchesAtMainLevel;
+ }
+
+ /**
+ * @param showChildBranchesAtMainLevel the showChildBranchesAtMainLevel to set
+ */
+ public void setShowChildBranchesAtMainLevel(boolean showChildBranchesAtMainLevel) {
+ this.showChildBranchesAtMainLevel = showChildBranchesAtMainLevel;
+ }
+
+ /**
+ * @return the showChildBranchesUnderParents
+ */
+ public boolean isShowChildBranchesUnderParents() {
+ return showChildBranchesUnderParents;
+ }
+
+ /**
+ * @param showChildBranchesUnderParents the showChildBranchesUnderParents to set
+ */
+ public void setShowChildBranchesUnderParents(boolean showChildBranchesUnderParents) {
+ this.showChildBranchesUnderParents = showChildBranchesUnderParents;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchCreationHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchCreationHandler.java
new file mode 100644
index 00000000000..686fe55db27
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchCreationHandler.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Logger;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.plugin.util.AbstractSelectionEnabledHandler;
+import org.eclipse.osee.framework.ui.plugin.util.IExceptionableRunnable;
+import org.eclipse.osee.framework.ui.plugin.util.JobbedNode;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Robert A. Fisher
+ */
+public class BranchCreationHandler extends AbstractSelectionEnabledHandler {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchCreationHandler.class);
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+ private TreeViewer branchTable;
+ private boolean selective;
+
+ /**
+ * @param branchTable
+ */
+ public BranchCreationHandler(MenuManager menuManager, TreeViewer branchTable, boolean selective) {
+ super(menuManager);
+ this.branchTable = branchTable;
+ this.selective = selective;
+ }
+
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Object backingData = ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ final TransactionId parentTransactionId;
+ if (backingData instanceof Branch) {
+ Branch branch = (Branch) backingData;
+ parentTransactionId = transactionIdManager.getEditableTransactionId(branch);
+ } else if (backingData instanceof TransactionData) {
+ try {
+ parentTransactionId = ((TransactionData) backingData).getTransactionId();
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return null;
+ }
+ } else {
+ throw new IllegalStateException(
+ "Backing data for the jobbed node in the branchview was not of the expected type");
+ }
+
+ final EntryDialog dialog =
+ new EntryDialog(Display.getCurrent().getActiveShell(), "Branch", null, "Enter the name of the new Branch",
+ MessageDialog.INFORMATION, new String[] {"OK", "Cancel"}, 0);
+ int result = dialog.open();
+
+ if (result == 0 && dialog.getEntry() != null) {
+
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+ if (selective) {
+ // String[] programTypes = new String[] {"Folder", "General Document", "Root
+ // Artifact"};
+
+ Set<String> allArtifactTypes = new HashSet<String>();
+ for (ArtifactSubtypeDescriptor asd : ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptors(
+ parentTransactionId))
+ allArtifactTypes.add(asd.getName());
+
+ // Compress all but software requirements
+ Set<String> compressTypes = new HashSet<String>();
+ compressTypes.addAll(allArtifactTypes);
+ compressTypes.remove("Software Requirement");
+
+ // Preserve software reqts
+ String[] preserveTypes = new String[] {"Software Requirement"};
+ branchManager.createBranchWithFiltering(parentTransactionId, null, dialog.getEntry(), null,
+ compressTypes.toArray(new String[compressTypes.size()]), preserveTypes);
+ } else {
+ branchManager.createWorkingBranch(parentTransactionId, null, dialog.getEntry(), null);
+ }
+ }
+ };
+
+ Jobs.run("Create Branch", runnable, logger, SkynetGuiPlugin.PLUGIN_ID);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ try {
+ return (!selective || OseeProperties.getInstance().isDeveloper()) && ((SkynetSelections.oneBranchSelected(selection) && accessManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(selection.getFirstElement()), PermissionEnum.READ)) || (SkynetSelections.oneTransactionSelected(selection) && accessManager.checkObjectPermission(
+ ((TransactionData) SkynetSelections.boilDownObject(selection.getFirstElement())).getTransactionId().getBranch(),
+ PermissionEnum.READ)));
+ } catch (SQLException ex) {
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchLabelProvider.java
new file mode 100644
index 00000000000..3a3c1d442aa
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchLabelProvider.java
@@ -0,0 +1,347 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableColorProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.IAttributeChange;
+import org.eclipse.osee.framework.skynet.core.revision.IRelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.IRevisionChange;
+import org.eclipse.osee.framework.skynet.core.revision.RelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.plugin.util.OverlayImage;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.ChangeType;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.ShowAttributeAction;
+import org.eclipse.osee.framework.ui.swt.ITreeNode;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class BranchLabelProvider implements ITableLabelProvider, ITableColorProvider, ILabelProvider {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchLabelProvider.class);
+ private static final SkynetAuthentication authentication = SkynetAuthentication.getInstance();
+ private static Image branchImage = SkynetGuiPlugin.getInstance().getImage("branch.gif");
+ private static Image changeManagedBranchImage = SkynetGuiPlugin.getInstance().getImage("change_managed_branch.gif");
+
+ private static Image favoriteBranchImage = null;
+ private static Image defaultBranchImage = null;
+ private static Image favoriteDefaultBranchImage = null;
+ private static Image oldSnapshotImage = null;
+
+ private static Image favoriteDefaultChangedManagedBranchImage = null;
+ private static Image defaultChangeManagedBranchImage = null;
+ private static Image favoriteChangeManagedBranchImage = null;
+ private boolean showChangeType = false;
+
+ private final ShowAttributeAction attributeAction;
+ private Collection<Artifact> attributeModifiedArtifacts;
+
+ public BranchLabelProvider() {
+ this(null);
+ }
+
+ public BranchLabelProvider(ShowAttributeAction attributeAction) {
+ this.attributeAction = attributeAction;
+
+ // Make sure all of the users are mapped so we don't incur many single hits for users
+ authentication.getUsers();
+ }
+
+ @SuppressWarnings("unchecked")
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (element instanceof ITreeNode) {
+ element = ((ITreeNode) element).getBackingData();
+ }
+
+ // Seek down through aggregation lists to the lowest level to get an actual element
+ while (element instanceof List && !((List) element).isEmpty()) {
+ element = ((List) element).get(0);
+ }
+
+ if (element instanceof Branch && columnIndex == 0) {
+ try {
+ checkImages();
+ Branch branch = (Branch) element;
+ boolean favorite = authentication.getAuthenticatedUser().isFavoriteBranch(branch);
+ boolean action = branch.isChangeManaged();
+ boolean isDefault = element.equals(BranchPersistenceManager.getInstance().getDefaultBranch());
+
+ if (favorite && action) {
+ return isDefault ? favoriteDefaultChangedManagedBranchImage : favoriteChangeManagedBranchImage;
+ } else if (favorite) {
+ return isDefault ? favoriteDefaultBranchImage : favoriteBranchImage;
+ } else if (action) {
+ return isDefault ? defaultChangeManagedBranchImage : changeManagedBranchImage;
+ } else {
+ return isDefault ? defaultBranchImage : branchImage;
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+
+ } else if (element instanceof SnapshotDescription && columnIndex == 0) {
+ if (((SnapshotDescription) element).isOutOfDate()) {
+ checkImages();
+
+ return oldSnapshotImage;
+ }
+ } else if (element instanceof TransactionData && columnIndex == 0) {
+ return SkynetGuiPlugin.getInstance().getImage("transaction.gif");
+
+ } else if (element instanceof RelationLinkChange && columnIndex == 2) {
+ ArtifactSubtypeDescriptor descriptor = ((RelationLinkChange) element).getOtherArtifactDescriptor();
+ if (descriptor == null)
+ return null;
+ else
+ return descriptor.getImage();
+
+ } else if (element instanceof IRevisionChange && columnIndex == 0) {
+ return ((IRevisionChange) element).getImage();
+ }
+
+ return null;
+ }
+
+ private static synchronized void checkImages() {
+ if (defaultBranchImage == null) {
+ favoriteBranchImage =
+ new OverlayImage(branchImage, SkynetGuiPlugin.getInstance().getImageDescriptor("star_9_9.gif"), 0, 7).createImage();
+ defaultBranchImage =
+ new OverlayImage(branchImage, SkynetGuiPlugin.getInstance().getImageDescriptor("black_check.gif"), 8, 0).createImage();
+ favoriteDefaultBranchImage =
+ new OverlayImage(defaultBranchImage, SkynetGuiPlugin.getInstance().getImageDescriptor("star_9_9.gif"),
+ 0, 7).createImage();
+
+ defaultChangeManagedBranchImage =
+ new OverlayImage(changeManagedBranchImage, SkynetGuiPlugin.getInstance().getImageDescriptor(
+ "black_check.gif"), 8, 0).createImage();
+ favoriteChangeManagedBranchImage =
+ new OverlayImage(changeManagedBranchImage, SkynetGuiPlugin.getInstance().getImageDescriptor(
+ "star_9_9.gif"), 0, 7).createImage();
+ favoriteDefaultChangedManagedBranchImage =
+ new OverlayImage(defaultChangeManagedBranchImage, SkynetGuiPlugin.getInstance().getImageDescriptor(
+ "star_9_9.gif"), 0, 7).createImage();
+
+ oldSnapshotImage = SkynetGuiPlugin.getInstance().getImage("old.gif");
+ }
+ }
+
+ /**
+ * @return Returns the text for a specific column
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ return getColumnTextLabel(element, columnIndex);
+ }
+
+ @SuppressWarnings("unchecked")
+ public String getColumnTextLabel(Object element, int columnIndex) {
+ if (element instanceof ITreeNode) element = ((ITreeNode) element).getBackingData();
+
+ if (element instanceof Branch) {
+ Branch branch = (Branch) element;
+
+ if (columnIndex == 0) {
+ return (OseeProperties.getInstance().isDeveloper() ? "(" + branch.getBranchId() + ") " : "") + branch.getBranchName();
+ } else if (columnIndex == 1) {
+ return String.valueOf(branch.getDisplayName());
+ } else if (columnIndex == 2) {
+ return String.valueOf(branch.getCreationDate());
+ } else if (columnIndex == 3) {
+ User user = authentication.getUserByArtId(branch.getAuthorId());
+ return user == null ? "" : user.getDescriptiveName();
+ } else if (columnIndex == 4) {
+ return branch.getCreationComment();
+ }
+ } else if (element instanceof TransactionData) {
+ TransactionData transactionData = (TransactionData) element;
+
+ if (columnIndex == 0) {
+ return String.valueOf(transactionData.getTransactionNumber());
+ } else if (columnIndex == 2) {
+ return String.valueOf((Timestamp) transactionData.getTimeStamp());
+ } else if (columnIndex == 3) {
+ return transactionData.getName();
+ } else if (columnIndex == 4) {
+ return transactionData.getComment();
+ }
+ } else if (element instanceof Collection) {
+ Object headCursor = element;
+ Object tailCursor = element;
+
+ while (headCursor instanceof List && !((List) headCursor).isEmpty()) {
+ headCursor = ((List) headCursor).get(0);
+ }
+ while (tailCursor instanceof List && !((List) tailCursor).isEmpty()) {
+ List list = (List) tailCursor;
+ tailCursor = list.get(list.size() - 1);
+ }
+
+ if (headCursor instanceof TransactionData && tailCursor instanceof TransactionData) {
+ TransactionData headTransactionData = (TransactionData) headCursor;
+ TransactionData tailTransactionData = (TransactionData) tailCursor;
+
+ if (columnIndex == 0) {
+ return String.valueOf(headTransactionData.getTransactionNumber() + "..." + tailTransactionData.getTransactionNumber());
+ } else if (columnIndex == 2) {
+ return String.valueOf((Timestamp) headTransactionData.getTimeStamp());
+ }
+ } else {
+ return "Unexpected aggregation of " + headCursor.getClass().getSimpleName() + " and " + tailCursor.getClass().getSimpleName();
+ }
+
+ } else if (element instanceof ArtifactChange) {
+ if (columnIndex == 0) {
+ ArtifactChange artifactChange = (ArtifactChange) element;
+ try {
+ String txt =
+ artifactChange.getName() + (showChangeType ? " (" + getChangeType(artifactChange) + ")" : "");
+ if (artifactChange.getModType() != ModificationType.DELETE) {
+ if (attributeAction != null && !attributeAction.noneSelected()) {
+ String attributeText = attributeAction.getSelectedAttributeData(artifactChange.getArtifact());
+ if (attributeText != null) {
+ return txt + attributeText;
+ }
+ }
+ } else if (artifactChange.getChangeType() == ChangeType.INCOMING) {
+ txt = "Artifact Deleted";
+ }
+ return txt;
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ }
+ } else if (element instanceof IAttributeChange) {
+ IAttributeChange change = (IAttributeChange) element;
+
+ if (columnIndex == 0) {
+ return String.valueOf(change.getGammaId());
+ } else if (columnIndex == 1) {
+ return change.getName();
+ } else if (columnIndex == 2) {
+ return "was:" + change.getWasValue();
+ } else if (columnIndex == 3) {
+ return "is:" + change.getChange();
+ }
+ } else if (element instanceof IRelationLinkChange) {
+ IRelationLinkChange change = (IRelationLinkChange) element;
+
+ if (columnIndex == 0) {
+ return String.valueOf(change.getGammaId());
+ } else if (columnIndex == 1) {
+ return change.getRelTypeName();
+ } else if (columnIndex == 2) {
+ return change.getOtherArtifactName();
+ } else if (columnIndex == 3) {
+ return change.getRationale();
+ }
+ } else if (columnIndex == 0) {
+ return element.toString();
+ }
+ return "";
+ }
+
+ private String getChangeType(ArtifactChange artifactChange) throws SQLException {
+ if ((artifactChange.getModType() == SkynetDatabase.ModificationType.CHANGE) && attributeModifiedArtifacts != null && !attributeModifiedArtifacts.contains(artifactChange.getArtifact())) return artifactChange.getModType().getDisplayName() + " Relation Only";
+ return artifactChange.getModType().getDisplayName();
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public Image getImage(Object element) {
+ return getColumnImage(element, 0);
+ }
+
+ /**
+ * @return returns the text for the first column as default
+ */
+ public String getText(Object element) {
+ return getColumnText(element, 0);
+ }
+
+ public Color getForeground(Object element, int columnIndex) {
+ if (element instanceof ITreeNode) element = ((ITreeNode) element).getBackingData();
+
+ if (element instanceof SnapshotDescription && columnIndex == 0) {
+ if (((SnapshotDescription) element).isOutOfDate()) {
+ return Display.getCurrent().getSystemColor(SWT.COLOR_RED);
+ }
+ }
+ return null;
+ }
+
+ public Color getBackground(Object element, int columnIndex) {
+ return null;
+ }
+
+ /**
+ * @param branch
+ * @return Returns the image for a branch.
+ */
+ public static Image getBranchImage(Branch branch) {
+ if (branch == null) {
+ throw new IllegalArgumentException("The branch can not be null.");
+ }
+
+ return branch.isChangeManaged() ? changeManagedBranchImage : branchImage;
+ }
+
+ /**
+ * @return the showChangeType
+ */
+ public boolean isShowChangeType() {
+ return showChangeType;
+ }
+
+ /**
+ * @param showChangeType the showChangeType to set
+ */
+ public void setShowChangeType(boolean showChangeType, Collection<Artifact> attributeModifiedArtifacts) {
+ this.showChangeType = showChangeType;
+ this.attributeModifiedArtifacts = attributeModifiedArtifacts;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchSorter.java
new file mode 100644
index 00000000000..395fb64bde5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchSorter.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+
+public class BranchSorter extends ViewerSorter {
+
+ // Criteria that the instance uses
+ @SuppressWarnings("unused")
+ private int column;
+
+ /**
+ * Creates a resource sorter that will use the given sort criteria.
+ *
+ * @param column the sort criterion to use: one of <code>NAME</code> or <code>TYPE</code>
+ */
+ public BranchSorter(int column) {
+ super();
+ this.column = column;
+ }
+
+ /*
+ * (non-Javadoc) Method declared on ViewerSorter.
+ */
+ public int compare(Viewer viewer, Object o1, Object o2) {
+
+ // if (column == 0)
+ // return collator.compare(BranchLabelProvider.getColumnTextLabel(o1, column),
+ // BranchLabelProvider.getColumnTextLabel(o2, column));
+
+ return 0;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchView.java
new file mode 100644
index 00000000000..bc03efeeff1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/BranchView.java
@@ -0,0 +1,1523 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.commands.IParameter;
+import org.eclipse.core.commands.IParameterValues;
+import org.eclipse.core.commands.ParameterValuesException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferencesService;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.NodeChangeEvent;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact;
+import org.eclipse.osee.framework.skynet.core.event.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.ui.plugin.event.AuthenticationEvent;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.AbstractSelectionEnabledHandler;
+import org.eclipse.osee.framework.ui.plugin.util.Commands;
+import org.eclipse.osee.framework.ui.plugin.util.Files;
+import org.eclipse.osee.framework.ui.plugin.util.JobbedNode;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.plugin.util.SelectionCountChangeListener;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase;
+import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetDefaultBranchContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.TreeViewerReport;
+import org.eclipse.osee.framework.ui.skynet.access.PolicyDialog;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView;
+import org.eclipse.osee.framework.ui.skynet.export.ExportBranchJob;
+import org.eclipse.osee.framework.ui.skynet.export.ImportBranchJob;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.CheckBoxDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.swt.ColumnSorter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.menus.CommandContributionItem;
+import org.eclipse.ui.part.ViewPart;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * @author Jeff C. Phillips
+ * @author Robert A. Fisher
+ */
+public class BranchView extends ViewPart implements IActionable, IEventReceiver {
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.branch.BranchView";
+ private static final String BRANCH_ID = "branchId";
+ private static final IParameter[] BRANCH_PARAMETER_DEF = new IParameter[] {new BranchIdParameter()};
+ private static final String FAVORITE_KEY = "favorites_first";
+ private static final String SHOW_TRANSACTIONS = "show_transactions";
+ private static final String FLAT_KEY = "flat";
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private static final String[] columnNames = {"", "Short Name", "Time Stamp", "Author", "Comment"};
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchView.class);
+
+ private IHandlerService handlerService;
+ private final IPreferencesService preferencesService;
+ private IPreferenceChangeListener preferenceChangeListener = null;
+
+ private TreeViewer branchTable;
+ private Text filterText;
+ private BranchNameFilter nameFilter;
+ private FavoritesSorter sorter;
+ private boolean disposed;
+ private Action hideTransactions;
+
+ private synchronized IPreferenceChangeListener getSingleton() {
+ if (preferenceChangeListener == null) {
+ preferenceChangeListener = new IPreferenceChangeListener() {
+
+ public void preferenceChange(PreferenceChangeEvent event) {
+ if (disposed) {
+ ((IEclipsePreferences) event.getNode()).removePreferenceChangeListener(this);
+ } else {
+ String propertyName = event.getKey();
+
+ if (propertyName.equals(FLAT_KEY)) {
+ setPresentation(getViewPreference().getBoolean(FLAT_KEY, true));
+ refresh();
+ }
+ if (propertyName.equals(SHOW_TRANSACTIONS)) {
+ setShowTransactions(getViewPreference().getBoolean(SHOW_TRANSACTIONS, true));
+ branchTable.refresh();
+ }
+ if (propertyName.equals(FAVORITE_KEY)) {
+ if (sorter != null) {
+ sorter.setFavoritesFirst(getViewPreference().getBoolean(FAVORITE_KEY, false));
+ branchTable.refresh();
+ }
+ }
+ }
+ }
+ };
+ }
+
+ return preferenceChangeListener;
+ }
+
+ /**
+ *
+ */
+ public BranchView() {
+ super();
+
+ this.preferencesService = Platform.getPreferencesService();
+
+ IEclipsePreferences instanceNode =
+ (IEclipsePreferences) preferencesService.getRootNode().node(InstanceScope.SCOPE);
+
+ try {
+ if (instanceNode.nodeExists(VIEW_ID)) {
+ ((IEclipsePreferences) instanceNode.node(VIEW_ID)).addPreferenceChangeListener(getSingleton());
+ }
+ } catch (BackingStoreException ex) {
+ OSEELog.logException(BranchView.class, ex, true);
+ }
+
+ instanceNode.addNodeChangeListener(new IEclipsePreferences.INodeChangeListener() {
+
+ public void added(NodeChangeEvent event) {
+ if (event.getChild().name().equals(VIEW_ID)) {
+ ((IEclipsePreferences) event.getChild()).addPreferenceChangeListener(getSingleton());
+ }
+ }
+
+ public void removed(NodeChangeEvent event) {
+ if (event.getChild().name().equals(VIEW_ID)) {
+ ((IEclipsePreferences) event.getChild()).removePreferenceChangeListener(getSingleton());
+ }
+ }
+ });
+ }
+
+ public static BranchView getBranchView() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ return (BranchView) page.showView(VIEW_ID);
+ } catch (PartInitException e1) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
+ "Couldn't Launch Branch View " + e1.getMessage());
+ }
+ return null;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+
+ PlatformUI.getWorkbench().getService(IHandlerService.class);
+ handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
+
+ parent.setLayout(new GridLayout());
+ parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ createTableViewer(parent);
+ createColumns();
+ createFilter(parent);
+
+ createActions();
+
+ SkynetDefaultBranchContributionItem.addTo(this, false);
+ SkynetContributionItem.addTo(this, true);
+
+ forcePopulateView();
+
+ eventManager.register(LocalBranchEvent.class, this);
+ eventManager.register(RemoteBranchEvent.class, this);
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+ eventManager.register(AuthenticationEvent.class, this);
+
+ setHelpContexts();
+ }
+
+ protected void createActions() {
+
+ Action refreshAction = new Action("Refresh") {
+
+ @Override
+ public void run() {
+ forcePopulateView();
+ }
+ };
+ refreshAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("refresh.gif"));
+ refreshAction.setToolTipText("Refresh");
+
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Branch Manager");
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(refreshAction);
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(branchTable.getControl(), "branch_manager_table");
+ SkynetGuiPlugin.getInstance().setHelp(filterText, "branch_manager_filtering");
+ }
+
+ private void createTableViewer(Composite parent) {
+ ITableLabelProvider labelProvider = new BranchLabelProvider(null);
+
+ branchTable = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.MULTI);
+ branchTable.setContentProvider(new BranchContentProvider());
+ branchTable.setLabelProvider(labelProvider);
+ branchTable.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ sorter = new FavoritesSorter(labelProvider);
+ sorter.setFavoritesFirst(getViewPreference().getBoolean(FAVORITE_KEY, false));
+ branchTable.setSorter(sorter);
+
+ nameFilter = new BranchNameFilter();
+ branchTable.addFilter(nameFilter);
+
+ MenuManager menuManager = new MenuManager();
+ branchTable.getTree().setMenu(menuManager.createContextMenu(branchTable.getTree()));
+
+ menuManager.add(new Separator());
+ createOpenArtifactsMenuItem(menuManager);
+ menuManager.add(new Separator());
+ createSetDefaultCommand(menuManager);
+ createChangeReportCommand(menuManager);
+ createBranchCommand(menuManager);
+ createSelectivelyBranchCommand(menuManager);
+ createCommitCommand(menuManager);
+ createCommitIntoCommand(menuManager);
+ menuManager.add(new Separator());
+ createImportOntoBranchCommand(menuManager);
+ createImportDescendantsOntoBranchCommand(menuManager);
+ createExportBranchCommand(menuManager);
+ createExportBranchDescendantsCommand(menuManager);
+ menuManager.add(new Separator());
+ createMarkAsFavoriteCommand(menuManager);
+ menuManager.add(new Separator());
+ // createClipboardCommand(menuManager);
+ createDeleteBranchCommand(menuManager);
+ createDeleteTransactionCommand(menuManager);
+ createMoveTransactionCommand(menuManager);
+ createRenameBranchCommand(menuManager);
+ createSetBranchShortNameCommand(menuManager);
+ createSetAssociatedArtifactCommand(menuManager);
+ createOpenAssociatedArtifactCommand(menuManager);
+ menuManager.add(new Separator());
+ createViewTableMenuItem(menuManager);
+ menuManager.add(new Separator());
+ createAccessControlMenuItem(menuManager);
+
+ getSite().registerContextMenu("org.eclipse.osee.framework.ui.skynet.branch.BranchView", menuManager, branchTable);
+
+ // The additions group is a standard group
+ menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+
+ branchTable.addSelectionChangedListener(new SelectionCountChangeListener(getViewSite()));
+
+ getSite().setSelectionProvider(branchTable);
+
+ IMenuManager toolbarManager = getViewSite().getActionBars().getMenuManager();
+ toolbarManager.add(createFavoritesFirstAction());
+ toolbarManager.add(createShowTransactionsAction());
+ toolbarManager.add(new ParentBranchAction(this));
+
+ loadPreferences();
+ }
+
+ private Preferences getViewPreference() {
+ return preferencesService.getRootNode().node(InstanceScope.SCOPE).node(VIEW_ID);
+ }
+
+ private void loadPreferences() {
+ setPresentation(getViewPreference().getBoolean(FLAT_KEY, true));
+ setShowTransactions(getViewPreference().getBoolean(SHOW_TRANSACTIONS, true));
+ }
+
+ private void createFilter(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(2, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Filter:");
+
+ filterText = new Text(composite, SWT.BORDER);
+ filterText.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ nameFilter.setContains(((Text) e.getSource()).getText());
+ branchTable.refresh();
+ if (nameFilter.isFiltering())
+ setContentDescription("Filtered for :\"" + nameFilter.getContains() + "\"");
+ else
+ setContentDescription("");
+ }
+ });
+ filterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ }
+
+ private void createOpenArtifactsMenuItem(MenuManager menuManager) {
+ CommandContributionItem openArtifactsCommand =
+ Commands.getLocalCommandContribution(getSite(), "openArtifactsCommand", "Open Artifact(s)...", null, null,
+ null, "O", null, null);
+ menuManager.add(openArtifactsCommand);
+
+ branchTable.addDoubleClickListener(new IDoubleClickListener() {
+
+ public void doubleClick(DoubleClickEvent event) {
+ openArtifactHelper();
+ }
+ });
+
+ handlerService.activateHandler(openArtifactsCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ openArtifactHelper();
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ boolean toReturn = false;
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ if (!selection.isEmpty()) {
+ Iterator<?> iterator = selection.iterator();
+ while (iterator.hasNext()) {
+ Object backingData = ((JobbedNode) iterator.next()).getBackingData();
+ if (backingData instanceof ArtifactChange) {
+ toReturn = true;
+ break;
+ }
+ }
+ }
+ return toReturn;
+ }
+ });
+ }
+
+ private void openArtifactHelper() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Iterator<?> iterator = selection.iterator();
+ while (iterator.hasNext()) {
+ Object backingData = ((JobbedNode) iterator.next()).getBackingData();
+ if (backingData instanceof ArtifactChange) {
+ try {
+ ArtifactEditor.editArtifact(((ArtifactChange) backingData).getArtifact());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+ private void createAccessControlMenuItem(MenuManager menuManager) {
+ CommandContributionItem accessControlCommand =
+ Commands.getLocalCommandContribution(getSite(), "accessControlCommand", "Access Control...", null, null,
+ null, "A", null, null);
+ menuManager.add(accessControlCommand);
+
+ handlerService.activateHandler(accessControlCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch selectedBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+ try {
+ if (selectedBranch != null) {
+ PolicyDialog pd = new PolicyDialog(Display.getCurrent().getActiveShell(), selectedBranch);
+ pd.open();
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneBranchSelected(selection) && (accessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(selection.getFirstElement()), PermissionEnum.FULLACCESS) || OseeProperties.getInstance().isDeveloper());
+ }
+ });
+ }
+
+ private void createDeleteTransactionCommand(MenuManager menuManager) {
+ CommandContributionItem deleteTransactionCommand =
+ Commands.getLocalCommandContribution(getSite(), "deleteTransactionCommand", "Delete Transaction", null,
+ null, null, "D", null, null);
+ menuManager.add(deleteTransactionCommand);
+
+ handlerService.activateHandler(deleteTransactionCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ TransactionData selectedTransaction =
+ (TransactionData) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ if (MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Delete Transaction",
+ "Are you sure you want to delete the transaction: " + selectedTransaction.getTransactionNumber())) {
+ branchManager.deleteTransaction(selectedTransaction.getTransactionNumber());
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneTransactionSelected(selection) && OseeProperties.getInstance().isDeveloper();
+ }
+ });
+ }
+
+ private static class BranchIdParameter implements IParameter {
+ public String getId() {
+ return BRANCH_ID;
+ }
+
+ public String getName() {
+ return "Branch Id";
+ }
+
+ public IParameterValues getValues() throws ParameterValuesException {
+ return null;
+ }
+
+ public boolean isOptional() {
+ return false;
+ }
+ }
+
+ private void createBranchSelectionMenu(MenuManager menuManager, IHandler selectionHandler) {
+ try {
+ for (Branch branch : branchManager.getBranches()) {
+
+ Map<String, String> parameters = new HashMap<String, String>();
+ parameters.put(BRANCH_ID, Integer.toString(branch.getBranchId()));
+
+ CommandContributionItem branchCommand =
+ Commands.getLocalCommandContribution(getSite(), menuManager.getId(), branch.getBranchName(),
+ BRANCH_PARAMETER_DEF, parameters, null, null, null, null);
+ menuManager.add(branchCommand);
+ }
+
+ // This only has to be done once since the same command is used for each contribution
+ handlerService.activateHandler(getSite().getId() + "." + menuManager.getId(), selectionHandler);
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ private class BranchSelectionHandler extends AbstractSelectionEnabledHandler {
+
+ public BranchSelectionHandler(MenuManager menuManager) {
+ super(menuManager);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ try {
+ Branch toBranch = branchManager.getBranch(Integer.parseInt(event.getParameter(BRANCH_ID)));
+
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Move Transactions",
+ "All selected transactions will be moved to branch " + toBranch.getBranchName())) {
+ Iterator<JobbedNode> iter = selection.iterator();
+ while (iter.hasNext()) {
+ TransactionData transactionData = (TransactionData) iter.next().getBackingData();
+ branchManager.moveTransaction(transactionData.getTransactionId(), toBranch);
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return OseeProperties.getInstance().isDeveloper() && SkynetSelections.transactionsSelected(selection);
+ }
+ };
+
+ private void createMoveTransactionCommand(MenuManager menuManager) {
+ MenuManager subMenuManager = new MenuManager("Move Transaction To", "moveTransaction");
+ menuManager.add(subMenuManager);
+ BranchSelectionHandler mySelectionHandler = new BranchSelectionHandler(menuManager);
+ createBranchSelectionMenu(subMenuManager, mySelectionHandler);
+ }
+
+ private void createCommitIntoCommand(MenuManager menuManager) {
+ MenuManager subMenuManager = new MenuManager("Commit Into", "commitTransaction");
+ menuManager.add(subMenuManager);
+ createBranchSelectionMenu(subMenuManager, new CommitHandler(menuManager, false));
+ }
+
+ // private void createClipboardCommand(MenuManager menuManager) {
+ // CommandContributionItem clipBoardCommand = Commands.getLocalCommandContribution(getSite(),
+ // "clipBoardCommand", "Copy", null, null, null, null, null, null);
+ // menuManager.add(clipBoardCommand);
+ //
+ // // handlerService.activateHandler(clipBoardCommand.getId(), new
+ // ArtifactClipboardCommand(menuManager, null, null, null));
+ // }
+
+ private void createDeleteBranchCommand(MenuManager menuManager) {
+ CommandContributionItem deleteBranchCommand =
+ Commands.getLocalCommandContribution(getSite(), "deleteBranchCommand", "Delete Branch", null, null, null,
+ null, null, null);
+ menuManager.add(deleteBranchCommand);
+
+ handlerService.activateHandler(deleteBranchCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch selectedBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ MessageDialog dialog =
+ new MessageDialog(Display.getCurrent().getActiveShell(), "Delete Branch", null,
+ "Are you sure you want to delete the branch: " + selectedBranch.getBranchName(),
+ MessageDialog.QUESTION, new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL}, 1);
+
+ if (dialog.open() == 0) {
+ branchManager.deleteBranch(selectedBranch);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return OseeProperties.getInstance().isDeveloper() && SkynetSelections.oneBranchSelected(selection) && SkynetSelections.boilDownObject(selection.getFirstElement()) != branchManager.getDefaultBranch();
+ }
+ });
+ }
+
+ private void createRenameBranchCommand(MenuManager menuManager) {
+ CommandContributionItem renameBranchCommand =
+ Commands.getLocalCommandContribution(getSite(), "renameBranchCommand", "Rename Branch", null, null, null,
+ null, null, null);
+ menuManager.add(renameBranchCommand);
+
+ handlerService.activateHandler(renameBranchCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch selectedBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ IInputValidator inputValidator = new IInputValidator() {
+ public String isValid(String newText) {
+ if (newText == null || newText.length() == 0) {
+ return "The new branch name must not be blank"; // return error message
+ }
+ if (newText.length() > SkynetDatabase.BRANCH_NAME_SIZE) {
+ return "The new branch name must not be longer than " + SkynetDatabase.BRANCH_NAME_SIZE + " characters"; // return
+ // error
+ // message
+ }
+ return null; // to indicate the input is valid
+ }
+ };
+ InputDialog dialog =
+ new InputDialog(Display.getCurrent().getActiveShell(), "Rename Branch", "Enter new branch name",
+ selectedBranch.getBranchName(), inputValidator);
+
+ if (dialog.open() != Window.CANCEL) {
+ try {
+ selectedBranch.rename(dialog.getValue());
+ } catch (SQLException ex) {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(), "Error Renaming Branch",
+ ex.getMessage());
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ refresh();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneBranchSelected(selection);
+ }
+ });
+ }
+
+ private void createSetBranchShortNameCommand(MenuManager menuManager) {
+ CommandContributionItem setBranchShortNameCommand =
+ Commands.getLocalCommandContribution(getSite(), "setBranchShortNameCommand", "Set Branch Short Name", null,
+ null, null, null, null, null);
+ menuManager.add(setBranchShortNameCommand);
+
+ handlerService.activateHandler(setBranchShortNameCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch selectedBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ IInputValidator inputValidator = new IInputValidator() {
+ public String isValid(String newText) {
+ if (newText == null || newText.length() == 0) {
+ return "The new branch name must not be blank"; // return error message
+ }
+ if (newText.length() > SkynetDatabase.BRANCH_SHORT_NAME_SIZE) {
+ return "The new branch name must not be longer than " + SkynetDatabase.BRANCH_SHORT_NAME_SIZE + " characters"; // return
+ // error
+ // message
+ }
+ return null; // to indicate the input is valid
+ }
+ };
+ InputDialog dialog =
+ new InputDialog(Display.getCurrent().getActiveShell(), "Rename Branch Short Name",
+ "Enter new branch short name",
+ selectedBranch.getBranchShortName() != null ? selectedBranch.getBranchShortName() : "",
+ inputValidator);
+
+ if (dialog.open() != Window.CANCEL) {
+ try {
+ selectedBranch.setBranchShortName(dialog.getValue(), true);
+ } catch (SQLException ex) {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(), "Error Renaming Branch short name",
+ ex.getMessage());
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ eventManager.kick(new DefaultBranchChangedEvent(this));
+ refresh();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneBranchSelected(selection);
+ }
+ });
+ }
+
+ private void createSetAssociatedArtifactCommand(MenuManager menuManager) {
+ CommandContributionItem setBranchShortNameCommand =
+ Commands.getLocalCommandContribution(getSite(), "setAssociatedArtifactCommand",
+ "Set Branch Associated Artifact", null, null, null, null, null, null);
+ menuManager.add(setBranchShortNameCommand);
+
+ handlerService.activateHandler(setBranchShortNameCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch selectedBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ try {
+ EntryDialog ed =
+ new EntryDialog(
+ "Set Associated Artifact",
+ "Set Associated Artifact for Branch\n\n\"" + selectedBranch.getBranchName() + "\"" + (selectedBranch.getAssociatedArtifact() != null ? "\n\nCurrently: " + selectedBranch.getAssociatedArtifact() : ""));
+ if (selectedBranch.getAssociatedArtifact() != null) ed.setEntry(String.valueOf(selectedBranch.getAssociatedArtifactId()));
+ if (ed.open() == 0) {
+ String artId = ed.getEntry();
+ Artifact associatedArtifact =
+ ArtifactPersistenceManager.getInstance().getArtifactFromId(Integer.parseInt(artId),
+ branchManager.getAtsBranch());
+ if (associatedArtifact == null) throw new IllegalArgumentException(
+ "Invalid artId for Common branch = " + artId);
+ if (MessageDialog.openConfirm(
+ Display.getCurrent().getActiveShell(),
+ "Set Associated Artifact",
+ "Set Associated Artifact for Branch\n\n\"" + selectedBranch.getBranchName() + "\"\nto\nArtifact: " + associatedArtifact)) {
+ selectedBranch.setAssociatedArtifact(associatedArtifact);
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ if (!OseeProperties.getInstance().isDeveloper()) return false;
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneBranchSelected(selection);
+ }
+ });
+ }
+
+ private void createOpenAssociatedArtifactCommand(MenuManager menuManager) {
+ CommandContributionItem setBranchShortNameCommand =
+ Commands.getLocalCommandContribution(getSite(), "openAssociatedArtifactCommand",
+ "Open Branch Associated Artifact", null, null, null, null, null, null);
+ menuManager.add(setBranchShortNameCommand);
+
+ handlerService.activateHandler(setBranchShortNameCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch selectedBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+ try {
+ if (selectedBranch.getAssociatedArtifact() == null) {
+ AWorkbench.popup("Open Associated Artifact", "No artifact associated with branch " + selectedBranch);
+ return null;
+ }
+ if (AccessControlManager.getInstance().checkObjectPermission(skynetAuth.getAuthenticatedUser(),
+ selectedBranch.getAssociatedArtifact(), PermissionEnum.READ)) {
+ if (selectedBranch.getAssociatedArtifact() instanceof IATSArtifact)
+ OseeAts.openATSArtifact(selectedBranch.getAssociatedArtifact());
+ else
+ ArtifactEditor.editArtifact(selectedBranch.getAssociatedArtifact());
+ } else {
+ OSEELog.logInfo(
+ SkynetGuiPlugin.class,
+ "The user " + skynetAuth.getAuthenticatedUser() + " does not have read access to " + selectedBranch.getAssociatedArtifact(),
+ true);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneBranchSelected(selection);
+ }
+ });
+ }
+
+ private void createColumns() {
+ Tree tree = branchTable.getTree();
+
+ tree.setHeaderVisible(true);
+ TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
+ column1.setWidth(400);
+ column1.setText(columnNames[0]);
+ column1.addSelectionListener(new ColumnSelectionListener(0));
+
+ TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
+ column2.setWidth(100);
+ column2.setText(columnNames[1]);
+ column2.addSelectionListener(new ColumnSelectionListener(1));
+
+ TreeColumn column3 = new TreeColumn(tree, SWT.LEFT);
+ column3.setWidth(150);
+ column3.setText(columnNames[2]);
+ column3.addSelectionListener(new ColumnSelectionListener(2));
+
+ TreeColumn column4 = new TreeColumn(tree, SWT.LEFT);
+ column4.setWidth(150);
+ column4.setText(columnNames[3]);
+ column4.addSelectionListener(new ColumnSelectionListener(3));
+
+ TreeColumn column5 = new TreeColumn(tree, SWT.LEFT);
+ column5.setWidth(300);
+ column5.setText(columnNames[4]);
+ column5.addSelectionListener(new ColumnSelectionListener(4));
+ }
+
+ private class ColumnSelectionListener extends SelectionAdapter {
+ private final int index;
+
+ /**
+ * @param index
+ */
+ public ColumnSelectionListener(int index) {
+ super();
+ this.index = index;
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ sorter.setColumnToSort(index);
+ branchTable.refresh();
+ }
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ // Ask to save the user in case any changes to favorite branches have been made
+ try {
+ skynetAuth.getAuthenticatedUser().persist();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ private void createSetDefaultCommand(MenuManager menuManager) {
+ CommandContributionItem setBranchDefaultCommand =
+ Commands.getLocalCommandContribution(getSite(), "setBranchDefaultCommand", "Set Default Branch", null,
+ null, null, "S", null, "branch_manager_default_branch_menu");
+ menuManager.add(setBranchDefaultCommand);
+
+ handlerService.activateHandler(setBranchDefaultCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ Branch oldDefaultBranch = branchManager.getDefaultBranch();
+ Branch newDefaultBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+ branchManager.setDefaultBranch(newDefaultBranch);
+
+ branchTable.update(new Object[] {oldDefaultBranch, newDefaultBranch}, null);
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ return SkynetSelections.oneBranchSelected(selection) && SkynetSelections.boilDownObject(selection.getFirstElement()) != branchManager.getDefaultBranch();
+ }
+ });
+
+ }
+
+ private void createChangeReportCommand(MenuManager menuManager) {
+ CommandContributionItem showChangeReportCommand =
+ Commands.getLocalCommandContribution(getSite(), "createChangeReportCommand", "Show Change Report", null,
+ null, null, "C", null, "branch_manager_show_change_report_menu");
+ menuManager.add(showChangeReportCommand);
+
+ handlerService.activateHandler(showChangeReportCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Iterator<JobbedNode> iter = selection.iterator();
+
+ if (!iter.hasNext()) return null;
+
+ Object obj = iter.next().getBackingData();
+
+ try {
+ if (obj instanceof Branch) {
+ Branch branch = (Branch) obj;
+ ChangeReportView.openViewUpon(branch);
+ } else {
+ // Enablement code should ensure this only gets called
+ TransactionId transaction1 = ((TransactionData) obj).getTransactionId();
+ TransactionId transaction2 = ((TransactionData) iter.next().getBackingData()).getTransactionId();
+
+ TransactionId base =
+ transaction1.getTransactionNumber() < transaction2.getTransactionNumber() ? transaction1 : transaction2;
+ TransactionId to =
+ transaction1.getTransactionNumber() < transaction2.getTransactionNumber() ? transaction2 : transaction1;
+
+ ChangeReportView.openViewUpon(new ChangeReportInput(base.getBranch().getDisplayName(), base, to));
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ try {
+ return (SkynetSelections.oneBranchSelected(selection) && accessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(selection.getFirstElement()), PermissionEnum.READ)) || SkynetSelections.twoTransactionsSelectedOnSameBranch(selection);
+ } catch (SQLException ex) {
+ return false;
+ }
+ }
+ });
+ }
+
+ private void createMarkAsFavoriteCommand(MenuManager menuManager) {
+ menuManager.add(new CompoundContributionItem() {
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ String markState = "Mark";
+
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ if (SkynetSelections.oneBranchSelected(selection)) {
+ if ((skynetAuth.getAuthenticatedUser().isFavoriteBranch((Branch) SkynetSelections.boilDownObject(selection.getFirstElement())))) {
+ markState = "Unmark";
+ }
+ }
+ return new IContributionItem[] {Commands.getLocalCommandContribution(getSite(), "markAsFavoriteCommand",
+ markState + " as Favorite", null, null, null, "T", null, "branch_manager_favorite_branch_menu")};
+ }
+ });
+
+ handlerService.activateHandler(getSite().getId() + ".markAsFavoriteCommand",
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch branch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+ User user = skynetAuth.getAuthenticatedUser();
+
+ user.toggleFavoriteBranch(branch);
+
+ if (sorter.isFavoritesFirst())
+ branchTable.refresh();
+ else
+ branchTable.update(selection.getFirstElement(), null);
+
+ // Saving of this change is done in saveState()
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ boolean oneBranchSelected = SkynetSelections.oneBranchSelected(selection);
+
+ if (oneBranchSelected && skynetAuth.getAuthenticatedUser().isFavoriteBranch(
+ (Branch) SkynetSelections.boilDownObject(selection.getFirstElement()))) {
+ // make the text correct somehow somewhere so it says Mark/Unmark in context
+ }
+
+ return oneBranchSelected;
+ }
+ });
+ }
+
+ public static CheckBoxDialog createCommitDialog() {
+ return new CheckBoxDialog(
+ Display.getCurrent().getActiveShell(),
+ "Confirm Commit",
+ null,
+ "Committing a branch that has conflicts reported in the Change Report can result in the overwriting of data" + " on the branch being committed to. All conflicts should be addressed accordingly to prevent data loss.",
+ "I accept responsibility for the results of this action", MessageDialog.QUESTION, 0);
+ }
+
+ private class CommitHandler extends AbstractSelectionEnabledHandler {
+ private boolean useParentBranch;
+
+ public CommitHandler(MenuManager menuManager, boolean useParentBranch) {
+ super(menuManager);
+ this.useParentBranch = useParentBranch;
+ }
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ Branch fromBranch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ try {
+ Branch toBranch = null;
+ if (useParentBranch) {
+ toBranch = fromBranch.getParentBranch();
+ } else {
+ toBranch = branchManager.getBranch(Integer.parseInt(event.getParameter(BRANCH_ID)));
+ }
+ if (!useParentBranch && branchManager.hasConflicts(fromBranch, toBranch)) {
+ if (MessageDialog.openConfirm(
+ Display.getCurrent().getActiveShell(),
+ "Commit Conflict",
+ "This branch could not be directly commited into the destination branch because conflicts were detected." + " Therefore, a working branch will need to be created on the destination branch to allow for conflict resoultion." + "Would you like to contiune and create the working branch?")) {
+
+ toBranch = branchManager.createWorkingBranchFromBranchChanges(fromBranch, toBranch, null);
+ branchManager.commitBranch(fromBranch, toBranch, false);
+ }
+ } else {
+ branchManager.commitBranch(fromBranch, toBranch, true);
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Commit Branch Failed", ex);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ boolean validBranchSelected = SkynetSelections.oneDescendantBranchSelected(selection) && useParentBranch;
+
+ if (validBranchSelected) {
+ validBranchSelected &=
+ !((Branch) SkynetSelections.boilDownObject(selection.getFirstElement())).isChangeManaged();
+ }
+ return (validBranchSelected) || (!useParentBranch && OseeProperties.getInstance().isDeveloper() && SkynetSelections.oneBranchSelected(selection));
+ }
+ }
+
+ private void createCommitCommand(MenuManager menuManager) {
+ menuManager.add(new CompoundContributionItem() {
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ String parentBranchName = "";
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ if (SkynetSelections.oneDescendantBranchSelected(selection)) {
+ Branch parent =
+ ((Branch) SkynetSelections.boilDownObject(selection.getFirstElement())).getParentBranch();
+ parentBranchName = parent.getBranchName();
+ }
+ IContributionItem[] myIContributionItems =
+ new IContributionItem[] {Commands.getLocalCommandContribution(getSite(), "commitIntoParentCommand",
+ "Commit Into Parent Branch: " + parentBranchName, null, null, null, null, null, null)};
+
+ return myIContributionItems;
+ }
+ });
+
+ handlerService.activateHandler(getSite().getId() + ".commitIntoParentCommand", new CommitHandler(menuManager,
+ true));
+ }
+
+ private void createBranchCommand(MenuManager menuManager) {
+ CommandContributionItem createBranchCommand =
+ Commands.getLocalCommandContribution(getSite(), "createBranchCommand", "Branch", null, null, null, "B",
+ null, null);
+ menuManager.add(createBranchCommand);
+
+ handlerService.activateHandler(createBranchCommand.getId(), new BranchCreationHandler(menuManager, branchTable,
+ false));
+ }
+
+ private void createSelectivelyBranchCommand(MenuManager menuManager) {
+ CommandContributionItem createSelectiveBranchCommand =
+ Commands.getLocalCommandContribution(getSite(), "createSelectiveBranchCommand", "Selectively Branch", null,
+ null, null, "S", null, null);
+ menuManager.add(createSelectiveBranchCommand);
+
+ handlerService.activateHandler(createSelectiveBranchCommand.getId(), new BranchCreationHandler(menuManager,
+ branchTable, true));
+ }
+
+ private void createViewTableMenuItem(MenuManager menuManager) {
+ CommandContributionItem viewTableReportCommand =
+ Commands.getLocalCommandContribution(getSite(), "viewTableReportCommand", "View Branch Table Report", null,
+ null, null, "V", null, null);
+ menuManager.add(viewTableReportCommand);
+
+ handlerService.activateHandler(viewTableReportCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ (new TreeViewerReport(branchTable)).open();
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ return !selection.isEmpty();
+ }
+ });
+ }
+
+ private void createImportOntoBranchCommand(MenuManager menuManager) {
+ CommandContributionItem importOntoBranchCommand =
+ Commands.getLocalCommandContribution(getSite(), "importOntoBranchCommand", "Import Onto Branch...", null,
+ null, null, "I", null, null);
+ menuManager.add(importOntoBranchCommand);
+
+ handlerService.activateHandler(importOntoBranchCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch branch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ File file = Files.selectFile(getSite().getShell(), SWT.OPEN, "*.xml");
+ if (file != null) {
+ Jobs.startJob(new ImportBranchJob(file, branch, true, true));
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ return SkynetSelections.oneBranchSelected(selection) && accessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(selection.getFirstElement()), PermissionEnum.WRITE);
+ }
+ });
+ }
+
+ private void createImportDescendantsOntoBranchCommand(MenuManager menuManager) {
+ CommandContributionItem importDescendantsOntoBranchCommand =
+ Commands.getLocalCommandContribution(getSite(), "importDescendantsOntoBranchCommand",
+ "Import Descendants Onto Branch...", null, null, null, "m", null, null);
+ menuManager.add(importDescendantsOntoBranchCommand);
+
+ handlerService.activateHandler(importDescendantsOntoBranchCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch branch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ File file = Files.selectFile(getSite().getShell(), SWT.OPEN, "*.xml");
+ if (file != null) {
+ Jobs.startJob(new ImportBranchJob(file, branch, false, true));
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ return SkynetSelections.oneBranchSelected(selection) && accessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(selection.getFirstElement()), PermissionEnum.WRITE);
+ }
+ });
+ }
+
+ private void createExportBranchCommand(MenuManager menuManager) {
+ CommandContributionItem exportBranchAndDescendantsCommand =
+ Commands.getLocalCommandContribution(getSite(), "exportBranchAndDescendantsCommand",
+ "Export Branch and Descendants...", null, null, null, "x", null, null);
+ menuManager.add(exportBranchAndDescendantsCommand);
+
+ handlerService.activateHandler(exportBranchAndDescendantsCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch branch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ File file = Files.selectFile(getSite().getShell(), SWT.SAVE, "*.xml");
+ if (file != null) {
+ Jobs.startJob(new ExportBranchJob(file, branch, false));
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+
+ return SkynetSelections.oneBranchSelected(selection) && accessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(selection.getFirstElement()), PermissionEnum.READ);
+ }
+ });
+ }
+
+ private void createExportBranchDescendantsCommand(MenuManager menuManager) {
+ CommandContributionItem exportDescendantsCommand =
+ Commands.getLocalCommandContribution(getSite(), "exportDescendantsCommand",
+ "Export Branch Descendants Only...", null, null, null, "D", null, null);
+ menuManager.add(exportDescendantsCommand);
+
+ handlerService.activateHandler(exportDescendantsCommand.getId(),
+
+ new AbstractSelectionEnabledHandler(menuManager) {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = (IStructuredSelection) branchTable.getSelection();
+ Branch branch = (Branch) ((JobbedNode) selection.getFirstElement()).getBackingData();
+
+ File file = Files.selectFile(getSite().getShell(), SWT.SAVE, "*.xml");
+ if (file != null) {
+ Jobs.startJob(new ExportBranchJob(file, branch, true));
+ }
+ return null;
+ }
+ });
+ }
+
+ private Action createFavoritesFirstAction() {
+ Action favoritesFirst = new Action("Show Favorites First", Action.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ getViewPreference().putBoolean(FAVORITE_KEY, isChecked());
+ }
+ };
+ favoritesFirst.setChecked(sorter.isFavoritesFirst());
+ favoritesFirst.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("filter.gif"));
+
+ return favoritesFirst;
+ }
+
+ private Action createShowTransactionsAction() {
+ hideTransactions = new Action("Show Transactions", Action.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ getViewPreference().putBoolean(SHOW_TRANSACTIONS, isChecked());
+ }
+ };
+ return hideTransactions;
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ private void refresh() {
+ if (branchTable != null && !branchTable.getTree().isDisposed()) {
+ branchTable.refresh();
+ }
+ }
+
+ public void forcePopulateView() {
+ if (branchTable != null && !branchTable.getTree().isDisposed()) {
+ branchTable.setInput(branchManager);
+ }
+ }
+
+ public void onEvent(Event event) {
+ if (event instanceof DefaultBranchChangedEvent) {
+ refresh();
+ } else if (event instanceof BranchEvent) {
+ BranchContentProvider contentProvider = (BranchContentProvider) branchTable.getContentProvider();
+ if (contentProvider != null) {
+ contentProvider.refresh();
+ }
+ refresh();
+ } else if (event instanceof AuthenticationEvent) {
+ refresh();
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ branchTable.getControl().setFocus();
+ }
+
+ private class BranchNameFilter extends ViewerFilter {
+ private String contains = null;
+ private boolean flat = false;
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (!isFiltering()) return true;
+
+ Object backingData = ((JobbedNode) element).getBackingData();
+ if (backingData instanceof Branch) {
+ return descendantBranchContains((Branch) backingData);
+ }
+ return true;
+ }
+
+ private boolean descendantBranchContains(Branch branch) {
+ if (branch.getBranchName().toLowerCase().contains(contains.toLowerCase())) {
+ return true;
+
+ }
+ // Recurse for hierarchical display
+ else if (!flat) {
+ try {
+ for (Branch childBranch : branch.getChildBranches()) {
+ if (descendantBranchContains(childBranch)) {
+ return true;
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(BranchView.class, ex, false);
+ return true; // Don't limit displayed data over an exception
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @param contains The contains to set.
+ */
+ public void setContains(String contains) {
+ this.contains = contains;
+ }
+
+ /**
+ * @return Returns the contains.
+ */
+ public String getContains() {
+ return contains;
+ }
+
+ public boolean isFiltering() {
+ return contains != null && contains.length() > 0;
+ }
+
+ /**
+ * @param flat the flat to set
+ */
+ public void setFlat(boolean flat) {
+ this.flat = flat;
+ }
+ }
+
+ private class FavoritesSorter extends ColumnSorter {
+ private boolean favoritesFirst;
+
+ /**
+ * @param labelProvider
+ */
+ public FavoritesSorter(ITableLabelProvider labelProvider) {
+ super(labelProvider);
+
+ this.favoritesFirst = false;
+ }
+
+ @Override
+ public int compare(Viewer viewer, Object o1, Object o2) {
+ Object backing1 = ((JobbedNode) o1).getBackingData();
+ Object backing2 = ((JobbedNode) o2).getBackingData();
+
+ if (favoritesFirst && backing1 instanceof Branch && backing2 instanceof Branch) {
+ User user = skynetAuth.getAuthenticatedUser();
+ boolean fav1 = user.isFavoriteBranch((Branch) backing1);
+ boolean fav2 = user.isFavoriteBranch((Branch) backing2);
+
+ if (fav1 ^ fav2) return fav1 ? -1 : 1;
+ } else if (backing1 instanceof Branch && !(backing2 instanceof Branch)) {
+ return -1;
+ } else if (!(backing1 instanceof Branch) && backing2 instanceof Branch) {
+ return 1;
+ }
+ return super.compare(viewer, o1, o2);
+ }
+
+ /**
+ * @return Returns the favoritesFirst.
+ */
+ public boolean isFavoritesFirst() {
+ return favoritesFirst;
+ }
+
+ /**
+ * @param favoritesFirst The favoritesFirst to set.
+ */
+ public void setFavoritesFirst(boolean favoritesFirst) {
+ this.favoritesFirst = favoritesFirst;
+ }
+ }
+
+ public void reveal(Branch branch) {
+ for (Object obj : ((BranchContentProvider) branchTable.getContentProvider()).getElements(null)) {
+ if (((JobbedNode) obj).getBackingData() == branch) {
+ branchTable.reveal(obj);
+ branchTable.setSelection(new StructuredSelection(obj), true);
+ return;
+ }
+ }
+ }
+
+ /**
+ * Reveal a branch in the viewer and select it.
+ */
+ public static void revealBranch(Branch branch) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ BranchView branchManager;
+ try {
+ branchManager = (BranchView) page.showView(VIEW_ID);
+ branchManager.reveal(branch);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#dispose()
+ */
+ @Override
+ public void dispose() {
+ disposed = true;
+
+ try {
+ getViewPreference().flush();
+ } catch (BackingStoreException ex) {
+ OSEELog.logException(BranchView.class, ex, true);
+ }
+
+ eventManager.unRegisterAll(this);
+ super.dispose();
+ }
+
+ public void presentAsHierarchy() {
+ getViewPreference().putBoolean(FLAT_KEY, false);
+ }
+
+ public void presentAsFlat() {
+ getViewPreference().putBoolean(FLAT_KEY, true);
+ }
+
+ private void setShowTransactions(boolean showTransactions) {
+ if (branchTable != null && branchTable.getContentProvider() != null) {
+ hideTransactions.setChecked(showTransactions);
+
+ BranchContentProvider myBranchContentProvider = (BranchContentProvider) branchTable.getContentProvider();
+ myBranchContentProvider.setShowTransactions(showTransactions);
+ myBranchContentProvider.refresh();
+ }
+ }
+
+ private void setPresentation(boolean flat) {
+ if (branchTable != null && branchTable.getContentProvider() != null) {
+ BranchContentProvider provider = (BranchContentProvider) branchTable.getContentProvider();
+
+ // No effect if going to the same state
+ if (provider.isShowChildBranchesAtMainLevel() != flat || provider.isShowChildBranchesUnderParents() != !flat) {
+ nameFilter.setFlat(flat);
+ provider.setShowChildBranchesAtMainLevel(flat);
+ provider.setShowChildBranchesUnderParents(!flat);
+
+ provider.refresh();
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/FlatPresentationHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/FlatPresentationHandler.java
new file mode 100644
index 00000000000..53bce7301df
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/FlatPresentationHandler.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class FlatPresentationHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ((BranchView) HandlerUtil.getActivePartChecked(event)).presentAsFlat();
+ return null;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/HierarchicalPresentationHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/HierarchicalPresentationHandler.java
new file mode 100644
index 00000000000..0d805bd8871
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/HierarchicalPresentationHandler.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class HierarchicalPresentationHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ((BranchView) HandlerUtil.getActivePartChecked(event)).presentAsHierarchy();
+ return null;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/ParentBranchAction.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/ParentBranchAction.java
new file mode 100644
index 00000000000..84cb395ffd3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/ParentBranchAction.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.swt.NonBlankValidator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ParentBranchAction extends Action {
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static IInputValidator inputValidator = new NonBlankValidator("The Branch name can not be blank.");
+
+ /**
+ * @param text
+ * @param style
+ */
+ public ParentBranchAction(BranchView branchView) {
+ super("Create New &Parent Branch", AS_PUSH_BUTTON);
+ setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("branch.gif"));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.action.Action#run()
+ */
+ @Override
+ public void run() {
+ InputDialog dialog =
+ new InputDialog(Display.getCurrent().getActiveShell(), "Name Branch", "Enter branch name", "parent branch",
+ inputValidator);
+
+ if (dialog.open() == Window.CANCEL) {
+ return;
+ } else {
+ try {
+ createNewParentBranch(dialog.getValue(), dialog.getValue());
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+
+ public static Branch createNewParentBranch(String branchShortName, String branchName) throws Exception {
+
+ List<String> skynetTypeImport = new ArrayList<String>();
+ skynetTypeImport.add("org.eclipse.osee.framework.skynet.core.ProgramAndCommon");
+
+ // Create branch, import skynet types and initialize
+ Branch branch = branchManager.createRootBranch(branchShortName, branchName, null, skynetTypeImport, true);
+
+ try {
+ if (PlatformUI.isWorkbenchRunning() && BranchView.getBranchView() != null) BranchView.getBranchView().forcePopulateView();
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ return branch;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/RootBranchWizard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/RootBranchWizard.java
new file mode 100644
index 00000000000..3791ca5334e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/RootBranchWizard.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class RootBranchWizard extends Wizard implements INewWizard {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/SnapshotDescription.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/SnapshotDescription.java
new file mode 100644
index 00000000000..c3089449169
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/branch/SnapshotDescription.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.branch;
+
+import java.util.Date;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class SnapshotDescription {
+ private final ChangeReportInput oldInput;
+ private final ChangeReportInput newInput;
+ private final Date changeTime;
+
+ /**
+ * @param oldInput
+ * @param newInput
+ * @param changeTime
+ */
+ public SnapshotDescription(ChangeReportInput oldInput, ChangeReportInput newInput, Date changeTime) {
+ this.oldInput = oldInput;
+ this.newInput = newInput;
+ this.changeTime = changeTime;
+ }
+
+ @Override
+ public String toString() {
+ return "Snapshot" + (isOutOfDate() ? "(out of date)" : "") + " from " + changeTime + " on transactions " + oldInput.getBaseTransaction().getTransactionNumber() + " to " + oldInput.getToTransaction().getTransactionNumber();
+ }
+
+ /**
+ * @return Returns the changeTime.
+ */
+ public Date getChangeTime() {
+ return changeTime;
+ }
+
+ /**
+ * @return Returns the newInput.
+ */
+ public ChangeReportInput getNewInput() {
+ return newInput;
+ }
+
+ /**
+ * @return Returns the oldInput.
+ */
+ public ChangeReportInput getOldInput() {
+ return oldInput;
+ }
+
+ public boolean isOutOfDate() {
+ return oldInput.getChecksum() != newInput.getChecksum();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeRepolrt2ClickListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeRepolrt2ClickListener.java
new file mode 100644
index 00000000000..2f1407aba6f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeRepolrt2ClickListener.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.changeReport;
+
+import java.sql.SQLException;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.swt.ITreeNode;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ChangeRepolrt2ClickListener implements IDoubleClickListener {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
+ */
+ public void doubleClick(DoubleClickEvent event) {
+ Object selectedItem = ((IStructuredSelection) event.getSelection()).getFirstElement();
+
+ if (selectedItem instanceof ITreeNode) {
+ Object backingObject = ((ITreeNode) selectedItem).getBackingData();
+ if (backingObject instanceof ArtifactChange) {
+ try {
+ ArtifactEditor.editArtifact(((ArtifactChange) backingObject).getArtifact());
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeReportView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeReportView.java
new file mode 100644
index 00000000000..7791be1f1ef
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/changeReport/ChangeReportView.java
@@ -0,0 +1,1418 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.changeReport;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.ChangeType.OUTGOING;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ARTIFACT_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ATTRIBUTE_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.RELATION_LINK_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.TRANSACTIONS_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.TRANSACTION_DETAIL_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.CHANGE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.DELETE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.NEW;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.event.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalDeletedBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteDeletedBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.AttributeChange;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.revision.RelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.skynet.core.util.WordUtil;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.sql.SQL3DataType;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.plugin.util.SelectionCountChangeListener;
+import org.eclipse.osee.framework.ui.plugin.util.db.AbstractDbTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.ChangeType;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase;
+import org.eclipse.osee.framework.ui.skynet.ArtifactExplorer;
+import org.eclipse.osee.framework.ui.skynet.LabelSorter;
+import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetDefaultBranchContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.TreeViewerReport;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchContentProvider;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView;
+import org.eclipse.osee.framework.ui.skynet.menu.ArtifactPreviewMenu;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu;
+import org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu.GlobalMenuItem;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.render.WordRenderer;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactClipboard;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.ShowAttributeAction;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetViews;
+import org.eclipse.osee.framework.ui.swt.ITreeNode;
+import org.eclipse.osee.framework.ui.swt.TreeNode;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * Displays the changes made between two transaction points on a single branch.
+ *
+ * @author Robert A. Fisher
+ */
+public class ChangeReportView extends ViewPart implements IActionable, IEventReceiver {
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView";
+ private static final String INPUT = "input";
+
+ private IHandlerService handlerService;
+ private static final ArtifactClipboard artifactClipboard = new ArtifactClipboard(VIEW_ID);
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final String[] columnNames = {"", "Name", "", ""};
+ private static final RevisionManager revisionManager = RevisionManager.getInstance();
+ private static final String SHOW_FINAL_VERSION_TXT = "Show Final &Version";
+ private static final String DIFF_ARTIFACT = "DIFF_ARTIFACT";
+ private Action sortAction = null;
+ private Collection<Artifact> attributeModifiedArtifacts = null;
+
+ private TreeViewer changeTable;
+ private MenuItem diffMenuItem;
+ private MenuItem diffOnParentBranchMenuItem;
+ private MenuItem diffConflictsMenuItem;
+ private MenuItem revertMenuItem;
+ private MenuItem changeReportMenuItem;
+ private MenuItem revisionMenuItem;
+ private MenuItem showFinalVersionMenuItem;
+ private MenuItem copyMenuItem;
+ private MenuItem compressWordAttributes;
+ private MenuItem showInExplorer;
+
+ private TransactionId baseParentTransactionId;
+ private TransactionId baseTransactionId;
+ private TransactionId toTransactionId;
+
+ private ChangeReportInput priorInput;
+
+ private ShowAttributeAction attributesAction;
+
+ /**
+ *
+ */
+ public ChangeReportView() {
+ super();
+
+ this.baseParentTransactionId = null;
+ this.baseTransactionId = null;
+ this.toTransactionId = null;
+ this.priorInput = null;
+
+ eventManager.register(LocalDeletedBranchEvent.class, this);
+ eventManager.register(RemoteDeletedBranchEvent.class, this);
+ eventManager.register(LocalCommitBranchEvent.class, this);
+ eventManager.register(RemoteCommitBranchEvent.class, this);
+ }
+
+ public TreeViewer getChangeTableTreeViewer() {
+ return changeTable;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ PlatformUI.getWorkbench().getService(IHandlerService.class);
+ handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
+ GridData gridData = new GridData();
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.grabExcessHorizontalSpace = true;
+
+ parent.setLayoutData(gridData);
+
+ changeTable = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.MULTI);
+ changeTable.setContentProvider(new BranchContentProvider());
+
+ try {
+ attributesAction = new ShowAttributeAction(changeTable, SkynetGuiPlugin.CHANGE_REPORT_ATTRIBUTES_PREF);
+ attributesAction.addToView(this,
+ SkynetViews.loadAttrTypesFromPreferenceStore(SkynetGuiPlugin.CHANGE_REPORT_ATTRIBUTES_PREF));
+
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+
+ changeTable.setLabelProvider(new BranchLabelProvider(attributesAction));
+ changeTable.setSorter(new LabelSorter());
+
+ createColumns();
+ changeTable.addDoubleClickListener(new ChangeRepolrt2ClickListener());
+ changeTable.getTree().addKeyListener(new keySelectedListener());
+ changeTable.addSelectionChangedListener(new SelectionCountChangeListener(getViewSite()));
+ Tree changeTree = changeTable.getTree();
+
+ if (true) {
+ defineMenusNewerWay();
+ } else {
+ defineMenusOlderWay(parent, changeTree);
+ }
+ new ChangeReportDragAndDrop(changeTree, VIEW_ID);
+
+ createActions();
+
+ SkynetDefaultBranchContributionItem.addTo(this, false);
+ SkynetContributionItem.addTo(this, true);
+
+ setHelpContexts();
+
+ if (priorInput != null) {
+ explore(priorInput);
+ }
+ }
+
+ /**
+ *
+ */
+ private void defineMenusNewerWay() {
+ MenuManager menuManager = new MenuManager();
+ changeTable.getTree().setMenu(menuManager.createContextMenu(changeTable.getTree()));
+ // createCommitIntoCommand(menuManager);
+ menuManager.add(new Separator("Top"));
+ // createDiffMenuItem(menuManager);
+ // createDiffConflictsMenuItem(menuManager);
+ // createParentDiffMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondParentDiff"));
+ // createViewFinalVersionMenuItem(menuManager);
+ // createPreviewMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondPreview"));
+ // createShowResourceHistoryMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondCreateHistory"));
+ // createShowInExplorerMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondShowInExplorer"));
+ // createRevertMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondRevertArtifact"));
+ // createWordChangeReportMenuItem(menuManager);
+ // createChangeReportMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondChangeReport"));
+ // createCopyMenuItem(menuManager);
+ // menuManager.add(new Separator("BeyondCopy"));
+ // createCompressWordMenuItem(menuManager);
+ // createDeleteArtifactsMenuItem(menuManager);
+ // createPurgeArtifactsMenuItem(menuManager);
+ // createTagArtifactsMenuItem(menuManager);
+ menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+
+ getSite().registerContextMenu("org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView", menuManager,
+ changeTable);
+ changeTable.addSelectionChangedListener(new SelectionCountChangeListener(getViewSite()));
+ getSite().setSelectionProvider(changeTable);
+ }
+
+ /**
+ * @param parent
+ * @param changeTree
+ */
+ private void defineMenusOlderWay(Composite parent, Tree changeTree) {
+ Menu popupMenu = new Menu(parent);
+ popupMenu.addMenuListener(new MenuEnablingListener());
+
+ createDiffMenuItem(popupMenu);
+ createDiffConflictsMenuItem(popupMenu);
+ createParentDiffMenuItem(popupMenu);
+
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createViewFinalVersionMenuItem(popupMenu);
+ ArtifactPreviewMenu.createPreviewMenuItem(popupMenu, changeTable);
+
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createHistoryMenuItem(popupMenu);
+ createShowInExplorerMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createRevertMenuItem(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createWordChangeReportMenuItem(popupMenu);
+ createChangeReport(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createCopyMenu(popupMenu);
+ new MenuItem(popupMenu, SWT.SEPARATOR);
+ createCompressWordMenu(popupMenu);
+ new GlobalMenu(popupMenu, globalMenuHelper);
+ changeTree.setMenu(popupMenu);
+ }
+
+ // @Override
+ // public void createPartControl(Composite parent) {
+ // GridData gridData = new GridData();
+ // gridData.verticalAlignment = GridData.FILL;
+ // gridData.horizontalAlignment = GridData.FILL;
+ // gridData.grabExcessVerticalSpace = true;
+ // gridData.grabExcessHorizontalSpace = true;
+ //
+ // parent.setLayoutData(gridData);
+ //
+ // changeTable = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.MULTI);
+ // changeTable.setContentProvider(new BranchContentProvider());
+ //
+ // try {
+ // attributesAction = new ShowAttributeAction(changeTable, SkynetGuiPlugin.CHANGE_REPORT_ATTRIBUTES_PREF);
+ // attributesAction.addToView(this,
+ // SkynetViews.loadAttrTypesFromPreferenceStore(SkynetGuiPlugin.CHANGE_REPORT_ATTRIBUTES_PREF));
+ //
+ // } catch (SQLException ex) {
+ // OSEELog.logException(getClass(), ex, false);
+ // }
+ //
+ // changeTable.setLabelProvider(new BranchLabelProvider(attributesAction));
+ // changeTable.setSorter(new LabelSorter());
+ //
+ // createColumns();
+ // changeTable.addDoubleClickListener(new ChangeRepolrt2ClickListener());
+ // changeTable.getTree().addKeyListener(new keySelectedListener());
+ // changeTable.addSelectionChangedListener(new SelectionCountChangeListener(getViewSite()));
+ //
+ // Menu popupMenu = new Menu(parent);
+ // popupMenu.addMenuListener(new MenuEnablingListener());
+ //
+ // createDiffMenuItem(popupMenu);
+ // createDiffConflictsMenuItem(popupMenu);
+ // createParentDiffMenuItem(popupMenu);
+ //
+ // new MenuItem(popupMenu, SWT.SEPARATOR);
+ // createViewFinalVersionMenuItem(popupMenu);
+ // ArtifactPreviewMenu.createPreviewMenuItem(popupMenu, changeTable);
+ //
+ // new MenuItem(popupMenu, SWT.SEPARATOR);
+ // createHistoryMenuItem(popupMenu);
+ // createShowInExplorerMenuItem(popupMenu);
+ // new MenuItem(popupMenu, SWT.SEPARATOR);
+ // createRevertMenuItem(popupMenu);
+ // new MenuItem(popupMenu, SWT.SEPARATOR);
+ // createWordChangeReportMenuItem(popupMenu);
+ // createChangeReport(popupMenu);
+ // new MenuItem(popupMenu, SWT.SEPARATOR);
+ // createCopyMenu(popupMenu);
+ // new MenuItem(popupMenu, SWT.SEPARATOR);
+ // createCompressWordMenu(popupMenu);
+ // new GlobalMenu(popupMenu, globalMenuHelper);
+ //
+ // Tree changeTree = changeTable.getTree();
+ // changeTree.setMenu(popupMenu);
+ //
+ // new ChangeReportDragAndDrop(changeTree, VIEW_ID);
+ //
+ // createActions();
+ //
+ // SkynetDefaultBranchContributionItem.addTo(this, false);
+ // SkynetContributionItem.addTo(this, true);
+ //
+ // setHelpContexts();
+ //
+ // if (priorInput != null) {
+ // explore(priorInput);
+ // }
+ // }
+
+ IGlobalMenuHelper globalMenuHelper = new IGlobalMenuHelper() {
+
+ public java.util.Collection<Artifact> getArtifacts() {
+ return getHeadArtifactsForSelection();
+ };
+
+ public Collection<GlobalMenuItem> getValidMenuItems() {
+ return Arrays.asList(new GlobalMenuItem[] {GlobalMenuItem.TagArtifacts});
+ }
+
+ };
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(changeTable.getControl(), "change_report_table");
+ }
+
+ private void createActions() {
+
+ Action refreshAction = new Action("Refresh") {
+
+ @Override
+ public void run() {
+ Object input = changeTable.getInput();
+ if (input != null) {
+ try {
+ ((ChangeReportInput) input).setForceRefresh(true);
+ ((BranchContentProvider) changeTable.getContentProvider()).refresh(true);
+ changeTable.refresh();
+ } catch (IllegalStateException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+ };
+ refreshAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("refresh.gif"));
+ refreshAction.setToolTipText("Refresh");
+
+ sortAction = new Action("Sort", Action.AS_CHECK_BOX) {
+
+ @Override
+ public void run() {
+ if (sortAction.isChecked()) {
+ if (attributeModifiedArtifacts == null) {
+ try {
+ TransactionId baseTransId = ((ChangeReportInput) changeTable.getInput()).getBaseTransaction();
+ TransactionId toTransId = ((ChangeReportInput) changeTable.getInput()).getToTransaction();
+ attributeModifiedArtifacts =
+ RevisionManager.getInstance().getNewAndModifiedArtifacts(baseTransId, toTransId, false);
+ } catch (SQLException ex) {
+ // Don't want to repeat the errored search
+ attributeModifiedArtifacts = new ArrayList<Artifact>();
+ OSEELog.logSevere(SkynetGuiPlugin.class, "Error getting modified artifacts", true);
+ }
+ }
+ ((BranchLabelProvider) changeTable.getLabelProvider()).setShowChangeType(true,
+ attributeModifiedArtifacts);
+ changeTable.setSorter(viewerSorter);
+ } else {
+ ((BranchLabelProvider) changeTable.getLabelProvider()).setShowChangeType(false,
+ new ArrayList<Artifact>());
+ changeTable.setSorter(new LabelSorter());
+ }
+ }
+ };
+ sortAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("sort.gif"));
+ sortAction.setToolTipText("Sort changes by Modified, Modified by Relation Only, New and Deleted");
+ Action expandAllAction = new Action("Expand All") {
+
+ @Override
+ public void run() {
+ changeTable.expandAll();
+ }
+ };
+ expandAllAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("expandAll.gif"));
+ expandAllAction.setToolTipText("Expand All");
+ Action collapseAllAction = new Action("Collapse All") {
+
+ @Override
+ public void run() {
+ changeTable.collapseAll();
+ }
+ };
+ collapseAllAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("collapseAll.gif"));
+ collapseAllAction.setToolTipText("Collapse All");
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(expandAllAction);
+ toolbarManager.add(collapseAllAction);
+ toolbarManager.add(refreshAction);
+ toolbarManager.add(sortAction);
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Change Report");
+ }
+
+ ViewerSorter viewerSorter = new ViewerSorter() {
+
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object o1, Object o2) {
+ if ((o1 instanceof TreeNode) && (o2 instanceof TreeNode)) {
+ if ((((TreeNode) o1).getBackingData() instanceof ArtifactChange) && (((TreeNode) o2).getBackingData() instanceof ArtifactChange)) {
+ ArtifactChange artChg1 = (ArtifactChange) ((TreeNode) o1).getBackingData();
+ ArtifactChange artChg2 = (ArtifactChange) ((TreeNode) o2).getBackingData();
+ if (artChg1.getModType() == artChg2.getModType()) {
+ boolean art1RelChgOnly = false;
+ boolean art2RelChgOnly = false;
+ try {
+ art1RelChgOnly = !attributeModifiedArtifacts.contains(artChg1.getArtifact());
+ art2RelChgOnly = !attributeModifiedArtifacts.contains(artChg2.getArtifact());
+ // sort relation change only artifacts last
+ if ((art1RelChgOnly && art2RelChgOnly) || (!art1RelChgOnly && !art2RelChgOnly))
+ getComparator().compare(artChg1.getName(), artChg2.getName());
+ else if (art1RelChgOnly)
+ return 1;
+ else
+ return -1;
+ } catch (SQLException ex) {
+ // do nothing since this is comparator, errors will be too many
+ }
+ return getComparator().compare(artChg1.getName(), artChg2.getName());
+ } else if (artChg1.getModType() == SkynetDatabase.ModificationType.CHANGE)
+ return -1;
+ else if (artChg2.getModType() == SkynetDatabase.ModificationType.CHANGE)
+ return 1;
+ else if (artChg1.getModType() == SkynetDatabase.ModificationType.NEW)
+ return -1;
+ else if (artChg2.getModType() == SkynetDatabase.ModificationType.NEW)
+ return 1;
+ else if (artChg1.getModType() == SkynetDatabase.ModificationType.DELETE)
+ return -1;
+ else if (artChg2.getModType() == SkynetDatabase.ModificationType.DELETE)
+ return 1;
+ else
+ return getComparator().compare(artChg1.getName(), artChg2.getName());
+ }
+ }
+ return 0;
+ }
+
+ };
+
+ private void createColumns() {
+ Tree tree = changeTable.getTree();
+
+ tree.setHeaderVisible(true);
+ TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
+ column1.setWidth(300);
+ column1.setText(columnNames[0]);
+
+ TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
+ column2.setWidth(140);
+ column2.setText(columnNames[1]);
+
+ TreeColumn column3 = new TreeColumn(tree, SWT.LEFT);
+ column3.setWidth(200);
+ column3.setText(columnNames[2]);
+
+ TreeColumn column4 = new TreeColumn(tree, SWT.LEFT);
+ column4.setWidth(200);
+ column4.setText(columnNames[3]);
+ }
+
+ /**
+ * Compares the first and last version for the range of the selected artifact.
+ *
+ * @param popupMenu
+ */
+ private void createDiffMenuItem(Menu popupMenu) {
+ diffMenuItem = new MenuItem(popupMenu, SWT.PUSH);
+ diffMenuItem.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent event) {
+ ArtifactChange selectedItem = (ArtifactChange) ((ITreeNode) ((IStructuredSelection) changeTable.getSelection()).getFirstElement()).getBackingData();
+
+ try {
+ if (selectedItem.getArtifact() != null) {
+ Artifact firstArtifact = selectedItem.getModType() == NEW ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getBaselineTransactionId());
+ Artifact secondArtifact = selectedItem.getModType() == DELETE ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getToTransactionId());
+
+ RendererManager.getInstance().compareInJob(firstArtifact, secondArtifact, DIFF_ARTIFACT);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent ev) {
+ }
+ });
+ }
+
+ private void createWordChangeReportMenuItem(Menu popupMenu) {
+ MenuItem wordChangeMenuItem = new MenuItem(popupMenu, SWT.PUSH);
+ wordChangeMenuItem.setText("View Word Change Report");
+
+ wordChangeMenuItem.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) changeTable.getSelection();
+ Iterator<?> iterator = selection.iterator();
+ int listSize = selection.size();
+ ArtifactChange selectedItem = null;
+
+ ArrayList<Artifact> baseArtifacts = new ArrayList<Artifact>(listSize);
+ ArrayList<Artifact> newerArtifacts = new ArrayList<Artifact>(listSize);
+
+ while (iterator.hasNext()) {
+ selectedItem = (ArtifactChange) ((ITreeNode) iterator.next()).getBackingData();
+
+ try {
+ Artifact baseArtifact = selectedItem.getModType() == NEW ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getBaselineTransactionId());
+ Artifact newerArtifact = selectedItem.getModType() == DELETE ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getToTransactionId());
+
+ baseArtifacts.add(baseArtifact);
+ newerArtifacts.add(newerArtifact);
+ } catch (Exception e1) {
+ OSEELog.logException(getClass(), e1, true);
+ }
+ }
+ // This is a HACK ... I needed a way to ask the renderManager
+ // for the wordRender. There
+ // should exist such a method on the manager
+ WordRenderer renderer = (WordRenderer) RendererManager.getInstance().getRendererById(
+ "org.eclipse.osee.framework.ui.skynet.word");
+
+ try {
+ renderer.compareArtifacts(baseArtifacts, newerArtifacts, DIFF_ARTIFACT, null,
+ selectedItem.getBaselineTransactionId().getBranch());
+ } catch (CoreException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ }
+
+ private void createParentDiffMenuItem(Menu popupMenu) {
+ diffOnParentBranchMenuItem = new MenuItem(popupMenu, SWT.PUSH);
+ diffOnParentBranchMenuItem.setText("Word changes made to parent branch since creating current branch");
+ diffOnParentBranchMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ ArtifactChange selectedItem = (ArtifactChange) ((ITreeNode) ((IStructuredSelection) changeTable.getSelection()).getFirstElement()).getBackingData();
+
+ try {
+ Artifact firstArtifact = selectedItem.getModType() == NEW ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getBaselineTransactionId());
+
+ Artifact secondArtifact = null;
+ Branch parentBranch = firstArtifact.getBranch().getParentBranch();
+
+ TransactionId transactionId = TransactionIdManager.getInstance().getEditableTransactionId(parentBranch);
+ secondArtifact = selectedItem.getModType() == DELETE ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), transactionId);
+
+ RendererManager.getInstance().compareInJob(firstArtifact, secondArtifact, DIFF_ARTIFACT);
+
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ });
+ }
+
+ /**
+ * Compares the first and last version for the range of the selected artifact.
+ *
+ * @param popupMenu
+ */
+ private void createDiffConflictsMenuItem(Menu popupMenu) {
+ diffConflictsMenuItem = new MenuItem(popupMenu, SWT.PUSH);
+ diffConflictsMenuItem.setText("Word differences between current/parent branches");
+ diffConflictsMenuItem.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent event) {
+ ArtifactChange selectedItem = (ArtifactChange) ((ITreeNode) ((IStructuredSelection) changeTable.getSelection()).getFirstElement()).getBackingData();
+
+ try {
+ Artifact secondArtifact = artifactManager.getArtifactFromId(selectedItem.getArtifact().getArtId(),
+ toTransactionId);
+ RendererManager.getInstance().compareInJob(selectedItem.getConflictingModArtifact(), secondArtifact,
+ DIFF_ARTIFACT);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ }
+
+ private void createHistoryMenuItem(Menu parentMenu) {
+ revisionMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ revisionMenuItem.setText("&Show Resource History ");
+ revisionMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ArtifactChange selectedItem = (ArtifactChange) ((ITreeNode) ((IStructuredSelection) changeTable.getSelection()).getFirstElement()).getBackingData();
+
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ Artifact selectedArtifact = selectedItem.getArtifact();
+
+ RevisionHistoryView revisionHistoryView = (RevisionHistoryView) page.showView(
+ RevisionHistoryView.VIEW_ID,
+ selectedArtifact != null ? selectedArtifact.getGuid() : Integer.toString(selectedItem.getArtId()),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ revisionHistoryView.explore(selectedArtifact);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ });
+ }
+
+ private void createViewFinalVersionMenuItem(Menu parentMenu) {
+ showFinalVersionMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ showFinalVersionMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ArtifactChange selectedItem = (ArtifactChange) ((ITreeNode) ((IStructuredSelection) changeTable.getSelection()).getFirstElement()).getBackingData();
+ Artifact selectedArtifact;
+ try {
+ selectedArtifact = selectedItem.getArtifact();
+ ArtifactEditor.editArtifact(selectedArtifact);
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ });
+ }
+
+ private void createRevertMenuItem(Menu parentMenu) {
+ revertMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ revertMenuItem.setText("&Revert Artifact...");
+ revertMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ArtifactChange selectedItem = (ArtifactChange) ((ITreeNode) ((IStructuredSelection) changeTable.getSelection()).getFirstElement()).getBackingData();
+
+ // This is serious stuff, make sure the user understands the
+ // impact.
+ if (MessageDialog.openConfirm(
+ changeTable.getTree().getShell(),
+ "Confirm Revert of " + selectedItem.getName(),
+ "All attribute changes for the artifact and all link changes that involve the artifact on this branch will be reverted." + "\n\nTHIS IS IRREVERSIBLE" + "\n\nOSEE must be restarted after all reverting is finished to see the results")) {
+
+ Jobs.startJob(new RevertJob(selectedItem.getName(), selectedItem.getArtId()));
+ }
+ }
+ });
+ }
+
+ private void createChangeReport(Menu parentMenu) {
+ changeReportMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ changeReportMenuItem.setText("View &Change Report");
+ changeReportMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ (new TreeViewerReport(changeTable)).open();
+ }
+ });
+ }
+
+ private void createCopyMenu(Menu parentMenu) {
+ copyMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ copyMenuItem.setText("Copy \tCtrl+C");
+ copyMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ performCopy();
+ }
+ });
+ }
+
+ private void performCopy() {
+ IStructuredSelection selection = (IStructuredSelection) changeTable.getSelection();
+ ArrayList<Artifact> artifactTransferData = new ArrayList<Artifact>();
+ ArrayList<String> textTransferData = new ArrayList<String>();
+ Artifact artifact;
+
+ if (selection != null && !selection.isEmpty()) {
+ for (Object object : selection.toArray()) {
+
+ if (object instanceof ITreeNode && ((ITreeNode) object).getBackingData() instanceof ArtifactChange) {
+ try {
+ artifact = ((ArtifactChange) ((ITreeNode) object).getBackingData()).getArtifact();
+ if (accessManager.checkObjectPermission(artifact, PermissionEnum.READ)) {
+ artifactTransferData.add(artifact);
+ textTransferData.add(artifact.getDescriptiveName());
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+
+ if (artifactTransferData.size() > 0) artifactClipboard.setArtifactsToClipboard(artifactTransferData,
+ textTransferData);
+ }
+ }
+
+ private void createCompressWordMenu(Menu parentMenu) {
+ compressWordAttributes = new MenuItem(parentMenu, SWT.PUSH);
+ compressWordAttributes.setText("Co&mpress Word Attributes");
+ compressWordAttributes.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ try {
+ performCompression();
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ });
+ }
+
+ private List<Artifact> getHeadArtifactsForSelection() {
+ IStructuredSelection selection = (IStructuredSelection) changeTable.getSelection();
+ if (selection != null && !selection.isEmpty()) {
+ Object[] selectedObjects = selection.toArray();
+ List<Artifact> artifacts = new ArrayList<Artifact>(selectedObjects.length);
+
+ for (Object object : selectedObjects) {
+ if (object instanceof ITreeNode && ((ITreeNode) object).getBackingData() instanceof ArtifactChange) {
+ try {
+ Artifact artifact = ((ArtifactChange) ((ITreeNode) object).getBackingData()).getArtifact();
+ Artifact headArtifact = artifactManager.getArtifact(artifact.getGuid(), artifact.getBranch());
+ if (headArtifact != null) {
+ artifacts.add(headArtifact);
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+ return artifacts;
+ }
+
+ return new ArrayList<Artifact>(0);
+ }
+
+ private void createShowInExplorerMenuItem(Menu parentMenu) {
+ showInExplorer = new MenuItem(parentMenu, SWT.CASCADE);
+ showInExplorer.setText("Show in Artifact Explorer");
+ showInExplorer.setEnabled(true);
+ showInExplorer.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ for (Artifact artifact : getHeadArtifactsForSelection()) {
+ ArtifactExplorer.revealArtifact(artifact);
+ }
+ }
+ });
+ }
+
+ private void performCompression() throws SQLException {
+ IStructuredSelection selection = (IStructuredSelection) changeTable.getSelection();
+ final Collection<Integer> artifacts = new LinkedList<Integer>();
+ Branch aBranch = null;
+ if (selection != null && !selection.isEmpty()) {
+ for (Object object : selection.toArray()) {
+
+ if (object instanceof ITreeNode) {
+ ArtifactChange artifactChange = (ArtifactChange) ((ITreeNode) object).getBackingData();
+ artifacts.add(artifactChange.getArtId());
+ if (aBranch == null) {
+ aBranch = artifactChange.getArtifact().getBranch();
+ }
+ }
+ }
+ }
+
+ final Branch branch = aBranch;
+
+ Jobs.startJob(new Job("Compress Word Attributes") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ final int total = artifacts.size();
+ int count = 0;
+
+ monitor.beginTask("Analyzing attributes", total);
+
+ for (Integer artifact : artifacts) {
+ if (WordUtil.revertNonusefulWordChanges(artifact, branch, "osee_compression_gammas")) count++;
+ monitor.worked(1);
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return Status.CANCEL_STATUS;
+ }
+ }
+
+ final int finalCount = count;
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ MessageDialog.openInformation(changeTable.getControl().getShell(), "Compression Data",
+ finalCount + " of the " + total + " artifacts need compression");
+ }
+ });
+
+ monitor.done();
+ return Status.OK_STATUS;
+ } catch (SQLException ex) {
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, Status.OK, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ });
+ }
+
+ @Override
+ public void setFocus() {
+ changeTable.getControl().setFocus();
+ }
+
+ public static void openViewUpon(final Branch branch) {
+ Job job = new Job("Open Change Report") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ Pair<TransactionId, TransactionId> transactionToFrom = TransactionIdManager.getInstance().getStartEndPoint(
+ branch);
+ if (transactionToFrom.getKey().equals(transactionToFrom.getValue())) {
+ AWorkbench.popup("Information", "There are no changes on this branch.");
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ try {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ ChangeReportView changeReportView = (ChangeReportView) page.showView(VIEW_ID,
+ String.valueOf(branch.getBranchId()), IWorkbenchPage.VIEW_ACTIVATE);
+
+ changeReportView.explore(branch);
+ } catch (PartInitException ex) {
+ OSEELog.logException(ChangeReportView.class, ex, true);
+ }
+ }
+ });
+ } catch (SQLException ex) {
+ OSEELog.logException(ChangeReportView.class, ex, true);
+ }
+
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ };
+
+ Jobs.startJob(job);
+ }
+
+ public static void openViewUpon(ChangeReportInput input) throws PartInitException {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ ChangeReportView changeReportView = (ChangeReportView) page.showView(VIEW_ID,
+ String.valueOf(input.getToTransaction().getTransactionNumber()), IWorkbenchPage.VIEW_ACTIVATE);
+ changeReportView.explore(input);
+ }
+
+ /**
+ * Explores the changes between to transactions. The transactions must not be null, must be on the same branch, and
+ * the toTransaction must be after the baseTransaction. Conflicting changes against the origination branch can also
+ * be reported. Conflicts can only be detected for a transactions on a branch that have a parent branch.
+ */
+ public void explore(final ChangeReportInput input) {
+ this.baseParentTransactionId = input.getBaseParentTransactionId();
+ this.baseTransactionId = input.getBaseTransaction();
+ this.toTransactionId = input.getToTransaction();
+
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ setPartName(input.getName());
+
+ changeTable.setInput(input);
+
+ int baseNum = baseTransactionId.getTransactionNumber();
+ int toNum = toTransactionId.getTransactionNumber();
+ if (input.isEmptyChange())
+ setContentDescription("Changes on " + input.getBranch() + " at " + new Date());
+ else if (baseParentTransactionId == null)
+ setContentDescription("Changes on " + baseTransactionId.getBranch().getBranchName() + " from transaction " + baseNum + " to transaction " + toNum + " at " + new Date());
+ else
+ setContentDescription("Changes on " + baseTransactionId.getBranch().getBranchName() + " from transaction " + baseNum + " to transaction " + toNum + " against " + baseParentTransactionId.getBranch() + ":" + baseParentTransactionId.getTransactionNumber() + " at " + new Date());
+
+ ((BranchContentProvider) changeTable.getContentProvider()).refresh(true);
+ }
+ });
+ }
+
+ /**
+ * Explores the changes on the branch.
+ *
+ * @param branch
+ * @throws SQLException
+ */
+ public void explore(final Branch branch) {
+ if (branch == null) throw new IllegalArgumentException("branch can not be null");
+
+ Job job = new Job("Compute Change Report Input") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ ChangeReportInput input = new ChangeReportInput(branch);
+ explore(input);
+ } catch (SQLException ex) {
+ OSEELog.logException(ChangeReportView.class, ex, true);
+ }
+
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ };
+
+ Jobs.startJob(job);
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ /**
+ * @author Robert A. Fisher
+ */
+ public class MenuEnablingListener implements MenuListener {
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ @SuppressWarnings("unchecked")
+ public void menuShown(MenuEvent e) {
+ boolean readPermission = true;
+ boolean writePermission = true;
+ IStructuredSelection selection = (IStructuredSelection) changeTable.getSelection();
+
+ Iterator<ITreeNode> iter = selection.iterator();
+ Object obj1 = null;
+ Object obj2 = null;
+ if (iter.hasNext()) {
+ obj1 = iter.next().getBackingData();
+ if (iter.hasNext()) {
+ obj2 = iter.next().getBackingData();
+ }
+ }
+ iter = selection.iterator();
+ while (iter.hasNext() && (readPermission || writePermission)) {
+ Object object = iter.next().getBackingData();
+ if (object instanceof ArtifactChange) {
+ try {
+ Artifact artifact = ((ArtifactChange) object).getArtifact();
+
+ if (artifact != null) {
+ readPermission &= accessManager.checkObjectPermission(artifact, PermissionEnum.READ);
+ writePermission &= accessManager.checkObjectPermission(artifact, PermissionEnum.WRITE);
+ }
+ } catch (SQLException ex) {
+ readPermission = false;
+ writePermission = false;
+ OSEELog.logException(getClass(), ex, false);
+ }
+ }
+ }
+
+ boolean artifactSelected = false;
+ try {
+ artifactSelected = obj1 instanceof ArtifactChange && obj2 == null && ((ArtifactChange) obj1).getArtifact() != null;
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+
+ if (artifactSelected) {
+ try {
+ ArtifactChange change = (ArtifactChange) obj1;
+ Artifact changedArtifact = change.getArtifact();
+ Branch reportBranch = changedArtifact.getBranch();
+ Branch parentBranch = reportBranch.getParentBranch();
+
+ boolean wordArtifactSelected = artifactSelected && changedArtifact instanceof WordArtifact;
+ boolean modifiedWordArtifactSelected = wordArtifactSelected && change.getModType() == CHANGE;
+ boolean conflictedWordArtifactSelected = modifiedWordArtifactSelected && change.getChangeType() == ChangeType.CONFLICTING;
+ boolean validDiffParent = wordArtifactSelected && parentBranch != null;
+
+ showInExplorer.setEnabled(artifactSelected && reportBranch == branchPersistenceManager.getDefaultBranch());
+
+ copyMenuItem.setEnabled(readPermission);
+ // showFinalWordVersionMenuItem.setEnabled(wordArtifactSelected
+ // && readPermission);
+ diffMenuItem.setEnabled(wordArtifactSelected && readPermission);
+ diffMenuItem.setText("Word changes made to \"" + reportBranch.getBranchShortName() + "\"");
+
+ diffConflictsMenuItem.setEnabled(conflictedWordArtifactSelected && readPermission);
+ if (conflictedWordArtifactSelected) {
+ diffConflictsMenuItem.setText("Word differences between \"" + reportBranch.getBranchShortName() + "\" and \"" + parentBranch.getBranchShortName() + "\"");
+ }
+
+ revertMenuItem.setEnabled(artifactSelected && writePermission);
+ compressWordAttributes.setEnabled(artifactSelected && writePermission && OseeProperties.getInstance().isDeveloper());
+
+ diffOnParentBranchMenuItem.setEnabled(validDiffParent && modifiedWordArtifactSelected && readPermission);
+
+ if (diffOnParentBranchMenuItem.getEnabled()) {
+ diffOnParentBranchMenuItem.setText("Word changes made to \"" + parentBranch.getBranchShortName() + "\" since creating \"" + reportBranch.getBranchShortName() + "\"");
+ }
+
+ if (showFinalVersionMenuItem.getEnabled()) {
+ showFinalVersionMenuItem.setText(SHOW_FINAL_VERSION_TXT + " (" + change.getToTransactionId().getTransactionNumber() + ")");
+ } else {
+ showFinalVersionMenuItem.setText(SHOW_FINAL_VERSION_TXT);
+ }
+
+ // if (showFinalWordVersionMenuItem.getEnabled()) {
+ // showFinalWordVersionMenuItem.setText(SHOW_FINAL_WORD_VERSION_TXT
+ // + " ("
+ // + change.getToTransactionId().getTransactionNumber() +
+ // ")");
+ // }
+ // else {
+ // showFinalWordVersionMenuItem.setText(SHOW_FINAL_WORD_VERSION_TXT);
+ // }
+ } catch (SQLException ex) {
+ compressWordAttributes.setEnabled(false);
+ copyMenuItem.setEnabled(false);
+ diffMenuItem.setEnabled(false);
+ diffOnParentBranchMenuItem.setEnabled(false);
+ diffConflictsMenuItem.setEnabled(false);
+ revertMenuItem.setEnabled(false);
+ // showFinalWordVersionMenuItem.setEnabled(false);
+
+ OSEELog.logException(getClass(), ex, true);
+ }
+ } else { // Set menu items to false if a single artifacts is not
+ // selected.
+ compressWordAttributes.setEnabled(false);
+ diffMenuItem.setEnabled(false);
+ diffOnParentBranchMenuItem.setEnabled(false);
+ diffConflictsMenuItem.setEnabled(false);
+ revertMenuItem.setEnabled(false);
+ // showFinalWordVersionMenuItem.setEnabled(false);
+ }
+
+ revisionMenuItem.setEnabled(artifactSelected && readPermission);
+ showFinalVersionMenuItem.setEnabled(artifactSelected && readPermission);
+ changeReportMenuItem.setEnabled(true);
+ }
+ }
+
+ private class keySelectedListener implements KeyListener {
+ public void keyPressed(KeyEvent e) {
+ if (e.keyCode == 'c' && e.stateMask == SWT.CONTROL) {
+ performCopy();
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+
+ try {
+ if (memento != null) {
+ memento = memento.getChild(INPUT);
+ if (memento != null) {
+ priorInput = ChangeReportInput.loadFromMemento(memento);
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logWarning(getClass(), "Change report error on init: " + ex.getLocalizedMessage(), false);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.ViewPart#saveState(org.eclipse.ui.IMemento)
+ */
+ @Override
+ public void saveState(IMemento memento) {
+ super.saveState(memento);
+
+ Object input = changeTable.getInput();
+ if (input instanceof ChangeReportInput) {
+ ChangeReportInput changeReportInput = (ChangeReportInput) input;
+
+ memento = memento.createChild(INPUT);
+
+ changeReportInput.saveToMemento(memento);
+ }
+
+ }
+
+ public class ChangeReportDragAndDrop extends SkynetDragAndDrop {
+
+ public ChangeReportDragAndDrop(Tree tree, String viewId) {
+ super(tree, viewId);
+ }
+
+ @Override
+ public void performDragOver(DropTargetEvent event) {
+ event.detail = DND.DROP_NONE;
+ }
+
+ @Override
+ public Artifact[] getArtifacts() throws SQLException {
+ IStructuredSelection selection = (IStructuredSelection) changeTable.getSelection();
+ ArrayList<Artifact> artifacts = new ArrayList<Artifact>();
+
+ if (selection != null && !selection.isEmpty()) {
+ for (Object object : selection.toArray()) {
+
+ if (object instanceof ITreeNode) {
+ artifacts.add(((ArtifactChange) ((ITreeNode) object).getBackingData()).getArtifact());
+ }
+ }
+ }
+ return artifacts.toArray(Artifact.EMPTY_ARRAY);
+ }
+
+ @Override
+ public void performDrop(DropTargetEvent event) {
+ if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
+ event.detail = DND.DROP_MOVE;
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#onEvent(org.eclipse.osee.framework.ui.plugin.event.Event)
+ */
+ public void onEvent(Event event) {
+ int branchId = -1;
+
+ if (event instanceof BranchEvent) {
+ BranchEvent branchEvent = (BranchEvent) event;
+ branchId = branchEvent.getBranchId();
+ }
+
+ ChangeReportInput changeReportInput = (ChangeReportInput) changeTable.getInput();
+
+ if (changeReportInput != null && changeReportInput.getBranch().getBranchId() == branchId) {
+ changeTable.getTree().setEnabled(false);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#runOnEventInDisplayThread()
+ */
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#dispose()
+ */
+ @Override
+ public void dispose() {
+ eventManager.unRegisterAll(this);
+
+ super.dispose();
+ }
+
+ /**
+ * Revert changes for a given artifact Id up to the transaction point being viewed by this report.<br/><br/>
+ * <i>Note that this job is constrained to being able to only revert at most 1000 attribute and 1000 link changes do
+ * to its direct use of the SQL IN clause.</i>
+ *
+ * @author Robert A. Fisher
+ */
+ private class RevertJob extends Job {
+
+ private final int artId;
+
+ /**
+ * @param name
+ * @param artId
+ */
+ public RevertJob(String name, int artId) {
+ super("Reverting Artifact " + name);
+ this.artId = artId;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ new RevertDbTx(getName(), artId, monitor, baseTransactionId, toTransactionId).execute();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ return Status.OK_STATUS;
+ }
+ }
+
+ public static final class RevertDbTx extends AbstractDbTxTemplate {
+
+ private final IProgressMonitor monitor;
+ private final int artId;
+ private final String txName;
+ private final TransactionId baseTransactionId;
+ private final TransactionId toTransactionId;
+
+ public RevertDbTx(String txName, int artId, IProgressMonitor monitor, TransactionId baseTransactionId, TransactionId toTransactionId) {
+ this.monitor = monitor;
+ this.txName = txName;
+ this.artId = artId;
+ this.baseTransactionId = baseTransactionId;
+ this.toTransactionId = toTransactionId;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.util.db.AbstractDbTxTemplate#handleTxWork()
+ */
+ @Override
+ protected void handleTxWork() throws Exception {
+ monitor.beginTask(txName, 7);
+
+ monitor.subTask("Calculating change set");
+
+ Collection<RevisionChange> revisionChanges = revisionManager.getAllTransactionChanges(OUTGOING,
+ baseTransactionId.getTransactionNumber(), toTransactionId.getTransactionNumber(), artId, null);
+ int worstSize = revisionChanges.size();
+ Collection<Long> attributeGammas = new ArrayList<Long>(worstSize);
+ Collection<Long> linkGammas = new ArrayList<Long>(worstSize);
+ Collection<Long> artifactGammas = new ArrayList<Long>(worstSize);
+ Collection<Long> allGammas = new ArrayList<Long>(worstSize);
+
+ // Categorize all of the changes
+ for (RevisionChange change : revisionChanges) {
+ if (change instanceof AttributeChange) {
+ attributeGammas.add(change.getGammaId());
+ } else if (change instanceof RelationLinkChange) {
+ linkGammas.add(change.getGammaId());
+ } else if (change instanceof ArtifactChange) {
+ artifactGammas.add(change.getGammaId());
+ }
+ allGammas.add(change.getGammaId());
+ }
+
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Cleaning up bookkeeping data");
+ if (allGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + TRANSACTIONS_TABLE + " WHERE " + TRANSACTIONS_TABLE.column("gamma_id") + " IN" + Collections.toString(
+ allGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Reverting Artifact gammas");
+ if (artifactGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + ARTIFACT_VERSION_TABLE + " WHERE " + ARTIFACT_VERSION_TABLE.column("gamma_id") + " IN " + Collections.toString(
+ artifactGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Reverting attributes");
+ if (attributeGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + ATTRIBUTE_VERSION_TABLE + " WHERE " + ATTRIBUTE_VERSION_TABLE.column("gamma_id") + " IN " + Collections.toString(
+ attributeGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Reverting links");
+ if (linkGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + RELATION_LINK_VERSION_TABLE + " WHERE " + RELATION_LINK_VERSION_TABLE.column("gamma_id") + " IN " + Collections.toString(
+ linkGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Cleaning up empty transactions");
+ ConnectionHandler.runPreparedUpdate(
+ "DELETE FROM " + TRANSACTION_DETAIL_TABLE + " WHERE " + TRANSACTION_DETAIL_TABLE.column("branch_id") + " = ?" + " AND " + TRANSACTION_DETAIL_TABLE.column("transaction_id") + " NOT IN " + "(SELECT " + TRANSACTIONS_TABLE.column("transaction_id") + " FROM " + TRANSACTIONS_TABLE + ")",
+ SQL3DataType.INTEGER, baseTransactionId.getBranch().getBranchId());
+ monitor.worked(1);
+
+ }
+
+ private boolean isCanceled() throws Exception {
+ boolean toReturn = monitor.isCanceled();
+ if (false != toReturn) {
+ throw new IllegalStateException("User Cancelled Operation");
+ }
+ return toReturn;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.util.db.AbstractDbTxTemplate#handleTxFinally()
+ */
+ @Override
+ protected void handleTxFinally() throws Exception {
+ super.handleTxFinally();
+ monitor.done();
+ }
+
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractArtifactSelectionHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractArtifactSelectionHandler.java
new file mode 100644
index 00000000000..473992b89cd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractArtifactSelectionHandler.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.HandlerEvent;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public abstract class AbstractArtifactSelectionHandler extends AbstractHandler {
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private List<Artifact> artifacts = null;
+ private final ISelectionChangedListener myISelectionChangedListener = null;
+ private List<Artifact> mySelectedArtifactList = null;
+ private final HandlerEvent enabledChangedEvent = new HandlerEvent(this, true, false);
+
+ public AbstractArtifactSelectionHandler() {
+ IWorkbenchPart myIWorkbenchPart = AWorkbench.getActivePage().getActivePart();
+ IWorkbenchPartSite myIWorkbenchPartSite = myIWorkbenchPart.getSite();
+ ISelectionProvider myISelectionProvider = myIWorkbenchPartSite.getSelectionProvider();
+ myISelectionProvider.addSelectionChangedListener(new ISelectionChangedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ mySelectedArtifactList =
+ Handlers.getArtifactsFromStructuredSelection((IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection());
+ fireHandlerChanged(enabledChangedEvent);
+
+ }
+ });
+ artifacts =
+ Handlers.getArtifactsFromStructuredSelection((IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection());
+ }
+
+ /**
+ * @return Returns a list of artifacts acquired from an IStructuredSelection from the active page.
+ */
+ protected List<Artifact> getArtifacts() {
+ return artifacts;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ */
+ @Override
+ public boolean isEnabled() {
+ System.out.println("AbstractArtifactSelectionHandler isEnabled " + this.toString());
+ return permissionLevel() != null ? hasPermission(artifacts) : super.isEnabled();
+ }
+
+ private boolean hasPermission(List<Artifact> artifacts) {
+ boolean permitted = true;
+
+ for (Artifact artifact : artifacts) {
+ permitted &=
+ accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), artifact, permissionLevel());
+ }
+ return permitted;
+ }
+
+ /**
+ * This method should be overridden by a subclass that requires access control.
+ *
+ * @return Returns the permission level to be used for access control
+ */
+ protected PermissionEnum permissionLevel() {
+ return null;
+ }
+ // abstract
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractSelectionChangedHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractSelectionChangedHandler.java
new file mode 100644
index 00000000000..006c10932d4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/AbstractSelectionChangedHandler.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.HandlerEvent;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+/**
+ * @author Paul K. Waldfogel
+ * @author Jeff C. Phillips
+ */
+public abstract class AbstractSelectionChangedHandler extends AbstractHandler {
+ private final HandlerEvent enabledChangedEvent = new HandlerEvent(this, true, false);
+ private ISelectionProvider myISelectionProvider;
+ private SelectionChanhedListener selectionChanhedListener;
+
+ public AbstractSelectionChangedHandler() {
+ IWorkbenchPart myIWorkbenchPart = AWorkbench.getActivePage().getActivePart();
+ IWorkbenchPartSite myIWorkbenchPartSite = myIWorkbenchPart.getSite();
+ myISelectionProvider = myIWorkbenchPartSite.getSelectionProvider();
+ selectionChanhedListener = new SelectionChanhedListener();
+
+ myISelectionProvider.addSelectionChangedListener(selectionChanhedListener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#dispose()
+ */
+ @Override
+ public void dispose() {
+ myISelectionProvider.removeSelectionChangedListener(selectionChanhedListener);
+ super.dispose();
+ }
+
+ private class SelectionChanhedListener implements ISelectionChangedListener {
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ fireHandlerChanged(enabledChangedEvent);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CompressWordAttributesHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CompressWordAttributesHandler.java
new file mode 100644
index 00000000000..91aca82e2b4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CompressWordAttributesHandler.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.util.WordUtil;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class CompressWordAttributesHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+ private List<Artifact> artifacts;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Jobs.startJob(new Job("Compress Word Attributes") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ int count = 0;
+ final int total = artifacts.size();
+
+ monitor.beginTask("Analyzing attributes", total);
+
+ for (Artifact artifact : artifacts) {
+ if (WordUtil.revertNonusefulWordChanges(artifact.getArtId(), artifact.getBranch(),
+ "osee_compression_gammas")) count++;
+ monitor.worked(1);
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return Status.CANCEL_STATUS;
+ }
+ }
+
+ final int finalCount = count;
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ "Compression Data", finalCount + " of the " + total + " artifacts need compression");
+ }
+ });
+
+ monitor.done();
+ return Status.OK_STATUS;
+ } catch (SQLException ex) {
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, Status.OK, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ });
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ try {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(myIStructuredSelection);
+ if (artifacts.isEmpty()) {
+ return false;
+ }
+
+ boolean writePermission = myAccessControlManager.checkObjectPermission(artifacts.get(0), PermissionEnum.WRITE);
+ return writePermission && OseeProperties.getInstance().isDeveloper();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return false;
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CopyHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CopyHandler.java
new file mode 100644
index 00000000000..c2668906a1a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/CopyHandler.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactClipboard;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class CopyHandler extends AbstractHandler {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if (HandlerUtil.getActivePartChecked(event) instanceof ViewPart) {
+ ViewPart view = (ViewPart) HandlerUtil.getActivePartChecked(event);
+ IWorkbenchPartSite myIWorkbenchPartSite = view.getSite();
+ Object selectionProvider = myIWorkbenchPartSite.getSelectionProvider();
+
+ IStructuredSelection selection =
+ (IStructuredSelection) ((ISelectionProvider) selectionProvider).getSelection();
+ List<String> names = new LinkedList<String>();
+ List<Artifact> artifacts = new LinkedList<Artifact>();
+ ArtifactClipboard clipboard = new ArtifactClipboard(view.getSite().getId());
+ Iterator<?> iterator = selection.iterator();
+ Object selectionObject = null;
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(Branch.class);
+
+ if (selectionObject == null) {
+ selectionObject = ((IAdaptable) object).getAdapter(Artifact.class);
+ }
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof Branch) {
+ names.add(((Branch) selectionObject).getBranchName());
+ } else if (selectionObject instanceof Artifact) {
+ Artifact artifact = (Artifact) selectionObject;
+ names.add(artifact.getDescriptiveName());
+ artifacts.add(artifact);
+ }
+ }
+
+ if (!names.isEmpty() && artifacts.isEmpty()) {
+ clipboard.setTextToClipboard(names);
+ } else if (!names.isEmpty() && !artifacts.isEmpty()) {
+ clipboard.setArtifactsToClipboard(artifacts, names);
+ }
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isHandled()
+ */
+ @Override
+ public boolean isHandled() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ */
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteTransactionHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteTransactionHandler.java
new file mode 100644
index 00000000000..8268bea1bb4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/DeleteTransactionHandler.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.JobbedNode;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Robert A. Fisher
+ * @author Paul K. Waldfogel
+ */
+public class DeleteTransactionHandler extends AbstractSelectionChangedHandler {
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+
+ /**
+ * @param branchTable
+ */
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ TransactionData selectedTransaction =
+ (TransactionData) ((JobbedNode) myIStructuredSelection.getFirstElement()).getBackingData();
+ if (MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Delete Transaction",
+ "Are you sure you want to delete the transaction: " + selectedTransaction.getTransactionNumber())) {
+ branchManager.deleteTransaction(selectedTransaction.getTransactionNumber());
+ }
+
+ return null;
+
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ return SkynetSelections.oneTransactionSelected(myIStructuredSelection) && OseeProperties.getInstance().isDeveloper();
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/EditArtifactHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/EditArtifactHandler.java
new file mode 100644
index 00000000000..117be162958
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/EditArtifactHandler.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class EditArtifactHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private static final RendererManager rendererManager = RendererManager.getInstance();
+ private List<Artifact> artifacts;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if (!artifacts.isEmpty()) {
+ rendererManager.editInJob(artifacts);
+
+ dispose();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return accessControlManager.checkObjectListPermission(artifacts, PermissionEnum.WRITE);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ExportBranchAndDescendantsHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ExportBranchAndDescendantsHandler.java
new file mode 100644
index 00000000000..6fb6c0c56c6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ExportBranchAndDescendantsHandler.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.io.File;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Files;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.export.ExportBranchJob;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Robert A. Fisher
+ * @author Paul K. Waldfogel
+ */
+public class ExportBranchAndDescendantsHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+
+ /**
+ * @param branchTable
+ */
+ public ExportBranchAndDescendantsHandler() {
+ }
+
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Branch> mySelectedBranchList = Handlers.getBranchListFromStructuredSelection(myIStructuredSelection);
+ IWorkbenchPartSite myIWorkbenchPartSite = Handlers.getIWorkbenchPartSite();
+ File file = Files.selectFile(myIWorkbenchPartSite.getShell(), SWT.SAVE, "*.xml");
+
+ if (file != null && mySelectedBranchList.size() == 1) {
+ Jobs.startJob(new ExportBranchJob(file, mySelectedBranchList.get(0), false));
+
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ return SkynetSelections.oneBranchSelected(myIStructuredSelection) && myAccessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(myIStructuredSelection.getFirstElement()), PermissionEnum.READ);
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/Handlers.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/Handlers.java
new file mode 100644
index 00000000000..3b11baed32c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/Handlers.java
@@ -0,0 +1,457 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.sql.SQLException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.branch.SnapshotDescription;
+import org.eclipse.osee.framework.ui.swt.TreeNode;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+/**
+ * This is a utility class for OSEE handlers
+ *
+ * @author Jeff C. Phillips
+ */
+public class Handlers {
+
+ /**
+ * Populates a list of TransactionData from a IStructuredSelection. Returns an empty list if no TransactionData were
+ * found.
+ *
+ * @param selection
+ * @return
+ */
+ public static List<TransactionData> getTransactionDatasFromStructuredSelection(IStructuredSelection structuredSelection) {
+ return (List<TransactionData>) processSelectionObjects(TransactionData.class, structuredSelection);
+ }
+
+ /**
+ * Populates a list of ArtifactChange from a IStructuredSelection. Returns an empty list if no ArtifactChange were
+ * found.
+ *
+ * @param selection
+ * @return
+ */
+ public static List<ArtifactChange> getArtifactChangesFromStructuredSelection(IStructuredSelection structuredSelection) {
+ return (List<ArtifactChange>) processSelectionObjects(ArtifactChange.class, structuredSelection);
+ }
+
+ /**
+ * Populates a list of branches from a IStructuredSelection. Returns an empty list if no branches were found.
+ *
+ * @param selection
+ * @return
+ */
+ public static List<Branch> getBranchesFromStructuredSelection(IStructuredSelection structuredSelection) {
+ return (List<Branch>) processSelectionObjects(Branch.class, structuredSelection);
+ }
+
+ /**
+ * Populates a list of artifacts from a IStructuredSelection. Returns an empty list if no artifacts were found.
+ *
+ * @param selection
+ * @return
+ */
+ public static List<Artifact> getArtifactsFromStructuredSelection(IStructuredSelection structuredSelection) {
+ return (List<Artifact>) processSelectionObjects(Artifact.class, structuredSelection);
+ }
+
+ /**
+ * @param clazz
+ * @param structuredSelection
+ * @return Returns a list of objects from the sturctruedSelection that are an instance of the Class
+ */
+ private static List<?> processSelectionObjects(Class<?> clazz, IStructuredSelection structuredSelection) {
+ List<Object> objects = new LinkedList<Object>();
+ Iterator<?> iterator = structuredSelection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+ Object targetObject = null;
+
+ if (object instanceof IAdaptable) {
+ targetObject = ((IAdaptable) object).getAdapter(clazz);
+ } else if (object instanceof Match) {
+ targetObject = ((Match) object).getElement();
+ }
+
+ if (clazz.isInstance(targetObject)) {
+ objects.add(targetObject);
+ }
+ }
+ return objects;
+ }
+
+ //////////////////////////////////////////////////////////
+
+ /**
+ * Populates a list of branches from a IStructuredSelection. Returns an empty list if no branches were found.
+ *
+ * @param selection
+ * @return
+ */
+ public static List<Object> getBranchesAndArtifactsFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Branch> myBranches = new LinkedList<Branch>();
+ List<Artifact> myArtifacts = new LinkedList<Artifact>();
+ List<Integer> myArtifactIDs = new LinkedList<Integer>();
+ List<ArtifactChange> mySelectedArtifactChangeList = new LinkedList<ArtifactChange>();
+ List<ChangeReportInput> myChangeReportInputNewList = new LinkedList<ChangeReportInput>();
+ List<ChangeReportInput> myChangeReportInputOldList = new LinkedList<ChangeReportInput>();
+ List<Object> myObjects = new LinkedList<Object>();
+
+ myObjects.add(myBranches);
+ myObjects.add(myArtifacts);
+ myObjects.add(myArtifactIDs);
+ myObjects.add(mySelectedArtifactChangeList);
+ myObjects.add(myChangeReportInputNewList);
+ myObjects.add(myChangeReportInputOldList);
+
+ if (myIStructuredSelection instanceof TreeSelection) {
+ // System.out.println("myIStructuredSelection instanceof TreeSelection");
+ TreeSelection myTreeSelection = (TreeSelection) myIStructuredSelection;
+ TreePath[] myTreePaths = myTreeSelection.getPaths();
+ for (TreePath treePath : myTreePaths) {
+ for (int i = 0; i < treePath.getSegmentCount(); i++) {
+ Object segmentObject = treePath.getSegment(i);
+ if (segmentObject instanceof TreeNode) {
+ TreeNode myTreeNode = (TreeNode) segmentObject;
+ Object myBackingDataObject = myTreeNode.getBackingData();
+ if (myBackingDataObject instanceof SnapshotDescription) {
+ SnapshotDescription mySnapshotDescription = (SnapshotDescription) myBackingDataObject;
+ ChangeReportInput myChangeReportInputNew = mySnapshotDescription.getNewInput();
+ myChangeReportInputNew.getToTransaction();
+
+ // TransactionId myTransactionNewId =
+ // myChangeReportInputNew.getBaseTransaction();
+ myChangeReportInputNewList.add(myChangeReportInputNew);
+ ChangeReportInput myChangeReportInputOld = mySnapshotDescription.getOldInput();
+
+ myChangeReportInputOld.getBaseParentTransactionId();
+ // TransactionId myTransactionOldId =
+ // myChangeReportInputOld.getBaseTransaction();
+ myChangeReportInputOldList.add(myChangeReportInputOld);
+ }
+ if (myBackingDataObject instanceof ArtifactChange) {
+ // System.out.println("myBackingDataObject instanceof ArtifactChange");
+ ArtifactChange myArtifactChange = (ArtifactChange) myBackingDataObject;
+ // myArtifactChange.getArtId();
+ // System.out.println("myArtifactChange.getArtId " +
+ myArtifactIDs.add(new Integer(myArtifactChange.getArtId()));
+ mySelectedArtifactChangeList.add(myArtifactChange);
+ try {
+ myArtifacts.add(myArtifactChange.getArtifact());
+ myBranches.add(myArtifactChange.getArtifact().getBranch());
+ } catch (SQLException ex) {
+ }
+ }
+ if (myBackingDataObject instanceof Artifact) {
+ // System.out.println("myBackingDataObject instanceof ArtifactChange");
+ Artifact myArtifact = (Artifact) myBackingDataObject;
+ myArtifactIDs.add(new Integer(myArtifact.getArtId()));
+ myArtifacts.add(myArtifact);
+ myBranches.add(myArtifact.getBranch());
+
+ }
+
+ }
+ }
+ }
+ }
+ Iterator<?> iterator = myIStructuredSelection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+ Object selectionObject = null;
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(Branch.class);
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof Branch) {
+ myBranches.add((Branch) selectionObject);
+ }
+ }
+ Object selectionObject = null;
+
+ // Iterator<?> iterator = myIStructuredSelection.iterator();
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(Branch.class);
+
+ if (selectionObject == null) {
+ selectionObject = ((IAdaptable) object).getAdapter(Artifact.class);
+ }
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof Branch) {
+ myBranches.add(((Branch) selectionObject));
+ } else if (selectionObject instanceof Artifact) {
+ Artifact myArtifact = (Artifact) selectionObject;
+ // names.add(artifact.getDescriptiveName());
+ myArtifacts.add(myArtifact);
+ myArtifactIDs.add(new Integer(myArtifact.getArtId()));
+
+ }
+ }
+
+ return myObjects;
+ }
+
+ public static List<TransactionData> getTransactionDataNeededFromStructuredSelection(IStructuredSelection selection) {
+ List<TransactionData> myTransactionDataList = new LinkedList<TransactionData>();
+ Iterator<?> iterator = selection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+ if (object instanceof TreeNode) {
+ TreeNode myTreeNode = (TreeNode) object;
+ object = myTreeNode.getBackingData();
+ }
+ Object selectionObject = null;
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(TransactionData.class);
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof TransactionData) {
+ myTransactionDataList.add((TransactionData) selectionObject);
+ }
+ }
+ return myTransactionDataList;
+ }
+
+ public static List<ArtifactChange> getArtifactChangeFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<ArtifactChange> myArtifactChangeList = new LinkedList<ArtifactChange>();
+ if (myIStructuredSelection instanceof TreeSelection) {
+ // System.out.println("myIStructuredSelection instanceof TreeSelection");
+ TreeSelection myTreeSelection = (TreeSelection) myIStructuredSelection;
+ TreePath[] myTreePaths = myTreeSelection.getPaths();
+ for (TreePath treePath : myTreePaths) {
+ for (int i = 0; i < treePath.getSegmentCount(); i++) {
+ Object segmentObject = treePath.getSegment(i);
+ if (segmentObject instanceof TreeNode) {
+ TreeNode myTreeNode = (TreeNode) segmentObject;
+ Object myBackingDataObject = myTreeNode.getBackingData();
+ if (myBackingDataObject instanceof ArtifactChange) {
+ // System.out.println("myBackingDataObject instanceof ArtifactChange");
+ ArtifactChange myArtifactChange = (ArtifactChange) myBackingDataObject;
+ myArtifactChange.getArtId();
+ // System.out.println("myArtifactChange.getArtId " +
+ // myArtifactChange.getArtId());
+ myArtifactChangeList.add(myArtifactChange);
+ }
+ }
+ }
+ }
+
+ }
+
+ Iterator<?> iterator = myIStructuredSelection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+ if (object instanceof TreeNode) {
+ TreeNode myTreeNode = (TreeNode) object;
+ object = myTreeNode.getBackingData();
+ }
+ Object selectionObject = null;
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(TransactionData.class);
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof ArtifactChange) {
+ myArtifactChangeList.add((ArtifactChange) selectionObject);
+ }
+ }
+ return myArtifactChangeList;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<ArtifactChange> getArtifactChangeListFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Object> myObjects = getSelectedListsFromStructuredSelection(myIStructuredSelection);
+ List<ArtifactChange> myArtifactChangeList = (List<ArtifactChange>) myObjects.get(3);
+ return myArtifactChangeList;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<Artifact> getArtifactListFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Object> myObjects = getSelectedListsFromStructuredSelection(myIStructuredSelection);
+ List<Artifact> mySelectedArtifactList = (List<Artifact>) myObjects.get(1);
+ return mySelectedArtifactList;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<Branch> getBranchListFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Object> myObjects = getSelectedListsFromStructuredSelection(myIStructuredSelection);
+ List<Branch> mySelectedBranchList = (List<Branch>) myObjects.get(0);
+ return mySelectedBranchList;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<Integer> getArtifactIDListFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Object> myObjects = getSelectedListsFromStructuredSelection(myIStructuredSelection);
+ List<Integer> mySelectedArtifactIDList = (List<Integer>) myObjects.get(2);
+ return mySelectedArtifactIDList;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<ChangeReportInput> getChangeReportInputNewListFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Object> myObjects = getSelectedListsFromStructuredSelection(myIStructuredSelection);
+ List<ChangeReportInput> myChangeReportInputNewList = (List<ChangeReportInput>) myObjects.get(4);
+ return myChangeReportInputNewList;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<ChangeReportInput> getChangeReportInputOldListFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Object> myObjects = getSelectedListsFromStructuredSelection(myIStructuredSelection);
+ List<ChangeReportInput> myChangeReportInputOldList = (List<ChangeReportInput>) myObjects.get(5);
+ return myChangeReportInputOldList;
+ }
+
+ public static IWorkbenchPartSite getIWorkbenchPartSite() {
+ IWorkbenchPart myIWorkbenchPart = AWorkbench.getActivePage().getActivePart();
+ IWorkbenchPartSite myIWorkbenchPartSite = myIWorkbenchPart.getSite();
+ return myIWorkbenchPartSite;
+ }
+
+ // IWorkbenchPart myIWorkbenchPart = AWorkbench.getActivePage().getActivePart();
+ // IWorkbenchPartSite myIWorkbenchPartSite = myIWorkbenchPart.getSite();
+
+ public static List<Object> getSelectedListsFromStructuredSelection(IStructuredSelection myIStructuredSelection) {
+ List<Branch> myBranches = new LinkedList<Branch>();
+ List<Artifact> myArtifacts = new LinkedList<Artifact>();
+ List<Integer> myArtifactIDs = new LinkedList<Integer>();
+ List<ArtifactChange> mySelectedArtifactChangeList = new LinkedList<ArtifactChange>();
+ List<ChangeReportInput> myChangeReportInputNewList = new LinkedList<ChangeReportInput>();
+ List<ChangeReportInput> myChangeReportInputOldList = new LinkedList<ChangeReportInput>();
+ List<Object> myObjects = new LinkedList<Object>();
+ myObjects.add(myBranches);
+ myObjects.add(myArtifacts);
+ myObjects.add(myArtifactIDs);
+ myObjects.add(mySelectedArtifactChangeList);
+ myObjects.add(myChangeReportInputNewList);
+ myObjects.add(myChangeReportInputOldList);
+ if (myIStructuredSelection instanceof TreeSelection) {
+ // System.out.println("myIStructuredSelection instanceof TreeSelection");
+ TreeSelection myTreeSelection = (TreeSelection) myIStructuredSelection;
+ TreePath[] myTreePaths = myTreeSelection.getPaths();
+ for (TreePath treePath : myTreePaths) {
+ for (int i = 0; i < treePath.getSegmentCount(); i++) {
+ Object segmentObject = treePath.getSegment(i);
+ if (segmentObject instanceof TreeNode) {
+ TreeNode myTreeNode = (TreeNode) segmentObject;
+ Object myBackingDataObject = myTreeNode.getBackingData();
+ if (myBackingDataObject instanceof SnapshotDescription) {
+ SnapshotDescription mySnapshotDescription = (SnapshotDescription) myBackingDataObject;
+ ChangeReportInput myChangeReportInputNew = mySnapshotDescription.getNewInput();
+ myChangeReportInputNew.getToTransaction();
+ myChangeReportInputNewList.add(myChangeReportInputNew);
+ ChangeReportInput myChangeReportInputOld = mySnapshotDescription.getOldInput();
+ myChangeReportInputOld.getBaseParentTransactionId();
+ myChangeReportInputOldList.add(myChangeReportInputOld);
+ }
+ if (myBackingDataObject instanceof ArtifactChange) {
+ ArtifactChange myArtifactChange = (ArtifactChange) myBackingDataObject;
+ myArtifactIDs.add(new Integer(myArtifactChange.getArtId()));
+ mySelectedArtifactChangeList.add(myArtifactChange);
+ try {
+ myArtifacts.add(myArtifactChange.getArtifact());
+ myBranches.add(myArtifactChange.getArtifact().getBranch());
+ } catch (SQLException ex) {
+ }
+ }
+ if (myBackingDataObject instanceof Artifact) {
+ Artifact myArtifact = (Artifact) myBackingDataObject;
+ myArtifactIDs.add(new Integer(myArtifact.getArtId()));
+ myArtifacts.add(myArtifact);
+ myBranches.add(myArtifact.getBranch());
+
+ }
+ if (myBackingDataObject instanceof Branch) {
+ myBranches.add((Branch) myBackingDataObject);
+ }
+ }
+ }
+ }
+ }
+ if (false) {
+ Iterator<?> iterator = myIStructuredSelection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+ Object selectionObject = null;
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(Branch.class);
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof Branch) {
+ myBranches.add((Branch) selectionObject);
+ }
+ }
+ Object selectionObject = null;
+
+ // Iterator<?> iterator = myIStructuredSelection.iterator();
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+
+ if (object instanceof IAdaptable) {
+ selectionObject = ((IAdaptable) object).getAdapter(Branch.class);
+
+ if (selectionObject == null) {
+ selectionObject = ((IAdaptable) object).getAdapter(Artifact.class);
+ }
+ } else if (object instanceof Match) {
+ selectionObject = ((Match) object).getElement();
+ }
+
+ if (selectionObject instanceof Branch) {
+ myBranches.add(((Branch) selectionObject));
+ } else if (selectionObject instanceof Artifact) {
+ Artifact myArtifact = (Artifact) selectionObject;
+ // names.add(artifact.getDescriptiveName());
+ myArtifacts.add(myArtifact);
+ myArtifactIDs.add(new Integer(myArtifact.getArtId()));
+ }
+ }
+ }
+ return myObjects;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportDescendantsOntoBranchHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportDescendantsOntoBranchHandler.java
new file mode 100644
index 00000000000..dd352e18f85
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportDescendantsOntoBranchHandler.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Files;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.export.ImportBranchJob;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Robert A. Fisher
+ * @author Paul K. Waldfogel
+ */
+public class ImportDescendantsOntoBranchHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private boolean selective;
+
+ /**
+ * @param branchTable
+ */
+ public ImportDescendantsOntoBranchHandler() {
+ }
+
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Branch> mySelectedBranchList = Handlers.getBranchListFromStructuredSelection(myIStructuredSelection);
+ IWorkbenchPartSite myIWorkbenchPartSite = Handlers.getIWorkbenchPartSite();
+ File file = Files.selectFile(myIWorkbenchPartSite.getShell(), SWT.OPEN, "*.xml");
+ if (file != null && mySelectedBranchList.size() == 1) {
+ Jobs.startJob(new ImportBranchJob(file, mySelectedBranchList.get(0), true, true));
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ try {
+ return (!selective || OseeProperties.getInstance().isDeveloper()) && ((SkynetSelections.oneBranchSelected(myIStructuredSelection) && accessManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(myIStructuredSelection.getFirstElement()), PermissionEnum.READ)) || (SkynetSelections.oneTransactionSelected(myIStructuredSelection) && accessManager.checkObjectPermission(
+ ((TransactionData) SkynetSelections.boilDownObject(myIStructuredSelection.getFirstElement())).getTransactionId().getBranch(),
+ PermissionEnum.READ)));
+ } catch (SQLException ex) {
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportOntoBranchHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportOntoBranchHandler.java
new file mode 100644
index 00000000000..3e1a62db37a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ImportOntoBranchHandler.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.io.File;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Files;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.export.ImportBranchJob;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Robert A. Fisher
+ * @author Paul K. Waldfogel
+ */
+public class ImportOntoBranchHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+
+ /**
+ * @param branchTable
+ */
+ public ImportOntoBranchHandler() {
+ }
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Branch> mySelectedBranchList = Handlers.getBranchListFromStructuredSelection(myIStructuredSelection);
+ IWorkbenchPartSite myIWorkbenchPartSite = Handlers.getIWorkbenchPartSite();
+ Shell myShell = myIWorkbenchPartSite.getShell();// This hangs.
+ File file = Files.selectFile(myShell, SWT.OPEN, "*.xml");
+ if (file != null && mySelectedBranchList.size() == 1) {
+ Jobs.startJob(new ImportBranchJob(file, mySelectedBranchList.get(0), true, true));
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ return SkynetSelections.oneBranchSelected(myIStructuredSelection) && myAccessControlManager.checkObjectPermission(
+ SkynetSelections.boilDownObject(myIStructuredSelection.getFirstElement()), PermissionEnum.WRITE);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenArtifactsInAtsWorldHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenArtifactsInAtsWorldHandler.java
new file mode 100644
index 00000000000..68543494ca2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenArtifactsInAtsWorldHandler.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class OpenArtifactsInAtsWorldHandler extends AbstractHandler {
+ private List<Artifact> artifacts;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ try {
+ if (OseeAts.getAtsLib() != null) OseeAts.getAtsLib().openInAtsWorld("", artifacts);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ try {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return artifacts.size() > 0;
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return false;
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenBranchAssociatedArtifactHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenBranchAssociatedArtifactHandler.java
new file mode 100644
index 00000000000..e30afa06dcb
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenBranchAssociatedArtifactHandler.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.IATSArtifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.JobbedNode;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetSelections;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Robert A. Fisher
+ * @author Paul K. Waldfogel
+ */
+public class OpenBranchAssociatedArtifactHandler extends AbstractSelectionChangedHandler {
+ // private static final Logger logger =
+ // ConfigUtil.getConfigFactory().getLogger(CreateSelectiveBranchHandler.class);
+ // private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ // private static final BranchPersistenceManager branchManager =
+ // BranchPersistenceManager.getInstance();
+ // private static final TransactionIdManager transactionIdManager =
+ // TransactionIdManager.getInstance();
+ // private TreeViewer branchTable;
+ // private boolean selective;
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+
+ /**
+ * @param branchTable
+ */
+ public OpenBranchAssociatedArtifactHandler() {
+ }
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Branch> mySelectedBranchList = Handlers.getBranchListFromStructuredSelection(myIStructuredSelection);
+ Branch selectedBranch = (Branch) ((JobbedNode) myIStructuredSelection.getFirstElement()).getBackingData();
+ if (selectedBranch != mySelectedBranchList.get(0)) {
+ System.out.println("selectedBranch != mySelectedBranchList.get(0)");
+ }
+ try {
+ if (selectedBranch.getAssociatedArtifact() == null) {
+ AWorkbench.popup("Open Associated Artifact", "No artifact associated with branch " + selectedBranch);
+ return null;
+ }
+ if (AccessControlManager.getInstance().checkObjectPermission(skynetAuth.getAuthenticatedUser(),
+ selectedBranch.getAssociatedArtifact(), PermissionEnum.READ)) {
+ if (selectedBranch.getAssociatedArtifact() instanceof IATSArtifact)
+ OseeAts.openATSArtifact(selectedBranch.getAssociatedArtifact());
+ else
+ ArtifactEditor.editArtifact(selectedBranch.getAssociatedArtifact());
+ } else {
+ OSEELog.logInfo(
+ SkynetGuiPlugin.class,
+ "The user " + skynetAuth.getAuthenticatedUser() + " does not have read access to " + selectedBranch.getAssociatedArtifact(),
+ true);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ return SkynetSelections.oneBranchSelected(myIStructuredSelection);
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenInEditorHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenInEditorHandler.java
new file mode 100644
index 00000000000..14b13fecb01
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenInEditorHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class OpenInEditorHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private List<Artifact> artifacts;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent myExecutionEvent) throws ExecutionException {
+ ArtifactEditor.editArtifacts(artifacts);
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return accessControlManager.checkObjectListPermission(artifacts, PermissionEnum.READ);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenMassArtifactEditorHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenMassArtifactEditorHandler.java
new file mode 100644
index 00000000000..474d388be90
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenMassArtifactEditorHandler.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class OpenMassArtifactEditorHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private List<Artifact> artifacts;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ MassArtifactEditor.editArtifacts("", artifacts);
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ try {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return accessControlManager.checkObjectListPermission(artifacts, PermissionEnum.WRITE);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return false;
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenSkywalkerEditorHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenSkywalkerEditorHandler.java
new file mode 100644
index 00000000000..12e1bcfab55
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/OpenSkywalkerEditorHandler.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class OpenSkywalkerEditorHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private List<Artifact> artifacts;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ SkyWalkerView.exploreArtifact(artifacts.iterator().next());
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return accessControlManager.checkObjectListPermission(artifacts, PermissionEnum.READ);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactHandler.java
new file mode 100644
index 00000000000..0fdc7527d25
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactHandler.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public abstract class PreviewArtifactHandler extends AbstractSelectionChangedHandler {
+ private static final RendererManager rendererManager = RendererManager.getInstance();
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private List<Artifact> artifacts;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if (!artifacts.isEmpty()) {
+ rendererManager.previewInJob(artifacts, getPreviewType());
+ }
+ return null;
+ }
+
+ protected abstract String getPreviewType();
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return accessControlManager.checkObjectListPermission(artifacts, PermissionEnum.READ);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactNoRecurseHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactNoRecurseHandler.java
new file mode 100644
index 00000000000..ac7cbfa6532
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactNoRecurseHandler.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class PreviewArtifactNoRecurseHandler extends PreviewArtifactHandler {
+ private static final String PREVIEW_ARTIFACT = "PREVIEW_ARTIFACT";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.commandHandlers.PreviewArtifactHandler#getPreviewType()
+ */
+ @Override
+ protected String getPreviewType() {
+ return PREVIEW_ARTIFACT;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseCommand.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseCommand.java
new file mode 100644
index 00000000000..d9e426e3951
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseCommand.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class PreviewArtifactWithRecurseCommand extends PreviewArtifactHandler {
+ private static final String PREVIEW_WITH_RECURSE = "PREVIEW_WITH_RECURSE";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.commandHandlers.PreviewArtifactHandler#getPreviewType()
+ */
+ @Override
+ protected String getPreviewType() {
+ return PREVIEW_WITH_RECURSE;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseHandler.java
new file mode 100644
index 00000000000..94481830974
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/PreviewArtifactWithRecurseHandler.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class PreviewArtifactWithRecurseHandler extends PreviewArtifactHandler {
+ private static final String PREVIEW_WITH_RECURSE = "PREVIEW_WITH_RECURSE";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.commandHandlers.PreviewArtifactHandler#getPreviewType()
+ */
+ @Override
+ protected String getPreviewType() {
+ return PREVIEW_WITH_RECURSE;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevealInArtifactExplorer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevealInArtifactExplorer.java
new file mode 100644
index 00000000000..e5940d250c0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevealInArtifactExplorer.java
@@ -0,0 +1,43 @@
+/*
+ * Created on Dec 28, 2007
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.ArtifactExplorer;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class RevealInArtifactExplorer extends AbstractSelectionChangedHandler {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent arg0) throws ExecutionException {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Artifact> artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ if (!artifacts.isEmpty()) {
+ ArtifactExplorer.revealArtifact(artifacts.iterator().next());
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ */
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevertArtifactHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevertArtifactHandler.java
new file mode 100644
index 00000000000..14a9cad47e9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/RevertArtifactHandler.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.ChangeType.OUTGOING;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ARTIFACT_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ATTRIBUTE_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.RELATION_LINK_VERSION_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.TRANSACTIONS_TABLE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.TRANSACTION_DETAIL_TABLE;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.AttributeChange;
+import org.eclipse.osee.framework.skynet.core.revision.RelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.ui.plugin.sql.SQL3DataType;
+import org.eclipse.osee.framework.ui.plugin.util.db.AbstractDbTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class RevertArtifactHandler extends AbstractSelectionChangedHandler {
+ private static final RevisionManager myRevisionManager = RevisionManager.getInstance();
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+ private Artifact mySelectedArtifact;
+ private TransactionId baseTransactionId = null;
+ private TransactionId toTransactionId = null;
+
+ public RevertArtifactHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ // List<ArtifactChange> mySelectedArtifactChangeList = super.getArtifactChangeList();
+ // TreeViewer myTreeViewer = super.getChangeTableTreeViewer();
+ // List<ChangeReportInput> myChangeReportNewInputList = super.getChangeReportInputNewList();
+ // baseTransactionId = myChangeReportNewInputList.get(0).getBaseTransaction();
+ // toTransactionId = myChangeReportNewInputList.get(0).getToTransaction();
+ // System.out.println("baseTransactionId/toTransactionId " + baseTransactionId + "/" + toTransactionId);
+ // ArtifactChange selectedArtifactChange = mySelectedArtifactChangeList.get(0);
+ // // This is serious stuff, make sure the user understands the impact.
+ // if (MessageDialog.openConfirm(
+ // myTreeViewer.getTree().getShell(),
+ // "Confirm Revert of " + selectedArtifactChange.getName(),
+ // "All attribute changes for the artifact and all link changes that involve the artifact on this branch will be reverted." + "\n\nTHIS IS IRREVERSIBLE" + "\n\nOSEE must be restarted after all reverting is finished to see the results")) {
+ //
+ // Jobs.startJob(new RevertJob(selectedArtifactChange.getName(), selectedArtifactChange.getArtId()));
+ // }
+ return null;
+ }
+ private class RevertJob extends Job {
+
+ private final int artId;
+
+ /**
+ * @param name
+ * @param artId
+ */
+ public RevertJob(String name, int artId) {
+ super("Reverting Artifact " + name);
+ this.artId = artId;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ new RevertDbTx(getName(), artId, monitor).execute();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ return Status.OK_STATUS;
+ }
+ }
+
+ private final class RevertDbTx extends AbstractDbTxTemplate {
+
+ private final IProgressMonitor monitor;
+ private final int artId;
+ private final String txName;
+
+ public RevertDbTx(String txName, int artId, IProgressMonitor monitor) {
+ this.monitor = monitor;
+ this.txName = txName;
+ this.artId = artId;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.util.db.AbstractDbTxTemplate#handleTxWork()
+ */
+ @Override
+ protected void handleTxWork() throws Exception {
+ monitor.beginTask(txName, 7);
+
+ monitor.subTask("Calculating change set");
+
+ Collection<RevisionChange> revisionChanges =
+ myRevisionManager.getAllTransactionChanges(OUTGOING, baseTransactionId.getTransactionNumber(),
+ toTransactionId.getTransactionNumber(), artId, null);
+ int worstSize = revisionChanges.size();
+ Collection<Long> attributeGammas = new ArrayList<Long>(worstSize);
+ Collection<Long> linkGammas = new ArrayList<Long>(worstSize);
+ Collection<Long> artifactGammas = new ArrayList<Long>(worstSize);
+ Collection<Long> allGammas = new ArrayList<Long>(worstSize);
+
+ // Categorize all of the changes
+ for (RevisionChange change : revisionChanges) {
+ if (change instanceof AttributeChange) {
+ attributeGammas.add(change.getGammaId());
+ } else if (change instanceof RelationLinkChange) {
+ linkGammas.add(change.getGammaId());
+ } else if (change instanceof ArtifactChange) {
+ artifactGammas.add(change.getGammaId());
+ }
+ allGammas.add(change.getGammaId());
+ }
+
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Cleaning up bookkeeping data");
+ if (allGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + TRANSACTIONS_TABLE + " WHERE " + TRANSACTIONS_TABLE.column("gamma_id") + " IN" + Collections.toString(
+ allGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Reverting Artifact gammas");
+ if (artifactGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + ARTIFACT_VERSION_TABLE + " WHERE " + ARTIFACT_VERSION_TABLE.column("gamma_id") + " IN " + Collections.toString(
+ artifactGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Reverting attributes");
+ if (attributeGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + ATTRIBUTE_VERSION_TABLE + " WHERE " + ATTRIBUTE_VERSION_TABLE.column("gamma_id") + " IN " + Collections.toString(
+ attributeGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Reverting links");
+ if (linkGammas.size() > 0) {
+ ConnectionHandler.runPreparedUpdate("DELETE FROM " + RELATION_LINK_VERSION_TABLE + " WHERE " + RELATION_LINK_VERSION_TABLE.column("gamma_id") + " IN " + Collections.toString(
+ linkGammas, "(", ",", ")"));
+ }
+ monitor.worked(1);
+ isCanceled();
+
+ monitor.subTask("Cleaning up empty transactions");
+ ConnectionHandler.runPreparedUpdate(
+ "DELETE FROM " + TRANSACTION_DETAIL_TABLE + " WHERE " + TRANSACTION_DETAIL_TABLE.column("branch_id") + " = ?" + " AND " + TRANSACTION_DETAIL_TABLE.column("transaction_id") + " NOT IN " + "(SELECT " + TRANSACTIONS_TABLE.column("transaction_id") + " FROM " + TRANSACTIONS_TABLE + ")",
+ SQL3DataType.INTEGER, baseTransactionId.getBranch().getBranchId());
+ monitor.worked(1);
+
+ }
+
+ private boolean isCanceled() throws Exception {
+ boolean toReturn = monitor.isCanceled();
+ if (false != toReturn) {
+ throw new IllegalStateException("User Cancelled Operation");
+ }
+ return toReturn;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.plugin.util.db.AbstractDbTxTemplate#handleTxFinally()
+ */
+ @Override
+ protected void handleTxFinally() throws Exception {
+ super.handleTxFinally();
+ monitor.done();
+ }
+
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ // try {
+ // // List<Artifact> mySelectedArtifactList = super.getArtifactList();
+ // Artifact mySelectedArtifact = mySelectedArtifactList.get(0);
+ // boolean writePermission =
+ // myAccessControlManager.checkObjectPermission(mySelectedArtifact, PermissionEnum.WRITE);
+ // return mySelectedArtifactList.size() > 0 && writePermission;
+ // } catch (Exception ex) {
+ // OSEELog.logException(getClass(), ex, true);
+ // return false;
+ // }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowArtifactInResourceHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowArtifactInResourceHandler.java
new file mode 100644
index 00000000000..2ff67423050
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowArtifactInResourceHandler.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.sql.SQLException;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.ui.IWorkbenchPage;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ShowArtifactInResourceHandler extends AbstractSelectionChangedHandler {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ShowArtifactInResourceHandler.class);
+ private static final BranchPersistenceManager myBranchPersistenceManager = BranchPersistenceManager.getInstance();
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+
+ public ShowArtifactInResourceHandler() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ List<Artifact> artifacts =
+ Handlers.getArtifactsFromStructuredSelection((IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection());
+ for (Artifact artifact : artifacts) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ RevisionHistoryView revisionHistoryView =
+ (RevisionHistoryView) page.showView(RevisionHistoryView.VIEW_ID, artifact.getGuid(),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ revisionHistoryView.explore(artifact);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ try {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<ArtifactChange> mySelectedArtifactChangeList =
+ Handlers.getArtifactChangeListFromStructuredSelection(myIStructuredSelection);
+ ArtifactChange mySelectedArtifactChange = mySelectedArtifactChangeList.get(0);
+ Artifact changedArtifact = mySelectedArtifactChange.getArtifact();
+ Branch reportBranch = changedArtifact.getBranch();
+ boolean readPermission = myAccessControlManager.checkObjectPermission(changedArtifact, PermissionEnum.READ);
+ return readPermission && reportBranch == myBranchPersistenceManager.getDefaultBranch();
+
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return (false);
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowChangeReportHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowChangeReportHandler.java
new file mode 100644
index 00000000000..093c7d48c37
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowChangeReportHandler.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ShowChangeReportHandler extends AbstractSelectionChangedHandler {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+
+ List<Branch> branches = Handlers.getBranchesFromStructuredSelection(structuredSelection);
+
+ if (branches != null && !branches.isEmpty()) {
+ ChangeReportView.openViewUpon(branches.get(0));
+ return null;
+ }
+
+ List<TransactionData> transactionDatas =
+ Handlers.getTransactionDataNeededFromStructuredSelection(structuredSelection);
+
+ if (transactionDatas != null && transactionDatas.size() == 2) {
+ TransactionId transaction1 = transactionDatas.get(0).getTransactionId();
+ TransactionId transaction2 = transactionDatas.get(1).getTransactionId();
+ TransactionId base =
+ transaction1.getTransactionNumber() < transaction2.getTransactionNumber() ? transaction1 : transaction2;
+ TransactionId to =
+ transaction1.getTransactionNumber() < transaction2.getTransactionNumber() ? transaction2 : transaction1;
+ ChangeReportView.openViewUpon(new ChangeReportInput(base.getBranch().getDisplayName(), base, to));
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+
+ return null;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowFinalVersionHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowFinalVersionHandler.java
new file mode 100644
index 00000000000..5bd0b6b38af
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowFinalVersionHandler.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ShowFinalVersionHandler extends AbstractSelectionChangedHandler {
+ // private static final RendererManager rendererManager = RendererManager.getInstance();
+ public ShowFinalVersionHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Branch> mySelectedBranchList = Handlers.getBranchListFromStructuredSelection(myIStructuredSelection);
+ List<TransactionData> myTransactionDataList =
+ Handlers.getTransactionDataNeededFromStructuredSelection(myIStructuredSelection);
+ if (mySelectedBranchList != null && mySelectedBranchList.size() == 1) {
+ ChangeReportView.openViewUpon(mySelectedBranchList.get(0));
+ } else if (myTransactionDataList != null && myTransactionDataList.size() == 2) {
+ TransactionId transaction1 = myTransactionDataList.get(0).getTransactionId();
+ TransactionId transaction2 = myTransactionDataList.get(1).getTransactionId();
+ TransactionId base =
+ transaction1.getTransactionNumber() < transaction2.getTransactionNumber() ? transaction1 : transaction2;
+ TransactionId to =
+ transaction1.getTransactionNumber() < transaction2.getTransactionNumber() ? transaction2 : transaction1;
+
+ ChangeReportView.openViewUpon(new ChangeReportInput(base.getBranch().getDisplayName(), base, to));
+
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+
+ return null;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowPreviewHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowPreviewHandler.java
new file mode 100644
index 00000000000..318339888f8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowPreviewHandler.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class ShowPreviewHandler extends AbstractSelectionChangedHandler {
+ // private static final RendererManager rendererManager = RendererManager.getInstance();
+ public ShowPreviewHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<ArtifactChange> mySelectedArtifactChangeList =
+ Handlers.getArtifactChangeFromStructuredSelection(myIStructuredSelection);
+ for (ArtifactChange mySelectedArtifactChange : mySelectedArtifactChangeList) {
+ Artifact selectedArtifact;
+ try {
+ selectedArtifact = mySelectedArtifactChange.getArtifact();
+ ArtifactEditor.editArtifact(selectedArtifact);
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ return null;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowResourceHistoryHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowResourceHistoryHandler.java
new file mode 100644
index 00000000000..f8d2c65c130
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ShowResourceHistoryHandler.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.ui.IWorkbenchPage;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class ShowResourceHistoryHandler extends AbstractSelectionChangedHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+
+ for (ArtifactChange mySelectedArtifactChange : Handlers.getArtifactChangesFromStructuredSelection(structuredSelection)) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ Artifact selectedArtifact = mySelectedArtifactChange.getArtifact();
+
+ RevisionHistoryView revisionHistoryView =
+ (RevisionHistoryView) page.showView(
+ RevisionHistoryView.VIEW_ID,
+ selectedArtifact != null ? selectedArtifact.getGuid() : Integer.toString(mySelectedArtifactChange.getArtId()),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ revisionHistoryView.explore(selectedArtifact);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ return null;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/TagArtifactsHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/TagArtifactsHandler.java
new file mode 100644
index 00000000000..a15c76ca42f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/TagArtifactsHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.TagArtifactsJob;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ * @author Jeff C. Phillips
+ */
+public class TagArtifactsHandler extends AbstractSelectionChangedHandler {
+ private List<Artifact> artifacts;
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Jobs.startJob(new TagArtifactsJob(artifacts));
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ try {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ artifacts = Handlers.getArtifactsFromStructuredSelection(structuredSelection);
+
+ return artifacts.size() > 0;
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return false;
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewChangeReportHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewChangeReportHandler.java
new file mode 100644
index 00000000000..483d1823be7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewChangeReportHandler.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class ViewChangeReportHandler extends AbstractSelectionChangedHandler {
+
+ public ViewChangeReportHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ List<Branch> mySelectedBranchList = Handlers.getBranchListFromStructuredSelection(myIStructuredSelection);
+ List<ChangeReportInput> myChangeReportNewInputList =
+ Handlers.getChangeReportInputNewListFromStructuredSelection(myIStructuredSelection);
+ if (!mySelectedBranchList.isEmpty()) {
+ ChangeReportView.openViewUpon(mySelectedBranchList.get(0));
+ } else if (!myChangeReportNewInputList.isEmpty()) {
+ try {
+ ChangeReportView.openViewUpon(myChangeReportNewInputList.get(0));
+ } catch (Exception myException) {
+ }
+
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewWordChangeReportHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewWordChangeReportHandler.java
new file mode 100644
index 00000000000..4ff8bd709f7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewWordChangeReportHandler.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.DELETE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.NEW;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.render.WordRenderer;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class ViewWordChangeReportHandler extends AbstractSelectionChangedHandler {
+ private static final AccessControlManager accessControlManager = AccessControlManager.getInstance();
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final String DIFF_ARTIFACT = "DIFF_ARTIFACT";
+ private List<ArtifactChange> mySelectedArtifactChangeList;
+
+ public ViewWordChangeReportHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ArrayList<Artifact> baseArtifacts = new ArrayList<Artifact>(mySelectedArtifactChangeList.size());
+ ArrayList<Artifact> newerArtifacts = new ArrayList<Artifact>(mySelectedArtifactChangeList.size());
+ ArtifactChange selectedItem = null;
+
+ for (int i = 0; i < mySelectedArtifactChangeList.size(); i++) {
+ selectedItem = mySelectedArtifactChangeList.get(i);
+
+ try {
+ Artifact baseArtifact =
+ selectedItem.getModType() == NEW ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getBaselineTransactionId());
+ Artifact newerArtifact =
+ selectedItem.getModType() == DELETE ? null : artifactManager.getArtifactFromId(
+ selectedItem.getArtifact().getArtId(), selectedItem.getToTransactionId());
+
+ baseArtifacts.add(baseArtifact);
+ newerArtifacts.add(newerArtifact);
+ } catch (Exception e1) {
+ OSEELog.logException(getClass(), e1, true);
+ }
+ }
+
+ // This is a HACK ... I needed a way to ask the renderManager for the wordRender. There
+ // should exist such a method on the manager
+ WordRenderer renderer =
+ (WordRenderer) RendererManager.getInstance().getRendererById("org.eclipse.osee.framework.ui.skynet.word");
+
+ try {
+ renderer.compareArtifacts(baseArtifacts, newerArtifacts, DIFF_ARTIFACT, null,
+ selectedItem.getBaselineTransactionId().getBranch());
+ } catch (CoreException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ List<Artifact> artifacts = new LinkedList<Artifact>();
+ try {
+ IStructuredSelection structuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ mySelectedArtifactChangeList = Handlers.getArtifactChangesFromStructuredSelection(structuredSelection);
+
+ for (ArtifactChange artifactChange : mySelectedArtifactChangeList) {
+ artifacts.add(artifactChange.getArtifact());
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+
+ return accessControlManager.checkObjectListPermission(artifacts, PermissionEnum.READ);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewerReportHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewerReportHandler.java
new file mode 100644
index 00000000000..68096addfed
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/ViewerReportHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.ui.skynet.TableViewerReport;
+import org.eclipse.osee.framework.ui.skynet.TreeViewerReport;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ViewerReportHandler extends AbstractHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if (HandlerUtil.getActivePartChecked(event) instanceof ViewPart) {
+ ViewPart view = (ViewPart) HandlerUtil.getActivePartChecked(event);
+ IWorkbenchPartSite myIWorkbenchPartSite = view.getSite();
+ Object selectionProvider = myIWorkbenchPartSite.getSelectionProvider();
+
+ if (selectionProvider instanceof TableViewer) {
+ (new TableViewerReport((TableViewer) selectionProvider)).open();
+ } else if (selectionProvider instanceof TreeViewer) {
+ (new TreeViewerReport((TreeViewer) selectionProvider)).open();
+ }
+ }
+ return null;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesBetweenCurrentAndParentHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesBetweenCurrentAndParentHandler.java
new file mode 100644
index 00000000000..14cab6985cd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesBetweenCurrentAndParentHandler.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.CHANGE;
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.ChangeReportInput;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.db.schemas.ChangeType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class WordChangesBetweenCurrentAndParentHandler extends AbstractSelectionChangedHandler {
+ private static final ArtifactPersistenceManager myArtifactPersistenceManager =
+ ArtifactPersistenceManager.getInstance();
+ private static final String DIFF_ARTIFACT = "DIFF_ARTIFACT";
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+ private List<ArtifactChange> mySelectedArtifactChangeList;
+
+ public WordChangesBetweenCurrentAndParentHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+
+ List<ChangeReportInput> getChangeReportInputNewList =
+ Handlers.getChangeReportInputNewListFromStructuredSelection(myIStructuredSelection);
+ if (mySelectedArtifactChangeList.size() > 0) {
+ ArtifactChange selectedArtifactChange = mySelectedArtifactChangeList.get(0);
+ TransactionId toTransactionId = getChangeReportInputNewList.get(0).getToTransaction();
+ try {
+ Artifact secondArtifact =
+ myArtifactPersistenceManager.getArtifactFromId(selectedArtifactChange.getArtifact().getArtId(),
+ toTransactionId);
+ RendererManager.getInstance().compareInJob(selectedArtifactChange.getConflictingModArtifact(),
+ secondArtifact, DIFF_ARTIFACT);
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ mySelectedArtifactChangeList = Handlers.getArtifactChangeListFromStructuredSelection(myIStructuredSelection);
+ if (mySelectedArtifactChangeList.size() == 0) {
+ return false;
+ }
+ ArtifactChange mySelectedArtifactChange = mySelectedArtifactChangeList.get(0);
+ Artifact changedArtifact = null;
+ try {
+ changedArtifact = mySelectedArtifactChange.getArtifact();
+ boolean readPermission = myAccessControlManager.checkObjectPermission(changedArtifact, PermissionEnum.READ);
+ boolean wordArtifactSelected = changedArtifact instanceof WordArtifact;
+ boolean modifiedWordArtifactSelected = wordArtifactSelected && mySelectedArtifactChange.getModType() == CHANGE;
+ boolean conflictedWordArtifactSelected =
+ modifiedWordArtifactSelected && mySelectedArtifactChange.getChangeType() == ChangeType.CONFLICTING;
+ return readPermission && conflictedWordArtifactSelected;
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return (false);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesMadeToHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesMadeToHandler.java
new file mode 100644
index 00000000000..61163e792d7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesMadeToHandler.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.DELETE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.NEW;
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class WordChangesMadeToHandler extends AbstractSelectionChangedHandler {
+ private static final ArtifactPersistenceManager myArtifactPersistenceManager =
+ ArtifactPersistenceManager.getInstance();
+ private static final String DIFF_ARTIFACT = "DIFF_ARTIFACT";
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+ private List<ArtifactChange> mySelectedArtifactChangeList;
+
+ public WordChangesMadeToHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ArtifactChange selectedArtifactChange = mySelectedArtifactChangeList.get(0);
+ try {
+ Artifact firstArtifact =
+ selectedArtifactChange.getModType() == NEW ? null : myArtifactPersistenceManager.getArtifactFromId(
+ selectedArtifactChange.getArtifact().getArtId(), selectedArtifactChange.getBaselineTransactionId());
+ Artifact secondArtifact =
+ selectedArtifactChange.getModType() == DELETE ? null : myArtifactPersistenceManager.getArtifactFromId(
+ selectedArtifactChange.getArtifact().getArtId(), selectedArtifactChange.getToTransactionId());
+ RendererManager.getInstance().compareInJob(firstArtifact, secondArtifact, DIFF_ARTIFACT);
+
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+
+ mySelectedArtifactChangeList = Handlers.getArtifactChangesFromStructuredSelection(myIStructuredSelection);
+
+ if (mySelectedArtifactChangeList.size() == 0) {
+ return false;
+ }
+ ArtifactChange mySelectedArtifactChange = mySelectedArtifactChangeList.get(0);
+
+ try {
+ Artifact changedArtifact = mySelectedArtifactChange.getArtifact();
+ boolean readPermission = myAccessControlManager.checkObjectPermission(changedArtifact, PermissionEnum.READ);
+ boolean wordArtifactSelected = changedArtifact instanceof WordArtifact;
+ return readPermission && wordArtifactSelected;
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return (false);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesToParentHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesToParentHandler.java
new file mode 100644
index 00000000000..35309de1549
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/commandHandlers/WordChangesToParentHandler.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.commandHandlers;
+
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.CHANGE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.DELETE;
+import static org.eclipse.osee.framework.ui.plugin.util.db.schemas.SkynetDatabase.ModificationType.NEW;
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Paul K. Waldfogel
+ */
+public class WordChangesToParentHandler extends AbstractSelectionChangedHandler {
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final String DIFF_ARTIFACT = "DIFF_ARTIFACT";
+ private static final AccessControlManager myAccessControlManager = AccessControlManager.getInstance();
+ private List<ArtifactChange> mySelectedArtifactChangeList;
+
+ public WordChangesToParentHandler() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if (mySelectedArtifactChangeList.size() > 0) {
+ ArtifactChange selectedArtifactChange = mySelectedArtifactChangeList.get(0);
+ try {
+ Artifact firstArtifact =
+ selectedArtifactChange.getModType() == NEW ? null : artifactManager.getArtifactFromId(
+ selectedArtifactChange.getArtifact().getArtId(),
+ selectedArtifactChange.getBaselineTransactionId());
+
+ Artifact secondArtifact = null;
+ Branch parentBranch = firstArtifact.getBranch().getParentBranch();
+
+ TransactionId transactionId = TransactionIdManager.getInstance().getEditableTransactionId(parentBranch);
+ secondArtifact =
+ selectedArtifactChange.getModType() == DELETE ? null : artifactManager.getArtifactFromId(
+ selectedArtifactChange.getArtifact().getArtId(), transactionId);
+
+ RendererManager.getInstance().compareInJob(firstArtifact, secondArtifact, DIFF_ARTIFACT);
+
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ try {
+ IStructuredSelection myIStructuredSelection =
+ (IStructuredSelection) AWorkbench.getActivePage().getActivePart().getSite().getSelectionProvider().getSelection();
+ mySelectedArtifactChangeList = Handlers.getArtifactChangesFromStructuredSelection(myIStructuredSelection);
+
+ if (mySelectedArtifactChangeList.size() == 0) {
+ return (false);
+ }
+ ArtifactChange mySelectedArtifactChange = mySelectedArtifactChangeList.get(0);
+
+ if (mySelectedArtifactChange.getModType() == NEW || mySelectedArtifactChange.getModType() == DELETE) {
+ return (false);
+ }
+
+ Artifact changedArtifact = mySelectedArtifactChange.getArtifact();
+ Branch reportBranch = changedArtifact.getBranch();
+ Branch parentBranch = reportBranch.getParentBranch();
+ boolean wordArtifactSelected = changedArtifact instanceof WordArtifact;
+ boolean validDiffParent = wordArtifactSelected && parentBranch != null;
+
+ boolean readPermission = myAccessControlManager.checkObjectPermission(changedArtifact, PermissionEnum.READ);
+ boolean modifiedWordArtifactSelected = wordArtifactSelected && mySelectedArtifactChange.getModType() == CHANGE;
+ return validDiffParent && modifiedWordArtifactSelected && readPermission;
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, true);
+ return (false);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/AddCommonBranch.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/AddCommonBranch.java
new file mode 100644
index 00000000000..d1a2b779988
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/AddCommonBranch.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.dbinit;
+
+import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.osee.framework.database.initialize.tasks.IDbInitializationTask;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.GlobalPreferences;
+import org.eclipse.osee.framework.skynet.core.user.UserEnum;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.XViewerCustomizationArtifact;
+
+/**
+ * This class creates the common branch and imports the appropriate skynet types. Class should be extended for plugins
+ * that require extra skynet types to be added to common.
+ *
+ * @author Donald G. Dunne
+ */
+public class AddCommonBranch implements IDbInitializationTask {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.database.initialize.tasks.IDbInitializationTask#run(java.sql.Connection)
+ */
+ public void run(Connection connection) throws Exception {
+
+ // Create branch, import skynet types and initialize
+ BranchPersistenceManager.getInstance().createRootBranch(null, Branch.COMMON_BRANCH_CONFIG_ID,
+ Branch.COMMON_BRANCH_CONFIG_ID, getSkynetDbTypeExtensionIds(), true);
+
+ // Create Default Users
+ for (UserEnum userEnum : UserEnum.values()) {
+ SkynetAuthentication.getInstance().createUser(userEnum);
+ }
+
+ // Create Global Preferences artifact that lives on common branch
+ GlobalPreferences.createGlobalPreferencesArtifact();
+
+ // Create XViewer Customization artifact that lives on common branch
+ XViewerCustomizationArtifact.getAtsCustArtifactOrCreate(true);
+
+ }
+
+ public List<String> getSkynetDbTypeExtensionIds() {
+ List<String> skynetTypeImport = new ArrayList<String>();
+ skynetTypeImport.add("org.eclipse.osee.framework.skynet.core.CommonBranch");
+ skynetTypeImport.add("org.eclipse.osee.framework.skynet.core.ProgramAndCommon");
+ return skynetTypeImport;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.database.initialize.tasks.IDbInitializationTask#canRun()
+ */
+ public boolean canRun() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/TagCommonBranchArtifacts.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/TagCommonBranchArtifacts.java
new file mode 100644
index 00000000000..5df8b779e2b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/dbinit/TagCommonBranchArtifacts.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.dbinit;
+
+import java.sql.Connection;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.database.initialize.tasks.DbInitializationTask;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactTypeSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.Operator;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.TagArtifactsJob;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TagCommonBranchArtifacts extends DbInitializationTask {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.database.initialize.tasks.IDbInitializationTask#run(java.sql.Connection)
+ */
+ public void run(Connection connection) throws Exception {
+ List<ISearchPrimitive> criteria = new LinkedList<ISearchPrimitive>();
+ for (ArtifactSubtypeDescriptor asd : ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptors(
+ BranchPersistenceManager.getInstance().getAtsBranch()))
+ criteria.add(new ArtifactTypeSearch(asd.getName(), Operator.EQUAL));
+
+ Collection<Artifact> arts =
+ ArtifactPersistenceManager.getInstance().getArtifacts(criteria, false,
+ BranchPersistenceManager.getInstance().getAtsBranch());
+
+ TagArtifactsJob job = new TagArtifactsJob(arts);
+ job.setUser(true);
+ job.setPriority(Job.LONG);
+ job.schedule();
+ try {
+ job.join();
+ } catch (InterruptedException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchJob.java
new file mode 100644
index 00000000000..ea33a5c09e4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchJob.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.export;
+
+import java.io.File;
+import java.sql.Timestamp;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.util.time.GlobalTime;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.exportImport.BranchExporter;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ExportBranchJob extends Job {
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(ExportBranchJob.class);
+ private final File file;
+ private final Branch branch;
+ private final boolean descendantsOnly;
+
+ public ExportBranchJob(File file, Branch branch, boolean descendantsOnly) {
+ super("Exporting Branch");
+ if (branch == null) throw new IllegalArgumentException("branch can not be null");
+ if (file == null) throw new IllegalArgumentException("file can not be null");
+
+ this.file = file;
+ this.branch = branch;
+ this.descendantsOnly = descendantsOnly;
+ }
+
+ public IStatus run(IProgressMonitor monitor) {
+ try {
+
+ new BranchExporter(monitor, file, branch, new Timestamp(0), GlobalTime.GreenwichMeanTimestamp(),
+ descendantsOnly).export();
+
+ return Status.OK_STATUS;
+ } catch (Exception ex) {
+ monitor.done();
+ String message = ex.getLocalizedMessage();
+
+ if (message == null) message = "";
+
+ logger.log(Level.SEVERE, message, ex);
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchPage.java
new file mode 100644
index 00000000000..920e12f4b8f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchPage.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.export;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.DirectoryOrFileSelector;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.dialogs.WizardDataTransferPage;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ExportBranchPage extends WizardDataTransferPage {
+ private DirectoryOrFileSelector directoryFileSelector;
+
+ @SuppressWarnings("unused")
+ private Branch branch;
+
+ /**
+ * @param name
+ * @param selection
+ */
+ public ExportBranchPage(String name, Branch branch) {
+ super(name);
+ this.branch = branch;
+
+ setTitle("Import Skynet types into Define");
+ setDescription("Import Skynet types into Define");
+ }
+
+ /**
+ * (non-Javadoc) Method declared on IDialogPage.
+ */
+ public void createControl(Composite parent) {
+
+ initializeDialogUnits(parent);
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
+ composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ composite.setFont(parent.getFont());
+
+ createSourceGroup(composite);
+
+ restoreWidgetValues();
+ updateWidgetEnablements();
+ setPageComplete(determinePageCompletion());
+
+ setControl(composite);
+ }
+
+ /**
+ * The <code>WizardResourceImportPage</code> implementation of this <code>Listener</code> method handles all
+ * events and enablements for controls on this page. Subclasses may extend.
+ *
+ * @param event Event
+ */
+ public void handleEvent(Event event) {
+ setPageComplete(determinePageCompletion());
+ }
+
+ protected void createSourceGroup(Composite parent) {
+ directoryFileSelector = new DirectoryOrFileSelector(parent, SWT.NONE, "Export Destination", this);
+
+ // if (currentResourceSelection == null) {
+ // Select directory as the default
+ directoryFileSelector.setDirectorySelected(true);
+ // }
+ // else {
+ // directoryFileSelector.setDirectorySelected(currentResourceSelection.getType() != IResource.FILE);
+ // directoryFileSelector.setText(currentResourceSelection.getLocation().toString());
+ // }
+
+ setPageComplete(determinePageCompletion());
+ }
+
+ /*
+ * @see WizardPage#becomesVisible
+ */
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ // policy: wizards are not allowed to come up with an error message
+ if (visible) {
+ setErrorMessage(null);
+ }
+ }
+
+ @Override
+ protected boolean validateSourceGroup() {
+ return directoryFileSelector.validate(this);
+ }
+
+ public boolean finish() {
+ try {
+ // getSpecifiedContainer().getProject();
+
+ // File file = directoryFileSelector.getFile();
+ // Job job = new ImportMetaJob(file);
+ // job.setUser(true);
+ // job.setPriority(Job.LONG);
+ // job.schedule();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ ErrorDialog.openError(getShell(), "Define Import Error", "An error has occured while importing a document.",
+ new Status(IStatus.ERROR, "org.eclipse.osee.framework.jdk.core", IStatus.ERROR,
+ "Unknown exception occurred in the import", ex));
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.dialogs.WizardResourceImportPage#allowNewContainerName()
+ */
+ @Override
+ protected boolean allowNewContainerName() {
+ return false;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchWizard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchWizard.java
new file mode 100644
index 00000000000..1bb04ab8181
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ExportBranchWizard.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.export;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.ui.IExportWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ExportBranchWizard extends Wizard implements IExportWizard {
+ private ExportBranchPage mainPage;
+ private Branch defaultBranch;
+
+ public ExportBranchWizard() {
+ this(null);
+ }
+
+ public ExportBranchWizard(Branch defaultBranch) {
+ super();
+ this.defaultBranch = defaultBranch;
+
+ setWindowTitle("Skynet Branch Export Wizard");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ return mainPage.finish();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
+ * org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ }
+
+ /**
+ * (non-Javadoc) Method declared on Wizard.
+ */
+ public void addPages() {
+ mainPage = new ExportBranchPage("Export Branch", defaultBranch);
+ addPage(mainPage);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ImportBranchJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ImportBranchJob.java
new file mode 100644
index 00000000000..5e42477b212
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/export/ImportBranchJob.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.export;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.sql.Timestamp;
+import java.util.Arrays;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.type.MutableBoolean;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.time.GlobalTime;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.exportImport.BranchExporter;
+import org.eclipse.osee.framework.skynet.core.exportImport.BranchImporterSaxHandler;
+import org.eclipse.osee.framework.ui.plugin.util.OseeConsole;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ImportBranchJob extends Job {
+ private static final int BUFFER_SIZE = 4000000;
+ private static final int ERROR_LINE_NUMBERS_FOR_BUFFER = 17;
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(ImportBranchJob.class);
+ private final File importFile;
+ private final Branch branch;
+ private final boolean includeMainLevelBranch;
+ private final boolean includeDescendantBranches;
+ private Pair<String, String> verificationErrorInfo;
+ private OseeConsole console;
+
+ public ImportBranchJob(File importFile, Branch branch, boolean includeMainLevelBranch, boolean includeDescendantBranches) {
+ super("Importing Onto Branch");
+ if (branch == null) throw new IllegalArgumentException("branch can not be null");
+ if (importFile == null) throw new IllegalArgumentException("file can not be null");
+ this.importFile = importFile;
+ this.branch = branch;
+ this.includeMainLevelBranch = includeMainLevelBranch;
+ this.includeDescendantBranches = includeDescendantBranches;
+ this.verificationErrorInfo = new Pair<String, String>("", "");
+ this.console = new OseeConsole("Importing Onto Branch", true);
+ }
+
+ public IStatus run(final IProgressMonitor monitor) {
+ try {
+
+ XMLReader reader = XMLReaderFactory.createXMLReader();
+ reader.setContentHandler(new BranchImporterSaxHandler(branch, includeMainLevelBranch,
+ includeDescendantBranches, monitor));
+ reader.parse(new InputSource(new FileInputStream(importFile)));
+
+ final MutableBoolean isVerificationAllowed = new MutableBoolean(false);
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ isVerificationAllowed.setValue(MessageDialog.openQuestion(
+ PlatformUI.getWorkbench().getDisplay().getActiveShell(), getName(),
+ "Would you like to run verification?"));
+ }
+ });
+
+ if (false != isVerificationAllowed.getValue()) {
+ File verificationFile = getVerificationFile();
+ try {
+ // Export database to a temporary file
+ boolean descendantsOnly = (includeMainLevelBranch == false && includeDescendantBranches == true);
+ new BranchExporter(monitor, verificationFile, branch, new Timestamp(0),
+ GlobalTime.GreenwichMeanTimestamp(), descendantsOnly).export();
+
+ // Compare ImportFile to Export File
+ final boolean result = compareFiles(monitor, importFile, verificationFile);
+ final String message =
+ String.format("Branch Import Verification: %s\n", true != result ? "FAILED" : "PASSED");
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ if (true != result) {
+ String errorMessage =
+ String.format("%s%s\n%s", message, verificationErrorInfo.getKey(),
+ verificationErrorInfo.getValue());
+ logger.log(Level.SEVERE, errorMessage);
+ console.writeError(errorMessage);
+ }
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), getName(),
+ message);
+ }
+ });
+ } finally {
+ verificationFile.delete();
+ }
+ }
+ return Status.OK_STATUS;
+ } catch (Exception ex) {
+ String message = ex.getLocalizedMessage();
+
+ if (message == null) message = "";
+
+ logger.log(Level.SEVERE, message, ex);
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ } finally {
+ monitor.done();
+ }
+ }
+
+ private File getVerificationFile() {
+ String filePath = importFile.getAbsolutePath();
+ String extension = Lib.getExtension(filePath);
+ filePath = filePath.replaceAll("\\." + extension, "\\.verify\\." + extension);
+ return new File(filePath);
+ }
+
+ private boolean compareFiles(IProgressMonitor monitor, File file1, File file2) {
+ monitor = (monitor != null) ? monitor : new NullProgressMonitor();
+ LineNumberReader fis1 = null;
+ LineNumberReader fis2 = null;
+ boolean toReturn = true;
+ monitor.setTaskName("Comparing Data: " + branch.getBranchName());
+ if (file1.length() != file2.length()) {
+ toReturn &= false;
+ verificationErrorInfo.setKey("EXPECTED:\nFile Size: " + file1.length());
+ verificationErrorInfo.setValue("ACTUAL:\nFile Size: " + file2.length());
+ } else {
+ try {
+ fis1 = new LineNumberReader(new FileReader(file1));
+ fis2 = new LineNumberReader(new FileReader(file2));
+ long totalSize = file1.length() / BUFFER_SIZE + 1;
+ monitor.beginTask("Verification", IProgressMonitor.UNKNOWN);
+ char[] buffer1 = new char[BUFFER_SIZE];
+ char[] buffer2 = new char[BUFFER_SIZE];
+ int count = 0;
+
+ // Check all bytes are equal
+ while (fis1.read(buffer1) != -1 && fis2.read(buffer2) != -1) {
+ if (!Arrays.equals(buffer1, buffer2)) {
+ toReturn &= false;
+ verificationErrorInfo = getErrorSection(file1.length(), fis1, fis2);
+ break;
+ }
+ count++;
+ monitor.subTask(String.format("Checking %s of %s", count, totalSize));
+ monitor.worked(1);
+ if (monitor.isCanceled()) {
+ toReturn &= false;
+ verificationErrorInfo.setKey("Verification Cancelled");
+ verificationErrorInfo.setValue(" ");
+ break;
+ }
+ }
+ } catch (Exception e) {
+ toReturn &= false;
+ verificationErrorInfo.setKey("Unexpected Exception:");
+ StringWriter writer = new StringWriter();
+ e.printStackTrace(new PrintWriter(writer));
+ verificationErrorInfo.setValue(writer.toString());
+ } finally {
+ try {
+ if (fis1 != null) {
+ fis1.close();
+ }
+ if (fis2 != null) {
+ fis2.close();
+ }
+ } catch (IOException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ monitor.done();
+ }
+ }
+ return toReturn;
+ }
+
+ private Pair<String, String> getErrorSection(long fileLength, LineNumberReader fis1, LineNumberReader fis2) throws IOException {
+ StringBuilder expected = new StringBuilder();
+ StringBuilder actual = new StringBuilder();
+ int offset = ERROR_LINE_NUMBERS_FOR_BUFFER / 2;
+ long start = 0;
+ long stop = 0;
+ int errorLineNum = fis1.getLineNumber();
+ if ((errorLineNum - offset) > 0) {
+ start = errorLineNum - offset;
+ }
+
+ if ((errorLineNum + offset) < fileLength) {
+ stop = errorLineNum + offset;
+ } else {
+ stop = fileLength;
+ }
+ fis1.setLineNumber((int) start);
+ fis2.setLineNumber((int) start);
+ for (long index = start; index <= stop; index++) {
+ if (errorLineNum == fis1.getLineNumber()) {
+ expected.append("<<<<<<<<<<<<<<< ");
+ actual.append("<<<<<<<<<<<<<<< ");
+ }
+
+ expected.append(fis1.getLineNumber());
+ expected.append(": ");
+ expected.append(fis1.readLine());
+ expected.append("\n");
+
+ actual.append(fis2.getLineNumber());
+ actual.append(": ");
+ actual.append(fis2.readLine());
+ actual.append("\n");
+ }
+ return new Pair<String, String>("EXPECTED:\n" + expected.toString(), "ACTUAL:\n" + actual.toString());
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupContentProvider.java
new file mode 100644
index 00000000000..8ad4e478c8d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupContentProvider.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.group;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactChangeListener;
+
+/**
+ * The basis for the comments in this class can be found at
+ * http://www.eclipse.org/articles/treeviewer-cg/TreeViewerArticle.htm
+ *
+ * @author Ryan D. Brooks
+ */
+public class GroupContentProvider implements ITreeContentProvider, ArtifactChangeListener {
+ protected TreeViewer viewer;
+
+ public GroupContentProvider(GroupExplorer groupExplorer) {
+ }
+
+ /*
+ * @see IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /**
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = (TreeViewer) viewer;
+ // if (oldInput != null) {
+ // ((Artifact) oldInput).removeListenerRecursively(this);
+ // }
+ // if (newInput != null) { // TODO: must handle fact that only root item has a listener added
+ // ((Artifact) newInput).addListener(this);
+ // }
+ }
+
+ /**
+ * The tree viewer calls its content provider&#8217;s getChildren method when it needs to create or display the child
+ * elements of the domain object, <b>parent </b>. This method should answer an array of domain objects that represent
+ * the unfiltered children of <b>parent </b>
+ *
+ * @see ITreeContentProvider#getChildren(Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+ return ((UniversalGroupItem) parentElement).getGroupItems().toArray();
+ }
+
+ /*
+ * @see ITreeContentProvider#getParent(Object)
+ */
+ public Object getParent(Object element) {
+ return ((UniversalGroupItem) element).getParentItem();
+ }
+
+ /**
+ * The tree viewer asks its content provider if the domain object represented by <b>element </b> has any children.
+ * This method is used by the tree viewer to determine whether or not a plus or minus should appear on the tree
+ * widget.
+ *
+ * @see ITreeContentProvider#hasChildren(Object)
+ */
+ public boolean hasChildren(Object element) {
+ UniversalGroupItem item = (UniversalGroupItem) element;
+ if (item.isUniversalGroup()) return true;
+ return false;
+ }
+
+ /**
+ * This is the method invoked by calling the <b>setInput </b> method on the tree viewer. In fact, the <b>getElements
+ * </b> method is called only in response to the tree viewer's <b>setInput </b> method and should answer with the
+ * appropriate domain objects of the inputElement. The <b>getElements </b> and <b>getChildren </b> methods operate in
+ * a similar way. Depending on your domain objects, you may have the <b>getElements </b> simply return the result of
+ * calling <b>getChildren </b>. The two methods are kept distinct because it provides a clean way to differentiate
+ * between the root domain object and all other domain objects.
+ *
+ * @see IStructuredContentProvider#getElements(Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupDragDropSupport.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupDragDropSupport.java
new file mode 100644
index 00000000000..a7034e084da
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupDragDropSupport.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.group;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceFileArtifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceURL;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.LinkManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkspace;
+import org.eclipse.osee.framework.ui.skynet.relation.explorer.RelationExplorerWindow;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public class GroupDragDropSupport {
+
+ public static void performDragDrop(DropTargetEvent e, RelationExplorerWindow window, Shell shell) {
+ if (e.data instanceof Artifact[]) {
+ addArtifacts((Artifact[]) e.data, window);
+ } else if (e.data instanceof String[]) {
+ addFiles((String[]) e.data, window, shell);
+ } else if (e.data instanceof String) {
+ addURL((String) e.data, window, shell);
+ }
+ }
+
+ private static void ensureLinkValidity(RelationLinkGroup group, Artifact artifact) {
+ boolean sideA = group.isSideA();
+ IRelationLinkDescriptor linkDescriptor = group.getDescriptor();
+ LinkManager linkManager = group.getLinkManager();
+ linkManager.ensureLinkValidity(linkDescriptor, sideA, artifact);
+ }
+
+ private static void addArtifacts(Artifact[] artifacts, RelationExplorerWindow window) {
+ RelationLinkGroup group = window.getRelationGroup();
+ boolean sideA = group.isSideA();
+ IRelationLinkDescriptor linkDescriptor = group.getDescriptor();
+ LinkManager linkManager = group.getLinkManager();
+
+ try {
+ linkManager.ensureHalfLinksValidity(linkDescriptor, !sideA, artifacts.length);
+
+ for (Artifact artifact : artifacts) {
+ try {
+ linkManager.ensureLinkValidity(linkDescriptor, sideA, artifact);
+ window.addValid(artifact);
+ } catch (IllegalArgumentException ex) {
+ window.addInvalidArtifact(artifact, ex.getMessage());
+ }
+ }
+ } catch (IllegalArgumentException ex) {
+ window.addInvalid("All", ex.getMessage());
+ }
+ }
+
+ private static void addFiles(String[] fileNames, RelationExplorerWindow window, Shell shell) {
+ RelationLinkGroup group = window.getRelationGroup();
+ IFile iFile;
+ Artifact artifact;
+
+ for (int i = 0; i < fileNames.length; i++) {
+ iFile = AWorkspace.getIFile(fileNames[i]);
+ String location;
+
+ if (iFile == null) {
+ try {
+ location = new File(fileNames[i]).toURL().toString();
+ } catch (MalformedURLException e) {
+ window.addInvalid(fileNames[i], "Malformed URL exception: " + e.getMessage());
+ continue;
+ }
+ } else {
+ location = WorkspaceURL.getURL(iFile);
+ }
+
+ try {
+ artifact = WorkspaceFileArtifact.getArtifactFromWorkspaceFile(location, shell);
+ } catch (RuntimeException e) {
+ window.addInvalid(location, "Runtime exception: " + e.getMessage());
+ continue;
+ }
+
+ if (artifact == null) {
+ window.addInvalid(location, "Artifact has been cancelled");
+ } else {
+ try {
+ ensureLinkValidity(group, artifact);
+ window.addValid(artifact);
+ } catch (IllegalArgumentException ex) {
+ window.addInvalid(artifact.getDescriptiveName(), ex.getMessage());
+ }
+
+ }
+ }
+ }
+
+ private static void addURL(String url, RelationExplorerWindow window, Shell shell) {
+ RelationLinkGroup group = window.getRelationGroup();
+ Artifact artifact;
+ String location;
+
+ try {
+ location = new URL(url).toString();
+ } catch (MalformedURLException e) {
+ window.addInvalid(url, "Malformed Exception : " + e.getMessage());
+ return;
+ }
+
+ try {
+ artifact = WorkspaceFileArtifact.getArtifactFromWorkspaceFile(location, shell);
+ } catch (RuntimeException e) {
+ window.addInvalid(location, "Runtime exception: " + e.getMessage());
+ return;
+ }
+
+ if (artifact == null) {
+ window.addInvalid(location, "Artifact has been cancelled");
+ }
+ try {
+ ensureLinkValidity(group, artifact);
+ window.addValid(artifact);
+ } catch (IllegalArgumentException ex) {
+ window.addInvalid(artifact.getDescriptiveName(), ex.getMessage());
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java
new file mode 100644
index 00000000000..52454b49644
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupExplorer.java
@@ -0,0 +1,660 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.group;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetActivator;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.UniversalGroup;
+import org.eclipse.osee.framework.skynet.core.event.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent.EventData;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationSide;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager.Direction;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.skynet.DefineHttpServerRequest;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSource;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.DropTargetAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.texteditor.StatusLineContributionItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GroupExplorer extends ViewPart implements IEventReceiver, IActionable {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(GroupExplorer.class);
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.group.GroupExplorer";
+ private static final String ROOT_GUID = "group.explorer.last.root_guid";
+ private TreeViewer treeViewer;
+ private Artifact rootArt;
+ private UniversalGroupItem rootItem;
+ private SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+ private static UniversalGroupItem selected;
+ private StatusLineContributionItem branchStatusItem;
+
+ private Branch branch;
+
+ public GroupExplorer() {
+ branchStatusItem = new StatusLineContributionItem("skynet.branch", true, 30);
+ branchStatusItem.setImage(SkynetGuiPlugin.getInstance().getImage("branch.gif"));
+ branchStatusItem.setToolTipText("The branch that the artifacts in the explorer are from.");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createPartControl(Composite parent) {
+
+ try {
+ ConnectionHandler.getConnection();
+ } catch (Exception ex) {
+ (new Label(parent, SWT.NONE)).setText(" DB Connection Unavailable");
+ return;
+ }
+
+ GridData gridData = new GridData();
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.grabExcessHorizontalSpace = true;
+
+ GridLayout gridLayout = new GridLayout(1, false);
+ gridData.heightHint = 1000;
+ gridData.widthHint = 1000;
+
+ parent.setLayout(gridLayout);
+ parent.setLayoutData(gridData);
+
+ if (!ConnectionHandler.isConnected()) {
+ (new Label(parent, SWT.NONE)).setText("DB Connection Unavailable");
+ return;
+ }
+
+ getViewSite().getActionBars().getStatusLineManager().add(branchStatusItem);
+
+ treeViewer = new TreeViewer(parent);
+ treeViewer.setContentProvider(new GroupContentProvider(this));
+ treeViewer.setLabelProvider(new GroupLabelProvider());
+ treeViewer.setUseHashlookup(true);
+ treeViewer.getTree().addListener(SWT.MouseDoubleClick, new Listener() {
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ handleDoubleClick();
+ }
+ });
+ treeViewer.getControl().setLayoutData(gridData);
+ treeViewer.getTree().addKeyListener(new keySelectedListener());
+ treeViewer.getTree().addListener(SWT.MouseUp, new Listener() {
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ if (event.button == 3) getPopupMenu().setVisible(true);
+ }
+ });
+ treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateStatusLabel();
+ }
+ });
+
+ eventManager.register(LocalTransactionEvent.class, this);
+ eventManager.register(RemoteTransactionEvent.class, this);
+ eventManager.register(LocalBranchEvent.class, this);
+ eventManager.register(RemoteBranchEvent.class, this);
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+
+ getSite().setSelectionProvider(treeViewer);
+ addExploreSelection();
+ setupDragAndDropSupport();
+ parent.layout();
+
+ createActions();
+ }
+
+ private void handleDoubleClick() {
+ UniversalGroupItem item = getSelectedItem();
+ if (item != null) {
+ RendererManager.getInstance().editInJob(item.getArtifact());
+ }
+ }
+
+ protected void createActions() {
+
+ Action refreshAction = new Action("Refresh", Action.AS_PUSH_BUTTON) {
+
+ public void run() {
+ refresh();
+ }
+ };
+ refreshAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("refresh.gif"));
+ refreshAction.setToolTipText("Refresh");
+
+ Action upAction = new Action("Up", Action.AS_PUSH_BUTTON) {
+
+ public void run() {
+ handleMoveSelection(Direction.Back);
+ }
+ };
+ upAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("up.gif"));
+ upAction.setToolTipText("Up");
+
+ Action downAction = new Action("Down", Action.AS_PUSH_BUTTON) {
+
+ public void run() {
+ handleMoveSelection(Direction.Forward);
+ }
+ };
+ downAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("down.gif"));
+ downAction.setToolTipText("Down");
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(upAction);
+ toolbarManager.add(downAction);
+ toolbarManager.add(refreshAction);
+
+ // IMenuManager manager = getViewSite().getActionBars().getMenuManager();
+
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Group Explorer");
+ }
+
+ private Menu getPopupMenu() {
+
+ Menu previewMenu = new Menu(treeViewer.getTree().getParent());
+
+ MenuItem item = new MenuItem(previewMenu, SWT.PUSH);
+ item.setText("&Remove from Group");
+ item.setEnabled(isOnlyArtifactsSelected());
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ handleRemoveFromGroup();
+ }
+ });
+
+ item = new MenuItem(previewMenu, SWT.PUSH);
+ item.setText("&Delete Group");
+ item.setEnabled(isOnlyGroupsSelected());
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ handleDeleteGroup();
+ }
+ });
+
+ item = new MenuItem(previewMenu, SWT.PUSH);
+ item.setText("&New Group");
+ item.setEnabled(true);
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ handleNewGroup();
+ }
+ });
+
+ new MenuItem(previewMenu, SWT.SEPARATOR);
+
+ item = new MenuItem(previewMenu, SWT.PUSH);
+ item.setText("&Select All\tCtrl+A");
+ item.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ treeViewer.getTree().selectAll();
+ }
+ });
+
+ item = new MenuItem(previewMenu, SWT.PUSH);
+ item.setText("Expand All\tCtrl+X");
+ item.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ expandAll((IStructuredSelection) treeViewer.getSelection());
+ }
+ });
+ return previewMenu;
+ }
+
+ private void handleNewGroup() {
+ EntryDialog ed =
+ new EntryDialog(Display.getCurrent().getActiveShell(), "Create New Group", null, "Enter Group Name",
+ MessageDialog.QUESTION, new String[] {"OK", "Cancel"}, 0);
+ if (ed.open() == 0) {
+ try {
+ UniversalGroup.addGroup(ed.getEntry());
+ } catch (IllegalArgumentException ex) {
+ AWorkbench.popup("ERROR", "Error creating group\n\n" + ex.getLocalizedMessage());
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ return;
+ }
+ treeViewer.refresh();
+ }
+ }
+
+ private void handleRemoveFromGroup() {
+ final List<UniversalGroupItem> items = getSelectedUniversalGroupItems();
+ if (items.size() == 0) {
+ AWorkbench.popup("ERROR", "No Items Selected");
+ return;
+ }
+ String names = "";
+ for (UniversalGroupItem item : items)
+ if (item.isUniversalGroup()) names += String.format("%s\n", item.getArtifact().getDescriptiveName());
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Remove From Group",
+ "Remove From Group - (Artifacts will not be deleted)\n\n" + names + "\nAre you sure?")) {
+ AbstractSkynetTxTemplate unrelateTx = new AbstractSkynetTxTemplate(branch) {
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (UniversalGroupItem item : items) {
+ item.getArtifact().unrelate(RelationSide.UNIVERSAL_GROUPING__GROUP,
+ item.getParentItem().getArtifact(), true);
+ }
+ }
+ };
+
+ try {
+ unrelateTx.execute();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+
+ private void handleDeleteGroup() {
+ final ArrayList<UniversalGroupItem> items = getSelectedUniversalGroupItems();
+ if (items.size() == 0) {
+ AWorkbench.popup("ERROR", "No Groups Selected");
+ return;
+ }
+ String names = "";
+ for (UniversalGroupItem item : items)
+ if (item.isUniversalGroup()) names += String.format("%s\n", item.getArtifact().getDescriptiveName());
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Delete Groups",
+ "Delete Groups - (Contained Artifacts will not be deleted)\n\n" + names + "\nAre you sure?")) {
+
+ AbstractSkynetTxTemplate deleteUniversalGroupTx = new AbstractSkynetTxTemplate(branch) {
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (UniversalGroupItem item : items) {
+ item.getArtifact().delete();
+ }
+ }
+ };
+
+ try {
+ deleteUniversalGroupTx.execute();
+ refresh();
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+ }
+ }
+
+ public void storeSelection() {
+ // Store selected so can re-select after event re-draw
+ selected = getSelectedItem();
+ }
+
+ public void restoreSelection() {
+ if (selected != null) {
+ UniversalGroupItem selItem = rootItem.getItem(selected.getArtifact());
+ ArrayList<UniversalGroupItem> selected = new ArrayList<UniversalGroupItem>();
+ selected.add(selItem);
+ treeViewer.setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
+ }
+ }
+
+ public void handleMoveSelection(Direction dir) {
+ storeSelection();
+ UniversalGroupItem selItem = getSelectedItem();
+ if (selItem != null) {
+ try {
+ RelationPersistenceManager.getInstance().moveObjectB(selItem.getParentItem().getArtifact(),
+ selItem.getArtifact(), RelationSide.UNIVERSAL_GROUPING__MEMBERS, dir);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetActivator.class, ex, true);
+ }
+ }
+ }
+
+ public UniversalGroupItem getSelectedItem() {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> itemsIter = selection.iterator();
+ if (itemsIter.hasNext()) return (UniversalGroupItem) itemsIter.next();
+ return null;
+ }
+
+ private void setupDragAndDropSupport() {
+ DragSource source = new DragSource(treeViewer.getTree(), DND.DROP_COPY);
+ source.setTransfer(new Transfer[] {ArtifactTransfer.getInstance()});
+ source.addDragListener(new DragSourceListener() {
+
+ public void dragFinished(DragSourceEvent event) {
+ }
+
+ public void dragSetData(DragSourceEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> i = selection.iterator();
+
+ String item = "work";
+
+ if (i.hasNext()) {
+ Artifact artifact = (Artifact) i.next();
+ item = DefineHttpServerRequest.getInstance().getUrl(artifact);
+ }
+ Object[] objects = selection.toArray();
+ Artifact[] artifacts = new Artifact[objects.length];
+
+ for (int index = 0; index < objects.length; index++)
+ artifacts[index] = (Artifact) objects[index];
+
+ event.data = new ArtifactData(artifacts, item, VIEW_ID);
+ }
+
+ public void dragStart(DragSourceEvent event) {
+ }
+ });
+
+ DropTarget target = new DropTarget(treeViewer.getTree(), DND.DROP_COPY);
+ target.setTransfer(new Transfer[] {FileTransfer.getInstance(), TextTransfer.getInstance(),
+ ArtifactTransfer.getInstance()});
+ target.addDropListener(new DropTargetAdapter() {
+
+ public void drop(DropTargetEvent event) {
+ performDrop(event);
+ }
+
+ public void dragOver(DropTargetEvent event) {
+ TreeItem selected = treeViewer.getTree().getItem(treeViewer.getTree().toControl(event.x, event.y));
+
+ if (selected != null && selected.getData() instanceof UniversalGroupItem) {
+ if (((UniversalGroupItem) selected.getData()).isUniversalGroup()) event.detail = DND.DROP_COPY;
+ } else
+ event.detail = DND.DROP_NONE;
+ }
+
+ public void dropAccept(DropTargetEvent event) {
+ }
+ });
+ }
+
+ private void performDrop(DropTargetEvent e) {
+ TreeItem selected = treeViewer.getTree().getItem(treeViewer.getTree().toControl(e.x, e.y));
+
+ if (selected.getData() instanceof UniversalGroupItem) {
+ final UniversalGroupItem item = (UniversalGroupItem) selected.getData();
+ if (!item.isUniversalGroup()) return;
+
+ if (e.data instanceof ArtifactData) {
+ final Artifact[] artsToRelate = ((ArtifactData) e.data).getArtifacts();
+ if (artsToRelate.length == 1 && item.contains(artsToRelate[0])) {
+ AWorkbench.popup("ERROR", "Artifact already related.");
+ return;
+ }
+ AbstractSkynetTxTemplate relateArtifactTx = new AbstractSkynetTxTemplate(branch) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (Artifact art : artsToRelate) {
+ if (!item.contains(art)) {
+ item.getArtifact().relate(RelationSide.UNIVERSAL_GROUPING__MEMBERS, art, true);
+ }
+ }
+ }
+ };
+
+ try {
+ relateArtifactTx.execute();
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetActivator.class, ex, true);
+ }
+ }
+ treeViewer.refresh(item);
+ }
+ }
+
+ private ArrayList<UniversalGroupItem> getSelectedUniversalGroupItems() {
+ ArrayList<UniversalGroupItem> arts = new ArrayList<UniversalGroupItem>();
+ Iterator<?> i = ((IStructuredSelection) treeViewer.getSelection()).iterator();
+ while (i.hasNext()) {
+ Object obj = i.next();
+ if (obj instanceof UniversalGroupItem) {
+ arts.add((UniversalGroupItem) obj);
+ }
+ }
+ return arts;
+ }
+
+ private boolean isOnlyGroupsSelected() {
+ if (getSelectedUniversalGroupItems().size() == 0) return false;
+ for (UniversalGroupItem item : getSelectedUniversalGroupItems()) {
+ if (!item.isUniversalGroup()) return false;
+ }
+ return true;
+ }
+
+ private boolean isOnlyArtifactsSelected() {
+ if (getSelectedUniversalGroupItems().size() == 0) return false;
+ for (UniversalGroupItem item : getSelectedUniversalGroupItems()) {
+ if (item.isUniversalGroup()) return false;
+ }
+ return true;
+ }
+
+ private void expandAll(IStructuredSelection selection) {
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ treeViewer.expandToLevel(iter.next(), TreeViewer.ALL_LEVELS);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPart#setFocus()
+ */
+ public void setFocus() {
+ }
+
+ public void explore(Artifact artifact) throws CoreException, IllegalArgumentException, SQLException {
+ if (rootItem != null) {
+ rootItem.dispose();
+ }
+ branch = artifact.getBranch();
+ rootArt = artifact;
+ rootItem = new UniversalGroupItem(treeViewer, rootArt, null, this);
+ rootItem.getGroupItems();
+
+ setPartName("Group Explorer");
+
+ if (treeViewer != null) treeViewer.setInput(rootItem);
+
+ restoreSelection();
+ }
+
+ /**
+ * Add the selection from the define explorer
+ */
+ private void addExploreSelection() {
+ if (rootArt != null) {
+ try {
+ refresh();
+ } catch (IllegalArgumentException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ }
+
+ public void onEvent(final Event event) {
+ try {
+ if (event instanceof TransactionEvent) {
+ EventData ed =
+ ((TransactionEvent) event).getEventData(UniversalGroup.getTopUniversalGroupArtifact(branchPersistenceManager.getDefaultBranch()));
+ if (ed.isRelChange()) {
+ refresh();
+ }
+ } else if (event instanceof DefaultBranchChangedEvent) {
+ refresh();
+ } else if (event instanceof BranchEvent) {
+ refresh();
+ } else
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, "Unexpected event => " + event);
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, "Can't get group root artifact", ex);
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ private class keySelectedListener implements KeyListener {
+ public void keyPressed(KeyEvent e) {
+ if (e.keyCode == 'a' && e.stateMask == SWT.CONTROL) {
+ treeViewer.getTree().selectAll();
+ }
+ if (e.keyCode == 'x' && e.stateMask == SWT.CONTROL) {
+ expandAll((IStructuredSelection) treeViewer.getSelection());
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+ }
+
+ public void refresh() {
+ try {
+ explore(UniversalGroup.getTopUniversalGroupArtifact(branchPersistenceManager.getDefaultBranch()));
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ updateStatusLabel();
+ }
+
+ private void updateStatusLabel() {
+ if (treeViewer != null && !treeViewer.getTree().isDisposed()) {
+ Artifact root = ((UniversalGroupItem) treeViewer.getInput()).getArtifact();
+ if (root != null && root.getPersistenceMemo() != null) {
+ Branch branch = root.getPersistenceMemo().getTransactionId().getBranch();
+ branchStatusItem.setText(branch.getDisplayName());
+ branchStatusItem.setImage(BranchLabelProvider.getBranchImage(branch));
+ } else {
+ branchStatusItem.setText("");
+ branchStatusItem.setImage(SkynetGuiPlugin.getInstance().getImage("branch.gif"));
+ }
+ }
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+ if (memento != null) {
+ try {
+ Artifact previousArtifact =
+ ArtifactPersistenceManager.getInstance().getArtifact(memento.getString(ROOT_GUID),
+ BranchPersistenceManager.getInstance().getCommonBranch());
+ if (previousArtifact != null) {
+ explore(previousArtifact);
+ return;
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Falling back to the root artifact: " + ex.getLocalizedMessage(), ex);
+ }
+ }
+ refresh();
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ super.saveState(memento);
+ if (rootArt != null) {
+ memento.putString(ROOT_GUID, rootArt.getGuid());
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#dispose()
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ SkynetEventManager.getInstance().unRegisterAll(this);
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupLabelProvider.java
new file mode 100644
index 00000000000..9780cfc9d85
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/GroupLabelProvider.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.group;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+public class GroupLabelProvider extends LabelProvider {
+ private static final OseeUiActivator plugin = SkynetGuiPlugin.getInstance();
+
+ public GroupLabelProvider() {
+ super();
+ }
+
+ /*
+ * @see ILabelProvider#getImage(Object)
+ */
+ public Image getImage(Object element) {
+ if (element instanceof UniversalGroupItem) {
+ UniversalGroupItem item = (UniversalGroupItem) element;
+ String typename = item.getArtifact().getArtifactTypeName();
+ if (typename.equals("Heading"))
+ return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
+ else if (typename.equals("Narrative"))
+ return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ else if (typename.equals("Action"))
+ return plugin.getImage("A.gif");
+ else if (typename.equals("Product Impact"))
+ return plugin.getImage("product.gif");
+ else if (typename.equals("Aspect Impact"))
+ return plugin.getImage("aspect.gif");
+ else if (typename.equals("Task"))
+ return plugin.getImage("task.gif");
+ else if (typename.equals("Universal Group")) return plugin.getImage("group.gif");
+ }
+ return plugin.getImage("laser_16_16.gif");
+
+ }
+
+ /*
+ * @see ILabelProvider#getText(Object)
+ */
+ public String getText(Object element) {
+ if (element instanceof UniversalGroupItem) {
+ UniversalGroupItem item = (UniversalGroupItem) element;
+ Artifact artifact = item.getArtifact();
+ if (artifact.isDeleted()) throw new IllegalArgumentException("Can not display a deleted artifact");
+
+ String name = artifact.getDescriptiveName();
+ if (name == null) {
+ return "";
+ }
+ return name;
+ }
+ throw new IllegalArgumentException("wrong type: " + element.getClass().getName());
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/UniversalGroupItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/UniversalGroupItem.java
new file mode 100644
index 00000000000..0dbf57ed680
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/group/UniversalGroupItem.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.group;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.event.LocalTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent.EventData;
+import org.eclipse.osee.framework.skynet.core.relation.RelationSide;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class UniversalGroupItem implements IEventReceiver {
+
+ private Artifact artifact;
+ private final TreeViewer treeViewer;
+ private SkynetEventManager eventManager;
+ private UniversalGroupItem parentItem;
+ private List<UniversalGroupItem> groupItems;
+ private final GroupExplorer groupExplorer;
+
+ public UniversalGroupItem(TreeViewer treeViewer, Artifact artifact, UniversalGroupItem parentItem, GroupExplorer groupExplorer) {
+ this.treeViewer = treeViewer;
+ this.artifact = artifact;
+ this.parentItem = parentItem;
+ this.groupExplorer = groupExplorer;
+ eventManager = SkynetEventManager.getInstance();
+ eventManager.register(RemoteTransactionEvent.class, this);
+ eventManager.register(LocalTransactionEvent.class, this);
+ }
+
+ public boolean contains(Artifact artifact) {
+ for (UniversalGroupItem item : getGroupItems()) {
+ if (item.getArtifact() != null && item.getArtifact().equals(artifact)) return true;
+ }
+ return false;
+ }
+
+ /**
+ * @param artifact to match with
+ * @return UGI that contains artifact
+ */
+ public UniversalGroupItem getItem(Artifact artifact) {
+ if (this.artifact != null && this.artifact.equals(artifact)) return this;
+ for (UniversalGroupItem item : getGroupItems()) {
+ UniversalGroupItem ugi = item.getItem(artifact);
+ if (ugi != null) return ugi;
+ }
+ return null;
+ }
+
+ public void dispose() {
+ eventManager.unRegisterAll(this);
+ if (groupItems != null) for (UniversalGroupItem item : groupItems)
+ item.dispose();
+ }
+
+ public boolean isUniversalGroup() {
+ if (artifact == null || artifact.isDeleted()) return false;
+ return artifact.getArtifactTypeName().equals("Universal Group");
+ }
+
+ public String getTableArtifactType() {
+ return artifact.getArtifactTypeName();
+ }
+
+ public String getTableArtifactName() {
+ return artifact.getDescriptiveName();
+ }
+
+ public String getTableArtifactDescription() {
+ return null;
+ }
+
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ public List<UniversalGroupItem> getGroupItems() {
+ // Light loading; load the first time getChildren is called
+ if (groupItems == null) {
+ groupItems = new ArrayList<UniversalGroupItem>();
+ populateUpdateCategory();
+ }
+ List<UniversalGroupItem> items = new ArrayList<UniversalGroupItem>();
+ if (groupItems != null) items.addAll(groupItems);
+ return items;
+ }
+
+ /**
+ * Populate/Update this category with it's necessary children items
+ */
+ public void populateUpdateCategory() {
+ try {
+ for (UniversalGroupItem item : getGroupItems()) {
+ removeGroupItem(item);
+ }
+ for (Artifact art : artifact.getArtifacts(RelationSide.UNIVERSAL_GROUPING__MEMBERS)) {
+ addGroupItem(new UniversalGroupItem(treeViewer, art, this, groupExplorer));
+ }
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ public void addGroupItem(UniversalGroupItem item) {
+ groupItems.add(item);
+ }
+
+ public void removeGroupItem(UniversalGroupItem item) {
+ item.dispose();
+ groupItems.remove(item);
+ }
+
+ public void onEvent(final Event event) {
+ if (treeViewer == null || treeViewer.getTree().isDisposed() || (artifact != null && artifact.isDeleted())) {
+ dispose();
+ return;
+ }
+ final UniversalGroupItem tai = this;
+
+ if (event instanceof TransactionEvent) {
+ EventData ed = ((TransactionEvent) event).getEventData(artifact);
+ if (ed.isRemoved()) {
+ treeViewer.refresh();
+ groupExplorer.restoreSelection();
+ } else if (ed.getAvie() != null && ed.getAvie().getOldVersion().equals(artifact)) {
+ if (artifact == ed.getAvie().getOldVersion()) {
+ artifact = ed.getAvie().getNewVersion();
+ treeViewer.refresh(tai);
+ groupExplorer.restoreSelection();
+ }
+ } else if (ed.isModified()) {
+ treeViewer.update(tai, null);
+ } else if (ed.isRelChange()) {
+ populateUpdateCategory();
+ treeViewer.refresh(tai);
+ groupExplorer.restoreSelection();
+ }
+ } else
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, "Unexpected event => " + event);
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ public UniversalGroupItem getParentItem() {
+ return parentItem;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/GeneralWordOutlineHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/GeneralWordOutlineHandler.java
new file mode 100644
index 00000000000..2a1c20e1ec2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/GeneralWordOutlineHandler.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.handler;
+
+import java.util.HashMap;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.WordAttribute;
+import org.eclipse.osee.framework.skynet.core.util.WordUtil;
+import org.eclipse.osee.framework.ui.skynet.Import.RoughArtifact;
+import org.eclipse.osee.framework.ui.skynet.Import.WordOutlineContentHandler;
+import org.eclipse.osee.framework.ui.skynet.Import.WordOutlineExtractor;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class GeneralWordOutlineHandler extends WordOutlineContentHandler {
+ private static final Pattern listPrKiller =
+ Pattern.compile("<((\\w+:)?listPr)(\\s+.*?)((/>)|(>(.*?)</\\1>))",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private HashMap<String, RoughArtifact> duplicateCatcher;
+
+ private RoughArtifact previousNamedArtifact;
+ private RoughArtifact roughArtifact;
+ private StringBuilder wordFormattedContent;
+ private String lastHeaderNumber;
+
+ /**
+ * Subclasses may extend this method to allocate resources
+ */
+ @Override
+ public void init(WordOutlineExtractor extractor, ArtifactSubtypeDescriptor headingDescriptor, ArtifactSubtypeDescriptor mainDescriptor) {
+ super.init(extractor, headingDescriptor, mainDescriptor);
+
+ duplicateCatcher = new HashMap<String, RoughArtifact>();
+ lastHeaderNumber = null;
+ previousNamedArtifact = null;
+ roughArtifact = null;
+ wordFormattedContent = new StringBuilder();
+ }
+
+ /**
+ * Sublcasses may extend this method to dispose resources.
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+
+ duplicateCatcher = null;
+ lastHeaderNumber = null;
+ previousNamedArtifact = null;
+ roughArtifact = null;
+ }
+
+ public final void processContent(boolean forceBody, boolean forcePrimaryType, String headerNumber, String listIdentifier, String paragraphStyle, String content, boolean isParagraph) {
+ if (!headerNumber.equals("")) {
+ lastHeaderNumber = headerNumber;
+ }
+
+ if (!headerNumber.equals("") && WordUtil.isHeadingStyle(paragraphStyle) && !WordUtil.textOnly(content).trim().equals(
+ "")) {
+ setContent();
+ roughArtifact = setUpNewArtifact(headerNumber);
+ previousNamedArtifact = roughArtifact;
+
+ processHeadingText(roughArtifact, WordUtil.textOnly(content));
+ } else if (!listIdentifier.equals("") && !forceBody) {
+ String proNumber = lastHeaderNumber + "." + listIdentifier;
+
+ content = listPrKiller.matcher(content).replaceAll("");
+ roughArtifact.addAttribute("Name", proNumber);
+ } else if (roughArtifact != null) {
+ wordFormattedContent.append(content);
+ }
+ }
+
+ public void setContent() {
+ if (roughArtifact != null) {
+ roughArtifact.addAttribute(WordAttribute.CONTENT_NAME, wordFormattedContent.toString());
+ wordFormattedContent.setLength(0);
+ }
+ }
+
+ /**
+ * Subclasses can override this method to handle how heading text is applied to the roughArtifact
+ *
+ * @param artifact
+ * @param headingText
+ */
+ public void processHeadingText(RoughArtifact roughArtifact, String headingText) {
+ roughArtifact.addAttribute("Name", headingText.trim());
+ }
+
+ private RoughArtifact setUpNewArtifact(String parNumber) {
+ RoughArtifact roughArtifact;
+ RoughArtifact duplicateArtifact = duplicateCatcher.get(parNumber);
+ if (duplicateArtifact == null) {
+ roughArtifact = new RoughArtifact();
+ duplicateCatcher.put(parNumber, roughArtifact);
+ } else {
+ throw new IllegalStateException(String.format(
+ "Paragraph %s found more than once following \"%s\" which is a duplicate of %s", parNumber,
+ previousNamedArtifact.getName(), duplicateArtifact.getName()));
+ }
+
+ roughArtifact.setHeadingDescriptor(headingDescriptor);
+ roughArtifact.setPrimaryDescriptor(mainDescriptor);
+ extractor.addRoughArtifact(roughArtifact);
+ roughArtifact.setSectionNumber(parNumber);
+ roughArtifact.setForcePrimaryType(true);
+
+ roughArtifact.addAttribute("Imported Paragraph Number", parNumber);
+
+ return roughArtifact;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/SoftwareRequirementHandler.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/SoftwareRequirementHandler.java
new file mode 100644
index 00000000000..34d7c7193f6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/handler/SoftwareRequirementHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.handler;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.ui.skynet.Import.RoughArtifact;
+
+/**
+ * @author Robert A. Fisher
+ */
+public abstract class SoftwareRequirementHandler extends GeneralWordOutlineHandler {
+ private static final Pattern partitionPattern = Pattern.compile("\\[([\\w\\(|\\)]+)\\]");
+
+ private final String attributeName;
+
+ public SoftwareRequirementHandler(String attributeName) {
+ this.attributeName = attributeName;
+ }
+
+ @Override
+ public void processHeadingText(RoughArtifact roughArtifact, String headingText) {
+ StringBuilder text = new StringBuilder(headingText);
+ Matcher matcher = partitionPattern.matcher(text);
+ boolean isRequirement = false;
+
+ while (matcher.find()) {
+ isRequirement = true;
+
+ roughArtifact.addAttribute(attributeName, matcher.group(1).trim());
+ text.delete(matcher.start(), matcher.end());
+ matcher.reset(text);
+ }
+
+ if (!isRequirement) {
+ roughArtifact.setPrimaryDescriptor(headingDescriptor);
+ }
+
+ roughArtifact.addAttribute("Name", text.toString().trim());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryContentProvider.java
new file mode 100644
index 00000000000..01f51fb77b1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryContentProvider.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.history;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactChangeListener;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class RevisionHistoryContentProvider implements ITreeContentProvider, ArtifactChangeListener {
+ private static Object[] EMPTY_ARRAY = new Object[0];
+
+ public RevisionHistoryContentProvider() {
+ super();
+ }
+
+ /**
+ * returns the children of the parent element or null if there are none.
+ */
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Artifact) {
+ Artifact parentItem = (Artifact) parentElement;
+
+ Collection<TransactionData> transactions =
+ RevisionManager.getInstance().getTransactionsPerArtifact(parentItem, true);
+ if (transactions != null) {
+ return transactions.toArray();
+ }
+ } else if (parentElement instanceof TransactionData) {
+ TransactionData parentItem = (TransactionData) parentElement;
+
+ Collection<RevisionChange> changes = null;
+ try {
+ changes = RevisionManager.getInstance().getTransactionChanges(parentItem);
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, false);
+ }
+ if (changes != null) {
+ return changes.toArray();
+ }
+ }
+ return EMPTY_ARRAY;
+ }
+
+ /**
+ * get the parent element
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+
+ if (element instanceof TransactionData)
+ return true;
+ else
+ return false;
+ }
+
+ /**
+ * returns the elements
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public void dispose() {
+
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryLabelProvider.java
new file mode 100644
index 00000000000..2807333b55d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryLabelProvider.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.history;
+
+import java.sql.Timestamp;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.revision.IAttributeChange;
+import org.eclipse.osee.framework.skynet.core.revision.IRelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.RelationLinkChange;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionChange;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class RevisionHistoryLabelProvider implements ITableLabelProvider, ILabelProvider {
+
+ public RevisionHistoryLabelProvider() {
+ super();
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+
+ if (element instanceof TransactionData && columnIndex == 0) {
+ return SkynetGuiPlugin.getInstance().getImage("transaction.gif");
+
+ } else if (element instanceof RevisionChange && columnIndex == 0) {
+ return SkynetGuiPlugin.getInstance().getImage("transaction_detail.gif");
+ } else if (element instanceof RelationLinkChange && columnIndex == 2) {
+ ArtifactSubtypeDescriptor descriptor = ((RelationLinkChange) element).getOtherArtifactDescriptor();
+ if (descriptor == null)
+ return null;
+ else
+ return descriptor.getImage();
+
+ }
+ return null;
+ }
+
+ /**
+ * returns the text for a specific column
+ */
+ public String getColumnText(Object element, int columnIndex) {
+
+ if (element instanceof TransactionData) {
+ TransactionData data = (TransactionData) element;
+
+ if (columnIndex == 0)
+ return String.valueOf(data.getTransactionNumber());
+
+ else if (columnIndex == 1)
+ return String.valueOf((Timestamp) data.getTimeStamp());
+
+ else if (columnIndex == 2)
+ return String.valueOf(data.getName());
+
+ else if (columnIndex == 3) return data.getComment();
+ } else if (element instanceof IAttributeChange) {
+ IAttributeChange change = (IAttributeChange) element;
+
+ if (columnIndex == 0) {
+ return String.valueOf(change.getGammaId());
+ } else if (columnIndex == 1) {
+ return change.getName();
+ } else if (columnIndex == 2) {
+ return "was:" + change.getWasValue();
+ } else if (columnIndex == 3) {
+ return "is:" + change.getChange();
+ }
+ } else if (element instanceof IRelationLinkChange) {
+ IRelationLinkChange change = (IRelationLinkChange) element;
+
+ if (columnIndex == 0) {
+ return String.valueOf(change.getGammaId());
+ } else if (columnIndex == 1) {
+ return change.getRelTypeName();
+ } else if (columnIndex == 2) {
+ return change.getOtherArtifactName();
+ } else if (columnIndex == 3) {
+ return change.getRationale();
+ }
+ }
+
+ return "";
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public Image getImage(Object element) {
+ return getColumnImage(element, 0);
+ }
+
+ /**
+ * return the text for the first column as default
+ */
+ public String getText(Object element) {
+ return getColumnText(element, 0);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryView.java
new file mode 100644
index 00000000000..0cbae20490c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/RevisionHistoryView.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.history;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.ITreeViewerListener;
+import org.eclipse.jface.viewers.TreeExpansionEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.CacheArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.TransactionArtifactModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModifiedEvent.ModType;
+import org.eclipse.osee.framework.skynet.core.event.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalDeletedBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.LocalTransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteCommitBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.RemoteDeletedBranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.TransactionEvent;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.menu.ArtifactDiffMenu;
+import org.eclipse.osee.framework.ui.skynet.menu.ArtifactPreviewMenu;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * Displays an artifacts revision history specific to a branch.
+ *
+ * @author Jeff C. Phillips
+ */
+public class RevisionHistoryView extends ViewPart implements IActionable, IEventReceiver {
+
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.history.RevisionHistoryView";
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(RevisionHistoryView.class);
+ private static final String[] columnNames = {"Revision", "Time Stamp", "Author", "Comment"};
+ private static final String ARTIFACT_GUID = "GUID";
+ private TreeViewer treeViewer;
+ private Artifact artifact;
+
+ /**
+ *
+ */
+ public RevisionHistoryView() {
+ super();
+
+ eventManager.unRegisterAll(this);
+ eventManager.register(LocalCommitBranchEvent.class, this);
+ eventManager.register(RemoteCommitBranchEvent.class, this);
+ eventManager.register(LocalDeletedBranchEvent.class, this);
+ eventManager.register(RemoteDeletedBranchEvent.class, this);
+ eventManager.register(CacheArtifactModifiedEvent.class, this);
+ eventManager.register(TransactionArtifactModifiedEvent.class, this);
+ eventManager.register(LocalTransactionEvent.class, this);
+
+ }
+
+ public static void open(Artifact artifact) {
+ IWorkbenchPage page = AWorkbench.getActivePage();
+ try {
+ RevisionHistoryView revisionHistoryView =
+ (RevisionHistoryView) page.showView(RevisionHistoryView.VIEW_ID, artifact.getGuid(),
+ IWorkbenchPage.VIEW_ACTIVATE);
+ revisionHistoryView.explore(artifact);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ GridData gridData = new GridData();
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.grabExcessHorizontalSpace = true;
+
+ parent.setLayoutData(gridData);
+
+ treeViewer = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.MULTI);
+ treeViewer.setContentProvider(new RevisionHistoryContentProvider());
+ treeViewer.setLabelProvider(new RevisionHistoryLabelProvider());
+
+ createColumns();
+ createTreeExpandListener();
+ treeViewer.addDoubleClickListener(new Transaction2ClickListener());
+
+ Menu popupMenu = new Menu(parent);
+ ArtifactPreviewMenu.createPreviewMenuItem(popupMenu, treeViewer);
+ ArtifactDiffMenu.createDiffMenuItem(popupMenu, treeViewer, "Compare two Artifacts", null);
+ treeViewer.getTree().setMenu(popupMenu);
+
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Revision History");
+ SkynetContributionItem.addTo(this, true);
+
+ explore(artifact);
+ }
+
+ private void createTreeExpandListener() {
+ treeViewer.addTreeListener(new ITreeViewerListener() {
+
+ public void treeCollapsed(TreeExpansionEvent event) {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ packColumnData();
+ }
+ });
+ }
+
+ public void treeExpanded(TreeExpansionEvent event) {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ packColumnData();
+ }
+ });
+ }
+ });
+ }
+
+ private void createColumns() {
+ Tree tree = treeViewer.getTree();
+
+ tree.setHeaderVisible(true);
+ TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
+ column1.setWidth(100);
+ column1.setText(columnNames[0]);
+
+ TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
+ column2.setWidth(200);
+ column2.setText(columnNames[1]);
+
+ TreeColumn column3 = new TreeColumn(tree, SWT.LEFT);
+ column3.setWidth(150);
+ column3.setText(columnNames[2]);
+
+ TreeColumn column4 = new TreeColumn(tree, SWT.LEFT);
+ column4.setWidth(250);
+ column4.setText(columnNames[3]);
+
+ setHelpContexts();
+ }
+
+ @Override
+ public void setFocus() {
+ treeViewer.getControl().setFocus();
+ }
+
+ /**
+ * Explores an artifacts history.
+ *
+ * @param artifact
+ */
+ public void explore(Artifact artifact) {
+ if (treeViewer != null && artifact != null) {
+ this.artifact = artifact;
+ // Pair<TransactionId, TransactionId> points = transactionIdManager.getStartEndPoint(artifact.getBranch());
+ // historyTable.setInput(new ArtifactChange(ChangeType.OUTGOING, ModificationType.CHANGE, artifact, null, null, points.getKey(), points.getValue(),0));
+ treeViewer.setInput(artifact);
+ setContentDescription("Artifact: " + artifact.getDescriptiveName());
+ packColumnData();
+ }
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ private void packColumnData() {
+ TreeColumn[] columns = treeViewer.getTree().getColumns();
+ for (TreeColumn column : columns) {
+ column.pack();
+ }
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(treeViewer.getControl(), "revision_history_tree_viewer");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento)
+ */
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+
+ try {
+ if (memento != null) {
+ Artifact previousArtifact =
+ ArtifactPersistenceManager.getInstance().getArtifact(memento.getString(ARTIFACT_GUID),
+ BranchPersistenceManager.getInstance().getDefaultBranch());
+ if (previousArtifact != null) {
+ artifact = previousArtifact;
+ return;
+ }
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Falling back to the root artifact: " + ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.ViewPart#saveState(org.eclipse.ui.IMemento)
+ */
+ @Override
+ public void saveState(IMemento memento) {
+ if (artifact != null) {
+ memento.putString(ARTIFACT_GUID, artifact.getGuid());
+ }
+ super.saveState(memento);
+ }
+
+ public void onEvent(Event event) {
+ boolean closeView = false;
+
+ if (event instanceof TransactionEvent) {
+ ((TransactionEvent) event).fireSingleEvent(this);
+ }
+
+ if (event instanceof ArtifactModifiedEvent) {
+ ArtifactModifiedEvent artModEvent = (ArtifactModifiedEvent) event;
+ closeView =
+ artifact != null && artModEvent.getType() == ModType.Deleted && artModEvent.getGuid().equals(
+ artifact.getGuid());
+ }
+
+ if ((event instanceof LocalCommitBranchEvent) || (event instanceof RemoteCommitBranchEvent) || (event instanceof LocalDeletedBranchEvent) || (event instanceof RemoteDeletedBranchEvent)) {
+ closeView = artifact != null && ((BranchEvent) event).getBranchId() == artifact.getBranch().getBranchId();
+ }
+
+ if (closeView) {
+ getViewSite().getPage().hideView(getViewSite().getPage().findViewReference(VIEW_ID, artifact.getGuid()));
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#runOnEventInDisplayThread()
+ */
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#dispose()
+ */
+ @Override
+ public void dispose() {
+ eventManager.unRegisterAll(this);
+
+ super.dispose();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/Transaction2ClickListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/Transaction2ClickListener.java
new file mode 100644
index 00000000000..48e2a067f6e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/history/Transaction2ClickListener.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.history;
+
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class Transaction2ClickListener implements IDoubleClickListener {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(Transaction2ClickListener.class);
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
+ */
+ public void doubleClick(DoubleClickEvent event) {
+ Object selectedItem = ((IStructuredSelection) event.getSelection()).getFirstElement();
+ if (selectedItem instanceof TransactionData) {
+ openArtifact((TransactionData) selectedItem);
+ } else {
+ logger.log(Level.WARNING, selectedItem.getClass().getName());
+ }
+ }
+
+ private void openArtifact(TransactionData transactionData) {
+ try {
+ TransactionId transactionId =
+ transactionIdManager.getPossiblyEditableTransactionIfFromCache(transactionData.getTransactionNumber());
+ Artifact artifact =
+ ArtifactPersistenceManager.getInstance().getArtifactFromId(transactionData.getAssociatedArtId(),
+ transactionId);
+ ArtifactEditor.editArtifact(artifact);
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactRequest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactRequest.java
new file mode 100644
index 00000000000..c6931bac4ef
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactRequest.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.httpRequests;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.linking.HttpRequest;
+import org.eclipse.osee.framework.skynet.core.linking.HttpResponse;
+import org.eclipse.osee.framework.skynet.core.linking.HttpServer;
+import org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.skynet.artifact.snapshot.ArtifactSnapshotManager;
+import org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer;
+import org.eclipse.osee.framework.ui.skynet.render.IRenderer;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.Renderer;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class ArtifactRequest implements IHttpServerRequest {
+ private static final String GUID_KEY = "guid";
+ private static final String BRANCH_NAME_KEY = "branch";
+ private static final String BRANCH_ID_KEY = "branchId";
+ private static final String TRANSACTION_NUMBER_KEY = "transaction";
+ private static final String FORCE_KEY = "force";
+ private static final String FORMAT_KEY = "format";
+ private static final ArtifactRequest instance = new ArtifactRequest();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactRequest.class);
+
+ public enum FormatEnums {
+ HTML, NATIVE
+ }
+
+ private ArtifactRequest() {
+ }
+
+ public static ArtifactRequest getInstance() {
+ return instance;
+ }
+
+ public String getUrl(Artifact artifact, boolean includeRevision) {
+ Map<String, String> keyValues = new HashMap<String, String>();
+ String guid = artifact.getGuid();
+ int branch = artifact.getBranch().getBranchId();
+ try {
+ if (Strings.isValid(guid)) {
+ keyValues.put(GUID_KEY, URLEncoder.encode(guid, "UTF-8"));
+ }
+ keyValues.put(BRANCH_ID_KEY, URLEncoder.encode(Integer.toString(branch), "UTF-8"));
+ if (includeRevision) {
+ int txNumber = artifact.getPersistenceMemo().getTransactionNumber();
+ keyValues.put(TRANSACTION_NUMBER_KEY, URLEncoder.encode(Integer.toString(txNumber), "UTF-8"));
+ }
+ } catch (UnsupportedEncodingException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ return HttpServer.getUrl(this, keyValues);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#getRequestType()
+ */
+ public String getRequestType() {
+ return "GET.ARTIFACT";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#processRequest(org.eclipse.osee.framework.skynet.core.linking.HttpRequest,
+ * org.eclipse.osee.framework.skynet.core.linking.HttpResponse)
+ */
+ public void processRequest(HttpRequest httpRequest, HttpResponse httpResponse) {
+ boolean updateCache = Boolean.parseBoolean(httpRequest.getParameter(FORCE_KEY));
+ try {
+ final Artifact artifact = getRequestedArtifact(httpRequest);
+ final FormatEnums requesttedFormat = getFormatType(httpRequest);
+ switch (requesttedFormat) {
+ case NATIVE:
+ sendAsNative(artifact, httpResponse);
+ break;
+ case HTML:
+ default:
+ sendAsHTML(artifact, updateCache, httpResponse);
+ break;
+ }
+ } catch (Exception ex) {
+ logger.log(Level.WARNING, String.format("Get Artifact Error: [%s]", httpRequest.getParametersAsString()), ex);
+ httpResponse.outputStandardError(400, "Exception handling request");
+ }
+ }
+
+ private Artifact getRequestedArtifact(HttpRequest httpRequest) throws Exception {
+ String guidKey = httpRequest.getParameter(GUID_KEY);
+ String branchIdKey = httpRequest.getParameter(BRANCH_ID_KEY);
+ String branchNameKey = httpRequest.getParameter(BRANCH_NAME_KEY);
+ String transactionKey = httpRequest.getParameter(TRANSACTION_NUMBER_KEY);
+ Artifact toReturn;
+ if (Strings.isValid(transactionKey)) {
+ toReturn = getArtifactBasedOnTransactionNumber(guidKey, Integer.parseInt(transactionKey));
+ } else {
+ toReturn = getLatestArtifactForBranch(guidKey, branchIdKey, branchNameKey);
+ }
+ return toReturn;
+ }
+
+ private FormatEnums getFormatType(HttpRequest httpRequest) {
+ String format = httpRequest.getParameter(FORMAT_KEY);
+ FormatEnums toReturn = FormatEnums.HTML;
+ try {
+ toReturn = FormatEnums.valueOf(format.toUpperCase());
+ } catch (Exception ex) {
+ toReturn = FormatEnums.HTML;
+ }
+ return toReturn;
+ }
+
+ private void sendAsHTML(Artifact artifact, boolean updateCache, HttpResponse httpResponse) throws Exception {
+ String html = ArtifactSnapshotManager.getInstance().getDataSnapshot(artifact, updateCache);
+ httpResponse.getPrintStream().println(AHTML.pageEncoding(html));
+ }
+
+ private void sendAsNative(Artifact artifact, HttpResponse httpResponse) throws Exception {
+ IRenderer render = RendererManager.getInstance().getBestRenderer(PresentationType.EDIT, artifact);
+ if (render instanceof FileSystemRenderer) {
+ FileSystemRenderer fileSystemRenderer = (FileSystemRenderer) render;
+ Branch branch = artifact.getBranch();
+ IFolder baseFolder = fileSystemRenderer.getRenderFolder(branch, PresentationType.EDIT);
+ IFile iFile =
+ fileSystemRenderer.renderToFileSystem(new NullProgressMonitor(), baseFolder, artifact, branch, null,
+ PresentationType.EDIT);
+
+ File file = iFile.getLocation().toFile();
+ String fileName = artifact.getDescriptiveName() + "." + iFile.getFileExtension();
+ String encodedFileName = URLEncoder.encode(fileName, "UTF-8");
+
+ httpResponse.setReponseHeader("Accept-Ranges", "bytes");
+ httpResponse.setContentType("application");
+ httpResponse.setContentEncoding(iFile.getCharset());
+ httpResponse.setContentDisposition("attachment; filename=" + encodedFileName);
+ httpResponse.sendResponseHeaders(200, file.length());
+
+ httpResponse.sendBody(new FileInputStream(file));
+
+ iFile.delete(true, new NullProgressMonitor());
+ } else if (render instanceof Renderer) {
+ sendAsHTML(artifact, false, httpResponse);
+ }
+ }
+
+ private Artifact getLatestArtifactForBranch(String guid, String branchId, String branchName) throws SQLException {
+ BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ final Branch branch;
+ if (Strings.isValid(branchId)) {
+ branch = branchManager.getBranch(Integer.parseInt(branchId));
+ } else {
+ branch = branchManager.getBranch(branchName);
+ }
+ return ArtifactPersistenceManager.getInstance().getArtifact(guid, branch);
+ }
+
+ private Artifact getArtifactBasedOnTransactionNumber(String guid, int transactioNumber) throws Exception {
+ TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+ TransactionId transactionId = null;
+ try {
+ transactionId = transactionIdManager.getPossiblyEditableTransactionIfFromCache(transactioNumber);
+ } catch (Exception ex) {
+ try {
+ Thread.sleep(1000);
+ } catch (Exception ex1) {
+ }
+ transactionId = transactionIdManager.getPossiblyEditableTransactionId(transactioNumber);
+ }
+ return ArtifactPersistenceManager.getInstance().getArtifact(guid, transactionId);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactTreeRequest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactTreeRequest.java
new file mode 100644
index 00000000000..2d52227973c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/ArtifactTreeRequest.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.httpRequests;
+
+import java.sql.SQLException;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.linking.HttpRequest;
+import org.eclipse.osee.framework.skynet.core.linking.HttpResponse;
+import org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import com.sun.org.apache.xml.internal.serialize.OutputFormat;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class ArtifactTreeRequest implements IHttpServerRequest {
+
+ private static final String BRANCH_KEY = "branchId";
+ private static final String FROM_KEY = "guid";
+ private static final String LEVELS_KEY = "levels";
+ private static final ArtifactTreeRequest instance = new ArtifactTreeRequest();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactTreeRequest.class);
+
+ private ArtifactTreeRequest() {
+ }
+
+ public static ArtifactTreeRequest getInstance() {
+ return instance;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#getRequestType()
+ */
+ public String getRequestType() {
+ return "GET.ARTIFACT.TREE";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#processRequest(org.eclipse.osee.framework.skynet.core.linking.HttpRequest, org.eclipse.osee.framework.skynet.core.linking.HttpResponse)
+ */
+ public void processRequest(HttpRequest httpRequest, HttpResponse httpResponse) {
+ String branchKey = httpRequest.getParameter(BRANCH_KEY);
+ String guidLevel = httpRequest.getParameter(FROM_KEY);
+ String levelKey = httpRequest.getParameter(LEVELS_KEY);
+
+ try {
+ Branch branch = BranchPersistenceManager.getInstance().getBranch(Integer.parseInt(branchKey));
+
+ Artifact artifact = null;
+ if (Strings.isValid(guidLevel)) {
+ artifact = ArtifactPersistenceManager.getInstance().getArtifact(guidLevel, branch);
+ } else {
+ artifact = ArtifactPersistenceManager.getInstance().getDefaultHierarchyRootArtifact(branch);
+ }
+
+ Document doc = Jaxp.newDocument();
+ Element root = Jaxp.createElement(doc, "artifact.tree", "");
+ doc.appendChild(root);
+
+ if (Strings.isValid(guidLevel)) {
+ root.setAttribute("guid", guidLevel);
+ }
+
+ if (artifact != null) {
+ int level = 0;
+ try {
+ level = Integer.parseInt(levelKey);
+ } catch (NumberFormatException ex) {
+ level = 1;
+ }
+ buildArtifactTree(doc, root, artifact, level);
+ }
+ doc.setXmlStandalone(true);
+ httpResponse.getPrintStream().println(Jaxp.xmlToString(doc, new OutputFormat(doc, "UTF-8", true)));
+ } catch (Exception ex) {
+ httpResponse.outputStandardError(400, "Exception handling request");
+ }
+ }
+
+ private void buildArtifactTree(Document doc, Element element, Artifact artifact, final int level) {
+ if (level > 0) {
+ Set<Artifact> children;
+ try {
+ children = artifact.getChildren();
+
+ for (Artifact child : children) {
+ Element childElement = createArtifactElement(doc, child, level);
+ element.appendChild(childElement);
+ buildArtifactTree(doc, childElement, child, level - 1);
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, "Error sending error string", ex);
+ }
+ }
+ }
+
+ private Element createArtifactElement(Document doc, Artifact artifact, int level) {
+ Element newElement = Jaxp.createElement(doc, "artifact", "");
+ newElement.setAttribute("name", artifact.getDescriptiveName());
+ newElement.setAttribute("guid", artifact.getGuid());
+ if (level <= 1) {
+ try {
+ newElement.setAttribute("hasChildren", Boolean.toString(artifact.getChildren().size() > 0));
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Error sending error string", ex);
+ }
+ }
+ return newElement;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/BranchRequest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/BranchRequest.java
new file mode 100644
index 00000000000..4c6707d6119
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/BranchRequest.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.httpRequests;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.linking.HttpRequest;
+import org.eclipse.osee.framework.skynet.core.linking.HttpResponse;
+import org.eclipse.osee.framework.skynet.core.linking.HttpServer;
+import org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import com.sun.org.apache.xml.internal.serialize.OutputFormat;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class BranchRequest implements IHttpServerRequest {
+
+ private static final BranchRequest instance = new BranchRequest();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchRequest.class);
+
+ private BranchRequest() {
+ }
+
+ public static BranchRequest getInstance() {
+ return instance;
+ }
+
+ public String getUrl(Artifact artifact) {
+ Map<String, String> keyValues = new HashMap<String, String>();
+ return HttpServer.getUrl(this, keyValues);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#getRequestType()
+ */
+ public String getRequestType() {
+ return "GET.BRANCHES";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#processRequest(org.eclipse.osee.framework.skynet.core.linking.HttpRequest,
+ * org.eclipse.osee.framework.skynet.core.linking.HttpResponse)
+ */
+ public void processRequest(HttpRequest httpRequest, HttpResponse httpResponse) {
+ try {
+ BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ List<Branch> branches = branchManager.getBranches();
+
+ Document doc = Jaxp.newDocument();
+ Element root = Jaxp.createElement(doc, "skynet.branches", "");
+ doc.appendChild(root);
+ for (Branch branch : branches) {
+ root.appendChild(createBranchElement(doc, branch));
+ }
+ doc.setXmlStandalone(true);
+ httpResponse.getPrintStream().println(Jaxp.xmlToString(doc, new OutputFormat(doc, "UTF-8", true)));
+ } catch (Exception ex) {
+ httpResponse.outputStandardError(400, "Exception handling request");
+ }
+ }
+
+ private Element createBranchElement(Document doc, Branch branch) {
+ Element branchEl = Jaxp.createElement(doc, "branch", "");
+ try {
+ branchEl.setAttribute("name", branch.getBranchName());
+ branchEl.setAttribute("id", Integer.toString(branch.getBranchId()));
+ // branchEl.setAttribute("comment", "");
+ // branchEl.setAttribute("author",
+ // SkynetAuthentication.getInstance().getUserByArtId(branch.getAuthorId()).getName());
+ // branchEl.setAttribute("creationDate", "");
+
+ Collection<Branch> branches = branch.getChildBranches();
+ if (branches.size() != 0) {
+ for (Branch childBranch : branches) {
+ branchEl.appendChild(createBranchElement(doc, childBranch));
+ }
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, "Error obtaining branch information.", ex);
+ }
+ return branchEl;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/HttpImageRequest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/HttpImageRequest.java
new file mode 100644
index 00000000000..3cb18d33d5d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/httpRequests/HttpImageRequest.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.httpRequests;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import org.eclipse.osee.framework.skynet.core.linking.HttpRequest;
+import org.eclipse.osee.framework.skynet.core.linking.HttpResponse;
+import org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest;
+import org.eclipse.osee.framework.ui.skynet.artifact.snapshot.ArtifactSnapshotManager;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class HttpImageRequest implements IHttpServerRequest {
+ private static HttpImageRequest instance = null;
+
+ private static final String IMAGE_KEY = "image";
+ private static final String NAMESPACE_KEY = "namespace";
+ private static final String KEY_KEY = "key";
+ private static final String REQUEST_TYPE = "HTTP.IMAGE";
+
+ private HttpImageRequest() {
+ }
+
+ public static HttpImageRequest getInstance() {
+ if (instance == null) {
+ instance = new HttpImageRequest();
+ }
+ return instance;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#getRequestType()
+ */
+ public String getRequestType() {
+ return REQUEST_TYPE;
+ }
+
+ public String getRequestUrl(String namespace, String key, String imageKey) throws UnsupportedEncodingException {
+ StringBuffer toReturn = new StringBuffer(REQUEST_TYPE + "?");
+ toReturn.append(NAMESPACE_KEY);
+ toReturn.append("=");
+ toReturn.append(URLEncoder.encode(namespace, "UTF-8"));
+ toReturn.append("&");
+ toReturn.append(KEY_KEY);
+ toReturn.append("=");
+ toReturn.append(URLEncoder.encode(key, "UTF-8"));
+ toReturn.append("&");
+ toReturn.append(IMAGE_KEY);
+ toReturn.append("=");
+ toReturn.append(URLEncoder.encode(imageKey, "UTF-8"));
+ return toReturn.toString();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.linking.IHttpServerRequest#processRequest(java.io.DataOutputStream,
+ * java.util.Map, java.lang.String)
+ */
+ public void processRequest(HttpRequest httpRequest, HttpResponse httpResponse) {
+ String imageKey = httpRequest.getParameter(IMAGE_KEY);
+ String namespace = httpRequest.getParameter(NAMESPACE_KEY);
+ String key = httpRequest.getParameter(KEY_KEY);
+ try {
+ ArtifactSnapshotManager.getInstance().getImageSnapshot(namespace, key, imageKey,
+ httpResponse.getOutputStream());
+ } catch (Exception ex) {
+ httpResponse.outputStandardError(404, String.format("Error with image [%s::%s]. %s", namespace, key, imageKey,
+ ex.toString()));
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactDiffMenu.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactDiffMenu.java
new file mode 100644
index 00000000000..f000e5a1d33
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactDiffMenu.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ArtifactDiffMenu {
+
+ public enum DiffTypes {
+ CONFLICT, PARENT
+ }
+
+ private static final RendererManager rendererManager = RendererManager.getInstance();
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+
+ private static final String DIFF_ARTIFACT = "DIFF_ARTIFACT";
+ private static boolean validSelection;
+ private static Object firstSelection;
+ private static Object secondSelection;
+
+ public static void createDiffMenuItem(Menu parentMenu, final Viewer viewer, String subMenuText, final DiffTypes diffType) {
+ final MenuItem diffMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ diffMenuItem.setText(subMenuText);
+
+ final Menu submenu = new Menu(diffMenuItem);
+ diffMenuItem.setMenu(submenu);
+
+ final MenuItem stdDiffMenuItem = new MenuItem(submenu, SWT.PUSH);
+ stdDiffMenuItem.setText("Standard Diff");
+
+ stdDiffMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent ev) {
+ try {
+ processSelectedArtifacts(null, viewer, diffType);
+ } catch (Exception ex) {
+ }
+ }
+ });
+
+ final MenuItem diffArtifactMenuItem = new MenuItem(submenu, SWT.PUSH);
+ diffArtifactMenuItem.setText("Diff Artifact");
+
+ diffArtifactMenuItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent ev) {
+ try {
+ processSelectedArtifacts(DIFF_ARTIFACT, viewer, diffType);
+ } catch (Exception ex) {
+ }
+ }
+ });
+
+ parentMenu.addMenuListener(new MenuListener() {
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ validSelection = false;
+
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+
+ if (!selection.isEmpty()) {
+ if (selection.size() == 2) {
+ validSelection = validateTransactionData(viewer, selection);
+ }
+ }
+ diffMenuItem.setEnabled(validSelection);
+ }
+ });
+ }
+
+ private static boolean validateTransactionData(Viewer viewer, IStructuredSelection selection) {
+ boolean valid = false;
+ Object[] selections = selection.toArray();
+
+ if (selections[1] instanceof TransactionData && selections[0] instanceof TransactionData) {
+ Artifact selectedArtifact = (Artifact) viewer.getInput();
+ valid = (selectedArtifact instanceof WordArtifact);
+ }
+ return valid;
+ }
+
+ private static void processSelectedArtifacts(String option, Viewer viewer, DiffTypes type) throws Exception {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ WordArtifact firstArtifact = null;
+ WordArtifact secondArtifact = null;
+
+ if (selection.size() == 2) {
+ Object[] selections = selection.toArray();
+ firstSelection = selections[1];
+ secondSelection = selections[0];
+
+ if (firstSelection instanceof TransactionData && secondSelection instanceof TransactionData) {
+ TransactionData firstTransactionData = (TransactionData) firstSelection;
+ TransactionData secondTransactionData = (TransactionData) secondSelection;
+
+ TransactionId firstTransactionId =
+ transactionIdManager.getPossiblyEditableTransactionIfFromCache(firstTransactionData.getTransactionNumber());
+ TransactionId secondTransactionId =
+ transactionIdManager.getPossiblyEditableTransactionIfFromCache(secondTransactionData.getTransactionNumber());
+ firstArtifact =
+ (WordArtifact) ArtifactPersistenceManager.getInstance().getArtifactFromId(
+ firstTransactionData.getAssociatedArtId(), firstTransactionId);
+ secondArtifact =
+ (WordArtifact) ArtifactPersistenceManager.getInstance().getArtifactFromId(
+ secondTransactionData.getAssociatedArtId(), secondTransactionId);
+ }
+ }
+ rendererManager.compareInJob(firstArtifact, secondArtifact, option);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactPreviewMenu.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactPreviewMenu.java
new file mode 100644
index 00000000000..5b727c22269
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactPreviewMenu.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.revision.ArtifactChange;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.swt.ITreeNode;
+import org.eclipse.osee.framework.ui.swt.TreeViewerUtility;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ArtifactPreviewMenu {
+
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+ private static final RendererManager rendererManager = RendererManager.getInstance();
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+
+ private static final String PREVIEW_WITH_RECURSE = "PREVIEW_WITH_RECURSE";
+ private static final String PREVIEW_ARTIFACT = "PREVIEW_ARTIFACT";
+
+ public static void createPreviewMenuItem(Menu parentMenu, final Viewer viewer) {
+ final MenuItem previewMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ previewMenuItem.setText("&Preview");
+
+ final Menu submenu = new Menu(previewMenuItem);
+ previewMenuItem.setMenu(submenu);
+
+ final MenuItem previewArtifact = new MenuItem(submenu, SWT.PUSH);
+ previewArtifact.setText("Preview Artifact");
+
+ previewArtifact.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent ev) {
+ rendererManager.previewInJob(getSelectedArtifacts(viewer), PREVIEW_ARTIFACT);
+ }
+ });
+
+ final MenuItem previewWithChildRecursionItem = new MenuItem(submenu, SWT.PUSH);
+ previewWithChildRecursionItem.setText("Preview with child recursion");
+
+ previewWithChildRecursionItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent ev) {
+ rendererManager.previewInJob(getSelectedArtifacts(viewer), PREVIEW_WITH_RECURSE);
+ }
+ });
+
+ parentMenu.addMenuListener(new MenuListener() {
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ Iterator<?> iterator = selection.iterator();
+ boolean permitted = true;
+ Artifact artifact = null;
+
+ try {
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+
+ if (object instanceof Artifact) {
+ artifact = (Artifact) object;
+ } else if (object instanceof Match) {
+ artifact = (Artifact) ((Match) object).getElement();
+ } else if (object instanceof ITreeNode && ((ITreeNode) object).getBackingData() instanceof ArtifactChange) {
+ artifact = ((ArtifactChange) ((ITreeNode) object).getBackingData()).getArtifact();
+ } else if (object instanceof TransactionData) {
+ TransactionData firstTransactionData = (TransactionData) object;
+
+ TransactionId firstTransactionId =
+ transactionIdManager.getNonEditableTransactionId(firstTransactionData.getTransactionNumber());
+ artifact =
+ ArtifactPersistenceManager.getInstance().getArtifactFromId(
+ firstTransactionData.getAssociatedArtId(), firstTransactionId);
+ }
+
+ if (artifact != null) {
+ permitted &=
+ accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), artifact,
+ PermissionEnum.READ);
+ }
+
+ previewMenuItem.setEnabled(permitted);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(ArtifactPreviewMenu.class, ex, true);
+ previewMenuItem.setEnabled(false);
+ }
+ }
+
+ });
+ }
+
+ private static List<Artifact> getSelectedArtifacts(Viewer viewer) {
+ LinkedList<Artifact> selectedItems = new LinkedList<Artifact>();
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+
+ if (!selection.isEmpty()) {
+ // preOrder can only done for TreeViewers
+ if (viewer instanceof TreeViewer) {
+ Object firstElement = selection.getFirstElement();
+
+ try {
+ // This to support the changeReportView
+ if (firstElement instanceof ITreeNode && ((ITreeNode) firstElement).getBackingData() instanceof ArtifactChange) {
+ ArtifactChange artifactChange = (ArtifactChange) ((ITreeNode) firstElement).getBackingData();
+ selectedItems.add(artifactChange.getArtifact());
+ }
+ // Resource History
+ else if (firstElement instanceof TransactionData) {
+ TransactionData firstTransactionData = (TransactionData) firstElement;
+
+ TransactionId firstTransactionId =
+ transactionIdManager.getNonEditableTransactionId(firstTransactionData.getTransactionNumber());
+ selectedItems.add(ArtifactPersistenceManager.getInstance().getArtifactFromId(
+ firstTransactionData.getAssociatedArtId(), firstTransactionId));
+ } else {
+ TreeViewerUtility.getPreorderSelection((TreeViewer) viewer, selectedItems);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(ArtifactPreviewMenu.class, ex, true);
+ }
+ } else {
+ for (Object object : selection.toArray()) {
+ if (object instanceof Artifact) {
+ selectedItems.add((Artifact) object);
+ } else if (object instanceof Match) {
+ selectedItems.add((Artifact) ((Match) object).getElement());
+ }
+ }
+ }
+ }
+ return selectedItems;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTableViewerGlobalMenuHelper.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTableViewerGlobalMenuHelper.java
new file mode 100644
index 00000000000..730c7df9d09
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTableViewerGlobalMenuHelper.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu.GlobalMenuItem;
+import org.eclipse.search.ui.text.Match;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactTableViewerGlobalMenuHelper implements IGlobalMenuHelper {
+
+ private final org.eclipse.jface.viewers.TableViewer tableViewer;
+
+ public ArtifactTableViewerGlobalMenuHelper(TableViewer tableViewer) {
+ this.tableViewer = tableViewer;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper#getSelectedArtifacts()
+ */
+ public Collection<Artifact> getArtifacts() {
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ if (tableViewer == null || tableViewer.getTable().isDisposed()) return artifacts;
+ IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
+ Iterator<?> iterator = selection.iterator();
+ while (iterator.hasNext()) {
+ Object obj = iterator.next();
+ if (obj instanceof Artifact)
+ artifacts.add((Artifact) obj);
+ else if ((obj instanceof Match) && (((Match) obj).getElement() instanceof Artifact)) artifacts.add((Artifact) ((Match) obj).getElement());
+ }
+ return artifacts;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper#getValidMenuItems()
+ */
+ public Collection<GlobalMenuItem> getValidMenuItems() {
+ return GlobalMenuItem.ALL;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTreeViewerGlobalMenuHelper.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTreeViewerGlobalMenuHelper.java
new file mode 100644
index 00000000000..6dc4a18789f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/ArtifactTreeViewerGlobalMenuHelper.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu.GlobalMenuItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactTreeViewerGlobalMenuHelper implements IGlobalMenuHelper {
+
+ private final TreeViewer treeViewer;
+
+ public ArtifactTreeViewerGlobalMenuHelper(TreeViewer treeViewer) {
+ this.treeViewer = treeViewer;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper#getSelectedArtifacts()
+ */
+ public Collection<Artifact> getArtifacts() {
+ Set<Artifact> artifacts = new HashSet<Artifact>();
+ if (treeViewer == null || treeViewer.getTree().isDisposed()) return artifacts;
+ IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
+ Iterator<?> iterator = selection.iterator();
+ while (iterator.hasNext()) {
+ Object obj = iterator.next();
+ if (obj instanceof Artifact) artifacts.add((Artifact) obj);
+ }
+ return artifacts;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.menu.IGlobalMenuHelper#getValidMenuItems()
+ */
+ public Collection<GlobalMenuItem> getValidMenuItems() {
+ return GlobalMenuItem.ALL;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java
new file mode 100644
index 00000000000..bd9e23320e7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenu.java
@@ -0,0 +1,275 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetActivator;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.TagArtifactsJob;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Provided so all OSEE context menus (and programatic manipulations) can share the same menu items, dialogs,
+ * permissions checks and code.
+ *
+ * @author Donald G. Dunne
+ */
+public class GlobalMenu {
+
+ private final IGlobalMenuHelper globalMenuHelper;
+
+ private MenuItem deleteMenuItem;
+ private MenuItem purgeMenuItem;
+ private MenuItem tagMenuItem;
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(GlobalMenu.class);
+ public static enum GlobalMenuItem {
+ DeleteArtifacts, PurgeArtifacts, TagArtifacts;
+
+ public static List<GlobalMenuItem> ALL = Arrays.asList(GlobalMenuItem.values());
+ };
+ private ArrayList<GlobalMenuListener> listeners = new ArrayList<GlobalMenuListener>();
+
+ public GlobalMenu(Menu parentMenu, IGlobalMenuHelper globalMenuHelper) {
+ this.globalMenuHelper = globalMenuHelper;
+ if (parentMenu != null) {
+ parentMenu.addMenuListener(new EnablementMenuListener());
+ if (globalMenuHelper.getValidMenuItems().contains(GlobalMenuItem.DeleteArtifacts)) createDeleteMenuItem(parentMenu);
+ if (globalMenuHelper.getValidMenuItems().contains(GlobalMenuItem.PurgeArtifacts)) createPurgeMenuItem(parentMenu);
+ if (globalMenuHelper.getValidMenuItems().contains(GlobalMenuItem.TagArtifacts)) createTagMenuItem(parentMenu);
+ }
+ }
+
+ public GlobalMenu(IGlobalMenuHelper globalMenuHelper) {
+ this(null, globalMenuHelper);
+ }
+
+ public void addGlobalMenuListener(GlobalMenuListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removeGlobalMenuListener(GlobalMenuListener listener) {
+ listeners.remove(listener);
+ }
+
+ /**
+ * @author Donald G. Dunne
+ */
+ public class EnablementMenuListener implements MenuListener {
+
+ public void menuHidden(MenuEvent e) {
+ }
+
+ public void menuShown(MenuEvent e) {
+ GlobalMenuPermissions permiss = new GlobalMenuPermissions(globalMenuHelper);
+
+ if (deleteMenuItem != null) deleteMenuItem.setEnabled(permiss.isFullAccess());
+ if (purgeMenuItem != null) purgeMenuItem.setEnabled(permiss.isHasArtifacts() && OseeProperties.getInstance().isDeveloper());
+ if (tagMenuItem != null) tagMenuItem.setEnabled(permiss.isHasArtifacts() && permiss.isFullAccess());
+ }
+ }
+
+ private void createTagMenuItem(Menu parentMenu) {
+ tagMenuItem = new MenuItem(parentMenu, SWT.CASCADE);
+ tagMenuItem.setText("&Tag Artifact(s)");
+
+ tagMenuItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ tagArtifactsAction.run();
+ }
+ });
+ }
+
+ private Action tagArtifactsAction = new Action("&Tag Artifact(s)", Action.AS_PUSH_BUTTON) {
+ @Override
+ public void run() {
+ Jobs.startJob(new TagArtifactsJob(globalMenuHelper.getArtifacts()));
+ }
+ };
+
+ // Provided for addition to Menus
+ private void createDeleteMenuItem(Menu parentMenu) {
+ deleteMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ deleteMenuItem.setText(deleteArtifactAction.getText());
+ deleteMenuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ deleteArtifactAction.run();
+ };
+ });
+ }
+
+ private Action deleteArtifactAction = new Action("&Delete Artifact\tDelete", Action.AS_PUSH_BUTTON) {
+ @Override
+ public void run() {
+ try {
+ final Collection<Artifact> artifactsToBeDeleted = globalMenuHelper.getArtifacts();
+ MessageDialog dialog =
+ new MessageDialog(Display.getCurrent().getActiveShell(), "Confirm Artifact Deletion", null,
+ " Are you sure you want to delete this artifact and all of the default hierarchy children?",
+ MessageDialog.QUESTION, new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL}, 1);
+ if (dialog.open() == 0) {
+ try {
+ for (GlobalMenuListener listener : listeners) {
+ Result result = listener.actioning(GlobalMenuItem.DeleteArtifacts, artifactsToBeDeleted);
+ if (result.isFalse()) {
+ result.popup();
+ return;
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ ArtifactPersistenceManager.getInstance().deleteArtifact(
+ artifactsToBeDeleted.toArray(Artifact.EMPTY_ARRAY));
+ try {
+ for (GlobalMenuListener listener : listeners) {
+ listener.actioned(GlobalMenuItem.DeleteArtifacts, artifactsToBeDeleted);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ private Action purgeArtifactAction = new Action("&Purge Artifact(s)", Action.AS_PUSH_BUTTON) {
+ @Override
+ public void run() {
+ final Collection<Artifact> artifactsToBePurged = globalMenuHelper.getArtifacts();
+
+ if (MessageDialog.openConfirm(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ "Confirm Artifact Purge ",
+ " Are you sure you want to purge this artifact, all of " + "its children and all history associated with these artifacts from the database ?")) {
+ Job job = new Job("Purge artifact") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IStatus toReturn = Status.CANCEL_STATUS;
+
+ // Notify and confirm that menus should be actioned
+ try {
+ for (GlobalMenuListener listener : listeners) {
+ Result result = listener.actioning(GlobalMenuItem.PurgeArtifacts, artifactsToBePurged);
+ if (result.isFalse()) {
+ return new Status(Status.ERROR, SkynetActivator.PLUGIN_ID, Status.OK, result.getText(), null);
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ monitor.beginTask("Purge artifact", artifactsToBePurged.size());
+ final IProgressMonitor fMonitor = monitor;
+
+ AbstractSkynetTxTemplate purgeTx =
+ new AbstractSkynetTxTemplate(artifactsToBePurged.iterator().next().getBranch()) {
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (Artifact artifactToPurge : artifactsToBePurged) {
+ if (!artifactToPurge.isDeleted()) {
+ fMonitor.setTaskName("Purge: " + artifactToPurge.getDescriptiveName());
+ artifactToPurge.purge();
+ }
+ fMonitor.worked(1);
+ }
+ fMonitor.done();
+ }
+ };
+
+ // Perform the purge transaction
+ try {
+ purgeTx.execute();
+ toReturn = Status.OK_STATUS;
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ toReturn = new Status(Status.ERROR, SkynetActivator.PLUGIN_ID, -1, ex.getMessage(), ex);
+ } finally {
+ monitor.done();
+ }
+
+ // Notify Listeners that menu was actioned
+ try {
+ for (GlobalMenuListener listener : listeners) {
+ listener.actioned(GlobalMenuItem.PurgeArtifacts, artifactsToBePurged);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+
+ return toReturn;
+ }
+ };
+
+ Jobs.startJob(job);
+ }
+ }
+ };
+
+ private void createPurgeMenuItem(Menu parentMenu) {
+ purgeMenuItem = new MenuItem(parentMenu, SWT.PUSH);
+ purgeMenuItem.setText(purgeArtifactAction.getText());
+ purgeMenuItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ purgeArtifactAction.run();
+ };
+ });
+ }
+
+ /**
+ * This method is provided for programatic access to delete artifact. No permissions are checked. Preferred use is by
+ * adding item as menu item.
+ *
+ * @return the deleteArtifactAction
+ */
+ public Action getDeleteArtifactAction() {
+ return deleteArtifactAction;
+ }
+
+ /**
+ * @return the listeners
+ */
+ public ArrayList<GlobalMenuListener> getGlobalMenuListeners() {
+ return listeners;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuListener.java
new file mode 100644
index 00000000000..ac6c437d838
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.util.Collection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu.GlobalMenuItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface GlobalMenuListener {
+
+ /**
+ * Called prior to performing the menu event. May or may not be called in display thread.
+ *
+ * @param item
+ * @param artifacts
+ * @return Result.False if action should NOT be performed Result.getText will be displayed as a popup to the user
+ */
+ public Result actioning(GlobalMenuItem item, Collection<Artifact> artifacts);
+
+ /**
+ * Called after performing the menu event.
+ *
+ * @param item
+ * @param artifacts
+ */
+ public void actioned(GlobalMenuItem item, Collection<Artifact> artifacts);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuPermissions.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuPermissions.java
new file mode 100644
index 00000000000..31b53c1bebc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/GlobalMenuPermissions.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.util.Arrays;
+import java.util.Collection;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.access.AccessControlManager;
+import org.eclipse.osee.framework.skynet.core.access.PermissionEnum;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GlobalMenuPermissions {
+
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final AccessControlManager accessManager = AccessControlManager.getInstance();
+
+ private boolean isLocked;
+ private boolean accessToRemoveLock;
+ private boolean writePermission;
+ private boolean readPermission;
+ private boolean fullAccess;
+ private boolean defaultBranchReadable;
+ private String subjectFromLockedObjectName;
+ private boolean hasArtifacts;
+
+ /**
+ * Return permission set. This is a one-shot deal at the time of instantiation. Permissions are not kept up to date
+ * with changes to getSelectedArtifacts in given globalMenuHelper. Must be called again to get refreshed permissions.
+ *
+ * @param globalMenuHelper
+ */
+ public GlobalMenuPermissions(IGlobalMenuHelper globalMenuHelper) {
+ this(globalMenuHelper.getArtifacts());
+ }
+
+ /**
+ * Return permission set for given artifact.
+ *
+ * @param artifact
+ */
+ public GlobalMenuPermissions(Artifact artifact) {
+ this(Arrays.asList(new Artifact[] {artifact}));
+ }
+
+ /**
+ * Return permission set for given artifacts.
+ *
+ * @param artifacts
+ */
+ public GlobalMenuPermissions(Collection<Artifact> artifacts) {
+ hasArtifacts = artifacts.size() > 0;
+ writePermission = true;
+ readPermission = true;
+ fullAccess = true;
+ isLocked = false;
+ defaultBranchReadable = true;
+ accessToRemoveLock = true;
+ Artifact combinationSubject = null;
+
+ for (Artifact objectArtifact : artifacts) {
+
+ writePermission &=
+ accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), objectArtifact,
+ PermissionEnum.WRITE);
+ readPermission &=
+ accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), objectArtifact,
+ PermissionEnum.READ);
+ fullAccess &=
+ accessManager.checkObjectPermission(skynetAuth.getAuthenticatedUser(), objectArtifact,
+ PermissionEnum.FULLACCESS);
+ isLocked |= accessManager.hasLock(objectArtifact);
+ defaultBranchReadable =
+ accessManager.checkObjectPermission(branchManager.getDefaultBranch(), PermissionEnum.READ);
+ accessToRemoveLock &= accessManager.canUnlockObject(objectArtifact, skynetAuth.getAuthenticatedUser());
+
+ // acquire the name of the subject that has the lock
+ Artifact subject = accessManager.getSubjectFromLockedObject(objectArtifact);
+
+ if (isLocked && subject != null) {
+ if (combinationSubject == null) {
+ combinationSubject = subject;
+ subjectFromLockedObjectName = combinationSubject.getDescriptiveName();
+ } else if (!combinationSubject.equals(subject)) {
+ subjectFromLockedObjectName = "Mixed names";
+ }
+ }
+ }
+ }
+
+ /**
+ * @return the isLocked
+ */
+ public boolean isLocked() {
+ return isLocked;
+ }
+
+ /**
+ * @return the accessToRemoveLock
+ */
+ public boolean isAccessToRemoveLock() {
+ return accessToRemoveLock;
+ }
+
+ /**
+ * @return the writePermission
+ */
+ public boolean isWritePermission() {
+ return writePermission;
+ }
+
+ /**
+ * @return the readPermission
+ */
+ public boolean isReadPermission() {
+ return readPermission;
+ }
+
+ /**
+ * @return the fullAccess
+ */
+ public boolean isFullAccess() {
+ return fullAccess;
+ }
+
+ /**
+ * @return the subjectFromLockedObjectName
+ */
+ public String getSubjectFromLockedObjectName() {
+ return subjectFromLockedObjectName;
+ }
+
+ /**
+ * @return the branchReadable
+ */
+ public boolean isDefaultBranchReadable() {
+ return defaultBranchReadable;
+ }
+
+ /**
+ * @return the hasArtifacts
+ */
+ public boolean isHasArtifacts() {
+ return hasArtifacts;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/IGlobalMenuHelper.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/IGlobalMenuHelper.java
new file mode 100644
index 00000000000..aa6481f28e6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/menu/IGlobalMenuHelper.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.menu;
+
+import java.util.Collection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.menu.GlobalMenu.GlobalMenuItem;
+
+/**
+ * Method is provided so different widget types can provide the artifacts for the GobalMenu to operate on.
+ *
+ * @author Donald G. Dunne
+ */
+public interface IGlobalMenuHelper {
+
+ public Collection<Artifact> getArtifacts();
+
+ public Collection<GlobalMenuItem> getValidMenuItems();
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogContentProvider.java
new file mode 100644
index 00000000000..543d954e477
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogContentProvider.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.queryLog;
+
+import java.util.LinkedList;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.ui.plugin.util.db.QueryLog;
+import org.eclipse.osee.framework.ui.plugin.util.db.QueryRecord;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class QueryLogContentProvider implements ITreeContentProvider {
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof QueryLog) {
+ return ((QueryLog) parentElement).getRecords().toArray();
+ } else if (parentElement instanceof QueryRecord) {
+ QueryRecord record = (QueryRecord) parentElement;
+
+ LinkedList<Object> children = new LinkedList<Object>();
+ if (record.getSqlException() != null) {
+ children.add(record.getSqlException());
+ }
+ for (String image : record.getBindVariableImages()) {
+ children.add(image);
+ }
+ return children.toArray();
+ } else if (parentElement instanceof Exception) {
+ return ((Exception) parentElement).getStackTrace();
+ }
+ return null;
+ }
+
+ // Only needed to support the reveal() method, not implementing yet
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ if (element instanceof QueryLog) {
+ return ((QueryLog) element).getRecords().size() > 0;
+ } else if (element instanceof QueryRecord) {
+ QueryRecord record = (QueryRecord) element;
+ return !record.getBindVariableImages().isEmpty() || record.getSqlException() != null;
+ } else if (element instanceof Exception) {
+ return ((Exception) element).getStackTrace().length > 0;
+ }
+ return false;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof QueryLog) {
+ return getChildren(inputElement);
+ }
+ throw new IllegalArgumentException("Expect a " + QueryLog.class.getCanonicalName() + " object");
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogLabelProvider.java
new file mode 100644
index 00000000000..30e9e5b7bcc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogLabelProvider.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.queryLog;
+
+import static org.eclipse.osee.framework.ui.skynet.queryLog.QueryLogView.DURATION;
+import static org.eclipse.osee.framework.ui.skynet.queryLog.QueryLogView.ITEM;
+import static org.eclipse.osee.framework.ui.skynet.queryLog.QueryLogView.TIME;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.osee.framework.ui.plugin.util.db.QueryRecord;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerLabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class QueryLogLabelProvider extends XViewerLabelProvider {
+ private static final DateFormat TIME_FORMAT = new SimpleDateFormat("hh:mm:ss.SSS a");
+ private final ISharedImages sharedImages;
+
+ /**
+ * @param viewer
+ */
+ public QueryLogLabelProvider(XViewer viewer) {
+ super(viewer);
+ sharedImages = PlatformUI.getWorkbench().getSharedImages();
+ }
+
+ protected Image getColumnImage(Object element, XViewerColumn column) {
+
+ if (element instanceof QueryRecord && column.getColumnNum() == 0) {
+ if (((QueryRecord) element).getSqlException() != null) {
+ return sharedImages.getImage(ISharedImages.IMG_OBJS_WARN_TSK);
+ }
+ } else if (element instanceof Exception && column.getColumnNum() == 0) {
+ return sharedImages.getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
+ } else if (element instanceof String && column.getColumnNum() == 0) {
+ return sharedImages.getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ }
+ return null;
+ }
+
+ protected String getColumnText(Object element, XViewerColumn column) {
+ String columnName = column.getDisplayName();
+
+ if (element instanceof QueryRecord) {
+ QueryRecord record = (QueryRecord) element;
+
+ if (columnName.equals(ITEM)) {
+ return record.getSql();
+ } else if (columnName.equals(TIME)) {
+ return TIME_FORMAT.format(record.getDate());
+ } else if (columnName.equals(DURATION)) {
+ if (record.getRunDurationMs() != null) {
+ return record.getRunDurationMs().toString();
+ }
+ }
+ } else if (columnName.equals(ITEM)) {
+ return element.toString();
+ }
+ return null;
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogView.java
new file mode 100644
index 00000000000..1486780c156
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogView.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.queryLog;
+
+import java.util.Iterator;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.ui.plugin.util.SelectionCountChangeListener;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.QueryLog;
+import org.eclipse.osee.framework.ui.plugin.util.db.QueryRecord;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class QueryLogView extends ViewPart implements IActionable {
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.QueryLogView";
+ public static final String ITEM = "Item";
+ public static final String TIME = "Time";
+ public static final String DURATION = "Run ms";
+
+ private XViewer viewer;
+ private Clipboard clipboard;
+
+ @Override
+ public void createPartControl(Composite parent) {
+
+ try {
+ ConnectionHandler.getConnection();
+ } catch (Exception ex) {
+ (new Label(parent, SWT.NONE)).setText(" DB Connection Unavailable");
+ return;
+ }
+
+ clipboard = new Clipboard(null);
+
+ parent.setLayout(new GridLayout(1, false));
+ parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ viewer =
+ new XViewer(parent, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION,
+ "org.eclipse.osee.framework.ui.skynet.QueryLogView", new QueryLogXViewerFactory());
+ viewer.setContentProvider(new QueryLogContentProvider());
+ viewer.setLabelProvider(new QueryLogLabelProvider(viewer));
+ viewer.setInput(QueryLog.getInstance());
+ viewer.addSelectionChangedListener(new SelectionCountChangeListener(getViewSite()));
+
+ Tree tree = viewer.getTree();
+ GridData gridData = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL | GridData.GRAB_HORIZONTAL);
+ tree.setLayoutData(gridData);
+ tree.setHeaderVisible(true);
+ tree.setLinesVisible(true);
+ tree.addKeyListener(new KeySelectedListener());
+
+ createActions();
+ setHelpContexts();
+ }
+
+ private void createActions() {
+
+ Action refreshAction = new Action("Refresh") {
+
+ public void run() {
+ viewer.refresh();
+ }
+ };
+ refreshAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("refresh.gif"));
+ refreshAction.setToolTipText("Refresh");
+
+ Action clearLogAction = new Action("Delete Log") {
+
+ public void run() {
+ ((QueryLog) viewer.getInput()).clear();
+ viewer.refresh();
+ }
+ };
+ clearLogAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("delete_edit.gif"));
+ clearLogAction.setToolTipText("Delete Log");
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(refreshAction);
+ toolbarManager.add(clearLogAction);
+ viewer.addCustomizeToViewToolbar(this);
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Query Log");
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(viewer.getControl(), "query_log_table");
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ private void performCopy() {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ if (selection.isEmpty()) {
+ return;
+ }
+ Object selected = selection.getFirstElement();
+
+ String text = null;
+
+ if (selected instanceof QueryRecord) {
+ text = ((QueryRecord) selected).getSql();
+ } else if (selected instanceof String) {
+ text = ((String) selected).replaceAll(".*:", "");
+ } else if (selected instanceof Exception) {
+ text = Lib.exceptionToString((Exception) selected);
+ } else {
+ text = selected.toString();
+ }
+ clipboard.setContents(new Object[] {text}, new Transfer[] {TextTransfer.getInstance()});
+ }
+
+ private class KeySelectedListener implements KeyListener {
+ public void keyPressed(KeyEvent e) {
+ if (e.keyCode == 'a' && e.stateMask == SWT.CONTROL) {
+ viewer.getTree().selectAll();
+ } else if (e.keyCode == 'x' && e.stateMask == SWT.CONTROL) {
+ expandAll((IStructuredSelection) viewer.getSelection());
+ } else if (e.keyCode == 'c' && e.stateMask == SWT.CONTROL) {
+ performCopy();
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+ }
+
+ private void expandAll(IStructuredSelection selection) {
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ viewer.expandToLevel(iter.next(), TreeViewer.ALL_LEVELS);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogXViewerFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogXViewerFactory.java
new file mode 100644
index 00000000000..36ab6064446
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/queryLog/QueryLogXViewerFactory.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.queryLog;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn.SortDataType;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewerFactory;
+import org.eclipse.swt.SWT;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class QueryLogXViewerFactory extends SkynetXViewerFactory {
+
+ public QueryLogXViewerFactory() {
+ }
+
+ public XViewerSorter createNewXSorter(XViewer xViewer) {
+ return new XViewerSorter(xViewer);
+ }
+
+ public CustomizeData getDefaultTableCustomizeData() {
+ CustomizeData custData = new CustomizeData();
+ List<XViewerColumn> defaultColumns = new ArrayList<XViewerColumn>();
+ defaultColumns.add(new XViewerColumn(QueryLogView.ITEM, 400, 400, SWT.LEFT, true, SortDataType.String, 0));
+ defaultColumns.add(new XViewerColumn(QueryLogView.TIME, 100, 100, SWT.CENTER, true, SortDataType.String, 1));
+ defaultColumns.add(new XViewerColumn(QueryLogView.DURATION, 100, 100, SWT.CENTER, true, SortDataType.Float, 2));
+ custData.getColumnData().setColumns(defaultColumns);
+ return custData;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#getDefaultXViewerColumn()
+ */
+ public XViewerColumn getDefaultXViewerColumn(String name) {
+ for (XViewerColumn xCol : getDefaultTableCustomizeData().getColumnData().getColumns()) {
+ if (xCol.getSystemName().equals(name)) {
+ return xCol;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModel.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModel.java
new file mode 100644
index 00000000000..9e8c9fcc5a6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModel.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+
+public class ArtifactModel {
+
+ private boolean add;
+ private boolean artifactFound;
+ private Artifact artifact;
+ private String name;
+ private ArtifactSubtypeDescriptor descriptor;
+ private String rationale;
+
+ public ArtifactModel(String name, ArtifactSubtypeDescriptor descriptor) {
+ this(false, null, name, descriptor, "");
+ }
+
+ public ArtifactModel(Artifact artifact) {
+ this(true, artifact, artifact.getDescriptiveName(), artifact.getDescriptor(), "");
+ }
+
+ private ArtifactModel(boolean artifactFound, Artifact artifact, String name, ArtifactSubtypeDescriptor descriptor, String rationale) {
+ this.add = true;
+ this.artifactFound = artifactFound;
+ this.artifact = artifact;
+ this.name = name;
+ this.descriptor = descriptor;
+ this.rationale = rationale;
+ }
+
+ /**
+ * @return Returns the artifact.
+ */
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ /**
+ * @return Returns the add.
+ */
+ public boolean isAdd() {
+ return add;
+ }
+
+ /**
+ * @param add The add to set.
+ */
+ public void setAdd(boolean add) {
+ this.add = add;
+ }
+
+ /**
+ * @return Returns the artifact.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name - The name to set.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return Returns the descriptor.
+ */
+ public ArtifactSubtypeDescriptor getDescriptor() {
+ return descriptor;
+ }
+
+ /**
+ * @param descriptor The descriptor to set.
+ */
+ public void setDescriptor(ArtifactSubtypeDescriptor descriptor) {
+ this.descriptor = descriptor;
+ }
+
+ /**
+ * @return Returns the rationale.
+ */
+ public String getRationale() {
+ return rationale;
+ }
+
+ /**
+ * @param rationale The rationale to set.
+ */
+ public void setRationale(String rationale) {
+ this.rationale = rationale;
+ }
+
+ /**
+ * @return Returns the artifactFound.
+ */
+ public boolean isArtifactFound() {
+ return artifactFound;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelLabelProvider.java
new file mode 100644
index 00000000000..6200b285dda
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelLabelProvider.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.graphics.Image;
+
+public class ArtifactModelLabelProvider implements ITableLabelProvider {
+
+ public static final OseeUiActivator plugin = SkynetGuiPlugin.getInstance();
+ private static Image checkedImage = plugin.getImage("chkbox_enabled.gif");
+ private static Image uncheckedImage = plugin.getImage("chkbox_disabled.gif");
+
+ public ArtifactModelLabelProvider() {
+ super();
+ };
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ String result = "";
+ ArtifactModel model = (ArtifactModel) element;
+
+ switch (columnIndex) {
+ case RelationTableViewer.ADD_NUM:
+ // This only has an image
+ break;
+ case RelationTableViewer.ARTIFACT_NAME_NUM:
+ result = model.getName();
+ break;
+ case RelationTableViewer.ARTIFACT_TYPE_NUM:
+ result = model.getDescriptor().getName();
+ break;
+ case RelationTableViewer.RATIONALE_NUM:
+ result = model.getRationale();
+ break;
+ default:
+ break;
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ Image result = null;
+ ArtifactModel model = (ArtifactModel) element;
+
+ switch (columnIndex) {
+ case RelationTableViewer.ADD_NUM:
+ if (model.isAdd())
+ result = checkedImage;
+ else
+ result = uncheckedImage;
+ }
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelList.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelList.java
new file mode 100644
index 00000000000..1b56e68e039
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/ArtifactModelList.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class ArtifactModelList {
+
+ private ArrayList<ArtifactModel> artifacts = new ArrayList<ArtifactModel>();
+ private Set<IArtifactListViewer> changeListeners = new HashSet<IArtifactListViewer>();
+
+ /**
+ * Constructor
+ */
+ public ArtifactModelList() {
+ super();
+ artifacts = new ArrayList<ArtifactModel>();
+ changeListeners = new HashSet<IArtifactListViewer>();
+ }
+
+ /**
+ * Return the collection of ItemTask
+ */
+ public ArrayList<ArtifactModel> getArtifacts() {
+ return artifacts;
+ }
+
+ /**
+ * Add a new task to the collection of tasks
+ */
+ public void addArtifact(ArtifactModel artifact, boolean top) {
+ if (top)
+ artifacts.add(0, artifact);
+ else
+ artifacts.add(artifacts.size(), artifact);
+ Iterator<IArtifactListViewer> iterator = changeListeners.iterator();
+ while (iterator.hasNext())
+ iterator.next().addArtifact(artifact);
+ }
+
+ /**
+ * @param artifact -
+ */
+ public void removeArtifact(ArtifactModel artifact) {
+ artifacts.remove(artifact);
+ Iterator<IArtifactListViewer> iterator = changeListeners.iterator();
+ while (iterator.hasNext())
+ iterator.next().removeArtifact(artifact);
+ }
+
+ public String toString() {
+ String str = "";
+ for (int i = 0; i < artifacts.size(); i++) {
+ String name = artifacts.get(i).getName();
+ str += "\nTask " + name;
+ }
+ return str + "\n\n";
+ }
+
+ /**
+ * @param artifact -
+ */
+ public void artifactChanged(ArtifactModel artifact) {
+ Iterator<IArtifactListViewer> iterator = changeListeners.iterator();
+ while (iterator.hasNext())
+ iterator.next().updateArtifact(artifact);
+ }
+
+ /**
+ * @param viewer
+ */
+ public void removeChangeListener(IArtifactListViewer viewer) {
+ changeListeners.remove(viewer);
+ }
+
+ /**
+ * @param viewer
+ */
+ public void addChangeListener(IArtifactListViewer viewer) {
+ changeListeners.add(viewer);
+ }
+
+ public ArrayList<ArtifactModel> getArtifactModel() {
+ return artifacts;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/IArtifactListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/IArtifactListViewer.java
new file mode 100644
index 00000000000..d4da7414be7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/IArtifactListViewer.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+public interface IArtifactListViewer {
+
+ /**
+ * Update the view to reflect the fact that a ArtifactModel was added to the ArtifactModel list
+ *
+ * @param artifact -
+ */
+ public void addArtifact(ArtifactModel artifact);
+
+ /**
+ * Update the view to reflect the fact that a ArtifactModel was removed from the ArtifactModel list
+ *
+ * @param artifact -
+ */
+ public void removeArtifact(ArtifactModel artifact);
+
+ /**
+ * Update the view to reflect the fact that one of the ArtifactModels was modified
+ *
+ * @param artifact -
+ */
+ public void updateArtifact(ArtifactModel artifact);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/OnCloseListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/OnCloseListener.java
new file mode 100644
index 00000000000..e83abb9451c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/OnCloseListener.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+public interface OnCloseListener {
+
+ public void onClose(boolean cancelled);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationExplorerWindow.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationExplorerWindow.java
new file mode 100644
index 00000000000..3e1574a305e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationExplorerWindow.java
@@ -0,0 +1,374 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceURL;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public class RelationExplorerWindow {
+
+ private RelationTableViewer relationTableViewer;
+ private RelationLinkGroup relationGroup;
+ private boolean persistOnOk;
+ private boolean cancelled = false;
+
+ // Private arrays for valid drops
+ private ArrayList<Artifact> validArtifacts;
+ private ArrayList<String> urls;
+ private ArrayList<String> names;
+
+ // Private arrays for invalid drops
+ private ArrayList<String> invalidName;
+ private ArrayList<String> invalidReason;
+ private ArrayList<Artifact> invalidArtifacts;
+
+ private boolean needWindow;
+
+ private Shell shell;
+
+ private ArtifactSubtypeDescriptor descriptor = null;
+
+ private StructuredViewer viewer;
+ private OnCloseListener onCloseListener;
+
+ public static final int ADD_NUM = 0;
+ public static final int ARTIFACT_NAME_NUM = 1;
+ public static final int ARTIFACT_TYPE_NUM = 2;
+ public static final int RATIONALE_NUM = 3;
+
+ public static final int NAME_NUM = 0;
+ public static final int REASON_NUM = 1;
+
+ public RelationExplorerWindow(StructuredViewer viewer, RelationLinkGroup group, boolean persistOnOk) {
+ this.validArtifacts = new ArrayList<Artifact>();
+ this.invalidArtifacts = new ArrayList<Artifact>();
+
+ this.urls = new ArrayList<String>();
+ this.names = new ArrayList<String>();
+
+ this.invalidName = new ArrayList<String>();
+ this.invalidReason = new ArrayList<String>();
+
+ this.viewer = viewer;
+ this.relationGroup = group;
+ this.persistOnOk = persistOnOk;
+ this.needWindow = false;
+
+ }
+
+ public RelationExplorerWindow(StructuredViewer viewer, RelationLinkGroup group) {
+ this(viewer, group, false);
+ }
+
+ public void addValid(Artifact artifact, String url) {
+ this.validArtifacts.add(artifact);
+ this.urls.add(url);
+
+ if (artifact == null) needWindow = true;
+
+ IFile tempIFile = WorkspaceURL.getIFile(url);
+ if (tempIFile != null) {
+ String tempName = new String(tempIFile.getName());
+ names.add(tempName.substring(0, tempName.length() - (tempIFile.getFileExtension().length() + 1)));
+ } else {
+ File file = new File(url);
+ names.add(file.getName());
+ }
+ }
+
+ public void addValid(Artifact artifact) {
+ this.validArtifacts.add(artifact);
+ this.names.add(artifact.getDescriptiveName());
+ if (artifact == null) needWindow = true;
+ }
+
+ public void addInvalid(String name, String reason) {
+ invalidName.add(name);
+ invalidReason.add(reason);
+ needWindow = true;
+ }
+
+ public void createArtifactInformationBox(OnCloseListener onCloseListener) {
+ this.onCloseListener = onCloseListener;
+
+ drawWindow();
+ }
+
+ private void drawWindow() {
+ shell = new Shell(SWT.ON_TOP | SWT.APPLICATION_MODAL | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE);
+
+ // Setup Title
+ shell.setText("Artifact Information");
+
+ // Setup Icon
+ Image image = SkynetGuiPlugin.getInstance().getImage("laser_16_16.gif");
+ shell.setImage(image);
+
+ // Setup Form Layout
+ FormLayout layout = new FormLayout();
+ layout.marginHeight = 5;
+ layout.marginWidth = 5;
+ shell.setLayout(layout);
+
+ SashForm sashForm = new SashForm(shell, SWT.VERTICAL);
+
+ // Create valid artifact fields
+ FormLayout validLayout = new FormLayout();
+ validLayout.spacing = 5;
+
+ Composite validComposite = new Composite(sashForm, SWT.NONE);
+ validComposite.setLayout(validLayout);
+
+ Label validLabel = new Label(validComposite, SWT.LEFT);
+ validLabel.setText("Valid artifacts - will be added");
+
+ Table validTable =
+ new Table(validComposite,
+ SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
+ validTable.setLinesVisible(true);
+ validTable.setHeaderVisible(true);
+
+ // Create invalid artifacts fields
+ FormLayout invalidLayout = new FormLayout();
+ invalidLayout.spacing = 5;
+
+ Composite invalidComposite = new Composite(sashForm, SWT.NONE);
+ invalidComposite.setLayout(invalidLayout);
+
+ Label invalidLabel = new Label(invalidComposite, SWT.LEFT);
+ invalidLabel.setText("Invalid artifacts - will not be added");
+
+ Table invalidTable =
+ new Table(invalidComposite,
+ SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
+ invalidTable.setLinesVisible(true);
+ invalidTable.setHeaderVisible(true);
+
+ // Create the Buttons
+ Button okButton = new Button(invalidComposite, SWT.PUSH);
+ okButton.setText("OK");
+
+ Button cancelButton = new Button(invalidComposite, SWT.PUSH);
+ cancelButton.setText("Cancel");
+
+ // Attach validLabel to top-left corner
+ FormData data = new FormData();
+ data.top = new FormAttachment(0);
+ data.left = new FormAttachment(0);
+ validLabel.setLayoutData(data);
+
+ // Attach validTable to bottom of validLabel
+ data = new FormData();
+ data.top = new FormAttachment(validLabel);
+ data.bottom = new FormAttachment(100);
+ data.left = new FormAttachment(0);
+ data.right = new FormAttachment(100);
+ data.height = validTable.getItemHeight() * 10;
+ validTable.setLayoutData(data);
+
+ // Attach invalidLabel to top-left corner
+ data = new FormData();
+ data.top = new FormAttachment(0);
+ data.left = new FormAttachment(0);
+ invalidLabel.setLayoutData(data);
+
+ // Attach invalidTable to bottom of invalidLabel
+ data = new FormData();
+ data.top = new FormAttachment(invalidLabel);
+ data.bottom = new FormAttachment(okButton);
+ data.left = new FormAttachment(0);
+ data.right = new FormAttachment(100);
+ data.height = validTable.getItemHeight() * 10;
+ invalidTable.setLayoutData(data);
+
+ // Attach sashForm to top-left corner of shell
+ data = new FormData();
+ data.top = new FormAttachment(0);
+ data.bottom = new FormAttachment(100);
+ data.left = new FormAttachment(0);
+ data.right = new FormAttachment(100);
+ sashForm.setLayoutData(data);
+
+ // Attach buttons to bottom of sashForm
+ data = new FormData();
+ data.bottom = new FormAttachment(100);
+ data.right = new FormAttachment(100);
+ cancelButton.setLayoutData(data);
+
+ data = new FormData();
+ data.bottom = new FormAttachment(100);
+ data.right = new FormAttachment(cancelButton);
+ okButton.setLayoutData(data);
+
+ // Populate Tables
+ relationTableViewer = new RelationTableViewer(validTable, invalidTable);
+ for (int i = 0; i < validArtifacts.size(); i++)
+ relationTableViewer.addValidItem(names.get(i), validArtifacts.get(i));
+ for (int i = 0; i < invalidName.size(); i++)
+ relationTableViewer.addInvalidItem(invalidName.get(i), invalidReason.get(i));
+
+ // Add Listeners to buttons
+ okButton.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ okSelected();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ cancelButton.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ cancelSelected();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ // Add shell resize listener
+ shell.addControlListener(new ControlListener() {
+
+ public void controlMoved(ControlEvent e) {
+ }
+
+ public void controlResized(ControlEvent e) {
+ relationTableViewer.resizeTable(((Shell) e.widget).getClientArea().width);
+ shell.layout();
+ }
+ });
+
+ if (needWindow) {
+ shell.pack();
+ shell.open();
+ } else {
+ okSelected();
+ }
+ }
+
+ /**
+ * Create the TableViewer
+ */
+
+ private void okSelected() {
+ ArrayList<ArtifactModel> artifactList = relationTableViewer.getArtifactList().getArtifactModel();
+
+ for (int i = 0; i < artifactList.size(); i++) {
+ ArtifactModel model = artifactList.get(i);
+
+ if (model.isAdd()) {
+ Artifact artifact = model.getArtifact();
+ descriptor = model.getDescriptor();
+ if (artifact == null) {
+ if (descriptor != null) {
+ try {
+ artifact = descriptor.makeNewArtifact();
+ artifact.setAttribute("Name", model.getName());
+ artifact.setAttribute("Content URL", urls.get(names.indexOf(model.getName())));
+ artifact.persist();
+ } catch (SQLException ex) {
+ AWorkbench.popup("ERROR", ex.getLocalizedMessage());
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ } else
+ artifact = model.getArtifact();
+
+ if (artifact != null) {
+ relationGroup.addArtifact(artifact);
+
+ if (persistOnOk) {
+ try {
+ relationGroup.getLinkManager().persistLinks();
+ } catch (SQLException ex) {
+ AWorkbench.popup("ERROR", ex.getLocalizedMessage());
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+
+ }
+ }
+ }
+ }
+ shell.dispose();
+ viewer.refresh();
+
+ handleListener();
+
+ }
+
+ private void cancelSelected() {
+ cancelled = true;
+ shell.dispose();
+
+ handleListener();
+ }
+
+ private void handleListener() {
+ if (onCloseListener != null) onCloseListener.onClose(cancelled);
+ }
+
+ /**
+ * @return Returns the relationGroup.
+ */
+ public RelationLinkGroup getRelationGroup() {
+ return relationGroup;
+ }
+
+ /**
+ * @return Returns the cancelled.
+ */
+ public boolean isCancelled() {
+ return cancelled;
+ }
+
+ /**
+ * @return Returns the invalidArtifacts.
+ */
+ public ArrayList<Artifact> getInvalidArtifacts() {
+ return invalidArtifacts;
+ }
+
+ /**
+ * @param invalidArtifact The invalidArtifact to set.
+ */
+ public void addInvalidArtifact(Artifact invalidArtifact, String errorMessage) {
+ invalidArtifacts.add(invalidArtifact);
+ addInvalid(invalidArtifact.getDescriptiveName(), errorMessage);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableCellModifier.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableCellModifier.java
new file mode 100644
index 00000000000..f71d3c1e034
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableCellModifier.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.swt.widgets.TableItem;
+
+public class RelationTableCellModifier implements ICellModifier {
+ private RelationTableViewer relationTableViewer;
+
+ public RelationTableCellModifier(RelationTableViewer relationTableViewer) {
+ super();
+ this.relationTableViewer = relationTableViewer;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
+ */
+ public boolean canModify(Object element, String property) {
+ // Find the index of the column
+ int columnIndex = relationTableViewer.getColumnNames().indexOf(property);
+
+ ArtifactModel model = (ArtifactModel) element;
+ switch (columnIndex) {
+ case RelationTableViewer.ARTIFACT_NAME_NUM:
+ if (model.isArtifactFound()) return false;
+ break;
+ case RelationTableViewer.ARTIFACT_TYPE_NUM:
+ if (model.isArtifactFound()) return false;
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
+ */
+ public Object getValue(Object element, String property) {
+
+ // Find the index of the column
+ int columnIndex = relationTableViewer.getColumnNames().indexOf(property);
+
+ Object result = null;
+ ArtifactModel model = (ArtifactModel) element;
+
+ switch (columnIndex) {
+ case RelationTableViewer.ADD_NUM:
+ result = new Boolean(model.isAdd());
+ break;
+ case RelationTableViewer.ARTIFACT_NAME_NUM:
+ result = new String(model.getName());
+ break;
+ case RelationTableViewer.ARTIFACT_TYPE_NUM:
+ result = model.getDescriptor();
+ break;
+ case RelationTableViewer.RATIONALE_NUM:
+ result = new String(model.getRationale());
+ break;
+ default:
+ result = "";
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
+ */
+ public void modify(Object element, String property, Object value) {
+
+ // Find the index of the column
+ int columnIndex = relationTableViewer.getColumnNames().indexOf(property);
+
+ TableItem item = (TableItem) element;
+ ArtifactModel model = (ArtifactModel) item.getData();
+
+ switch (columnIndex) {
+ case RelationTableViewer.ADD_NUM:
+ model.setAdd(((Boolean) value).booleanValue());
+ break;
+ case RelationTableViewer.ARTIFACT_NAME_NUM:
+ if (!model.isArtifactFound()) model.setName((String) value);
+ break;
+ case RelationTableViewer.ARTIFACT_TYPE_NUM:
+ if (!model.isArtifactFound()) {
+ model.setDescriptor((ArtifactSubtypeDescriptor) value);
+ }
+ break;
+ case RelationTableViewer.RATIONALE_NUM:
+ model.setRationale((String) value);
+ break;
+ default:
+ }
+ relationTableViewer.getArtifactList().artifactChanged(model);
+ relationTableViewer.refresh();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableSorter.java
new file mode 100644
index 00000000000..e9b8b776069
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableSorter.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public class RelationTableSorter extends ViewerSorter {
+
+ /**
+ * Constructor argument values that indicate to sort items by name or type.
+ */
+ public final static int ARTIFACT_NAME = 1;
+ public final static int ARTIFACT_TYPE = 2;
+
+ // Criteria that the instance uses
+ private int criteria;
+
+ /**
+ * Creates a resource sorter that will use the given sort criteria.
+ *
+ * @param criteria the sort criterion to use: one of <code>NAME</code> or <code>TYPE</code>
+ */
+ public RelationTableSorter(int criteria) {
+ super();
+ this.criteria = criteria;
+ }
+
+ /* (non-Javadoc)
+ * Method declared on ViewerSorter.
+ */
+ public int compare(Viewer viewer, Object o1, Object o2) {
+
+ ArtifactModel model1 = (ArtifactModel) o1;
+ ArtifactModel model2 = (ArtifactModel) o2;
+
+ switch (criteria) {
+ case ARTIFACT_NAME:
+ return compareNames(model1, model2);
+ case ARTIFACT_TYPE:
+ return compareTypes(model1, model2);
+ default:
+ return 0;
+ }
+ }
+
+ /**
+ * Returns a number reflecting the collation order of the given names based on the description.
+ *
+ * @param model1 the first task element to be ordered
+ * @param model2 the second task element to be ordered
+ * @return a negative number if the first element is less than the second element; the value <code>0</code> if the
+ * first element is equal to the second element; and a positive number if the first element is greater than
+ * the second element
+ */
+ @SuppressWarnings("unchecked")
+ protected int compareNames(ArtifactModel model1, ArtifactModel model2) {
+ return getComparator().compare(model1.getName(), model1.getName());
+ }
+
+ /**
+ * Returns a number reflecting the collation order of the given tasks based on their owner.
+ *
+ * @param model1 the first resource element to be ordered
+ * @param model2 the second resource element to be ordered
+ * @return a negative number if the first element is less than the second element; the value <code>0</code> if the
+ * first element is equal to the second element; and a positive number if the first element is greater than
+ * the second element
+ */
+ @SuppressWarnings("unchecked")
+ protected int compareTypes(ArtifactModel model1, ArtifactModel model2) {
+ return getComparator().compare(model1.getDescriptor().getName(), model2.getDescriptor().getName());
+ }
+
+ /**
+ * Returns the sort criteria of this this sorter.
+ *
+ * @return the sort criterion
+ */
+ public int getCriteria() {
+ return criteria;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableViewer.java
new file mode 100644
index 00000000000..04def8ea715
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/relation/explorer/RelationTableViewer.java
@@ -0,0 +1,279 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.relation.explorer;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+public class RelationTableViewer {
+ private static final ConfigurationPersistenceManager configurationManger =
+ ConfigurationPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(RelationTableViewer.class);
+
+ private Table validTable;
+ private TableViewer tableViewer;
+
+ private Table invalidTable;
+
+ private ArtifactModelList artifactList;
+
+ private String[] validColumnNames;
+ private static int[] validColumnWidths;
+
+ private String[] invalidColumnNames;
+ private static int[] invalidColumnWidths;
+
+ public static final int ADD_NUM = 0;
+ public static final int ARTIFACT_NAME_NUM = 1;
+ public static final int ARTIFACT_TYPE_NUM = 2;
+ public static final int RATIONALE_NUM = 3;
+ public static final int INVALID_NAME_NUM = 0;
+ public static final int INVALID_REASON_NUM = 1;
+
+ public ArrayList<ArtifactSubtypeDescriptor> fullDescriptorList;
+ private ArtifactSubtypeDescriptor defaultArtifactType;
+
+ /**
+ * @param validTable -
+ * @param invalidTable -
+ */
+ public RelationTableViewer(Table validTable, Table invalidTable) {
+ Branch defaultBranch = branchPersistenceManager.getDefaultBranch();
+ try {
+ fullDescriptorList =
+ new ArrayList<ArtifactSubtypeDescriptor>(
+ configurationManger.getArtifactSubtypeDescriptors(defaultBranch));
+ defaultArtifactType = configurationManger.getArtifactSubtypeDescriptor("Test Script", defaultBranch);
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+
+ this.validTable = validTable;
+ this.invalidTable = invalidTable;
+
+ this.createControl();
+
+ tableViewer.setContentProvider(new RelationContentProvider());
+ tableViewer.setLabelProvider(new ArtifactModelLabelProvider());
+ tableViewer.setInput(artifactList);
+ }
+
+ public void addValidItem(String name, Artifact artifact) {
+ ArtifactModel model;
+
+ if (artifact == null) {
+ model = new ArtifactModel(name, defaultArtifactType);
+ } else {
+ model = new ArtifactModel(artifact);
+ }
+
+ artifactList.addArtifact(model, true);
+ }
+
+ public void addInvalidItem(String name, String reason) {
+ String[] itemText = new String[] {name, reason};
+ TableItem item = new TableItem(invalidTable, SWT.NONE);
+ item.setText(itemText);
+ }
+
+ private void createControl() {
+ artifactList = new ArtifactModelList();
+ createColumns();
+ createTableViewer();
+ }
+
+ /**
+ * Create the TableViewer
+ */
+ private void createTableViewer() {
+
+ tableViewer = new TableViewer(validTable);
+ tableViewer.setUseHashlookup(true);
+ tableViewer.setColumnProperties(validColumnNames);
+
+ CellEditor[] validEditors = new CellEditor[validColumnNames.length];
+ validEditors[ADD_NUM] = new CheckboxCellEditor(validTable, SWT.CENTER);
+ validEditors[ARTIFACT_NAME_NUM] = new TextCellEditor(validTable) {
+ };
+
+ String[] items = new String[fullDescriptorList.size()];
+ for (int i = 0; i < items.length; i++) {
+ items[i] = fullDescriptorList.get(i).getName();
+ }
+
+ validEditors[ARTIFACT_TYPE_NUM] = new ComboBoxCellEditor(validTable, items);
+ validEditors[RATIONALE_NUM] = new TextCellEditor(validTable);
+
+ // Assign the cell editors to the viewer
+ tableViewer.setCellEditors(validEditors);
+ // Assign the cell modifier to the viewer
+ tableViewer.setCellModifier(new RelationTableCellModifier(this));
+ }
+
+ /**
+ * Create the Columns
+ */
+ private void createColumns() {
+ validColumnNames = new String[] {"Add", "Artifact Name", "Artifact Type", "Rationale"};
+ validColumnWidths = new int[] {40, 200, 100, 500};
+
+ invalidColumnNames = new String[] {"Name", "Reason"};
+ invalidColumnWidths = new int[] {200, 640};
+
+ TableColumn column = new TableColumn(validTable, SWT.LEFT, ADD_NUM);
+ column.setText(validColumnNames[ADD_NUM]);
+ column.setWidth(validColumnWidths[ADD_NUM]);
+
+ column = new TableColumn(validTable, SWT.LEFT, ARTIFACT_NAME_NUM);
+ column.setText(validColumnNames[ARTIFACT_NAME_NUM]);
+ column.setWidth(validColumnWidths[ARTIFACT_NAME_NUM]);
+ column.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ tableViewer.setSorter(new RelationTableSorter(RelationTableSorter.ARTIFACT_NAME));
+ }
+ });
+
+ column = new TableColumn(validTable, SWT.LEFT, ARTIFACT_TYPE_NUM);
+ column.setText(validColumnNames[ARTIFACT_TYPE_NUM]);
+ column.setWidth(validColumnWidths[ARTIFACT_TYPE_NUM]);
+ column.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ tableViewer.setSorter(new RelationTableSorter(RelationTableSorter.ARTIFACT_TYPE));
+ }
+ });
+
+ column = new TableColumn(validTable, SWT.LEFT, RATIONALE_NUM);
+ column.setText(validColumnNames[RATIONALE_NUM]);
+ column.setWidth(validColumnWidths[RATIONALE_NUM]);
+
+ column = new TableColumn(invalidTable, SWT.LEFT, INVALID_NAME_NUM);
+ column.setText(invalidColumnNames[INVALID_NAME_NUM]);
+ column.setWidth(invalidColumnWidths[INVALID_NAME_NUM]);
+
+ column = new TableColumn(invalidTable, SWT.LEFT, INVALID_REASON_NUM);
+ column.setText(invalidColumnNames[INVALID_REASON_NUM]);
+ column.setWidth(invalidColumnWidths[INVALID_REASON_NUM]);
+ }
+
+ public List<String> getColumnNames() {
+ return Arrays.asList(validColumnNames);
+ }
+
+ public ArtifactModelList getArtifactList() {
+ return this.artifactList;
+ }
+
+ public void refresh() {
+ tableViewer.refresh();
+ }
+
+ /**
+ * @return Returns the invalidTable.
+ */
+ public Table getInvalidTable() {
+ return invalidTable;
+ }
+
+ /**
+ * @return Returns the validTable.
+ */
+ public Table getValidTable() {
+ return validTable;
+ }
+
+ public void resizeTable(int windowWidth) {
+ int otherColumns = 15;
+ for (int i = 0; i < validColumnWidths.length - 1; i++)
+ otherColumns += validColumnWidths[i];
+
+ validColumnWidths[RATIONALE_NUM] = windowWidth - otherColumns;
+ validTable.getColumns()[RATIONALE_NUM].setWidth(validColumnWidths[RATIONALE_NUM]);
+
+ otherColumns = 15;
+ for (int i = 0; i < invalidColumnWidths.length - 1; i++)
+ otherColumns += invalidColumnWidths[i];
+
+ invalidColumnWidths[INVALID_REASON_NUM] = windowWidth - otherColumns;
+ invalidTable.getColumns()[INVALID_REASON_NUM].setWidth(invalidColumnWidths[INVALID_REASON_NUM]);
+ }
+
+ /**
+ * InnerClass that acts as a proxy for the ArtifactModelList providing content for the Table. It implements the
+ * IArtifactListViewer interface since it must register changeListeners with the ArtifactModelList
+ */
+ class RelationContentProvider implements IStructuredContentProvider, IArtifactListViewer {
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ if (newInput != null) artifactList.addChangeListener(this);
+ if (oldInput != null) artifactList.removeChangeListener(this);
+ }
+
+ public void dispose() {
+ artifactList.removeChangeListener(this);
+ }
+
+ // Return the tasks as an array of Objects
+ public Object[] getElements(Object parent) {
+ return artifactList.getArtifactModel().toArray();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IArtifactListViewer#addArtifact(ArtifactModel)
+ */
+ public void addArtifact(ArtifactModel artifact) {
+ tableViewer.add(artifact);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IArtifactListViewer#removeArtifact(ArtifactModel)
+ */
+ public void removeArtifact(ArtifactModel artifact) {
+ tableViewer.remove(artifact);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IArtifactListViewer#updateArtifact(ArtifactModel)
+ */
+ public void updateArtifact(ArtifactModel artifact) {
+ tableViewer.update(artifact, null);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ArtifactGuis.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ArtifactGuis.java
new file mode 100644
index 00000000000..1d70973221d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ArtifactGuis.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+
+public class ArtifactGuis {
+ public ArtifactGuis() {
+ super();
+ }
+
+ public static boolean promptToDeleteArtifactAndChildren() {
+ MessageDialog dialog =
+ new MessageDialog(Display.getCurrent().getActiveShell(), "Confirm Artifact Deletion", null,
+ " Are you sure you want to delete this artifact and all of the default hierarchy children?",
+ MessageDialog.QUESTION, new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL}, 1);
+
+ return dialog.open() == 0;
+ }
+
+ public static boolean checkOtherEdit(List<Artifact> artifacts) {
+ if (artifacts.size() == 0) throw new IllegalArgumentException("you must pass at least one artifact");
+
+ boolean goAhead = true;
+
+ Set<Branch> otherBranches = new HashSet<Branch>();
+ for (Artifact artifact : artifacts) {
+ otherBranches.addAll(RevisionManager.getInstance().getOtherEdittedBranches(artifact));
+ }
+
+ if (!otherBranches.isEmpty()) {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("The artifact");
+ if (artifacts.size() > 1) sb.append('s');
+ sb.append(" about to be editted ");
+ if (artifacts.size() > 1)
+ sb.append("have");
+ else
+ sb.append("has");
+ sb.append(" already been modified on the following branches:");
+ for (Branch branch : otherBranches)
+ sb.append("\n\t" + branch.getBranchName());
+ sb.append("\n\nDo you still want to proceed?");
+
+ synchronized (sb) {
+
+ AskQuestion question = new AskQuestion(sb, "Confirm Edit", sb.toString());
+ Displays.ensureInDisplayThread(question);
+ try {
+ while (!question.done)
+ sb.wait();
+ } catch (InterruptedException e) {
+ }
+ goAhead = question.isYes();
+ }
+ }
+
+ return goAhead;
+ }
+
+ private static class AskQuestion implements Runnable {
+
+ private Object notifee;
+ private String title;
+ private String question;
+ private boolean yes;
+ private boolean done;
+
+ /**
+ * @param notifee
+ * @param question
+ */
+ public AskQuestion(Object notifee, String title, String question) {
+ super();
+ this.notifee = notifee;
+ this.title = title;
+ this.question = question;
+ this.yes = false;
+ this.done = false;
+ }
+
+ public void run() {
+ synchronized (notifee) {
+ yes =
+ MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), title,
+ question);
+ done = true;
+ notifee.notifyAll();
+ }
+ }
+
+ /**
+ * @return Returns the yes.
+ */
+ public boolean isYes() {
+ return yes;
+ }
+
+ /**
+ * @return Returns the done.
+ */
+ public boolean isDone() {
+ return done;
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/BlamRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/BlamRenderer.java
new file mode 100644
index 00000000000..e9968e61a81
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/BlamRenderer.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamWorkflow;
+import org.eclipse.osee.framework.ui.skynet.blam.WorkflowEditor;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class BlamRenderer extends Renderer {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getApplicabilityRating(org.eclipse.osee.framework.skynet.core.artifact.Artifact)
+ */
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+ if (artifact instanceof BlamWorkflow) {
+ return ARTIFACT_TYPE_MATCH;
+ }
+ return NO_MATCH;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#edit(org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void edit(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ WorkflowEditor.editArtifact(artifact);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#preview(org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void preview(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ WorkflowEditor.editArtifact(artifact);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java
new file mode 100644
index 00000000000..51a5d8dea41
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.ArtifactEditor;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class DefaultArtifactRenderer extends Renderer {
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#edit(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void edit(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ ArtifactEditor.editArtifact(artifact);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#preview(org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void preview(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ ArtifactEditor.editArtifact(artifact);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#supportsEdit()
+ */
+ @Override
+ public boolean supportsEdit() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#isValidFor(org.eclipse.osee.framework.skynet.core.artifact.Artifact)
+ */
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+ return DEFAULT_MATCH;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditChangeListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditChangeListener.java
new file mode 100644
index 00000000000..f79a3f26338
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditChangeListener.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class EditChangeListener implements IResourceChangeListener {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(EditChangeListener.class);
+ private IResourceDeltaVisitor visitor;
+
+ public EditChangeListener(IFolder workingFolder) {
+ this.visitor = new EditingFolderVisitor(workingFolder);
+ }
+
+ /*
+ * (non-Javadoc)
+ * The workspace is locked during all resource change event notification
+ * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
+ */
+ public void resourceChanged(IResourceChangeEvent event) {
+ if (event.getType() == IResourceChangeEvent.POST_CHANGE) {
+ try {
+ event.getDelta().accept(visitor);
+ } catch (CoreException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ } else {
+ logger.log(Level.SEVERE, "unexpected event type: " + event.getType());
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditingFolderVisitor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditingFolderVisitor.java
new file mode 100644
index 00000000000..3b6ecc1d059
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/EditingFolderVisitor.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Pattern;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkspace;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class EditingFolderVisitor implements IResourceDeltaVisitor {
+ private IFolder workingFolder;
+ private String prefixPath;
+ private int prefixLength;
+ public static int[] visitorCounters = new int[6];
+ private static final Pattern tempFileP = Pattern.compile("(%7E|~)(\\$.*)");
+ private Set<String> fileNameSet;
+
+ /**
+ * @param workingFolder
+ */
+ EditingFolderVisitor(IFolder workingFolder) {
+ this.workingFolder = workingFolder;
+ this.prefixPath = workingFolder.getFullPath().toString();
+ this.prefixLength = prefixPath.length();
+ this.fileNameSet = new HashSet<String>();
+ }
+
+ /**
+ * @return whether to visit the children
+ */
+ public boolean visit(IResourceDelta delta) {
+ visitorCounters[0]++;
+
+ IPath visitPath = delta.getFullPath();
+ String visitPathStr = visitPath.toString();
+
+ if (visitPathStr.length() <= prefixLength) {
+ // also handles case of exactly working folder
+ // only visit if matches prefix so far (must visit to find children)
+ visitorCounters[1]++;
+ return prefixPath.startsWith(visitPathStr);
+ } else if (!visitPathStr.startsWith(prefixPath + "/")) { // possible child of working folder
+ // the file name separator must be inlcuded to weed out directories that include are prefix in a longer name
+ // i.e. prefixPath = /.osee.data/.working and we need to weed out /.osee.data/.workingGeneral
+ visitorCounters[2]++;
+ return false;
+ } else if (visitPath.segmentCount() == workingFolder.getFullPath().segmentCount() + 1) {
+ visitorCounters[3]++;
+ return true;
+ }
+
+ // should only get here if resource has a parent of workingFolder
+ String fileName = visitPath.lastSegment();
+ visitorCounters[4]++;
+ if (!tempFileP.matcher(fileName).matches()) { // skip temporary files
+ File file = AWorkspace.getIFile(visitPathStr).getLocation().toFile();
+
+ if (file.exists()) {
+ if (fileNameSet.contains(file.getName())) {
+ visitorCounters[5]++;
+ UpdateArtifactJob updateJob = new UpdateArtifactJob();
+ updateJob.setWorkingFile(file);
+ updateJob.setUser(false);
+ updateJob.setPriority(Job.SHORT);
+ updateJob.schedule();
+ } else {
+ fileNameSet.add(file.getName());
+ }
+ }
+ }
+
+ return true;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileRenderer.java
new file mode 100644
index 00000000000..5ee3e1467c1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileRenderer.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.ResourceAttributes;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.ui.plugin.util.AIFile;
+
+/**
+ * @author Ryan D. Brooks
+ * @author Jeff C. Phillips
+ */
+public abstract class FileRenderer extends FileSystemRenderer {
+ private ResourceAttributes readonlyfileAttributes;
+
+ public FileRenderer() {
+ super();
+ readonlyfileAttributes = new ResourceAttributes();
+ readonlyfileAttributes.setReadOnly(true);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer#renderToFileSystem(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.resources.IFolder, org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public IFile renderToFileSystem(IProgressMonitor monitor, IFolder baseFolder, Artifact artifact, Branch branch, String option, PresentationType presentationType) throws Exception {
+ return renderToFile(baseFolder, getFilenameFromArtifact(artifact, presentationType), branch,
+ getRenderInputStream(monitor, artifact, option, presentationType), presentationType);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer#renderToFileSystem(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.resources.IFolder, java.util.List, java.lang.String, org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public IFile renderToFileSystem(IProgressMonitor monitor, IFolder baseFolder, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception {
+ Branch initialBranch = null;
+ for (Artifact artifact : artifacts) {
+ if (initialBranch == null) {
+ initialBranch = artifact.getBranch();
+ } else {
+ if (artifact.getBranch() != initialBranch) {
+ throw new IllegalArgumentException("All of the artifacts must be on the same branch to be mass edited");
+ }
+ }
+ }
+
+ return renderToFile(baseFolder, getFilenameFromArtifact(null, presentationType), initialBranch,
+ getRenderInputStream(monitor, artifacts, option, presentationType), presentationType);
+ }
+
+ protected IFile renderToFile(IFolder baseFolder, String fileName, Branch branch, InputStream renderInputStream, PresentationType presentationType) throws Exception {
+ IFile workingFile = baseFolder.getFile(fileName);
+ AIFile.writeToFile(workingFile, renderInputStream);
+
+ if (presentationType == PresentationType.PREVIEW) {
+ workingFile.setResourceAttributes(readonlyfileAttributes);
+ }
+
+ return workingFile;
+ }
+
+ protected String getFilenameFromArtifact(Artifact artifact, PresentationType presentationType) {
+ StringBuilder name = new StringBuilder(100);
+
+ if (artifact != null) {
+ TransactionId transactionId = artifact.getPersistenceMemo().getTransactionId();
+ name.append(artifact.getSafeName());
+ name.append("(");
+ name.append(artifact.getGuid());
+ name.append(")");
+
+ if (!transactionId.isEditable() || presentationType == PresentationType.DIFF) {
+ name.append("(");
+ name.append(transactionId.getTransactionNumber());
+ name.append(")");
+ }
+
+ name.append(" ");
+ name.append((new Date()).toString().replaceAll(":", ";"));
+ name.append(".");
+ name.append(getAssociatedExtension(artifact));
+ } else {
+ name.append(GUID.generateGuidStr());
+ name.append(".xml");
+ }
+ return name.toString();
+ }
+
+ public abstract InputStream getRenderInputStream(IProgressMonitor monitor, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception;
+
+ public abstract InputStream getRenderInputStream(IProgressMonitor monitor, Artifact artifact, String option, PresentationType presentationType) throws Exception;
+
+ public abstract String getAssociatedExtension(Artifact artifact);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileSystemRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileSystemRenderer.java
new file mode 100644
index 00000000000..0f6c3c771ac
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/FileSystemRenderer.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.StringFormat;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.plugin.util.OseeData;
+import org.eclipse.swt.program.Program;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class FileSystemRenderer extends Renderer {
+ private static IFolder workingFolder;
+ private static IFolder diffFolder;
+ private static IFolder previewFolder;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#preview(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void preview(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ open(monitor, artifact, option, PresentationType.PREVIEW);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#edit(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void edit(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ open(monitor, artifact, option, PresentationType.EDIT);
+ }
+
+ private void open(IProgressMonitor monitor, Artifact artifact, String option, PresentationType presentationType) throws Exception {
+ IFolder baseFolder = getRenderFolder(artifact.getBranch(), presentationType);
+ IFile file = renderToFileSystem(monitor, baseFolder, artifact, artifact.getBranch(), option, presentationType);
+ getAssociatedProgram(artifact).execute(file.getLocation().toFile().getAbsolutePath());
+ }
+
+ public IFolder getRenderFolder(Branch branch, PresentationType presentationType) throws CoreException {
+ IFolder baseFolder = ensureRenderFolderExists(presentationType);
+ IFolder renderFolder = baseFolder.getFolder(getBranchFolderName(branch));
+ if (!renderFolder.exists()) {
+ renderFolder.create(true, true, null);
+ }
+ return renderFolder;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#preview(java.util.List, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void preview(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception {
+ open(monitor, artifacts, option, PresentationType.PREVIEW);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#edit(java.util.List, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void edit(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception {
+ open(monitor, artifacts, option, PresentationType.EDIT);
+ }
+
+ private void open(IProgressMonitor monitor, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception {
+ if (!artifacts.isEmpty()) {
+ Artifact firstArtifact = artifacts.iterator().next();
+ IFolder baseFolder = getRenderFolder(firstArtifact.getBranch(), presentationType);
+ IFile file = renderToFileSystem(monitor, baseFolder, artifacts, option, presentationType);
+ getAssociatedProgram(firstArtifact).execute(file.getLocation().toFile().getAbsolutePath());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#supportsEdit()
+ */
+ @Override
+ public boolean supportsEdit() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#supportsPreview()
+ */
+ @Override
+ public boolean supportsPreview() {
+ return true;
+ }
+
+ private static String getBranchFolderName(Branch branch) {
+ String branchName = branch.getBranchName();
+
+ // Remove illegal filename characters
+ // NOTE: The current program.launch has a tokenizing bug that causes an error if consecutive spaces are in the name
+ branchName = branchName.replaceAll("[^A-Za-z0-9]", "_");
+
+ return branch.getBranchId() + " - " + StringFormat.truncate(branchName, 20).trim();
+ }
+
+ public static IFolder ensureRenderFolderExists(PresentationType presentationType) throws CoreException {
+ switch (presentationType) {
+ case DIFF:
+ if (diffFolder == null || !diffFolder.exists()) {
+ diffFolder = OseeData.getFolder(".diff");
+ }
+ return diffFolder;
+
+ case EDIT:
+ if (workingFolder == null || !workingFolder.exists()) {
+ workingFolder = OseeData.getFolder(".working/");
+ // Set the vistor to this directory
+ IResourceChangeListener listener = new EditChangeListener(workingFolder);
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(listener, IResourceChangeEvent.POST_CHANGE);
+ }
+ return workingFolder;
+
+ case PREVIEW:
+ if (previewFolder == null || !previewFolder.exists()) {
+ previewFolder = OseeData.getFolder(".preview");
+ }
+ return previewFolder;
+
+ default:
+ throw new IllegalStateException("Unexpected presentation type");
+ }
+ }
+
+ public IFile renderForDiff(IProgressMonitor monitor, Branch branch, String option) throws Exception {
+ IFolder baseFolder = getRenderFolder(branch, PresentationType.DIFF);
+ return renderToFileSystem(monitor, baseFolder, null, branch, option, PresentationType.DIFF);
+ }
+
+ public IFile renderForDiff(IProgressMonitor monitor, Artifact artifact, String option) throws Exception {
+ if (artifact == null) {
+ throw new IllegalArgumentException("Artifact can not be null.");
+ }
+
+ IFolder baseFolder = getRenderFolder(artifact.getBranch(), PresentationType.DIFF);
+ return renderToFileSystem(monitor, baseFolder, artifact, artifact.getBranch(), option, PresentationType.DIFF);
+ }
+
+ public abstract IFile renderToFileSystem(IProgressMonitor monitor, IFolder baseFolder, Artifact artifact, Branch branch, String option, PresentationType presentationType) throws Exception;
+
+ public abstract IFile renderToFileSystem(IProgressMonitor monitor, IFolder baseFolder, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception;
+
+ public abstract Program getAssociatedProgram(Artifact artifact);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/IRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/IRenderer.java
new file mode 100644
index 00000000000..d32b7b51921
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/IRenderer.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public interface IRenderer {
+
+ public static final int SUBTYPE_TYPE_MATCH = 30;
+ public static final int ARTIFACT_TYPE_MATCH = 20;
+ public static final int DEFAULT_MATCH = 10;
+ public static final int NO_MATCH = -1;
+
+ public abstract void edit(Artifact artifact, String option, IProgressMonitor monitor) throws Exception;
+
+ public abstract void edit(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception;
+
+ public List<String> getEditOptions() throws Exception;
+
+ public boolean supportsEdit();
+
+ public abstract void preview(Artifact artifact, String option, IProgressMonitor monitor) throws Exception;
+
+ public abstract void preview(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception;
+
+ public List<String> getPreviewOptions() throws Exception;
+
+ public boolean supportsPreview();
+
+ public abstract void print(Artifact artifact, String option, IProgressMonitor monitor) throws Exception;
+
+ public abstract void print(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception;
+
+ public List<String> getPrintOptions() throws Exception;
+
+ public boolean supportsPrint();
+
+ public void compare(Artifact baseVersion, Artifact newerVersion, String option, IProgressMonitor monitor) throws Exception;
+
+ public List<String> getCompareOptions() throws Exception;
+
+ public boolean supportsCompare();
+
+ public abstract int getApplicabilityRating(PresentationType presentationType, Artifact artifact);
+
+ public abstract String getName();
+
+ public abstract String getArtifactUrl(Artifact artifact);
+
+ public abstract void setId(String rendererId);
+
+ public abstract String getId();
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ITemplateRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ITemplateRenderer.java
new file mode 100644
index 00000000000..07dba875bc1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/ITemplateRenderer.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public interface ITemplateRenderer extends IRenderer {
+ public abstract void renderInComposite(Composite composite, BlamVariableMap variableMap, boolean readOnly, IProgressMonitor monitor) throws Exception;
+
+ public abstract void renderToFolder(IFolder folder, BlamVariableMap variableMap, boolean readOnly, IProgressMonitor monitor) throws Exception;
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/NativeRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/NativeRenderer.java
new file mode 100644
index 00000000000..cada6dc9a09
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/NativeRenderer.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.InputStream;
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.NativeArtifact;
+import org.eclipse.swt.program.Program;
+
+/**
+ * Renders native content.
+ *
+ * @author Ryan D. Brooks
+ */
+public class NativeRenderer extends FileRenderer {
+
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+ if (artifact instanceof NativeArtifact) {
+ return ARTIFACT_TYPE_MATCH;
+ }
+ return NO_MATCH;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getAssociatedExtension()
+ */
+ @Override
+ public String getAssociatedExtension(Artifact artifact) {
+ return ((NativeArtifact) artifact).getExtension();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getAssociatedProgram()
+ */
+ @Override
+ public Program getAssociatedProgram(Artifact artifact) {
+ NativeArtifact nativeArtifact = (NativeArtifact) artifact;
+
+ Program program = Program.findProgram(nativeArtifact.getExtension());
+ if (program == null) {
+ throw new IllegalArgumentException(
+ "No program associated with the extension " + nativeArtifact.getExtension() + " found on your local machine.");
+ }
+ return program;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getRenderInputStream(org.eclipse.core.runtime.IProgressMonitor, java.util.List, java.lang.String, org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public InputStream getRenderInputStream(IProgressMonitor monitor, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getRenderInputStream(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public InputStream getRenderInputStream(IProgressMonitor monitor, Artifact artifact, String option, PresentationType presentationType) throws Exception {
+ NativeArtifact nativeArtifact = (NativeArtifact) artifact;
+ return nativeArtifact.getNativeContent();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/PresentationType.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/PresentationType.java
new file mode 100644
index 00000000000..c632440bd24
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/PresentationType.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+public enum PresentationType {
+ EDIT, DIFF, PREVIEW, PREVIEW_IN_COMPOSITE
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/Renderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/Renderer.java
new file mode 100644
index 00000000000..371dc4d0c1d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/Renderer.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.httpRequests.ArtifactRequest;
+
+/**
+ * A Renderer is a stateless class responsible for rendering formatted content to either a file or a composite
+ *
+ * @author Ryan D. Brooks
+ */
+public abstract class Renderer implements IRenderer {
+ private String rendererId;
+
+ /**
+ * @param applicableArtifactTypes
+ */
+ public Renderer() {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#edit(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void edit(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#edit(java.util.List, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void edit(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception {
+ for (Artifact artifact : artifacts) {
+ edit(artifact, option, monitor);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getName()
+ */
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#preview(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void preview(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#preview(java.util.List, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void preview(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception {
+ for (Artifact artifact : artifacts) {
+ preview(artifact, option, monitor);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#print(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void print(Artifact artifact, String option, IProgressMonitor monitor) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#print(java.util.List, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void print(List<Artifact> artifacts, String option, IProgressMonitor monitor) throws Exception {
+ for (Artifact artifact : artifacts) {
+ print(artifact, option, monitor);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#supportsEdit()
+ */
+ public boolean supportsEdit() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#supportsPreview()
+ */
+ public boolean supportsPreview() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#supportsPrint()
+ */
+ public boolean supportsPrint() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#generateHtml(org.eclipse.osee.framework.skynet.core.artifact.Artifact, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public String generateHtml(Artifact artifact, IProgressMonitor monitor) {
+ return "<b>" + artifact.getDescriptiveName() + " - " + artifact.getHumanReadableId() + "</b>";
+ }
+
+ public String generateHtml(List<Artifact> artifacts, IProgressMonitor monitor) throws Exception {
+ StringBuilder result = new StringBuilder();
+ for (Artifact artifact : artifacts) {
+ result.append(generateHtml(artifact, monitor));
+ }
+ return result.toString();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getEditOptions()
+ */
+ public List<String> getEditOptions() throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getPreviewOptions()
+ */
+ public List<String> getPreviewOptions() throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getPrintOptions()
+ */
+ public List<String> getPrintOptions() throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#compare(org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void compare(Artifact baseVersion, Artifact newerVersion, String option, IProgressMonitor monitor) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getCompareOptions()
+ */
+ public List<String> getCompareOptions() throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#supportsCompare()
+ */
+ public boolean supportsCompare() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getId()
+ */
+ public String getId() {
+ return rendererId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#setId(java.lang.String)
+ */
+ public void setId(String rendererId) {
+ this.rendererId = rendererId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#getArtifactUrl(org.eclipse.osee.framework.skynet.core.artifact.Artifact, boolean)
+ */
+ public String getArtifactUrl(Artifact artifact) {
+ return ArtifactRequest.getInstance().getUrl(artifact, true);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java
new file mode 100644
index 00000000000..c7e20284332
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.plugin.util.IExceptionableRunnable;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.artifact.editor.BrowserComposite;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class RendererManager {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(RendererManager.class);
+ private static final RendererManager instance = new RendererManager();
+ private static final ConfigurationPersistenceManager configurationManager =
+ ConfigurationPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private final HashMap<String, IRenderer> renderers;
+ private HashCollection<ArtifactSubtypeDescriptor, IRenderer> applicableArtifactSubTypes;
+
+ private RendererManager() {
+ renderers = new HashMap<String, IRenderer>(40);
+ registerRenders();
+ }
+
+ public static RendererManager getInstance() {
+ return instance;
+ }
+
+ private void registerRendersFromExtensionPoints() {
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.ui.skynet.ArtifactRenderer");
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement element : elements) {
+ if (element.getName().equals("Renderer")) {
+ classname = element.getAttribute("classname");
+ bundleName = element.getContributor().getName();
+
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> renderClass = bundle.loadClass(classname);
+ Object obj = renderClass.newInstance();
+ Renderer renderer = (Renderer) obj;
+ renderer.setId(extension.getUniqueIdentifier());
+
+ renderers.put(renderer.getId(), renderer);
+
+ String applicableArtifactSubType = element.getAttribute("ApplicableArtifactSubtype");
+ if (applicableArtifactSubType != null) {
+ ArtifactSubtypeDescriptor artifactSubtype =
+ configurationManager.getArtifactSubtypeDescriptor(applicableArtifactSubType,
+ branchManager.getCommonBranch());
+ applicableArtifactSubTypes.put(artifactSubtype, renderer);
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ } catch (NoClassDefFoundError er) {
+ logger.log(
+ Level.WARNING,
+ "Failed to find a class definition for " + classname + ", registered from bundle " + bundleName,
+ er);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public List<IRenderer> getValidRenderers(PresentationType presentationType, Artifact artifact) {
+ List<IRenderer> rendererList = new LinkedList<IRenderer>();
+
+ for (IRenderer renderer : renderers.values()) {
+ if (renderer.getApplicabilityRating(presentationType, artifact) > IRenderer.NO_MATCH) {
+ rendererList.add(renderer);
+ }
+ }
+
+ if (rendererList.isEmpty()) throw new IllegalStateException(
+ "At least the DefaultArtifactRenderer should have been found.");
+
+ return rendererList;
+ }
+
+ public IRenderer getBestRenderer(PresentationType presentationType, Artifact artifact) {
+ IRenderer bestRenderer = null;
+ int bestRating = IRenderer.NO_MATCH;
+ for (IRenderer renderer : renderers.values()) {
+ int rating = renderer.getApplicabilityRating(presentationType, artifact);
+ if (rating > bestRating) {
+ bestRenderer = renderer;
+ bestRating = rating;
+ }
+ }
+ if (bestRenderer == null) {
+ throw new IllegalStateException("At least the DefaultArtifactRenderer should have been found.");
+ }
+ return bestRenderer;
+ }
+
+ public IRenderer getRendererById(String rendererId) {
+ return renderers.get(rendererId);
+ }
+
+ /**
+ * Maps all renderes in the system to their applicable artifact types
+ */
+ private void registerRenders() {
+ registerRendersFromExtensionPoints();
+ }
+
+ private HashCollection<IRenderer, Artifact> createRenderMap(PresentationType presentationType, List<Artifact> artifacts) {
+ HashCollection<IRenderer, Artifact> rendererArtifactMap =
+ new HashCollection<IRenderer, Artifact>(false, LinkedList.class);
+ for (Artifact artifact : artifacts) {
+ rendererArtifactMap.put(getBestRenderer(presentationType, artifact), artifact);
+ }
+ return rendererArtifactMap;
+ }
+
+ public void previewInJob(final List<Artifact> artifacts) {
+ previewInJob(artifacts, null);
+ }
+
+ public void previewInJob(final List<Artifact> artifacts, final String option) {
+ if (artifacts.size() == 1) {
+ previewInJob(artifacts.get(0), option);
+ } else {
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+ HashCollection<IRenderer, Artifact> rendererArtifactMap =
+ createRenderMap(PresentationType.PREVIEW, artifacts);
+
+ for (IRenderer renderer : rendererArtifactMap.keySet()) {
+ renderer.preview((LinkedList<Artifact>) rendererArtifactMap.getValues(renderer), option, monitor);
+ }
+ }
+ };
+
+ Jobs.run("Preview " + artifacts.size() + " artifacts", runnable, logger, SkynetGuiPlugin.PLUGIN_ID, false);
+ }
+ }
+
+ public void editInJob(final List<Artifact> artifacts) {
+ editInJob(artifacts, null);
+ }
+
+ public void editInJob(final List<Artifact> artifacts, final String option) {
+ if (ArtifactGuis.checkOtherEdit(artifacts)) {
+ if (artifacts.size() == 1) {
+ editInJob(artifacts.get(0), option);
+ } else {
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+ HashCollection<IRenderer, Artifact> rendererArtifactMap =
+ createRenderMap(PresentationType.EDIT, artifacts);
+
+ for (IRenderer renderer : rendererArtifactMap.keySet()) {
+ renderer.edit((LinkedList<Artifact>) rendererArtifactMap.getValues(renderer), option, monitor);
+ }
+ }
+ };
+
+ Jobs.run("Edit " + artifacts.size() + " artifacts", runnable, logger, SkynetGuiPlugin.PLUGIN_ID);
+ }
+ }
+ }
+
+ public void editInJob(Artifact artifact) {
+ editInJob(artifact, null);
+ }
+
+ public void editInJob(final Artifact artifact, final String option) {
+ editInJob(getBestRenderer(PresentationType.EDIT, artifact), artifact, option);
+ }
+
+ public void editInJobWith(String rendererId, final Artifact artifact, final String option) {
+ editInJob(getRendererById(rendererId), artifact, option);
+ }
+
+ private void editInJob(final IRenderer renderer, final Artifact artifact, final String option) {
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+ renderer.edit(artifact, option, monitor);
+ }
+ };
+
+ Jobs.run("Edit " + artifact.getDescriptiveName(), runnable, logger, SkynetGuiPlugin.PLUGIN_ID);
+ }
+
+ public void previewInJob(final Artifact artifact) {
+ previewInJob(artifact, null);
+ }
+
+ public void previewInJobWith(String rendererId, final Artifact artifact, final String option) {
+ previewInJob(getRendererById(rendererId), artifact, option);
+ }
+
+ public void previewInJob(final Artifact artifact, final String option) {
+ previewInJob(getBestRenderer(PresentationType.PREVIEW, artifact), artifact, option);
+ }
+
+ public void previewInJob(final IRenderer renderer, final Artifact artifact, final String option) {
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+ renderer.preview(artifact, option, monitor);
+ }
+ };
+
+ Jobs.run("Preview " + artifact.getDescriptiveName(), runnable, logger, SkynetGuiPlugin.PLUGIN_ID, false);
+ }
+
+ public void compareInJob(Artifact baseVersion, Artifact newerVersion) throws Exception {
+ compareInJob(baseVersion, newerVersion, null);
+ }
+
+ public void compareInJob(final Artifact baseVersion, final Artifact newerVersion, final String option) throws Exception {
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+
+ // To handle comparisons with new or deleted artifacts
+ Artifact artifactToSelectRender = baseVersion == null ? newerVersion : baseVersion;
+
+ getBestRenderer(PresentationType.DIFF, artifactToSelectRender).compare(baseVersion, newerVersion, option,
+ monitor);
+ }
+ };
+
+ Jobs.run(
+ "Compare " + (baseVersion == null ? " new " : baseVersion.getDescriptiveName()) + " to " + (newerVersion == null ? " delete " : newerVersion.getDescriptiveName()),
+ runnable, logger, SkynetGuiPlugin.PLUGIN_ID);
+ }
+
+ public void previewInComposite(final BrowserComposite previewComposite, final Artifact artifact) {
+ IExceptionableRunnable runnable = new IExceptionableRunnable() {
+ public void run(IProgressMonitor monitor) throws Exception {
+
+ IRenderer renderer = getBestRenderer(PresentationType.PREVIEW_IN_COMPOSITE, artifact);
+ final String url = renderer.getArtifactUrl(artifact);
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ previewComposite.setUrl(url);
+ }
+ });
+
+ }
+ };
+
+ Jobs.run("Preview " + artifact.getDescriptiveName(), runnable, logger, SkynetGuiPlugin.PLUGIN_ID, false);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/TemplateRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/TemplateRenderer.java
new file mode 100644
index 00000000000..a69e2252481
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/TemplateRenderer.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class TemplateRenderer extends FileSystemRenderer implements ITemplateRenderer {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer#getAssociatedProgram(org.eclipse.osee.framework.skynet.core.artifact.Artifact)
+ */
+ @Override
+ public Program getAssociatedProgram(Artifact artifact) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer#renderToFileSystem(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.resources.IFolder, org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String, org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public IFile renderToFileSystem(IProgressMonitor monitor, IFolder baseFolder, Artifact artifact, Branch branch, String option, PresentationType presentationType) throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer#renderToFileSystem(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.resources.IFolder, java.util.List, java.lang.String, org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public IFile renderToFileSystem(IProgressMonitor monitor, IFolder baseFolder, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.ITemplateRenderer#renderInComposite(org.eclipse.swt.widgets.Composite, org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, boolean, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void renderInComposite(Composite composite, BlamVariableMap variableMap, boolean readOnly, IProgressMonitor monitor) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.ITemplateRenderer#renderToFolder(org.eclipse.core.resources.IFolder, org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap, boolean, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void renderToFolder(IFolder folder, BlamVariableMap variableMap, boolean readOnly, IProgressMonitor monitor) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#isValidFor(org.eclipse.osee.framework.skynet.core.artifact.Artifact)
+ */
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+ return NO_MATCH;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactJob.java
new file mode 100644
index 00000000000..954574fad8e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactJob.java
@@ -0,0 +1,256 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetActivator;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.NativeArtifact;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.attribute.WordAttribute;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.VisitorEvent;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.skynet.render.word.WordTemplateProcessor;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UpdateArtifactJob extends UpdateJob {
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final ArtifactPersistenceManager persistenceManager = ArtifactPersistenceManager.getInstance();
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(UpdateArtifactJob.class);
+ private static final Pattern guidPattern = Pattern.compile(".*\\(([^)]+)\\)[^()]*");
+ private static final Pattern multiPattern = Pattern.compile(".*[^()]*");
+ private Element oleDataElement;
+
+ public UpdateArtifactJob() {
+ super("Update Artifact");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ processUpdate();
+ } catch (Exception ex) {
+ return new Status(Status.ERROR, SkynetActivator.PLUGIN_ID, Status.OK, ex.getLocalizedMessage(), ex);
+ }
+ return Status.OK_STATUS;
+ }
+
+ private void processUpdate() throws SQLException, IllegalStateException, IOException, ParserConfigurationException, SAXException {
+ String guid;
+ String branchCandidate = workingFile.getParentFile().getName();
+ branchCandidate = branchCandidate.substring(0, branchCandidate.indexOf('-')).trim();
+ Artifact artifact;
+
+ int branchId = Integer.parseInt(branchCandidate);
+ Branch branch = BranchPersistenceManager.getInstance().getBranch(branchId);
+ Matcher singleEditMatcher = guidPattern.matcher(workingFile.getName());
+ Matcher multiEditMatcher = multiPattern.matcher(workingFile.getName());
+
+ if (singleEditMatcher.matches()) {
+ guid = singleEditMatcher.group(1);
+ artifact = persistenceManager.getArtifact(guid, branch);
+
+ if (artifact instanceof WordArtifact) {
+ updateWordArtifact(branch);
+ } else if (artifact instanceof NativeArtifact) {
+ updateNativeArtifact(artifact);
+ } else {
+ throw new IllegalArgumentException("Artifact must be of type WordArtifact or NativeArtifact.");
+ }
+ } else if (multiEditMatcher.matches()) {
+ updateWordArtifact(branch);
+ } else {
+ throw new IllegalArgumentException("File name did not contain the artifact guid");
+ }
+ }
+
+ private void updateWordArtifact(Branch branch) throws SQLException, IOException, ParserConfigurationException, SAXException {
+ try {
+ new WordArtifactUpdateTx(branch, getArtifacts(workingFile)).execute();
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+
+ }
+
+ private void updateNativeArtifact(Artifact artifact) throws IllegalStateException, FileNotFoundException, SQLException {
+ artifact.setAttribute(NativeArtifact.CONTENT_NAME, new FileInputStream(workingFile));
+
+ artifact.persist();
+ eventManager.kick(new VisitorEvent(artifact, this));
+ }
+
+ @SuppressWarnings( {"unchecked", "serial"})
+ private Collection<Element> getArtifacts(File wordFile) throws ParserConfigurationException, SAXException, IOException {
+ final Collection<Element> artifacts = new LinkedList<Element>();
+ final String elementNameForWordAttribute = WordTemplateProcessor.elementNameFor(WordAttribute.CONTENT_NAME);
+
+ Document doc = Jaxp.readXmlDocument(wordFile);
+ Element rootElement = doc.getDocumentElement();
+
+ oleDataElement = null;
+
+ NodeList nodeList = rootElement.getElementsByTagName("*");
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Element element = (Element) nodeList.item(i);
+
+ if (element.getNodeName().endsWith(elementNameForWordAttribute)) {
+ artifacts.add(element);
+ } else if (oleDataElement == null && element.getNodeName().endsWith("docOleData")) {
+ oleDataElement = element;
+ }
+ }
+
+ return artifacts;
+ }
+
+ private final class WordArtifactUpdateTx extends AbstractSkynetTxTemplate {
+ private List<String> deletedGuids;
+ private Collection<Element> artElements;
+
+ public WordArtifactUpdateTx(Branch branch, Collection<Element> artElements) {
+ super(branch);
+ this.artElements = artElements;
+ this.deletedGuids = new LinkedList<String>();
+ }
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ boolean singleArtifact = artElements.size() == 1;
+ boolean containsOleData = false;
+ for (Element artElement : artElements) {
+ String guid = getGuid(artElement);
+ Artifact artifact = persistenceManager.getArtifact(guid, getTxBranch());
+
+ if (artifact != null) {
+ containsOleData = !artifact.getSoleAttributeValue(WordAttribute.OLE_DATA_NAME).equals("");
+
+ if (oleDataElement == null && containsOleData) {
+ artifact.setAttribute(WordAttribute.OLE_DATA_NAME, "");
+ } else if (oleDataElement != null && singleArtifact) {
+ artifact.setAttribute(WordAttribute.OLE_DATA_NAME, new ByteArrayInputStream(
+ WordRenderer.getFormattedContent(oleDataElement)));
+ }
+
+ String content =
+ Lib.inputStreamToString(new ByteArrayInputStream(WordRenderer.getFormattedContent(artElement)));
+ StringBuilder stringBuffer = new StringBuilder();
+
+ // Decided not to support multi edit of artifacts that contain equations.
+ if (false && containsOleData && !singleArtifact) {
+ int startIndex = 0, endIndex = 0, tagCursorStart = 0, tagCursorEnd = 0;
+ String equationTag;
+
+ content = content.replaceAll("MyObject", "OLEObject").replaceAll("number", "ObjectID");
+
+ while (endIndex < content.length()) {
+ tagCursorStart = content.indexOf(":OLEObject ", startIndex);
+
+ if (tagCursorStart != -1) {
+ tagCursorStart = content.lastIndexOf('<', tagCursorStart);
+
+ tagCursorEnd = content.indexOf(">", tagCursorStart) + 1;
+ equationTag = content.substring(tagCursorStart, tagCursorEnd);
+
+ tagCursorEnd = content.indexOf("OLEObject>", tagCursorStart) + "OLEObject>".length();
+ content = content.replace(content.subSequence(tagCursorStart, tagCursorEnd), "");
+
+ endIndex = content.indexOf("</w:pict>", startIndex);
+ stringBuffer.append(content.substring(startIndex, endIndex));
+
+ equationTag = equationTag.replaceFirst("ns\\d+", "o").replace(">", "/>");
+ stringBuffer.append(equationTag + "</w:pict>");
+ startIndex = endIndex + "</w:pict>".length();
+ } else {
+ endIndex = content.length();
+ stringBuffer.append(content.substring(startIndex, endIndex));
+ }
+ }
+ content = stringBuffer.toString();
+ }
+
+ artifact.setAttribute(WordAttribute.CONTENT_NAME, content);
+ if (artifact.isDirty()) {
+ artifact.persist();
+ eventManager.kick(new VisitorEvent(artifact, this));
+ }
+ } else {
+ deletedGuids.add(guid);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate#handleTxFinally()
+ */
+ @Override
+ protected void handleTxFinally() throws Exception {
+ super.handleTxFinally();
+ if (!deletedGuids.isEmpty()) {
+ throw new IllegalArgumentException(
+ "The following deleted artifacts could not be saved: " + Collections.toString(",", deletedGuids));
+ }
+ }
+
+ private String getGuid(Element artifactElement) {
+ NamedNodeMap attributes = artifactElement.getAttributes();
+ for (int i = 0; i < attributes.getLength(); i++) {
+ // MS Word has a nasty habit of changing the namespace say from ns0 to ns1, so we must
+ // ignore the namespace by using endsWith()
+ if (attributes.item(i).getNodeName().endsWith("guid")) {
+ return attributes.item(i).getNodeValue();
+ }
+ }
+ throw new IllegalArgumentException("didn't find the guid attribure in element: " + artifactElement);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateJob.java
new file mode 100644
index 00000000000..08c0a33abd6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateJob.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.File;
+import org.eclipse.core.runtime.jobs.Job;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class UpdateJob extends Job {
+ protected File workingFile;
+
+ /**
+ * @param name
+ */
+ public UpdateJob(String name) {
+ super(name);
+ }
+
+ /**
+ * @param workingFile The workingFile to set.
+ */
+ public void setWorkingFile(File workingFile) {
+ this.workingFile = workingFile;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateNativeJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateNativeJob.java
new file mode 100644
index 00000000000..0bc36db9c8c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateNativeJob.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.FileInputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.NativeArtifact;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.event.VisitorEvent;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UpdateNativeJob extends UpdateJob {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(UpdateNativeJob.class);
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private static final ArtifactPersistenceManager persistenceManager = ArtifactPersistenceManager.getInstance();
+
+ public UpdateNativeJob() {
+ super("Update Native Artifact");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ // expected file name format: guid_branchId_origionalFileName
+ String fileName = workingFile.getName();
+ String guid = fileName.substring(0, 22);
+ Branch branch =
+ BranchPersistenceManager.getInstance().getBranch(
+ Integer.parseInt(fileName.substring(23, fileName.indexOf('_', 23))));
+ Artifact artifact = persistenceManager.getArtifact(guid, branch);
+ if (artifact == null) {
+ return new Status(Status.ERROR, Platform.PI_RUNTIME, -1,
+ "Can't retrieve native content for " + fileName + " for " + branch.getBranchName() + " branch.", null);
+ } else {
+ artifact.setAttribute(NativeArtifact.CONTENT_NAME, new FileInputStream(workingFile));
+ artifact.persist();
+ eventManager.kick(new VisitorEvent(artifact, this));
+ }
+ return Status.OK_STATUS;
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ return new Status(Status.ERROR, Platform.PI_RUNTIME, -1, ex.getMessage(), ex);
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UrlRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UrlRenderer.java
new file mode 100644
index 00000000000..7b1f2667b40
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UrlRenderer.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.WorkspaceURL;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UrlRenderer extends Renderer {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(UrlRenderer.class);
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ private Collection<ArtifactSubtypeDescriptor> descriptors;
+
+ /**
+ * @param applicableArtifactTypes
+ */
+ public UrlRenderer() {
+ try {
+ descriptors =
+ configurationPersistenceManager.getArtifactSubtypeDescriptorsForAttribute(configurationPersistenceManager.getDynamicAttributeType(
+ "Content URL", BranchPersistenceManager.getInstance().getCommonBranch()));
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, "", ex);
+ }
+ }
+
+ @Override
+ public String getArtifactUrl(Artifact artifact) {
+ String url = artifact.getSoleAttributeValue("Content URL");
+ if (url.startsWith("ws:")) {
+ IFile iFile = WorkspaceURL.getIFile(url);
+ url = iFile.getLocation().toString();
+ }
+ return url;
+ }
+
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+ for (ArtifactSubtypeDescriptor descriptor : descriptors) {
+ if (descriptor.canProduceArtifact(artifact)) {
+ return SUBTYPE_TYPE_MATCH;
+ }
+ }
+ return NO_MATCH;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordCompareTest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordCompareTest.java
new file mode 100644
index 00000000000..af0dd7f6580
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordCompareTest.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+import org.eclipse.osee.framework.jdk.core.util.io.streams.StreamCatcher;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WordCompareTest {
+
+ static public File getFile(String description) {
+ File toReturn = new File("");
+
+ JFileChooser chooser = new JFileChooser();
+ chooser.setSelectedFile(toReturn);
+ chooser.setFileFilter(new FileFilter() {
+
+ @Override
+ public String getDescription() {
+ return "Select an Xml File";
+ }
+
+ public boolean accept(File file) {
+ return file.isDirectory() || (file.isFile() && file.getName().endsWith(".xml"));
+ }
+ });
+
+ int returnVal = chooser.showDialog(null, description);
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ toReturn = chooser.getSelectedFile();
+ }
+
+ return toReturn;
+ }
+
+ private static URL getClassLocation(final Class<?> classToFind) {
+ URL result = null;
+ if (classToFind == null) {
+ throw new IllegalArgumentException("Class is null");
+ }
+ final String classAsResource = classToFind.getName().replace('.', '/').concat(".class");
+ final ProtectionDomain pd = classToFind.getProtectionDomain();
+ if (pd != null) {
+ final CodeSource cs = pd.getCodeSource();
+ if (cs != null) {
+ result = cs.getLocation();
+ }
+ if (result != null) {
+ // Convert a code source location into a full class file location
+ if (result.getProtocol().equals("file")) {
+ try {
+ if (result.toExternalForm().endsWith(".jar") || result.toExternalForm().endsWith(".zip"))
+ result = new URL("jar:".concat(result.toExternalForm()).concat("!/").concat(classAsResource));
+ else if (new File(result.getFile()).isDirectory()) result = new URL(result, classAsResource);
+ } catch (MalformedURLException ignore) {
+ }
+ }
+ }
+ }
+ if (result == null) {
+ // Try to find class definition as a resource
+ final ClassLoader classLoader = classToFind.getClassLoader();
+ result =
+ classLoader != null ? classLoader.getResource(classAsResource) : ClassLoader.getSystemResource(classAsResource);
+ }
+ return result;
+ }
+
+ public static File getFileSystemPath(String entry) {
+ File toReturn = null;
+ URL url = getClassLocation(WordCompareTest.class);
+ if (url != null) {
+ File temp = new File(url.getFile());
+ int cnt = 12;
+ while (!temp.getName().equals("bin") && cnt >= 0) {
+ temp = temp.getParentFile();
+ cnt--;
+ }
+ temp = temp.getParentFile();
+ toReturn = new File(temp.getAbsolutePath() + File.separator + entry);
+ }
+ return toReturn;
+ }
+
+ public static void main(String[] args) {
+
+ try {
+ String diffPath = System.getProperty("user.home") + File.separator + "DiffResults";
+ File baseFile = getFile("Select Base Xml File To Compare");
+ if (!baseFile.exists()) {
+ throw new IllegalStateException("baseFile doesn't exist => " + baseFile);
+ }
+
+ File newerFile = getFile("Select Newer Xml File To Compare");
+ if (!newerFile.exists()) {
+ throw new IllegalStateException("newerFile doesn't exist => " + newerFile);
+ }
+
+ File vbDiffScript = getFileSystemPath("support" + File.separator + "compareDocs.vbs");
+ if (!vbDiffScript.exists()) {
+ throw new IllegalStateException("vbDiffScript doesn't exist => " + vbDiffScript);
+ }
+
+ // quotes are neccessary because of Runtime.exec wraps the last element in quotes...crazy
+ String cmd[] =
+ {
+ "cmd",
+ "/s /c",
+ "\"" + vbDiffScript.getPath() + "\"",
+ "/author:CoolOseeUser\" /diffPath:\"" + diffPath + "\" /detectFormatChanges:true /ver1:\"" + baseFile.getAbsolutePath() + "\" /ver2:\"" + newerFile.getAbsolutePath()};
+
+ Process proc = Runtime.getRuntime().exec(cmd);
+
+ StreamCatcher errorCatcher = new StreamCatcher(proc.getErrorStream(), "ERROR", SkynetGuiPlugin.getLogger());
+ StreamCatcher outputCatcher = new StreamCatcher(proc.getInputStream(), "OUTPUT");
+
+ errorCatcher.start();
+ outputCatcher.start();
+ proc.waitFor();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordRenderer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordRenderer.java
new file mode 100644
index 00000000000..1193d11ed18
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/WordRenderer.java
@@ -0,0 +1,562 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.render;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.xml.namespace.QName;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.type.DoubleKeyHashMap;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.io.streams.StreamCatcher;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.plugin.core.util.ExtensionPoints;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.WordArtifact;
+import org.eclipse.osee.framework.skynet.core.attribute.JavaObjectAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.WordAttribute;
+import org.eclipse.osee.framework.skynet.core.util.WordConverter;
+import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.plugin.util.OseeData;
+import org.eclipse.osee.framework.ui.skynet.ArtifactExplorer;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+import org.eclipse.osee.framework.ui.skynet.render.word.WordTemplateProcessor;
+import org.eclipse.swt.program.Program;
+import org.osgi.framework.Bundle;
+import org.w3c.dom.Element;
+import com.sun.org.apache.xml.internal.serialize.OutputFormat;
+import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
+
+/**
+ * Renders WordML content.
+ *
+ * @author Jeff C. Phillips
+ */
+public class WordRenderer extends FileRenderer {
+ public static final String DEFAULT_SET_NAME = "Default";
+ public static final String ARTIFACT_NAME = "Word Renderer";
+ public static final String TEMPLATE_ATTRIBUTE = "Word Template";
+ public static final String ARTIFACT_SCHEMA = "http://eclipse.org/artifact.xsd";
+ private static final String EMBEDDED_OBJECT_NO = "w:embeddedObjPresent=\"no\"";
+ private static final String EMBEDDED_OBJECT_YES = "w:embeddedObjPresent=\"yes\"";
+ private static final String STYLES_END = "</w:styles>";
+ private static final String OLE_START = "<w:docOleData>";
+ private static final String OLE_END = "</w:docOleData>";
+ private static final OseeUiActivator plugin = SkynetGuiPlugin.getInstance();
+ private static final QName fo = new QName("ns0", "unused_localname", ARTIFACT_SCHEMA);
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(WordRenderer.class);
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final Pattern pattern =
+ Pattern.compile("<v:imagedata[^>]*src=\"wordml://(\\d+\\.\\w+)\"[^>]*>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ // We need MS Word, so look for the program that is for .doc files
+ private static final Program wordApp = Program.findProgram("doc");
+ private WordTemplateProcessor templateProcessor;
+ private final DoubleKeyHashMap<Branch, PresentationType, Artifact> documentMap;
+
+ public WordRenderer() throws TransformerConfigurationException, IOException, TransformerFactoryConfigurationError {
+ templateProcessor = new WordTemplateProcessor();
+ documentMap = new DoubleKeyHashMap<Branch, PresentationType, Artifact>();
+ }
+
+ /**
+ * Creates a difference report for each artifact between baseArtifact and newerArtifact. Then produces a single
+ * report by combining each of the difference reports together for a single report.
+ */
+ public void compareArtifacts(final List<Artifact> baseArtifacts, final List<Artifact> newerArtifact, final String option, IProgressMonitor monitor, final Branch branch) throws CoreException, Exception {
+ if (branch == null) {
+ throw new IllegalArgumentException("Branch can not be null");
+ }
+
+ if ((baseArtifacts == null && baseArtifacts.isEmpty()) || (newerArtifact == null && newerArtifact.isEmpty())) {
+ throw new IllegalArgumentException("Artifact lists can not empty.");
+ }
+
+ if (baseArtifacts.size() != newerArtifact.size()) {
+ throw new IllegalArgumentException(
+ "base artifacts size: " + baseArtifacts.size() + " must match newer artifacts size: " + newerArtifact.size() + ".");
+ }
+
+ Jobs.startJob(new Job("Word Change Report") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ monitor.beginTask("Word Change Report ", newerArtifact.size());
+
+ ArrayList<String> fileNames = new ArrayList<String>(newerArtifact.size());
+ IFolder baseFolder = getRenderFolder(branch, PresentationType.DIFF);
+ IFolder changeReportFolder = OseeData.getFolder(".diff/" + GUID.generateGuidStr());
+ String baseFileStr = null;
+ String fileName = null;
+
+ for (int i = 0; i < newerArtifact.size(); i++) {
+ IFile baseFile =
+ renderToFile(baseFolder, getFilenameFromArtifact(null, PresentationType.DIFF), branch,
+ getRenderInputStream(monitor, baseArtifacts.get(i), option, PresentationType.DIFF),
+ PresentationType.DIFF);
+ IFile newerFile =
+ renderToFile(baseFolder, getFilenameFromArtifact(null, PresentationType.DIFF), branch,
+ getRenderInputStream(monitor, newerArtifact.get(i), option, PresentationType.DIFF),
+ PresentationType.DIFF);
+
+ baseFileStr = changeReportFolder.getLocation().toOSString();
+ fileName = baseFileStr + "/" + GUID.generateGuidStr() + ".xml";
+ fileNames.add(fileName);
+
+ monitor.setTaskName("Processing diff for: " + (newerArtifact.get(i) == null ? baseArtifacts.get(i).getDescriptiveName() : newerArtifact.get(
+ i).getDescriptiveName()));
+ monitor.worked(1);
+
+ // support the cancel feature
+ if (monitor.isCanceled()) {
+ monitor.done();
+ return Status.CANCEL_STATUS;
+ }
+ compare(baseFile, newerFile, fileName, false);
+ }
+ createAggregateArtifactDiffReport(fileNames, baseFileStr, null, monitor);
+ } catch (Exception ex) {
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, Status.OK, ex.getLocalizedMessage(), ex);
+ }
+ return Status.OK_STATUS;
+ }
+ });
+ }
+
+ private void createAggregateArtifactDiffReport(ArrayList<String> fileNames, String baseFileStr, Artifact artifact, IProgressMonitor monitor) {
+ monitor.setTaskName("Writing final document");
+ ArrayList<String> datas = new ArrayList<String>(fileNames.size());
+ int startIndex;
+ int endIndex;
+
+ for (String filename : fileNames) {
+ String data = AFile.readFile(filename);
+ startIndex = data.indexOf("<w:body>") + 8;
+ endIndex = data.indexOf("</w:body>");
+
+ data = data.substring(startIndex, endIndex);
+
+ Matcher m = pattern.matcher(data);
+ while (m.find()) {
+ String name = m.group(1);
+ data = data.replace(name, GUID.generateGuidStr() + name);
+ }
+
+ datas.add(data);
+ }
+
+ String firstFileName = fileNames.get(0);
+ String file = AFile.readFile(firstFileName);
+ datas.remove(0);
+ file = file.replace("</w:body>", Collections.toString("", datas) + "</w:body>");
+
+ if (!file.contains("xmlns:ns2=\"http")) {
+ file = file.replaceAll("ns2", "ns1");
+ }
+
+ if (!file.contains("xmlns:ns1=\"http")) {
+ file = file.replaceAll("ns1", "ns0");
+ }
+
+ String diffFile = baseFileStr + "/" + GUID.generateGuidStr() + "_diff.xml";
+ AFile.writeFile(diffFile, file);
+
+ monitor.done();
+ getAssociatedProgram(artifact).execute(diffFile);
+ }
+
+ @Override
+ public void compare(Artifact baseVersion, Artifact newerVersion, String option, IProgressMonitor monitor) throws Exception {
+ if (baseVersion == null && newerVersion == null) throw new IllegalArgumentException(
+ "baseVersion and newerVersion can't both be null.");
+
+ Branch branch = (baseVersion != null ? baseVersion.getBranch() : newerVersion.getBranch());
+ IFile baseFile;
+ IFile newerFile;
+
+ if (baseVersion != null) {
+ baseFile = renderForDiff(monitor, baseVersion, option);
+ } else {
+ baseFile = renderForDiff(monitor, branch, option);
+ }
+
+ if (newerVersion != null) {
+ newerFile = renderForDiff(monitor, newerVersion, option);
+ } else {
+ newerFile = renderForDiff(monitor, branch, null);
+ }
+
+ String diffPath;
+
+ if (baseVersion != null) {
+ String baseFileStr = baseFile.getLocation().toOSString();
+ diffPath =
+ baseFileStr.substring(0, baseFileStr.lastIndexOf(')')) + " to " + (newerVersion != null ? newerVersion.getPersistenceMemo().getTransactionNumber() : " deleted") + baseFileStr.substring(baseFileStr.lastIndexOf(')'));
+ } else {
+ String baseFileStr = newerFile.getLocation().toOSString();
+ diffPath =
+ baseFileStr.substring(0, baseFileStr.lastIndexOf('(') + 1) + "new " + baseFileStr.substring(baseFileStr.lastIndexOf('(') + 1);
+ }
+
+ compare(baseFile, newerFile, diffPath, true);
+ }
+
+ private void compare(IFile baseFile, IFile newerFile, String diffPath, boolean visible) throws IOException, InterruptedException {
+ File vbDiffScript =
+ visible ? plugin.getPluginFile("support/compareDocs.vbs") : plugin.getPluginFile("support/notVisiblecompareDocs.vbs");
+
+ // quotes are neccessary because of Runtime.exec wraps the last element in quotes...crazy
+ String cmd[] =
+ {
+ "cmd",
+ "/s /c",
+ "\"" + vbDiffScript.getPath() + "\"",
+ "/author:CoolOseeUser\" /diffPath:\"" + diffPath + "\" /detectFormatChanges:true /ver1:\"" + baseFile.getLocation().toOSString() + "\" /ver2:\"" + newerFile.getLocation().toOSString()};
+
+ Process proc = Runtime.getRuntime().exec(cmd);
+
+ StreamCatcher errorCatcher = new StreamCatcher(proc.getErrorStream(), "ERROR", logger);
+ StreamCatcher outputCatcher = new StreamCatcher(proc.getInputStream(), "OUTPUT");
+
+ errorCatcher.start();
+ outputCatcher.start();
+ proc.waitFor();
+ }
+
+ /**
+ * Displays a list of artifacts in the Artifact Explorer that could not be multi edited because they contained
+ * artifacts that had an OLEData attribute.
+ *
+ * @param artifacts
+ */
+ private void displayNotMultiEditArtifacts(final Collection<Artifact> artifacts) {
+ if (!artifacts.isEmpty()) {
+ Displays.ensureInDisplayThread(new Runnable() {
+
+ public void run() {
+ ArtifactExplorer.explore(artifacts);
+ }
+ });
+ }
+ }
+
+ @Override
+ public String generateHtml(Artifact artifact, IProgressMonitor monitor) {
+ String html = null;
+ InputStream xml = null;
+
+ try {
+ xml = getRenderInputStream(monitor, artifact, null, PresentationType.PREVIEW);
+ html = WordConverter.getInstance().toHtml(xml);
+ } catch (java.lang.StackOverflowError error) {
+ logger.log(Level.SEVERE, error.getLocalizedMessage(), error);
+ html = "Stack overflow error caused by recursion in the xslt transform";
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ html = ex.getLocalizedMessage();
+ } finally {
+ try {
+ if (xml != null) {
+ xml.close();
+ }
+ } catch (IOException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ html = ex.getLocalizedMessage();
+ }
+ }
+ return html;
+ }
+
+ public static QName getFoNamespace() {
+ return fo;
+ }
+
+ public static byte[] getFormattedContent(Element formattedItemElement) {
+ ByteArrayOutputStream data = new ByteArrayOutputStream((int) Math.pow(2, 10));
+ OutputFormat format = Jaxp.getCompactFormat(formattedItemElement.getOwnerDocument());
+ format.setOmitDocumentType(true);
+ format.setOmitXMLDeclaration(true);
+ XMLSerializer serializer = new XMLSerializer(data, format);
+
+ try {
+ for (Element e : Jaxp.getChildDirects(formattedItemElement))
+ serializer.serialize(e);
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+
+ return data.toByteArray();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.IRenderer#isValidFor(org.eclipse.osee.framework.skynet.core.artifact.Artifact)
+ */
+ public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) {
+ if (artifact instanceof WordArtifact) {
+ return ARTIFACT_TYPE_MATCH;
+ }
+ return NO_MATCH;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getAssociatedExtension()
+ */
+ @Override
+ public String getAssociatedExtension(Artifact artifact) {
+ return "xml";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getAssociatedProgram()
+ */
+ @Override
+ public Program getAssociatedProgram(Artifact artifact) {
+ return wordApp;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#getEditOptions()
+ */
+ @Override
+ public List<String> getEditOptions() throws Exception {
+ return getTemplateOptions();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.Renderer#getPreviewOptions()
+ */
+ @Override
+ public List<String> getPreviewOptions() throws Exception {
+ return getTemplateOptions();
+ }
+
+ private List<String> getTemplateOptions() throws Exception {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getRenderInputStream(org.eclipse.core.runtime.IProgressMonitor,
+ * org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String,
+ * org.eclipse.osee.framework.ui.skynet.render.PresentationType)
+ */
+ @Override
+ public InputStream getRenderInputStream(IProgressMonitor monitor, Artifact artifact, String option, PresentationType presentationType) throws Exception {
+ ArrayList<Artifact> artifacts = null;
+
+ if (artifact == null) {
+ return getRenderInputStream(monitor, artifacts, option, presentationType);
+ }
+
+ artifacts = new ArrayList<Artifact>(1);
+ artifacts.add(artifact);
+
+ return getRenderInputStream(monitor, artifacts, option, presentationType);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.render.FileRenderer#getRenderInputStream(org.eclipse.core.runtime.IProgressMonitor,
+ * org.eclipse.osee.framework.skynet.core.artifact.Artifact, java.lang.String,
+ * org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer.PresentationType)
+ */
+ @Override
+ public InputStream getRenderInputStream(IProgressMonitor monitor, List<Artifact> artifacts, String option, PresentationType presentationType) throws Exception {
+ final List<Artifact> notMultiEditableArtifacts = new LinkedList<Artifact>();
+ final BlamVariableMap variableMap = new BlamVariableMap();
+ boolean containsNullArtifact = false;
+ String template;
+
+ if (artifacts != null) {
+ for (Artifact artifact : artifacts) {
+ containsNullArtifact = (artifact == null);
+
+ if (containsNullArtifact) {
+ break;
+ }
+ }
+ } else {
+ containsNullArtifact = true;
+ }
+
+ if (!containsNullArtifact) {
+ boolean isSingleEdit = artifacts.size() == 1;
+ Artifact firstArtifact = artifacts.iterator().next();
+ template = getTemplate(firstArtifact, presentationType, option, firstArtifact.getBranch());
+
+ if (isSingleEdit) {
+ if (!firstArtifact.getSoleAttributeValue(WordAttribute.OLE_DATA_NAME).equals("")) {
+ template = template.replaceAll(EMBEDDED_OBJECT_NO, EMBEDDED_OBJECT_YES);
+ template =
+ template.replaceAll(
+ STYLES_END,
+ STYLES_END + OLE_START + firstArtifact.getSoleAttributeValue(WordAttribute.OLE_DATA_NAME) + OLE_END);
+ }
+ } else {
+ for (Artifact artifact : artifacts) {
+ if (!artifact.getSoleAttributeValue(WordAttribute.OLE_DATA_NAME).equals("") && presentationType == PresentationType.EDIT) {
+ notMultiEditableArtifacts.add(artifact);
+ }
+ }
+ displayNotMultiEditArtifacts(notMultiEditableArtifacts);
+ }
+
+ artifacts.removeAll(notMultiEditableArtifacts);
+ } else {
+ // Still need to get a default template with a null artifact list
+ template = getTemplate(null, presentationType, option, branchManager.getCommonBranch());
+ }
+ variableMap.setValue(DEFAULT_SET_NAME, artifacts);
+ return templateProcessor.applyTemplate(variableMap, template, null);
+ }
+
+ @SuppressWarnings("unchecked")
+ private String getTemplate(Artifact artifact, PresentationType presentationType, String option, Branch branch) throws SQLException, IOException, ClassNotFoundException {
+ Artifact document = getDocumentArtifact(presentationType, branch);
+ JavaObjectAttribute javaAttribute =
+ (JavaObjectAttribute) document.getAttributeManager("Template Map").getSoleAttribute();
+ HashMap<String, String> templateMap = (HashMap<String, String>) javaAttribute.getObject();
+ String template = null;
+
+ if (option != null) {
+ template = templateMap.get(option);
+ }
+ if (template == null && artifact != null) {
+ template = templateMap.get(artifact.getArtifactTypeName());
+ }
+
+ if (template == null) {
+ template = templateMap.get("default");
+ if (template == null) {
+ throw new IllegalArgumentException("No default template found on the artifact: " + document);
+ }
+ }
+ return template;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void addTemplate(PresentationType presentationType, String bundleName, String templateName, String templatePath, Branch branch) throws SQLException, IOException, ClassNotFoundException {
+ Artifact document = getDocumentArtifact(presentationType, branch);
+ JavaObjectAttribute javaAttribute =
+ (JavaObjectAttribute) document.getAttributeManager("Template Map").getSoleAttribute();
+ HashMap<String, String> templateMap = (HashMap<String, String>) javaAttribute.getObject();
+ if (templateMap == null) {
+ templateMap = new HashMap<String, String>();
+ }
+
+ addTemplateToMap(templateMap, bundleName, templateName, templatePath);
+
+ javaAttribute.setObject(templateMap);
+ document.persist();
+ }
+
+ private void addTemplateToMap(HashMap<String, String> templateMap, String bundleName, String templateName, String templatePath) throws IOException {
+ Bundle bundle = Platform.getBundle(bundleName);
+ InputStream inputStream = bundle.getEntry(templatePath).openStream();
+ String template = Lib.inputStreamToString(inputStream);
+ templateMap.put(templateName, template);
+ }
+
+ private Artifact getDocumentArtifact(PresentationType presentationType, Branch branch) throws SQLException {
+ Artifact document = documentMap.get(branch, presentationType);
+ if (document == null) {
+ try {
+ document =
+ artifactManager.getArtifactFromTypeName("Document", getId() + " " + presentationType.name(), branch);
+ } catch (IllegalStateException ex) {
+ if (branch == branchManager.getCommonBranch()) {
+ document = null;
+ } else if (branch.getParentBranch() == null) {
+ document = getDocumentArtifact(presentationType, branchManager.getCommonBranch());
+ } else {
+ document = getDocumentArtifact(presentationType, branch.getParentBranch());
+ }
+ }
+
+ documentMap.put(branch, presentationType, document);
+ }
+
+ return document;
+ }
+
+ public void setDefaultTemplates(Artifact document, PresentationType presentationType, Branch branch) throws SQLException, IOException {
+ if (document == null) {
+ document = getDocumentArtifact(presentationType, branch);
+ } else {
+ document.setDescriptiveName("org.eclipse.osee.framework.ui.skynet.word " + presentationType);
+ }
+
+ JavaObjectAttribute javaAttribute =
+ (JavaObjectAttribute) document.getAttributeManager("Template Map").getSoleAttribute();
+ HashMap<String, String> templateMap = new HashMap<String, String>();
+
+ List<IConfigurationElement> elements =
+ ExtensionPoints.getExtensionElements("org.eclipse.osee.framework.ui.skynet.ArtifactRendererTemplate",
+ "Template");
+
+ for (IConfigurationElement element : elements) {
+ String bundleName = element.getContributor().getName();
+ String templateName = element.getAttribute("templateName");
+ String templatePath = element.getAttribute("templateFile");
+
+ addTemplateToMap(templateMap, bundleName, templateName, templatePath);
+ }
+
+ javaAttribute.setObject(templateMap);
+ document.persist();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/IWordMlProducer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/IWordMlProducer.java
new file mode 100644
index 00000000000..cf6deaf6769
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/IWordMlProducer.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render.word;
+
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public interface IWordMlProducer {
+
+ public BlamVariableMap process(BlamVariableMap variableMap) throws Exception;
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/SrsProducer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/SrsProducer.java
new file mode 100644
index 00000000000..349059dfb0f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/SrsProducer.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render.word;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.jdk.core.collection.tree.Tree;
+import org.eclipse.osee.framework.jdk.core.collection.tree.TreeNode;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class SrsProducer implements IWordMlProducer {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(SrsProducer.class);
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+
+ // Some filtering for testing
+ private int dbg_count = 0;
+ private final int DBG_MAX = Integer.MAX_VALUE;
+
+ public SrsProducer() throws SQLException {
+ }
+
+ public BlamVariableMap process(BlamVariableMap variableMap) throws SQLException {
+ if (variableMap == null) throw new IllegalArgumentException("variableMap must not be null");
+ if (variableMap.getValue("Name") == null) throw new IllegalArgumentException(
+ "Argument list does not contain a Name.");
+
+ Branch branch = (Branch) variableMap.getValue("Branch");
+ Artifact root = artifactManager.getDefaultHierarchyRootArtifact(branch);
+ Artifact softwareRequirement = root.getChild("Software Requirements");
+ Artifact crewInterface = softwareRequirement.getChild("Crew Interface");
+ Artifact subsystemManagement = softwareRequirement.getChild("Subsystem Management");
+ Artifact appendices = softwareRequirement.getChild("SRS Appendices");
+
+ Tree<Object> objects = new Tree<Object>();
+ String name = (String) variableMap.getValue("Name");
+
+ // for (String subsystem : SUBSYSTEMS) {
+ try {
+ process(crewInterface, objects, name);
+ process(subsystemManagement, objects, name);
+ process(appendices, objects, name);
+ } catch (IllegalStateException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ // }
+
+ variableMap.setValue("srsProducer.objects", objects);
+ return variableMap;
+ }
+
+ private void process(Artifact parent, Tree<Object> artifacts, String name) throws IllegalStateException, IOException, SQLException {
+ for (Artifact child : parent.getChildren()) {
+ if (child.getDescriptiveName().contains(name)) {
+ TreeNode<Object> parentNode = artifacts.getRoot().addChild(parent);
+ processChildren(parentNode, child, artifacts);
+ }
+ }
+ }
+
+ private void processChildren(TreeNode<Object> parentNode, Artifact artifact, Tree<Object> artifacts) throws IllegalStateException, IOException {
+ if (dbg_count > DBG_MAX) return;
+
+ TreeNode<Object> artifactNode = null;
+ dbg_count++;
+
+ artifactNode = parentNode.addChild(artifact);
+
+ try {
+ for (Artifact child : artifact.getChildren()) {
+ processChildren(artifactNode, child, artifacts);
+ }
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+
+ // private void process(String partition, String subsystem, Artifact parent, Tree<Object>
+ // artifacts) throws IllegalStateException, IOException {
+ // TreeNode parentNode = artifacts.getRoot().addChild(subsystem + " Subsystem");
+ //
+ // try {
+ // for (Artifact child : parent.getChildren()) {
+ // if (child.getSoleAttributeValue("Subsystem").equals(subsystem)) {
+ // processChildren(parentNode, child, partition, subsystem, artifacts);
+ // }
+ // }
+ //
+ // if (parentNode.getChildren().isEmpty()) {
+ // artifacts.getRoot().getChildren().remove(parentNode);
+ // }
+ // }
+ // catch (SQLException ex) {
+ // SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ // }
+ // }
+
+ // private void processChildren(TreeNode<Object> parentNode, Artifact artifact, String partition,
+ // String subsystem,
+ // Tree<Object> artifacts) throws IllegalStateException, IOException {
+ // boolean goodToPublish = artifactOnlyInPartition(artifact, partition);
+ //
+ // if (dbg_count > DBG_MAX)
+ // return;
+ //
+ // TreeNode<Object> artifactNode = null;
+ // if (goodToPublish) {
+ // // DEBUG
+ // dbg_count++;
+ //
+ // artifactNode = parentNode.addChild(artifact);
+ // }
+ //
+ // try {
+ // for (Artifact child : artifact.getChildren()) {
+ // processChildren(goodToPublish ? artifactNode : parentNode, child, partition, subsystem,
+ // artifacts);
+ // }
+ // }
+ // catch (SQLException ex) {
+ // SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ // }
+ // }
+
+ // private boolean artifactOnlyInPartition(Artifact artifact, String partition) throws
+ // IOException {
+ // try {
+ // Collection<Attribute> attributes = artifact.getAttributeManager("Partition").getAttributes();
+ // return attributes.size() == 1 &&
+ // attributes.iterator().next().getStringData().equals(partition);
+ // }
+ // catch (Exception ex) {
+ // // recordError(wordMl, artifact, ex);
+ // return false;
+ // }
+ // }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordMLProducer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordMLProducer.java
new file mode 100644
index 00000000000..d4adf1749d2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordMLProducer.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render.word;
+
+import java.io.IOException;
+import java.nio.charset.CharacterCodingException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.jdk.core.util.xml.Xml;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class WordMLProducer {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(WordMLProducer.class);
+ public static final String RGB_RED = "FF0000";
+ public static final String RGB_GREEN = "00FF00";
+ public static final String RGB_BLUE = "0000FF";
+
+ private static final String FILE_NAME = "fileName";
+ private static final String LISTNUM_FIELD =
+ "<w:pPr><w:rPr><w:vanish/></w:rPr></w:pPr><w:r><w:rPr><w:vanish/></w:rPr><w:fldChar w:fldCharType=\"begin\"/></w:r><w:r><w:rPr><w:vanish/></w:rPr><w:instrText> LISTNUM \"listreset\" \\l 1 \\s 0 </w:instrText></w:r><w:r><w:rPr><w:vanish/></w:rPr><w:fldChar w:fldCharType=\"end\"/><wx:t wx:val=\" .\"/></w:r>";
+ private static final String SUB_DOC =
+ "<wx:sect><w:p><w:pPr><w:sectPr><w:pgSz w:w=\"12240\" w:h=\"15840\"/><w:pgMar w:top=\"1440\" w:right=\"1800\" w:bottom=\"1440\" w:left=\"1800\" w:header=\"720\" w:footer=\"720\" w:gutter=\"0\"/><w:cols w:space=\"720\"/><w:docGrid w:line-pitch=\"360\"/></w:sectPr></w:pPr></w:p><w:subDoc w:link=\"" + FILE_NAME + "\"/></wx:sect><wx:sect><wx:sub-section><w:p><w:pPr><w:pStyle w:val=\"Heading1\"/></w:pPr></w:p><w:sectPr><w:type w:val=\"continuous\"/><w:pgSz w:w=\"12240\" w:h=\"15840\"/><w:pgMar w:top=\"1440\" w:right=\"1800\" w:bottom=\"1440\" w:left=\"1800\" w:header=\"720\" w:footer=\"720\" w:gutter=\"0\"/><w:cols w:space=\"720\"/><w:docGrid w:line-pitch=\"360\"/></w:sectPr></wx:sub-section></wx:sect>";
+ private static final String HYPER_LINK_DOC =
+ "<w:p><w:hlink w:dest=\"fileName\"><w:r wsp:rsidRPr=\"00CE6681\"><w:rPr><w:rStyle w:val=\"Hyperlink\"/></w:rPr><w:t>fileName</w:t></w:r></w:hlink></w:p>";
+ private Appendable strB;
+ private final int[] outlineNumber;
+ private int outlineLevel;
+ private int flattenedLevelCount;
+ private boolean previousPageLandsacpe;
+ private Map<String, Integer> alphabetMap;
+
+ public WordMLProducer(Appendable strB) {
+ this.strB = strB;
+ this.outlineNumber = new int[10]; // word supports 9 levels of outlining; index this array from 1 to 9
+ this.outlineLevel = 0;
+ this.flattenedLevelCount = 0;
+
+ this.alphabetMap = new HashMap<String, Integer>();
+
+ alphabetMap.put("A.0", 1);
+ alphabetMap.put("B.0", 2);
+ alphabetMap.put("C.0", 3);
+ }
+
+ public CharSequence startOutlineSubSection(CharSequence font, CharSequence headingText, String outlineType) throws IOException {
+ if (okToStartSubsection()) {
+ outlineNumber[++outlineLevel]++;
+ CharSequence paragraphNumber = getOutlineNumber();
+ startOutlineSubSection((outlineType != null ? outlineType : "Heading") + outlineLevel, paragraphNumber, font,
+ headingText);
+
+ return paragraphNumber;
+ } else {
+ flattenedLevelCount++;
+ endOutlineSubSection(true);
+ logger.log(Level.WARNING, "Outline level flattened, outline can only go 9 levels deep");
+ // startParagraph();
+ // addTextInsideParagraph("OUTLINE LEVEL FLATTENED: " + headingText, RGB_RED);
+ // endParagraph();
+
+ return startOutlineSubSection(font, headingText, outlineType);
+ }
+ };
+
+ public void startOutlineSubSection(CharSequence style, CharSequence outlineNumber, CharSequence font, CharSequence headingText) throws IOException {
+ strB.append("<wx:sub-section>");
+ strB.append("<w:p><w:pPr><w:pStyle w:val=\"");
+ strB.append(style);
+ strB.append("\"/><w:listPr><wx:t wx:val=\"");
+ strB.append(outlineNumber);
+ strB.append("\" wx:wTabBefore=\"540\" wx:wTabAfter=\"90\"/><wx:font wx:val=\"");
+ strB.append(font);
+ strB.append("\"/></w:listPr></w:pPr><w:r><w:t>");
+ strB.append(Xml.escape(headingText));
+ strB.append("</w:t></w:r></w:p>");
+ }
+
+ public String setHeadingNumbers(String outLineNumber, String template) throws CharacterCodingException {
+ if (outLineNumber == null) {
+ return template;
+ }
+
+ int index = 1;
+ String[] numbers = outLineNumber.split("\\.");
+
+ for (String number : numbers) {
+ template =
+ template.replaceAll("<w:start w:val=\"1\"/><w:pStyle w:val=\"Heading" + index + "\"/>",
+ "<w:start w:val=\"" + number + "\"/><w:pStyle w:val=\"Heading" + index + "\"/>");
+
+ index++;
+ }
+ return template;
+ }
+
+ public String setAppendixStartLetter(char chr, String template) {
+ template =
+ template.replace(
+ "<w:start w:val=\"1\"/><w:nfc w:val=\"3\"/><w:pStyle w:val=\"APPENDIX1\"/>",
+ "<w:start w:val=\"" + (Character.toLowerCase(chr) - 'a' + 1) + "\"/><w:nfc w:val=\"3\"/><w:pStyle w:val=\"APPENDIX1\"/>");
+ return template;
+ }
+
+ public void endOutlineSubSection() throws IOException {
+ endOutlineSubSection(false);
+ }
+
+ private void endOutlineSubSection(boolean force) throws IOException {
+ if (!force && flattenedLevelCount > 0) {
+ flattenedLevelCount--;
+ } else {
+ strB.append("</wx:sub-section>");
+ if (outlineLevel + 1 < outlineNumber.length) outlineNumber[outlineLevel + 1] = 0;
+ outlineLevel--;
+ }
+ }
+
+ public void addWordMl(CharSequence wordMl) throws IOException {
+ strB.append(wordMl);
+ }
+
+ public void startParagraph() throws IOException {
+ strB.append("<w:p>");
+ }
+
+ public void createSubDoc(String fileName) throws IOException {
+ if (fileName == null || fileName.length() == 0) {
+ throw new IllegalArgumentException("The file name can not be null or empty.");
+ }
+
+ strB.append(SUB_DOC.replace(FILE_NAME, fileName));
+ }
+
+ public void createHyperLinkDoc(String fileName) throws IOException {
+ if (fileName == null || fileName.length() == 0) {
+ throw new IllegalArgumentException("The file name can not be null or empty.");
+ }
+
+ strB.append(HYPER_LINK_DOC.replace(FILE_NAME, fileName));
+ }
+
+ public void resetListValue() throws IOException {
+ startParagraph();
+ addWordMl(LISTNUM_FIELD);
+ endParagraph();
+ }
+
+ public void endParagraph() throws IOException {
+ strB.append("</w:p>");
+ }
+
+ public void addParagraph(CharSequence text) throws IOException {
+ strB.append("<w:p><w:r><w:t>");
+ strB.append(Xml.escape(text));
+ strB.append("</w:t></w:r></w:p>");
+ }
+
+ public void addTextInsideParagraph(CharSequence text) throws IOException {
+ strB.append("<w:r><w:t>");
+ strB.append(Xml.escape(text));
+ strB.append("</w:t></w:r>");
+ }
+
+ public void addTextInsideParagraph(CharSequence text, String rgbHexColor) throws IOException {
+ if (rgbHexColor == null) throw new IllegalArgumentException("rgbHexColor can not be null");
+ if (rgbHexColor.length() != 6) throw new IllegalArgumentException(
+ "rgbHexColor should be a hex string 6 characters long");
+
+ strB.append("<w:r><w:rPr><w:color w:val=\"");
+ strB.append(rgbHexColor);
+ strB.append("\"/></w:rPr>");
+ strB.append("<w:t>");
+ strB.append(Xml.escape(text));
+ strB.append("</w:t></w:r>");
+ }
+
+ public void addOleData(CharSequence oleData) throws IOException {
+ strB.append("<w:docOleData>");
+ strB.append(oleData);
+ strB.append("</w:docOleData>");
+ }
+
+ private CharSequence getOutlineNumber() {
+ StringBuilder strB = new StringBuilder();
+ for (int i = 1; i < outlineLevel; i++) {
+ strB.append(String.valueOf(outlineNumber[i]));
+ strB.append('.');
+ }
+ strB.append(String.valueOf(outlineNumber[outlineLevel]));
+ return strB;
+ }
+
+ public boolean okToStartSubsection() {
+ return outlineLevel < 9;
+ }
+
+ /**
+ * @param nextOutlineNumber
+ */
+ public void setNextParagraphNumberTo(String nextOutlineNumber) {
+ String[] nextOutlineNumbers = nextOutlineNumber.split("\\.");
+ Arrays.fill(outlineNumber, 0);
+
+ for (int i = 0; i < nextOutlineNumbers.length; i++) {
+
+ outlineNumber[i + 1] = Integer.parseInt(nextOutlineNumbers[i]);
+ }
+ outlineNumber[nextOutlineNumbers.length]--;
+ outlineLevel = nextOutlineNumbers.length - 1;
+ }
+
+ /**
+ * Sets the page layout to either portrait/landscape depending on the artifacts pageType attribute value. Note: This
+ * call should be done after processing each artifact so if a previous artifact was landscaped the following artifact
+ * would be set back to portrait.
+ */
+ public void setPageLayout(Attribute pageTypeAttr) throws IOException {
+ boolean landscape = (pageTypeAttr != null && pageTypeAttr.getStringData().equals("Landscape"));
+
+ if (landscape || previousPageLandsacpe) {
+ strB.append("<w:p>");
+ strB.append("<w:pPr>");
+ strB.append("<w:sectPr>");
+ strB.append(landscape ? "<w:pgSz w:w=\"15840\" w:h=\"12240\" w:orient=\"landscape\" w:code=\"1\" />" : "<w:pgSz w:w=\"12240\" w:h=\"15840\" w:code=\"1\" />");
+ strB.append("</w:sectPr>");
+ strB.append("</w:pPr>");
+ strB.append("</w:p>");
+
+ previousPageLandsacpe = landscape;
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateManager.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateManager.java
new file mode 100644
index 00000000000..a85b3bb4509
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateManager.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.render.word;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
+import org.eclipse.osee.framework.ui.skynet.render.WordRenderer;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WordTemplateManager {
+
+ public static void addWordTemplates(Branch programBranch) throws Exception {
+ Artifact programRoot =
+ ArtifactPersistenceManager.getInstance().getDefaultHierarchyRootArtifact(programBranch, true);
+
+ ArtifactSubtypeDescriptor descriptor =
+ ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptor("Folder", programBranch);
+ Artifact documentFolder = descriptor.makeNewArtifact();
+ documentFolder.setDescriptiveName("Document Templates");
+ programRoot.addChild(documentFolder);
+
+ createDocumentTemplates(documentFolder,
+ ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptor("Document", programBranch));
+
+ programRoot.persist(true);
+ }
+
+ private static void createDocumentTemplates(Artifact documentFolder, ArtifactSubtypeDescriptor documentDescriptor) throws SQLException, IOException {
+ WordRenderer wordRenderer =
+ (WordRenderer) RendererManager.getInstance().getRendererById("org.eclipse.osee.framework.ui.skynet.word");
+ for (PresentationType presentationType : PresentationType.values()) {
+ Artifact document = documentDescriptor.makeNewArtifact();
+ documentFolder.addChild(document);
+ wordRenderer.setDefaultTemplates(document, presentationType, documentFolder.getBranch());
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateProcessor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateProcessor.java
new file mode 100644
index 00000000000..6edc3e07df7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/word/WordTemplateProcessor.java
@@ -0,0 +1,798 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.render.word;
+
+import static org.eclipse.osee.framework.skynet.core.util.WordUtil.textOnly;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.CharacterCodingException;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.jdk.core.collection.tree.Tree;
+import org.eclipse.osee.framework.jdk.core.collection.tree.TreeNode;
+import org.eclipse.osee.framework.jdk.core.util.io.CharBackedInputStream;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.skynet.core.attribute.WordAttribute;
+import org.eclipse.osee.framework.skynet.core.relation.RelationSide;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.AIFile;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.blam.BlamVariableMap;
+import org.eclipse.osee.framework.ui.skynet.render.WordRenderer;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Robert A. Fisher
+ * @author Ryan D. Brooks
+ */
+public class WordTemplateProcessor {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(WordTemplateProcessor.class);
+ private static final String ARTIFACT = "Artifact";
+ private static final String EXTENSION_PROCESSOR = "Extension_Processor";
+ private static final String KEY = "Key";
+
+ private static final Pattern namePattern =
+ Pattern.compile("<((\\w+:)?(Name))>(.*?)</\\1>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern outlineTypePattern =
+ Pattern.compile("<((\\w+:)?(OutlineType))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern outlineNumberPattern =
+ Pattern.compile("<((\\w+:)?(Number))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern argumentElementsPattern =
+ Pattern.compile("<((\\w+:)?(Argument))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern keyValueElementsPattern =
+ Pattern.compile("<((\\w+:)?(Key|Value))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern subDocElementsPattern =
+ Pattern.compile("<((\\w+:)?(SubDoc))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+
+ private static final Pattern setNamePattern =
+ Pattern.compile("<(\\w+:)?Set_Name>(.*?)</(\\w+:)?Set_Name>", Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern headElementsPattern =
+ Pattern.compile("<((\\w+:)?(" + ARTIFACT + "|" + EXTENSION_PROCESSOR + "))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern attributeElementsPattern =
+ Pattern.compile("<((\\w+:)?(Attribute))>(.*?)</\\3>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern internalAttributeElementsPattern =
+ Pattern.compile("<((\\w+:)?(Label|Outline|Name|Format|Editable))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+
+ private static final Pattern outlineElementsPattern =
+ Pattern.compile("<((\\w+:)?(Outline))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+ private static final Pattern internalOutlineElementsPattern =
+ Pattern.compile("<((\\w+:)?(HeadingAttribute|RecurseChildren|Number))>(.*?)</\\1>",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
+
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+
+ private static final String[] NUMBER =
+ new String[] {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
+
+ private String masterTemplate;
+ private String slaveTemplate;
+ private boolean outlining;
+ private boolean recurseChildren;
+ private String outlineNumber;
+ private RelationSide outlineRelation;
+ private String headingAttributeName;
+ private List<AttributeElement> attributeElements;
+ private boolean updateParagraphNumbers;
+ private Set<Artifact> publishedArtifacts;
+ private boolean saveParagraphNumOnArtifact;
+ private Set<String> ignoreAttributeExtensions;
+
+ public WordTemplateProcessor() {
+ this(null, null);
+ }
+
+ public WordTemplateProcessor(String masterTemplate, String slaveTemplate) {
+ super();
+ this.masterTemplate = masterTemplate;
+ this.slaveTemplate = slaveTemplate;
+ this.attributeElements = new LinkedList<AttributeElement>();
+ this.updateParagraphNumbers = false;
+ this.saveParagraphNumOnArtifact = false;
+ this.publishedArtifacts = new HashSet<Artifact>();
+ this.ignoreAttributeExtensions = new HashSet<String>();
+
+ try {
+ loadIgnoreAttributeExtensions();
+ } catch (CoreException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ /**
+ * Parse through template to find xml defining artifact sets and replace it with the result of publishing those
+ * artifacts
+ *
+ * @throws IOException
+ */
+ public void applyTemplate(IFolder folder, BlamVariableMap variableMap) throws Exception {
+ String fileName = (String) variableMap.getValue("MasterFileName");
+ if (fileName == null) {
+ fileName = "new file " + (new Date().toString().replaceAll(":", ";"));
+ }
+ AIFile.writeToFile(folder.getFile(fileName + ".xml"), applyTemplate(variableMap, masterTemplate, folder, null,
+ null));
+ }
+
+ /**
+ * Parse through template to find xml defining artifact sets and replace it with the result of publishing those
+ * artifacts
+ *
+ * @throws IOException
+ */
+ private InputStream applyTemplate(BlamVariableMap variableMap, String template, IFolder folder, String nextParagraphNumber, String outlineType) throws Exception {
+ CharBackedInputStream charBak = new CharBackedInputStream();
+ WordMLProducer wordMl = new WordMLProducer(charBak);
+ Matcher matcher = headElementsPattern.matcher(template);
+ int lastEndIndex = 0;
+
+ handleSettingParagraphNumbers(variableMap, template, outlineType, nextParagraphNumber, wordMl);
+
+ while (matcher.find()) {
+ // Write the part of the template between the elements
+ wordMl.addWordMl(template.substring(lastEndIndex, matcher.start()));
+
+ lastEndIndex = matcher.end();
+ String elementType = matcher.group(3);
+ String elementValue = matcher.group(4);
+
+ if (elementType.equals(ARTIFACT)) {
+ extractOutliningOptions(elementValue);
+ processArtifactSet(elementValue, variableMap, wordMl, outlineType);
+ } else if (elementType.equals(EXTENSION_PROCESSOR)) {
+ processExtensionTemplate(elementValue, variableMap, folder, wordMl);
+ } else {
+ throw new IllegalArgumentException("Invalid input: " + elementType);
+ }
+ }
+ // Write out the last of the template
+ wordMl.addWordMl(template.substring(lastEndIndex));
+ return charBak;
+ }
+
+ /**
+ * Parse through a template to find XML defining artifact sets and replace it with the result of publishing those
+ * artifacts, it will also assign the artifacts paragraph number to the starting heading numbers in publishing.
+ *
+ * @throws Exception
+ */
+ public InputStream applyTemplate(BlamVariableMap variableMap, String template, String outlineType) throws Exception {
+ CharBackedInputStream charBak = new CharBackedInputStream();
+ WordMLProducer wordMl = new WordMLProducer(charBak);
+ int lastEndIndex = 0;
+
+ outlineNumber = peekAtFirstArtifactToGetParagraphNumber(template, null, variableMap);
+ //modifications to the template must be done before the matcher
+ template = wordMl.setHeadingNumbers(outlineNumber, template);
+
+ Matcher matcher = headElementsPattern.matcher(template);
+
+ while (matcher.find()) {
+ int tempLastEndIndex = matcher.end();
+ String elementType = matcher.group(3);
+ String elementValue = matcher.group(4);
+
+ if (elementType.equals(ARTIFACT)) {
+ extractOutliningOptions(elementValue);
+
+ //Write the part of the template between the elements
+ wordMl.addWordMl(template.substring(lastEndIndex, matcher.start()));
+ processArtifactSet(elementValue, variableMap, wordMl, outlineType);
+ lastEndIndex = tempLastEndIndex;
+ } else {
+ throw new IllegalArgumentException("Invalid input: " + elementType);
+ }
+ }
+ // Write out the last of the template
+ wordMl.addWordMl(template.substring(lastEndIndex));
+ return charBak;
+ }
+
+ private String handleSettingParagraphNumbers(BlamVariableMap variableMap, String template, String outlineType, String nextParagraphNumber, WordMLProducer wordMl) throws CharacterCodingException {
+ boolean appendixOutlineType = outlineType != null && outlineType.equalsIgnoreCase("APPENDIX");
+
+ if (appendixOutlineType) {
+ // Example of appendix number: A.0
+ char[] chars = nextParagraphNumber.toCharArray();
+ template = wordMl.setAppendixStartLetter(chars[0], template);
+ } else {
+ template = wordMl.setHeadingNumbers(nextParagraphNumber, template);
+ }
+
+ if (nextParagraphNumber != null && !appendixOutlineType) {
+ wordMl.setNextParagraphNumberTo(nextParagraphNumber);
+ }
+ return nextParagraphNumber;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected String peekAtFirstArtifactToGetParagraphNumber(String template, String nextParagraphNumber, BlamVariableMap variableMap) {
+ String startParagraphNumber = "1";
+ Matcher matcher = headElementsPattern.matcher(template);
+
+ if (matcher.find()) {
+ String elementType = matcher.group(3);
+ String elementValue = matcher.group(4);
+
+ if (elementType.equals(ARTIFACT)) {
+ Matcher setNameMatcher = setNamePattern.matcher(elementValue);
+ setNameMatcher.find();
+ final String artifactSetName = textOnly(setNameMatcher.group(2));
+
+ Object object = variableMap.getValue(artifactSetName);
+
+ if (object instanceof Collection) {
+ Collection<Artifact> artifacts = (Collection<Artifact>) object;
+
+ if (!artifacts.isEmpty()) {
+ Artifact artifact = artifacts.iterator().next();
+
+ if (!artifact.getSoleAttributeValue("Imported Paragraph Number").equals("")) {
+ startParagraphNumber = artifact.getSoleAttributeValue("Imported Paragraph Number");
+ }
+ }
+
+ }
+ }
+ }
+ return startParagraphNumber;
+ }
+
+ protected void processTreeObjects(String artifactElement, final Tree<Object> tree, final WordMLProducer wordMl, final String outlineType) throws Exception {
+ if (artifactElement != null && tree != null) {
+ // extract Artifact set options
+ Matcher setNameMatcher = setNamePattern.matcher(artifactElement);
+ setNameMatcher.find();
+
+ extractOutliningOptions(artifactElement);
+
+ attributeElements.clear();
+ extractSkynetAttributeReferences(getArtifactSetXml(artifactElement));
+
+ if (updateParagraphNumbers) {
+ AbstractSkynetTxTemplate artifactProcessTx =
+ new AbstractSkynetTxTemplate(branchManager.getDefaultBranch()) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ processTreeHelper(tree, wordMl, outlineType);
+ }
+ };
+ artifactProcessTx.execute();
+ } else {
+ processTreeHelper(tree, wordMl, outlineType);
+ }
+ }
+ }
+
+ private void processTreeHelper(Tree<Object> tree, WordMLProducer wordMl, String outlineType) throws IOException, SQLException {
+ for (TreeNode<Object> treeNode : tree.getRoot().getChildren()) {
+
+ if (treeNode.getSelf() instanceof Artifact) {
+ Artifact artifact = (Artifact) treeNode.getSelf();
+
+ processObject(artifact, wordMl, true, outlineType);
+ } else if (treeNode.getSelf() instanceof String) {
+ // process String
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void processArtifactSet(final String artifactElement, final BlamVariableMap variableMap, final WordMLProducer wordMl, final String outlineType) throws Exception {
+ if (artifactElement != null && variableMap != null) {
+ // extract Artifact set options
+ Matcher setNameMatcher = setNamePattern.matcher(artifactElement);
+ setNameMatcher.find();
+ final String artifactSetName = textOnly(setNameMatcher.group(2));
+
+ if (outlineNumber != null) {
+ wordMl.setNextParagraphNumberTo(outlineNumber);
+ }
+
+ attributeElements.clear();
+ extractSkynetAttributeReferences(getArtifactSetXml(artifactElement));
+
+ if (updateParagraphNumbers) {
+ AbstractSkynetTxTemplate processArtTx = new AbstractSkynetTxTemplate(branchManager.getDefaultBranch()) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ processArtifactSetHelper(artifactSetName, variableMap, wordMl, outlineType);
+ }
+ };
+ processArtTx.execute();
+ } else {
+ processArtifactSetHelper(artifactSetName, variableMap, wordMl, outlineType);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void processArtifactSetHelper(String artifactSetName, BlamVariableMap variableMap, WordMLProducer wordMl, String outlineType) throws IOException, SQLException {
+ Object object = variableMap.getValue(artifactSetName);
+
+ if (object instanceof Tree) {
+ Tree<Object> tree = (Tree<Object>) object;
+
+ for (TreeNode<Object> node : tree.getRoot().getChildren()) {
+
+ processObject(node, wordMl, false, outlineType);
+ }
+ } else if (object instanceof Collection) {
+ Collection<Artifact> artifacts = (Collection<Artifact>) object;
+
+ for (Artifact artifact : artifacts) {
+ if (artifact != null) {
+ processObject(artifact, wordMl, true, outlineType);
+ } else {
+ wordMl.startOutlineSubSection("Times New Roman", " ", outlineType);
+ wordMl.endOutlineSubSection();
+ }
+ }
+ }
+ }
+
+ private void processExtensionTemplate(String elementValue, BlamVariableMap variableMap, IFolder folder, WordMLProducer wordMl) throws Exception {
+ String extensionName;
+ String subdocumentName = null;
+ boolean doSubDocuments = false;
+ String nextParagraphNumber = null;
+ String outlineType = null;
+
+ Matcher matcher = outlineNumberPattern.matcher(elementValue);
+ if (matcher.find()) {
+ nextParagraphNumber = textOnly(matcher.group(4));
+ }
+
+ matcher = outlineTypePattern.matcher(elementValue);
+ if (matcher.find()) {
+ outlineType = textOnly(matcher.group(4));
+ }
+
+ matcher = namePattern.matcher(elementValue);
+ if (matcher.find()) {
+ extensionName = textOnly(matcher.group(4));
+ } else {
+ throw new IllegalArgumentException("Schema must contain an extension name.");
+ }
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtension extension =
+ registry.getExtension("org.eclipse.osee.framework.ui.skynet.WordMlProducer", extensionName);
+
+ if (extension != null) {
+ matcher = subDocElementsPattern.matcher(elementValue);
+
+ if (matcher.find()) {
+ subdocumentName = textOnly(matcher.group(4));
+ doSubDocuments = true;
+ }
+
+ IConfigurationElement[] configElements = null;
+ configElements = extension.getConfigurationElements();
+ for (int j = 0; j < configElements.length; j++) {
+ IWordMlProducer producer = (IWordMlProducer) configElements[j].createExecutableExtension("class");
+
+ matcher = argumentElementsPattern.matcher(elementValue);
+
+ BlamVariableMap newVariableMap = doSubDocuments ? new BlamVariableMap() : null;
+
+ while (matcher.find()) {
+ matcher = keyValueElementsPattern.matcher(matcher.group(4));
+
+ String key = null;
+ while (matcher.find()) {
+ String type = textOnly(matcher.group(3));
+
+ if (type.equalsIgnoreCase(KEY)) {
+ key = textOnly(matcher.group(4));
+ } else {
+ String value = textOnly(matcher.group(4));
+
+ if (doSubDocuments) {
+ newVariableMap.setValue(key, value);
+ } else {
+ variableMap.setValue(key, value);
+ }
+ }
+ }
+ }
+
+ if (doSubDocuments) {
+ newVariableMap.setValue("Branch", variableMap.getValue("Branch"));
+ String subDocFileName = subdocumentName + ".xml";
+ producer.process(newVariableMap);
+ AIFile.writeToFile(folder.getFile(subDocFileName), applyTemplate(newVariableMap, slaveTemplate, folder,
+ nextParagraphNumber, outlineType));
+
+ wordMl.createHyperLinkDoc(subDocFileName);
+ // wordMl.createSubDoc(subDocFileName);
+ } else {
+ producer.process(variableMap);
+ }
+ }
+ }
+ }
+
+ private void extractOutliningOptions(String artifactElement) {
+ Matcher matcher = outlineElementsPattern.matcher(artifactElement);
+
+ if (matcher.find()) {
+ matcher = internalOutlineElementsPattern.matcher(matcher.group(4));
+ outlining = true;
+
+ // Default values for optional/unspecified parameters
+ recurseChildren = false;
+ outlineRelation = RelationSide.DEFAULT_HIERARCHICAL__CHILD;
+ // outlineNumber = null;
+
+ while (matcher.find()) {
+ String elementType = matcher.group(3);
+ String value = textOnly(matcher.group(4));
+
+ if (elementType.equals("HeadingAttribute")) {
+ headingAttributeName = value;
+ } else if (elementType.equals("RecurseChildren")) {
+ recurseChildren = Boolean.parseBoolean(value);
+ } else if (elementType.equals("Number")) {
+ outlineNumber = value;
+ }
+ }
+ } else {
+ outlining = false;
+ recurseChildren = false;
+ outlineRelation = null;
+ headingAttributeName = null;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void processObject(Object object, WordMLProducer wordMl, boolean publishParent, String outlineType) throws IOException, SQLException {
+ Artifact artifact = null;
+ TreeNode treeNode = null;
+ String stringData = null;
+
+ if (object instanceof TreeNode) {
+ treeNode = (TreeNode) object;
+
+ Object self = treeNode.getSelf();
+ if (self instanceof Artifact) {
+ artifact = (Artifact) self;
+ } else if (self instanceof String) {
+ stringData = (String) self;
+ } else {
+ throw new IllegalArgumentException("TreeNode self data must be of type Artifact or String");
+ }
+ } else if (object instanceof Artifact) {
+ artifact = (Artifact) object;
+ } else {
+ throw new IllegalArgumentException("The Object must be of type Artifact or a TreeNode");
+ }
+
+ if (stringData != null) {
+ processObjectString(wordMl, stringData, treeNode, outlineType);
+ } else {
+ processObjectArtifact(artifact, wordMl, treeNode, publishParent, outlineType);
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private void processObjectString(WordMLProducer wordMl, String stringData, TreeNode treeNode, String outlineType) throws IOException, SQLException {
+ wordMl.startOutlineSubSection("Times New Roman", stringData, outlineType);
+
+ try {
+ for (Object childNode : treeNode.getChildren()) {
+ processObject(childNode, wordMl, true, outlineType);
+ }
+ } finally {
+ wordMl.endOutlineSubSection();
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void processObjectArtifact(Artifact artifact, WordMLProducer wordMl, TreeNode treeNode, boolean publishParent, String outlineType) throws IOException, SQLException {
+ publishedArtifacts.add(artifact);
+ boolean performedOutLining = false;
+
+ if (publishParent) {
+ if (outlining) {
+ performedOutLining = true;
+ String headingText = artifact.getSoleAttributeValue(headingAttributeName);
+ CharSequence paragraphNumber = wordMl.startOutlineSubSection("Times New Roman", headingText, outlineType);
+
+ if (paragraphNumber != null && saveParagraphNumOnArtifact && !artifact.getSoleAttributeValue(
+ "Imported Paragraph Number").equals("")) {
+ artifact.setAttribute("Imported Paragraph Number", paragraphNumber.toString());
+
+ try {
+ artifact.persist();
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ }
+ processAttributes(artifact, wordMl);
+ }
+
+ try {
+ if (performedOutLining || !publishParent) {
+ if (treeNode == null && recurseChildren) {
+
+ for (Artifact childArtifact : artifact.getArtifacts(outlineRelation)) {
+ processObject(childArtifact, wordMl, true, outlineType);
+ }
+ } else if (treeNode != null) {
+ for (Object childNode : treeNode.getChildren()) {
+ processObject(childNode, wordMl, true, outlineType);
+ }
+ }
+
+ if (performedOutLining) wordMl.endOutlineSubSection();
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ private void processAttributes(Artifact artifact, WordMLProducer wordMl) throws IOException, SQLException {
+ for (AttributeElement attributeElement : attributeElements) {
+ String attributeName = attributeElement.getAttributeName();
+
+ if (attributeElement.getAttributeName().equals("*")) {
+ try {
+ for (DynamicAttributeManager attributeManager : artifact.getAttributes()) {
+ processAttribute(artifact, wordMl, attributeElement, attributeManager.getDescriptor().getName(), true);
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ } else {
+ processAttribute(artifact, wordMl, attributeElement, attributeName, false);
+ }
+ }
+ Attribute pageTypeAttr = null;
+
+ try {
+ pageTypeAttr = artifact.getAttributeManager("Page Type").getSoleAttribute();
+ } catch (IllegalStateException ex) {
+ }
+ wordMl.setPageLayout(pageTypeAttr);
+ }
+
+ private void processAttribute(Artifact artifact, WordMLProducer wordMl, AttributeElement attributeElement, String attributeName, boolean allAttrs) throws IOException, SQLException {
+ String format = attributeElement.getFormat();
+
+ try {
+ artifact.getAttributeManager(attributeName);
+ } catch (IllegalStateException ex) {
+ return;
+ }
+
+ // This is for SRS Publishing
+ if (!allAttrs && (attributeName.equals("Partition") || attributeName.equals("Safety Criticality"))) {
+ for (Attribute partition : artifact.getAttributeManager("Partition").getAttributes()) {
+ if (partition.getStringData().equals("Unspecified")) {
+ return;
+ }
+ }
+ }
+
+ for (Attribute attribute : artifact.getAttributeManager(attributeName).getAttributes()) {
+ // check if the attribute descriptor name is in the ignore list.
+ if (ignoreAttributeExtensions.contains(attribute.getManager().getDescriptor().getName())) {
+ continue;
+ }
+
+ if (attributeName.equals(WordAttribute.CONTENT_NAME)) {
+ if (attributeElement.label.length() > 0) {
+ wordMl.addParagraph(attributeElement.label);
+ }
+
+ if (true) {
+ DynamicAttributeDescriptor attributeDescriptor = attribute.getManager().getDescriptor();
+ writeXMLMetaDataWrapper(wordMl, elementNameFor(attributeDescriptor.getName()),
+ "ns0:guid=\"" + artifact.getGuid() + "\"",
+ "ns0:attrId=\"" + attributeDescriptor.getAttrTypeId() + "\"", attribute.getStringData());
+ } else {
+ wordMl.addWordMl(attribute.getStringData());
+ }
+ wordMl.resetListValue();
+ } else {
+ wordMl.startParagraph();
+ // assumption: the label is of the form <w:r><w:t> text </w:t></w:r>
+ if (allAttrs) {
+ wordMl.addWordMl("<w:r><w:t> " + attributeName + ": </w:t></w:r>");
+ } else {
+ wordMl.addWordMl(attributeElement.label);
+ }
+
+ if (attributeElement.format.contains(">x<")) {
+ wordMl.addWordMl(format.replace(">x<", ">" + attribute.getStringData() + "<"));
+ } else {
+ wordMl.addTextInsideParagraph(attribute.getStringData());
+ }
+ wordMl.endParagraph();
+ }
+ }
+ }
+
+ public static String elementNameFor(String artifactName) {
+ // Since artifact names are free text it is important to reformat the name
+ // to ensure it is suitable as an element name
+ // NOTE: The current program.launch has a tokenizing bug that causes an error if consecutive
+ // spaces are in the name
+ String elementName = artifactName.trim().replaceAll("[^A-Za-z0-9]", "_");
+
+ // Ensure the name did not end up empty
+ if (elementName.equals("")) elementName = "nameless";
+
+ // Fix the first character if it is a number by replacing it with its name
+ char firstChar = elementName.charAt(0);
+ if (firstChar >= '0' && firstChar <= '9') {
+ elementName = NUMBER[firstChar - '0'] + elementName.substring(1);
+ }
+
+ return elementName;
+ }
+
+ private static void writeXMLMetaDataWrapper(WordMLProducer wordMl, String name, String guid, String attributeId, String contentString) {
+ try {
+ wordMl.addWordMl("<ns0:" + name + " xmlns:ns0=\"" + WordRenderer.ARTIFACT_SCHEMA + "\" " + guid + " " + attributeId + ">");
+ wordMl.addWordMl(contentString);
+ wordMl.addWordMl("</ns0:" + name + ">");
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Returns the set of keys necessary for the template
+ */
+ @SuppressWarnings("unchecked")
+ public Set<String> getTemplateKeys() {
+ Set<String> keySet;
+ keySet = new HashSet<String>();
+
+ Matcher matcher = setNamePattern.matcher(masterTemplate);
+ while (matcher.find()) {
+ String key = textOnly(matcher.group(2));
+ if (!keySet.add(key)) {
+ logger.log(Level.WARNING, "The Set_Name " + key + " appears in template more than once");
+ }
+ }
+
+ return keySet;
+ }
+
+ private String getArtifactSetXml(String artifactElement) {
+ artifactElement = artifactElement.replaceAll("<(\\w+:)?Artifact/?>", "");
+ artifactElement = artifactElement.replaceAll("<(\\w+:)?Set_Name>.*?</(\\w+:)?Set_Name>", "");
+
+ return artifactElement;
+ }
+
+ private void extractSkynetAttributeReferences(String artifactElementTemplate) {
+ Matcher matcher = attributeElementsPattern.matcher(artifactElementTemplate);
+
+ while (matcher.find()) {
+ attributeElements.add(new AttributeElement(matcher.group(4)));
+ }
+ }
+
+ private static class AttributeElement {
+ private String outlineNumber;
+ private String label;
+ private String attributeName;
+ private String format;
+
+ public AttributeElement(String element) {
+ Matcher matcher = internalAttributeElementsPattern.matcher(element);
+
+ this.outlineNumber = "";
+ this.label = "";
+ this.attributeName = "";
+ this.format = "";
+
+ while (matcher.find()) {
+ String elementType = matcher.group(3);
+ String value = matcher.group(4).trim();
+ if (elementType.equals("Outline")) {
+ value = textOnly(value);
+ if (value.length() > 0) {
+ outlineNumber = value;
+ } else {
+ outlineNumber = "1.0";
+ }
+ } else if (elementType.equals("Label")) {
+ label = value;
+ } else if (elementType.equals("Name")) {
+ attributeName = textOnly(value);
+ } else if (elementType.equals("Format")) {
+ format = value;
+ } else {
+ logger.log(Level.WARNING, "Unexpected element read in Attribute:" + elementType);
+ }
+ }
+ }
+
+ public String getAttributeName() {
+ return attributeName;
+ }
+
+ public String getFormat() {
+ return format;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public String getOutlineNumber() {
+ return outlineNumber;
+ }
+ }
+
+ /**
+ * @return Returns the slaveTemplate.
+ */
+ public String getSlaveTemplate() {
+ return slaveTemplate;
+ }
+
+ private void loadIgnoreAttributeExtensions() throws CoreException {
+ IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
+ if (extensionRegistry != null) {
+ IExtensionPoint point =
+ extensionRegistry.getExtensionPoint("org.eclipse.osee.framework.ui.skynet.IgnorePublishAttribute");
+ if (point != null) {
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ for (IConfigurationElement element : elements) {
+ ignoreAttributeExtensions.add(element.getAttribute("name"));
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchQuery.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchQuery.java
new file mode 100644
index 00000000000..154e04a6cab
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchQuery.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.util.Collection;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.search.ui.ISearchQuery;
+import org.eclipse.search.ui.ISearchResult;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.search.ui.text.Match;
+
+public abstract class AbstractArtifactSearchQuery implements ISearchQuery {
+ protected ArtifactSearchResult aResult;
+ protected int numberOfMatches;
+ private boolean doneRunning;
+
+ public boolean canRunInBackground() {
+ return true;
+ }
+
+ public IStatus run(final IProgressMonitor pm) {
+ doneRunning = false;
+ aResult.removeAll();
+ numberOfMatches = 0;
+
+ try {
+ for (Artifact artifact : getArtifacts()) {
+ Match match = new Match(artifact, 1, 2);
+ aResult.addMatch(match);
+
+ numberOfMatches++;
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(getClass(), ex, true);
+ }
+
+ doneRunning = true;
+ return new MultiStatus(NewSearchUI.PLUGIN_ID, IStatus.OK, "OK", null);
+ }
+
+ public abstract Collection<Artifact> getArtifacts() throws Exception;
+
+ public String getLabel() {
+ return "Artifact Search";
+ }
+
+ public String getResultLabel() {
+ return getCriteriaLabel() + " - " + (doneRunning ? (numberOfMatches + " matches") : "busy");
+ }
+
+ public abstract String getCriteriaLabel();
+
+ public boolean canRerun() {
+ return true;
+ }
+
+ public ISearchResult getSearchResult() {
+ if (aResult == null) {
+ aResult = new ArtifactSearchResult(this);
+ }
+ return aResult;
+ }
+
+ public abstract boolean showBranch();
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchResult.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchResult.java
new file mode 100644
index 00000000000..291f18433f5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchResult.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.search.ui.ISearchResult;
+import org.eclipse.search.ui.ISearchResultListener;
+import org.eclipse.search.ui.SearchResultEvent;
+import org.eclipse.search.ui.text.Match;
+import org.eclipse.search.ui.text.MatchEvent;
+import org.eclipse.search.ui.text.RemoveAllEvent;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public abstract class AbstractArtifactSearchResult implements ISearchResult {
+
+ private ArrayList<Match> aMatches;
+ private Map<Artifact, Match> artifacts;
+ private ArrayList<ISearchResultListener> aListeners;
+ private MatchEvent aMatchEvent;
+
+ /**
+ * Constructs a new <code>AbstractTextSearchResult</code>
+ */
+ protected AbstractArtifactSearchResult() {
+ this.aMatches = new ArrayList<Match>();
+ this.aListeners = new ArrayList<ISearchResultListener>();
+ this.aMatchEvent = new MatchEvent(this);
+ this.artifacts = new HashMap<Artifact, Match>();
+
+ }
+
+ /**
+ * Returns an array with all matches reported against the given element.
+ *
+ * @param element the element to report matches for
+ * @return all matches reported for this element
+ * @see Match#getElement()
+ */
+ public Match getMatch(Object element) {
+ synchronized (aMatches) {
+ return aMatches.get(aMatches.indexOf(element));
+ }
+ }
+
+ /**
+ * Adds a <code>Match</code> to this search result. This method does nothing if the match is already present.
+ * <p>
+ * Subclasses may extend this method.
+ * </p>
+ *
+ * @param match the match to add
+ */
+ public void addMatch(Match match) {
+ boolean hasAdded = false;
+ synchronized (aMatches) {
+ hasAdded = doAddMatch(match);
+ }
+ if (hasAdded) fireChange(getSearchResultEvent(match, MatchEvent.ADDED));
+ }
+
+ /**
+ * Adds a number of Matches to this search result. This method does nothing for matches that are already present.
+ * <p>
+ * Subclasses may extend this method.
+ * </p>
+ *
+ * @param matches the matches to add
+ */
+ public void addMatches(Match[] matches) {
+ Collection<Match> reallyAdded = new ArrayList<Match>();
+ synchronized (aMatches) {
+ for (int i = 0; i < matches.length; i++) {
+ if (doAddMatch(matches[i])) reallyAdded.add(matches[i]);
+ }
+ }
+ if (!reallyAdded.isEmpty()) fireChange(getSearchResultEvent(reallyAdded, MatchEvent.ADDED));
+ }
+
+ private MatchEvent getSearchResultEvent(Match match, int eventKind) {
+ return aMatchEvent;
+ }
+
+ private MatchEvent getSearchResultEvent(Collection<Match> matches, int eventKind) {
+ return aMatchEvent;
+ }
+
+ private boolean doAddMatch(Match match) {
+ aMatches.add(match);
+ artifacts.put((Artifact) match.getElement(), match);
+ return true;
+
+ }
+
+ /**
+ * Removes all matches from this search result.
+ * <p>
+ * Subclasses may extend this method.
+ * </p>
+ */
+ public void removeAll() {
+ synchronized (aMatches) {
+ doRemoveAll();
+ }
+ fireChange(new RemoveAllEvent(this));
+ }
+
+ private void doRemoveAll() {
+ aMatches.clear();
+ }
+
+ /**
+ * Removes the given match from this search result. This method has no effect if the match is not found.
+ * <p>
+ * Subclasses may extend this method.
+ * </p>
+ *
+ * @param match the match to remove
+ */
+ public void removeMatch(Match match) {
+ boolean existed = false;
+ synchronized (aMatches) {
+ existed = doRemoveMatch(match);
+ }
+ if (existed) {
+ artifacts.remove(match.getElement());
+ fireChange(getSearchResultEvent(match, MatchEvent.REMOVED));
+ }
+ }
+
+ /**
+ * Removes the given matches from this search result. This method has no effect for matches that are not found
+ * <p>
+ * Subclasses may extend this method.
+ * </p>
+ *
+ * @param matches the matches to remove
+ */
+ public void removeMatches(Match[] matches) {
+ Collection<Match> existing = new ArrayList<Match>();
+ synchronized (aMatches) {
+ for (int i = 0; i < matches.length; i++) {
+ if (doRemoveMatch(matches[i])) existing.add(matches[i]); // no duplicate matches at this point
+ }
+ }
+ if (!existing.isEmpty()) fireChange(getSearchResultEvent(existing, MatchEvent.REMOVED));
+ }
+
+ private boolean doRemoveMatch(Match match) {
+ boolean existed = false;
+ int matchIndex = aMatches.indexOf(match);
+
+ if (matchIndex >= 0) {
+ Match indexMatch = aMatches.get(matchIndex);
+ if (indexMatch != null) {
+ existed = aMatches.remove(match);
+ }
+ }
+ return existed;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addListener(ISearchResultListener l) {
+ if (l == null) throw new IllegalArgumentException("Can not have a null listener");
+ synchronized (aListeners) {
+ aListeners.add(l);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void removeListener(ISearchResultListener l) {
+ synchronized (aListeners) {
+ aListeners.remove(l);
+ }
+ }
+
+ /**
+ * Send the given <code>SearchResultEvent</code> to all registered search result listeners.
+ *
+ * @param e the event to be sent
+ * @see ISearchResultListener
+ */
+ protected void fireChange(SearchResultEvent e) {
+ ArrayList<ISearchResultListener> copiedListeners = new ArrayList<ISearchResultListener>();
+ synchronized (aListeners) {
+ copiedListeners.addAll(aListeners);
+ }
+ Iterator<?> listeners = copiedListeners.iterator();
+ while (listeners.hasNext()) {
+ ((ISearchResultListener) listeners.next()).searchResultChanged(e);
+ }
+ }
+
+ /**
+ * Returns the total number of matches contained in this search result.
+ *
+ * @return total number of matches
+ */
+ public int getMatchCount() {
+ return aMatches.size();
+ }
+
+ /**
+ * Returns an array containing the set of all elements that matches are reported against in this search result.
+ *
+ * @return the set of elements in this search result
+ */
+ public Object[] getElements() {
+ synchronized (aMatches) {
+ return aMatches.toArray();
+ }
+ }
+
+ public List<Artifact> getArtifactResults() {
+ synchronized (aMatches) {
+ ArrayList<Artifact> artifacts = new ArrayList<Artifact>(aMatches.size());
+ for (Match match : aMatches) {
+ artifacts.add((Artifact) match.getElement());
+ }
+ return artifacts;
+ }
+ }
+
+ /**
+ * Removes the children artifacts from the search
+ *
+ * @param children
+ */
+ public void removeArtifacts(Collection<Artifact> children) {
+ for (Artifact artifact : children) {
+ Match match = artifacts.get(artifact);
+ removeMatch(match);
+ artifacts.remove(artifact);
+
+ try {
+ // remove all of its children
+ removeArtifacts(artifact.getChildren());
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchViewPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchViewPage.java
new file mode 100644
index 00000000000..a6b86ca89ec
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AbstractArtifactSearchViewPage.java
@@ -0,0 +1,378 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Set;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.ui.plugin.util.SelectionCountChangeListener;
+import org.eclipse.search.ui.IQueryListener;
+import org.eclipse.search.ui.ISearchQuery;
+import org.eclipse.search.ui.ISearchResult;
+import org.eclipse.search.ui.ISearchResultPage;
+import org.eclipse.search.ui.ISearchResultViewPart;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.search.ui.text.AbstractTextSearchViewPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.Page;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.progress.UIJob;
+
+public abstract class AbstractArtifactSearchViewPage extends Page implements ISearchResultPage {
+
+ private class UpdateUIJob extends UIJob {
+
+ public UpdateUIJob() {
+ super("Error in running search criteria");
+ setSystem(true);
+ }
+
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ Control control = getControl();
+ if (control == null || control.isDisposed()) {
+ // disposed the control while the UI was posted.
+ return Status.OK_STATUS;
+ }
+ runBatchedUpdates();
+ if (hasMoreUpdates() || isQueryRunning()) {
+ schedule(500);
+ } else {
+ aIsUIUpdateScheduled = false;
+ turnOnDecoration();
+ }
+ aViewPart.updateLabel();
+ return Status.OK_STATUS;
+ }
+
+ /*
+ * Undocumented for testing only. Used to find UpdateUIJobs.
+ */
+ public boolean belongsTo(Object family) {
+ return family == AbstractArtifactSearchViewPage.this;
+ }
+
+ }
+
+ private class SelectionProviderAdapter implements ISelectionProvider, ISelectionChangedListener {
+ private ArrayList<ISelectionChangedListener> aListeners = new ArrayList<ISelectionChangedListener>(5);
+
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ aListeners.add(listener);
+ }
+
+ public ISelection getSelection() {
+ return aViewer.getSelection();
+ }
+
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ aListeners.remove(listener);
+ }
+
+ public void setSelection(ISelection selection) {
+ aViewer.setSelection(selection);
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ // forward to my listeners
+ SelectionChangedEvent wrappedEvent = new SelectionChangedEvent(this, event.getSelection());
+ for (Iterator<?> listeners = aListeners.iterator(); listeners.hasNext();) {
+ ISelectionChangedListener listener = (ISelectionChangedListener) listeners.next();
+ listener.selectionChanged(wrappedEvent);
+ }
+ }
+ }
+
+ private transient boolean aIsUIUpdateScheduled = false;
+
+ private ISearchResult aInput;
+
+ private IQueryListener aQueryListener;
+ private PageBook aPagebook;
+
+ private Control aBusyLabel;
+ private boolean aIsBusyShown;
+
+ private Composite aViewerContainer;
+ private SelectionProviderAdapter aViewerAdapter;
+
+ private ISearchResultViewPart aViewPart;
+ private StructuredViewer aViewer;
+
+ @SuppressWarnings("unchecked")
+ private Set aBatchedUpdates;
+
+ private String aId;
+
+ @Override
+ public void createControl(Composite parent) {
+ aQueryListener = createQueryListener();
+
+ aPagebook = new PageBook(parent, SWT.NULL);
+ aPagebook.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ aBusyLabel = createBusyControl();
+
+ aViewerContainer = new Composite(aPagebook, SWT.NULL);
+ aViewerContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
+ aViewerContainer.setSize(100, 100);
+ aViewerContainer.setLayout(new FillLayout());
+
+ aViewerAdapter = new SelectionProviderAdapter();
+ getSite().setSelectionProvider(aViewerAdapter);
+
+ createViewer(aViewerContainer);
+ showBusyLabel(aIsBusyShown);
+ NewSearchUI.addQueryListener(aQueryListener);
+ }
+
+ private IQueryListener createQueryListener() {
+ return new IQueryListener() {
+ public void queryAdded(ISearchQuery query) {
+ // ignore
+ }
+
+ public void queryRemoved(ISearchQuery query) {
+ // ignore
+ }
+
+ public void queryStarting(final ISearchQuery query) {
+ final Runnable runnable1 = new Runnable() {
+ public void run() {
+ updateBusyLabel();
+ AbstractArtifactSearchResult result = getInput();
+
+ if (result == null || !result.getQuery().equals(query)) {
+ return;
+ }
+ turnOffDecoration();
+ scheduleUIUpdate();
+ }
+ };
+ asyncExec(runnable1);
+ }
+
+ public void queryFinished(final ISearchQuery query) {
+ final Runnable runnable2 = new Runnable() {
+ public void run() {
+ updateBusyLabel();
+ AbstractArtifactSearchResult result = getInput();
+
+ if (result == null || !result.getQuery().equals(query)) {
+ return;
+ }
+ }
+ };
+ asyncExec(runnable2);
+ }
+ };
+ }
+
+ private Control createBusyControl() {
+ Table busyLabel = new Table(aPagebook, SWT.NONE);
+ TableItem item = new TableItem(busyLabel, SWT.NONE);
+ item.setText("Busy");
+ busyLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ return busyLabel;
+ }
+
+ private void createViewer(Composite parent) {
+ TableViewer viewer = new TableViewer(parent, SWT.MULTI);
+ aViewer = viewer;
+ configureTableViewer(viewer);
+
+ viewer.addSelectionChangedListener(new SelectionCountChangeListener(aViewPart.getViewSite()));
+ }
+
+ private void showBusyLabel(boolean shouldShowBusy) {
+ if (shouldShowBusy)
+ aPagebook.showPage(aBusyLabel);
+ else
+ aPagebook.showPage(aViewerContainer);
+ }
+
+ private void updateBusyLabel() {
+ AbstractArtifactSearchResult result = getInput();
+ boolean shouldShowBusy =
+ result != null && NewSearchUI.isQueryRunning(result.getQuery()) && result.getMatchCount() == 0;
+ if (shouldShowBusy == aIsBusyShown) return;
+ aIsBusyShown = shouldShowBusy;
+ showBusyLabel(aIsBusyShown);
+ }
+
+ /**
+ * Returns the currently shown result.
+ *
+ * @return the previously set result or <code>null</code>
+ * @see AbstractTextSearchViewPage#setInput(ISearchResult, Object)
+ */
+ public AbstractArtifactSearchResult getInput() {
+ return (AbstractArtifactSearchResult) aInput;
+ }
+
+ private void turnOffDecoration() {
+ IBaseLabelProvider lp = aViewer.getLabelProvider();
+ if (lp instanceof DecoratingLabelProvider) {
+ ((DecoratingLabelProvider) lp).setLabelDecorator(null);
+ }
+ }
+
+ private void turnOnDecoration() {
+ IBaseLabelProvider lp = aViewer.getLabelProvider();
+ if (lp instanceof DecoratingLabelProvider) {
+ ((DecoratingLabelProvider) lp).setLabelDecorator(PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator());
+
+ }
+ }
+
+ private synchronized void scheduleUIUpdate() {
+ if (!aIsUIUpdateScheduled) {
+ aIsUIUpdateScheduled = true;
+ new UpdateUIJob().schedule();
+ }
+ }
+
+ private synchronized void runBatchedUpdates() {
+ if (aBatchedUpdates != null) {
+ elementsChanged(aBatchedUpdates.toArray());
+ aBatchedUpdates.clear();
+ updateBusyLabel();
+ }
+ }
+
+ private synchronized boolean hasMoreUpdates() {
+ if (aBatchedUpdates != null) return aBatchedUpdates.size() > 0;
+ return false;
+ }
+
+ private boolean isQueryRunning() {
+ AbstractArtifactSearchResult result = getInput();
+ if (result != null) {
+ return NewSearchUI.isQueryRunning(result.getQuery());
+ }
+ return false;
+ }
+
+ private void asyncExec(final Runnable runnable) {
+ final Control control = getControl();
+ if (control != null && !control.isDisposed()) {
+ Display currentDisplay = Display.getCurrent();
+ if (currentDisplay == null || !currentDisplay.equals(control.getDisplay()))
+ // meaning we're not executing on the display thread of the
+ // control
+ control.getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (control != null && !control.isDisposed()) runnable.run();
+ }
+ });
+ else
+ runnable.run();
+ }
+ }
+
+ @Override
+ public Control getControl() {
+ return aPagebook;
+ }
+
+ @Override
+ public void setFocus() {
+ Control control = aViewer.getControl();
+ if (control != null && !control.isDisposed()) control.setFocus();
+ }
+
+ public Object getUIState() {
+ return aViewer.getSelection();
+ }
+
+ public void setInput(ISearchResult search, Object viewState) {
+ disconnectViewer();
+
+ aInput = search;
+ if (search != null) {
+ aViewer.setInput(search);
+ if (viewState instanceof ISelection) {
+ aViewer.setSelection((ISelection) viewState, true);
+ }
+ }
+
+ updateBusyLabel();
+ turnOffDecoration();
+ scheduleUIUpdate();
+ }
+
+ private ISearchResult disconnectViewer() {
+ ISearchResult result = (ISearchResult) aViewer.getInput();
+ aViewer.setInput(null);
+ return result;
+ }
+
+ public void setViewPart(ISearchResultViewPart part) {
+ aViewPart = part;
+ }
+
+ public void restoreState(IMemento memento) {
+ }
+
+ public void saveState(IMemento memento) {
+ }
+
+ public void setID(String id) {
+ aId = id;
+ }
+
+ public String getID() {
+ return aId;
+ }
+
+ public String getLabel() {
+ AbstractArtifactSearchResult result = getInput();
+ if (result == null) return ""; //$NON-NLS-1$
+ return result.getLabel();
+ }
+
+ public StructuredViewer getViewer() {
+ return aViewer;
+ }
+
+ /**
+ * @param viewer the viewer to be configured
+ */
+ protected abstract void configureTableViewer(TableViewer viewer);
+
+ /**
+ * This method is called whenever the set of matches for the given elements changes. This method is guaranteed to be
+ * called in the UI thread. Note that this notification is asynchronous. i.e. further changes may have occurred by
+ * the time this method is called. They will be described in a future call.
+ *
+ * @param objects array of objects that has to be refreshed
+ */
+ protected abstract void elementsChanged(Object[] objects);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactExportJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactExportJob.java
new file mode 100644
index 00000000000..bb267c83942
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactExportJob.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.FullPortableExport;
+import org.eclipse.osee.framework.ui.plugin.util.OseeData;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.search.report.RelationMatrixExportJob;
+import org.eclipse.search.ui.text.Match;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactExportJob extends Job {
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(RelationMatrixExportJob.class);
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+ private IStructuredSelection selection;
+ private Collection<Artifact> artifacts;
+ private String exportFilename;
+
+ public ArtifactExportJob() {
+ super("Exporting Artifacts and Relations to " + OseeData.getPath());
+ }
+
+ public ArtifactExportJob(TableViewer viewer) {
+ this();
+ selection = (IStructuredSelection) viewer.getSelection();
+ }
+
+ public ArtifactExportJob(Collection<Artifact> artifacts) {
+ this();
+ this.artifacts = artifacts;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ FullPortableExport exporter = new FullPortableExport();
+ if (artifacts == null && selection == null) {
+ exporter.createArtifactSheets(branchPersistenceManager.getDefaultBranch());
+ exporter.createRelationsSheet();
+ } else {
+ if (artifacts == null) {
+ artifacts = new ArrayList<Artifact>(selection.size());
+ Iterator<?> matchIter = selection.iterator();
+ while (matchIter.hasNext()) {
+ artifacts.add((Artifact) ((Match) matchIter.next()).getElement());
+ }
+ }
+
+ exporter.createArtifactSheets(artifacts);
+ exporter.createRelationsSheet(artifacts);
+ }
+
+ exporter.finish(exportFilename);
+ System.out.println("Export Complete");
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+ return Status.OK_STATUS;
+ }
+
+ public String getExportFilename() {
+ return exportFilename;
+ }
+
+ public void setExportFilename(String exportFilename) {
+ this.exportFilename = exportFilename;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchEngine.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchEngine.java
new file mode 100644
index 00000000000..768e88ef2e7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchEngine.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.text.MessageFormat;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModelList;
+import org.eclipse.osee.framework.ui.skynet.search.ui.IArtifactSearchResultCollector;
+import org.eclipse.search.ui.NewSearchUI;
+
+public class ArtifactSearchEngine {
+
+ public IStatus search(IArtifactSearchResultCollector collector, FilterModelList list) {
+ Assert.isNotNull(collector);
+ Assert.isNotNull(list);
+
+ IProgressMonitor monitor = collector.getProgressMonitor();
+
+ String message = "Message 1";
+ MultiStatus status = new MultiStatus(NewSearchUI.PLUGIN_ID, IStatus.OK, message, null);
+
+ int amountOfWork = 100;
+ try {
+ monitor.beginTask("", amountOfWork); //$NON-NLS-1$
+ if (amountOfWork > 0) {
+ Integer[] args = new Integer[] {new Integer(1), new Integer(amountOfWork)};
+ monitor.setTaskName(MessageFormat.format("Scanning:", (Object[]) args));
+ }
+ collector.aboutToStart();
+ } catch (CoreException ex) {
+ status.add(ex.getStatus());
+ } finally {
+ monitor.done();
+ try {
+ collector.done();
+ } catch (CoreException ex) {
+ status.add(ex.getStatus());
+ }
+ }
+ return status;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java
new file mode 100644
index 00000000000..446db7f7c20
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java
@@ -0,0 +1,493 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.ArtifactSearchViewPage;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.search.ui.IReplacePage;
+import org.eclipse.search.ui.ISearchPage;
+import org.eclipse.search.ui.ISearchPageContainer;
+import org.eclipse.search.ui.ISearchResultPage;
+import org.eclipse.search.ui.ISearchResultViewPart;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public class ArtifactSearchPage extends DialogPage implements ISearchPage, IReplacePage {
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactSearchPage.class);
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static ISearchPageContainer aContainer;
+
+ private Button addButton;
+ private Button allButton;
+ private Button atLeastOneButton;
+ private ComboViewer searchTypeList;
+ private Button notButton;
+
+ private StackLayout selectionLayout;
+ private static FilterTableViewer filterviewer;
+ private Composite artifactTypeControls;
+ private ListViewer artifactTypeList;
+ private Text indexText;
+
+ private SearchFilter HRID_VALUE_FILTER;
+ private SearchFilter ATTRIBUTE_VALUE_FILTER;
+ private SearchFilter INDEX_SEARCH_FILTER;
+
+ public void createControl(Composite parent) {
+ initializeDialogUnits(parent);
+
+ Composite mainComposite = new Composite(parent, SWT.NONE);
+ mainComposite.setFont(parent.getFont());
+ mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ mainComposite.setLayout(new GridLayout());
+
+ Label label = new Label(mainComposite, SWT.NONE);
+ label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ label.setText("Searching on current default branch \"" + branchManager.getDefaultBranch() + "\"");
+
+ addFilterControls(mainComposite);
+ addTableControls(mainComposite);
+ addSearchScope(mainComposite);
+ addFilterListeners();
+
+ setControl(parent);
+ aContainer.setPerformActionEnabled(false);
+
+ SkynetGuiPlugin.getInstance().setHelp(mainComposite, "artifact_search");
+
+ updateWidgets();
+ }
+
+ /**
+ * Controls to allow the user to select wether all the filters are combined using AND or OR
+ */
+ private void addSearchScope(Composite composite) {
+ Group allSelectionGroup = new Group(composite, SWT.NONE);
+ allSelectionGroup.setText("Artifacts that match");
+ allSelectionGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ allSelectionGroup.setLayout(new GridLayout(2, false));
+
+ allButton = new Button(allSelectionGroup, SWT.RADIO);
+ allButton.setText("All filters (AND)");
+ allButton.setSelection(true);
+
+ atLeastOneButton = new Button(allSelectionGroup, SWT.RADIO);
+ atLeastOneButton.setText("At least one filter (OR)");
+ }
+
+ private void createIndexSearchControls(Composite optionsComposite) {
+ Composite composite = new Composite(optionsComposite, SWT.NONE);
+ composite.setLayout(new GridLayout());
+
+ indexText = new Text(composite, SWT.BORDER);
+ indexText.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
+
+ Button caseSensitiveChk = new Button(composite, SWT.CHECK);
+ caseSensitiveChk.setText("Case sensitive");
+
+ Button partialMatchChk = new Button(composite, SWT.CHECK);
+ partialMatchChk.setText("Partial Match");
+
+ INDEX_SEARCH_FILTER = new IndexSearchFilter(composite, indexText, caseSensitiveChk, partialMatchChk);
+ addToSearchTypeList(INDEX_SEARCH_FILTER);
+
+ indexText.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ addButton.setEnabled(INDEX_SEARCH_FILTER.isValid());
+ }
+ });
+ }
+
+ private void createArtifactTypeSearchControls(Composite optionsComposite) {
+ artifactTypeControls = new Composite(optionsComposite, SWT.NONE);
+ artifactTypeControls.setLayout(new GridLayout(1, true));
+
+ artifactTypeList = new ListViewer(artifactTypeControls);
+ GridData gd = new GridData();
+ gd.heightHint = 100;
+ artifactTypeList.getList().setLayoutData(gd);
+ artifactTypeList.setContentProvider(new SearchContentProvider());
+ artifactTypeList.setLabelProvider(new SearchLabelProvider());
+ artifactTypeList.setSorter(new SearchSorter());
+
+ try {
+ for (ArtifactSubtypeDescriptor descriptor : configurationPersistenceManager.getArtifactSubtypeDescriptors(branchManager.getDefaultBranch())) {
+ artifactTypeList.add(descriptor.getName());
+ artifactTypeList.setData(descriptor.getName(), descriptor);
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Error encountered while getting list of artifact types", ex);
+ }
+ artifactTypeList.getList().select(0);
+ addToSearchTypeList(new ArtifactTypeFilter(artifactTypeControls, artifactTypeList));
+ }
+
+ private void createOrphanSearchControls(Composite optionsComposite) {
+ //uses the artifactTypeList from Artifact_type_filter
+ artifactTypeList.getList().select(0);
+ addToSearchTypeList(new OrphanSearchFilter("Orphan Search", artifactTypeControls, artifactTypeList));
+ }
+
+ private void addToSearchTypeList(SearchFilter filter) {
+ searchTypeList.add(filter.filterName);
+ searchTypeList.setData(filter.filterName, filter);
+ }
+
+ private void createRelationSearchControls(Composite optionsComposite) {
+ Composite relationControls = new Composite(optionsComposite, SWT.NONE);
+ relationControls.setLayout(new GridLayout(2, true));
+
+ final ComboViewer relationTypeList = new ComboViewer(relationControls, SWT.DROP_DOWN | SWT.READ_ONLY);
+ relationTypeList.setContentProvider(new SearchContentProvider());
+ relationTypeList.setLabelProvider(new SearchLabelProvider());
+ relationTypeList.setSorter(new SearchSorter());
+ final ComboViewer relationSideList = new ComboViewer(relationControls, SWT.DROP_DOWN | SWT.READ_ONLY);
+ relationSideList.setContentProvider(new SearchContentProvider());
+ relationSideList.setLabelProvider(new SearchLabelProvider());
+ relationSideList.setSorter(new SearchSorter());
+
+ for (IRelationLinkDescriptor linkDescriptor : RelationPersistenceManager.getInstance().getIRelationLinkDescriptors(
+ branchManager.getDefaultBranch())) {
+ relationTypeList.add(linkDescriptor.getName());
+ relationTypeList.setData(linkDescriptor.getName(), linkDescriptor);
+ }
+
+ relationTypeList.getCombo().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ relationSideList.getCombo().removeAll();
+ IRelationLinkDescriptor linkDescriptor =
+ (IRelationLinkDescriptor) relationTypeList.getData(relationTypeList.getCombo().getText());
+ relationSideList.add(linkDescriptor.getSideAName());
+ relationSideList.add(linkDescriptor.getSideBName());
+ relationSideList.getCombo().select(0);
+ }
+ });
+ relationTypeList.getCombo().setVisibleItemCount(Math.min(relationTypeList.getCombo().getItemCount(), 15));
+
+ if (relationTypeList.getCombo().getItemCount() > 0) { // ensure we don't get a null pointer
+ // exception when there are no relation types in the db
+ relationTypeList.getCombo().select(0);
+ IRelationLinkDescriptor linkDescriptor =
+ (IRelationLinkDescriptor) relationTypeList.getData(relationTypeList.getCombo().getText());
+ relationSideList.add(linkDescriptor.getSideAName());
+ relationSideList.add(linkDescriptor.getSideBName());
+ relationSideList.getCombo().select(0);
+ }
+
+ addToSearchTypeList(new InRelationFilter(relationControls, relationTypeList, relationSideList));
+ }
+
+ private void createHridSearchControls(Composite optionsComposite) {
+ Composite hridControls = new Composite(optionsComposite, SWT.NONE);
+ hridControls.setLayout(new GridLayout(2, false));
+
+ Label typeLabel = new Label(hridControls, SWT.HORIZONTAL);
+ typeLabel.setText("Human Readable ID:");
+ Text hridValue = new Text(hridControls, SWT.BORDER);
+ hridValue.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+
+ hridValue.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ addButton.setEnabled(HRID_VALUE_FILTER.isValid());
+ }
+ });
+
+ new Label(hridControls, SWT.NONE);
+
+ Label wildLabel = new Label(hridControls, SWT.NONE);
+ wildLabel.setText("(* = any string, \\* = literal *)");
+
+ HRID_VALUE_FILTER = new HridValueFilter(hridControls, hridValue);
+ addToSearchTypeList(HRID_VALUE_FILTER);
+ }
+
+ private void createAttributeSearchControls(Composite optionsComposite) {
+ Composite attributeControls = new Composite(optionsComposite, SWT.NONE);
+ attributeControls.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ attributeControls.setLayout(new GridLayout(2, false));
+
+ Label typeLabel = new Label(attributeControls, SWT.HORIZONTAL);
+ typeLabel.setText("Attribute Type:");
+
+ ComboViewer attributeTypeList = new ComboViewer(attributeControls, SWT.DROP_DOWN | SWT.READ_ONLY);
+ attributeTypeList.setContentProvider(new SearchContentProvider());
+ attributeTypeList.setLabelProvider(new SearchLabelProvider());
+ attributeTypeList.setSorter(new SearchSorter());
+
+ Label valueLabel = new Label(attributeControls, SWT.HORIZONTAL);
+ valueLabel.setText("Attribute Value:");
+
+ Text attributeValue = new Text(attributeControls, SWT.BORDER);
+ attributeValue.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ try {
+ for (DynamicAttributeDescriptor type : configurationPersistenceManager.getDynamicAttributeDescriptors(branchManager.getDefaultBranch())) {
+ attributeTypeList.add(type.getName());
+ attributeTypeList.setData(type.getName(), type);
+ }
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Error encountered while getting list of attribute types", ex);
+ }
+ attributeTypeList.getCombo().setVisibleItemCount(Math.min(attributeTypeList.getCombo().getItemCount(), 15));
+ attributeTypeList.getCombo().select(0);
+
+ attributeValue.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ addButton.setEnabled(ATTRIBUTE_VALUE_FILTER.isValid());
+ }
+ });
+
+ new Label(attributeControls, SWT.NONE); // spacerLabelSoTheNextOneWillBeInColumnTwo
+
+ Label wildLabel = new Label(attributeControls, SWT.NONE);
+ wildLabel.setText("(* = any string, \\* = literal *)");
+
+ ATTRIBUTE_VALUE_FILTER = new AttributeValueFilter(attributeControls, attributeTypeList, attributeValue);
+ addToSearchTypeList(ATTRIBUTE_VALUE_FILTER);
+ }
+
+ private void addFilterControls(Composite mainComposite) {
+ Group filterGroup = new Group(mainComposite, SWT.NONE);
+ filterGroup.setText("Create a Filter");
+ filterGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ filterGroup.setLayout(new GridLayout());
+
+ Composite composite = new Composite(filterGroup, SWT.BORDER);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ composite.setLayout(new GridLayout(2, false));
+
+ searchTypeList = new ComboViewer(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ searchTypeList.setContentProvider(new SearchContentProvider());
+ searchTypeList.setLabelProvider(new SearchLabelProvider());
+ searchTypeList.setSorter(new SearchSorter());
+
+ notButton = new Button(composite, SWT.CHECK);
+ notButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, true, false));
+ notButton.setText("Not Equal");
+
+ selectionLayout = new StackLayout();
+
+ Composite optionsComposite = new Composite(filterGroup, SWT.BORDER);
+ optionsComposite.setLayout(new GridLayout());
+ optionsComposite.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+
+ optionsComposite.setLayout(selectionLayout);
+ createIndexSearchControls(optionsComposite);
+ createAttributeSearchControls(optionsComposite);
+ createArtifactTypeSearchControls(optionsComposite);
+ createOrphanSearchControls(optionsComposite);
+ createRelationSearchControls(optionsComposite);
+ createHridSearchControls(optionsComposite);
+ addToSearchTypeList(new CorruptedArtifactSearchFilter(optionsComposite));
+
+ searchTypeList.getCombo().select(5);
+ searchTypeList.getCombo().setVisibleItemCount(7);
+
+ addButton = new Button(filterGroup, SWT.PUSH);
+ addButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false));
+ addButton.setText("Add Filter");
+ }
+
+ private void addFilterListeners() {
+ addButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ SearchFilter searchFilter = (SearchFilter) searchTypeList.getData(searchTypeList.getCombo().getText());
+ searchFilter.setNot(notButton.getSelection());
+ searchFilter.addFilterTo(filterviewer);
+ updateOKStatus();
+ }
+ });
+
+ searchTypeList.getCombo().addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ updateWidgets();
+ }
+ });
+ }
+
+ private void updateWidgets() {
+ SearchFilter searchFilter = (SearchFilter) searchTypeList.getData(searchTypeList.getCombo().getText());
+ addButton.setEnabled(searchFilter.isValid());
+ selectionLayout.topControl = searchFilter.optionsControl;
+ selectionLayout.topControl.getParent().layout();
+ }
+
+ private void addTableControls(Composite composite) {
+ Label tableLabel = new Label(composite, SWT.FILL);
+ tableLabel.setText("Filters");
+
+ Table table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.HIDE_SELECTION);
+ filterviewer = new FilterTableViewer(table);
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.heightHint = 100;
+ gridData.widthHint = 500;
+ table.setLayoutData(gridData);
+ }
+
+ public void setContainer(ISearchPageContainer container) {
+ ArtifactSearchPage.aContainer = container;
+ }
+
+ /**
+ * @return Returns the aContainer.
+ */
+ public static ISearchPageContainer getContainer() {
+ return aContainer;
+ }
+
+ public boolean performAction() {
+ NewSearchUI.activateSearchResultView();
+ filterviewer.getFilterList().setAllSelected(allButton.getSelection());
+ AbstractArtifactSearchQuery searchQuery =
+ new FilterArtifactSearchQuery(filterviewer.getFilterList(), branchManager.getDefaultBranch());
+ NewSearchUI.runQueryInBackground(searchQuery);
+ return true;
+ }
+
+ public boolean performReplace() {
+ filterviewer.getFilterList().setAllSelected(allButton.getSelection());
+ AbstractArtifactSearchQuery searchQuery =
+ new FilterArtifactSearchQuery(filterviewer.getFilterList(), branchManager.getDefaultBranch());
+
+ IStatus status = NewSearchUI.runQueryInForeground(getContainer().getRunnableContext(), searchQuery);
+ if (status.matches(IStatus.CANCEL)) {
+ return false;
+ }
+
+ ISearchResultViewPart view = NewSearchUI.activateSearchResultView();
+ if (view != null) {
+ final ISearchResultPage page = view.getActivePage();
+ if (page instanceof ArtifactSearchViewPage) {
+ runAttributeFindReplaceDialog(page);
+ }
+ }
+ return true;
+ }
+
+ private void runAttributeFindReplaceDialog(final ISearchResultPage page) {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ if (page instanceof ArtifactSearchViewPage) {
+ ArtifactSearchViewPage artifactPage = (ArtifactSearchViewPage) page;
+ List<Artifact> artifacts = artifactPage.getInput().getArtifactResults();
+ new AttributeFindReplaceDialog(page.getSite().getShell(), artifacts).open();
+ }
+ }
+ });
+ }
+
+ /*
+ * Implements method from IDialogPage
+ */
+ public void setVisible(boolean visible) {
+ if (visible) {
+ indexText.setFocus();
+ }
+ updateOKStatus();
+ super.setVisible(visible);
+ }
+
+ public static void updateOKStatus() {
+ if (filterviewer.getFilterList().getFilters().isEmpty())
+ getContainer().setPerformActionEnabled(false);
+ else
+ getContainer().setPerformActionEnabled(true);
+ }
+
+ public class SearchLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ return (String) arg0;
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+ }
+
+ public class SearchContentProvider implements IStructuredContentProvider {
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object arg0) {
+ return ((ArrayList) arg0).toArray();
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
+ }
+ }
+
+ public class SearchSorter extends ViewerSorter {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare((String) e1, (String) e2);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchResult.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchResult.java
new file mode 100644
index 00000000000..c0fc75b95a1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchResult.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+
+public class ArtifactSearchResult extends AbstractArtifactSearchResult {
+ private AbstractArtifactSearchQuery aQuery;
+
+ public ArtifactSearchResult(AbstractArtifactSearchQuery job) {
+ aQuery = job;
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ public String getLabel() {
+ return aQuery.getResultLabel();
+ }
+
+ public String getTooltip() {
+ return getLabel();
+ }
+
+ public AbstractArtifactSearchQuery getQuery() {
+ return aQuery;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactTypeFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactTypeFilter.java
new file mode 100644
index 00000000000..8500508e730
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactTypeFilter.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import static org.eclipse.osee.framework.skynet.core.artifact.search.Operator.EQUAL;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactTypeSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ArtifactTypeFilter extends SearchFilter {
+ private ListViewer searchTypeList;
+
+ public ArtifactTypeFilter(Control optionsControl, ListViewer searchTypeList) {
+ super("Artifact Type", optionsControl);
+ this.searchTypeList = searchTypeList;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#addFilterTo(osee.define.artifact.search.filter.FilterTableViewer)
+ */
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+ for (String type : searchTypeList.getList().getSelection()) {
+ ISearchPrimitive primitive = new ArtifactTypeSearch(type, EQUAL);
+ if (not) primitive = new NotSearch(primitive);
+ filterViewer.addItem(primitive, filterName, type, "");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeFindReplaceDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeFindReplaceDialog.java
new file mode 100644
index 00000000000..45e6b77cf85
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeFindReplaceDialog.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Pattern;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Dialog for performing find/replace of attribute values on a set of <code>Artifact</code>'s.
+ *
+ * @see org.eclipse.osee.framework.skynet.core.artifact.Artifact
+ * @see org.eclipse.osee.framework.skynet.core.attribute.Attribute
+ * @author Robert A. Fisher
+ */
+public class AttributeFindReplaceDialog extends Dialog {
+
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(AttributeFindReplaceDialog.class);
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+
+ private ComboViewer cmbAttributeDescriptors;
+ private Text txtFindRegEx;
+ private Text txtReplaceStr;
+
+ private Artifact[] artifacts;
+
+ public AttributeFindReplaceDialog(Shell parentShell, Collection<Artifact> artifacts) {
+ super(parentShell);
+
+ this.artifacts = artifacts.toArray(Artifact.EMPTY_ARRAY);
+
+ setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | getDefaultOrientation() | SWT.RESIZE);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ getShell().setText("Find/Replace Attribute Value");
+
+ Composite mainComposite = new Composite(parent, SWT.NONE);
+ mainComposite.setFont(parent.getFont());
+ mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ mainComposite.setLayout(new GridLayout(1, false));
+
+ addDialogControls(mainComposite);
+ addListeners();
+ setInputs();
+
+ return mainComposite;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ checkEnabled();
+ }
+
+ private void setInputs() {
+ try {
+ cmbAttributeDescriptors.setInput(configurationPersistenceManager.getDynamicAttributeDescriptors(
+ BranchPersistenceManager.getInstance().getDefaultBranch()).toArray(
+ DynamicAttributeDescriptor.EMPTY_ARRAY));
+ cmbAttributeDescriptors.getCombo().select(0);
+ } catch (SQLException ex) {
+ cmbAttributeDescriptors.setInput(new Object[] {ex});
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ private void addListeners() {
+ txtFindRegEx.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ checkEnabled();
+ }
+ });
+ }
+
+ private void addDialogControls(Composite mainComposite) {
+ Label label;
+ label = new Label(mainComposite, SWT.LEFT);
+ label.setText("Attribute Type");
+ label.setToolTipText("The attribute to perform the find/replace logic against");
+
+ cmbAttributeDescriptors = new ComboViewer(mainComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ cmbAttributeDescriptors.setContentProvider(new ArrayContentProvider());
+ cmbAttributeDescriptors.setLabelProvider(new ArtifactTypeLabelProvider());
+ cmbAttributeDescriptors.setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((DynamicAttributeDescriptor) e1).getName(),
+ ((DynamicAttributeDescriptor) e2).getName());
+ }
+ });
+
+ label = new Label(mainComposite, SWT.LEFT);
+ label.setText("Find (regex):");
+ label.setToolTipText("The regular expression to perform matching with against the attribute value");
+ txtFindRegEx = new Text(mainComposite, SWT.BORDER);
+
+ label = new Label(mainComposite, SWT.LEFT);
+ label.setText("Replace With:");
+ label.setToolTipText("The value to put in place of the value matched by the Find regular expression");
+ txtReplaceStr = new Text(mainComposite, SWT.BORDER);
+
+ }
+
+ private void checkEnabled() {
+ boolean enable =
+ (cmbAttributeDescriptors.getInput() instanceof DynamicAttributeDescriptor[]) && (txtFindRegEx.getText().length() > 0) && (artifacts.length > 0);
+
+ getButton(IDialogConstants.OK_ID).setEnabled(enable);
+ }
+
+ @Override
+ protected void okPressed() {
+ final Pattern pattern = Pattern.compile(txtFindRegEx.getText());
+ final String replaceText = txtReplaceStr.getText();
+ final String attributeName =
+ ((DynamicAttributeDescriptor) ((IStructuredSelection) cmbAttributeDescriptors.getSelection()).getFirstElement()).getName();
+
+ Job job = new Job("Find/Replace") {
+
+ @Override
+ protected IStatus run(final IProgressMonitor monitor) {
+ IStatus toReturn = Status.CANCEL_STATUS;
+ Branch branch = artifacts[0].getBranch();
+ try {
+ monitor.beginTask("Find/Replace " + attributeName + " Attribute Value", artifacts.length);
+
+ AbstractSkynetTxTemplate modifyArtifactTx = new AbstractSkynetTxTemplate(branch) {
+
+ @Override
+ protected void handleTxWork() throws Exception {
+ for (Artifact artifact : artifacts) {
+ monitor.subTask("Modifying " + artifact.getDescriptiveName());
+ for (Attribute attribute : artifact.getAttributeManager(attributeName).getAttributes()) {
+ attribute.replaceAll(pattern, replaceText);
+ }
+ artifact.persist();
+ monitor.worked(1);
+ if (monitor.isCanceled()) {
+ throw new IllegalStateException("USER CANCELLED");
+ }
+ }
+ }
+ };
+ modifyArtifactTx.execute();
+ toReturn = Status.OK_STATUS;
+ } catch (Exception ex) {
+ if (ex.getMessage().equals("USER CANCELLED")) {
+ toReturn = Status.CANCEL_STATUS;
+ } else {
+ toReturn = new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, Status.OK, ex.getMessage(), ex);
+ }
+ } finally {
+ monitor.done();
+ }
+
+ return toReturn;
+ }
+ };
+ Jobs.startJob(job);
+ super.okPressed();
+ }
+
+ private static class ArtifactTypeLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object element) {
+ return null;
+ }
+
+ public String getText(Object element) {
+ if (element instanceof DynamicAttributeDescriptor)
+ return ((DynamicAttributeDescriptor) element).getName();
+ else
+ return element.toString();
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return true;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeValueFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeValueFilter.java
new file mode 100644
index 00000000000..c3b25acfabf
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/AttributeValueFilter.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.search.AttributeValueSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class AttributeValueFilter extends SearchFilter {
+ private ComboViewer attributeTypeList;
+ private Text attributeValue;
+
+ public AttributeValueFilter(Control optionsControl, ComboViewer attributeTypeList, Text attributeValue) {
+ super("Attribute Value", optionsControl);
+ this.attributeTypeList = attributeTypeList;
+ this.attributeValue = attributeValue;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.search.SearchFilter#addFilterTo(osee.define.artifact.search.filter.FilterTableViewer)
+ */
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+ String type = attributeTypeList.getCombo().getText();
+ String value = attributeValue.getText();
+
+ OperatorAndValue result = handleWildCard(value);
+ ISearchPrimitive primitive = new AttributeValueSearch(type, result.value, result.operator);
+ if (not) primitive = new NotSearch(primitive);
+ filterViewer.addItem(primitive, filterName, type, result.value);
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.search.SearchFilter#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return !attributeValue.getText().equals("");
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/CorruptedArtifactSearchFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/CorruptedArtifactSearchFilter.java
new file mode 100644
index 00000000000..423b1bf90ca
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/CorruptedArtifactSearchFilter.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.osee.framework.skynet.core.artifact.search.CorruptedArtifactSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class CorruptedArtifactSearchFilter extends SearchFilter {
+
+ public CorruptedArtifactSearchFilter(Control optionsControl) {
+ super("Corrupted Artifacts", optionsControl);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#addFilterTo(osee.define.artifact.search.filter.FilterTableViewer)
+ */
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+ ISearchPrimitive primitive = new CorruptedArtifactSearch();
+ if (not) primitive = new NotSearch(primitive);
+ filterViewer.addItem(primitive, filterName, "", "");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/FilterArtifactSearchQuery.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/FilterArtifactSearchQuery.java
new file mode 100644
index 00000000000..d907e7bc2e7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/FilterArtifactSearchQuery.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.ISearchConfirmer;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModel;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModelList;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class FilterArtifactSearchQuery extends AbstractArtifactSearchQuery {
+ private FilterModelList filterList;
+ private Branch branch;
+ private String criteriaLabel = "";
+
+ /**
+ * @param filterList
+ * @param branch
+ */
+ public FilterArtifactSearchQuery(FilterModelList filterList, Branch branch) {
+ this.filterList = filterList;
+ this.branch = branch;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchQuery#getArtifacts()
+ */
+ @Override
+ public Collection<Artifact> getArtifacts() throws SQLException {
+ boolean firstTime = true;
+ List<ISearchPrimitive> criteria = new LinkedList<ISearchPrimitive>();
+
+ for (FilterModel model : filterList.getFilters()) {
+ criteria.add(model.getSearchPrimitive());
+
+ if (!firstTime) {
+ if (filterList.isAllSelected())
+ criteriaLabel += " and ";
+ else
+ criteriaLabel += " or ";
+ }
+
+ criteriaLabel += model;
+ firstTime = false;
+ }
+
+ ISearchConfirmer confirmer = new MaxMatchCountConfirmer();
+ return ArtifactPersistenceManager.getInstance().getArtifacts(criteria, filterList.isAllSelected(), branch,
+ confirmer);
+ }
+
+ public String getCriteriaLabel() {
+ return criteriaLabel;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchQuery#showBranch()
+ */
+ @Override
+ public boolean showBranch() {
+ return false;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HistoricalArtifactSearchQuery.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HistoricalArtifactSearchQuery.java
new file mode 100644
index 00000000000..82857cdf5db
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HistoricalArtifactSearchQuery.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class HistoricalArtifactSearchQuery extends AbstractArtifactSearchQuery {
+ private String attributePattern;
+
+ public HistoricalArtifactSearchQuery(String attributePattern) {
+ this.attributePattern = attributePattern;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchQuery#getArtifacts()
+ */
+ @Override
+ public Collection<Artifact> getArtifacts() throws SQLException {
+ return ArtifactPersistenceManager.getInstance().getHistoricalArtifactsFromAttribute(attributePattern);
+ }
+
+ public String getCriteriaLabel() {
+ return attributePattern;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchQuery#showBranch()
+ */
+ @Override
+ public boolean showBranch() {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HridValueFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HridValueFilter.java
new file mode 100644
index 00000000000..088003f234c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/HridValueFilter.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactHridSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class HridValueFilter extends SearchFilter {
+ private Text hridValue;
+
+ public HridValueFilter(Control optionsControl, Text hridValue) {
+ super("Human Readable ID", optionsControl);
+ this.hridValue = hridValue;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.search.SearchFilter#addFilterTo(osee.define.artifact.search.filter.FilterTableViewer)
+ */
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+ OperatorAndValue result = handleWildCard(hridValue.getText());
+ ISearchPrimitive primitive = new ArtifactHridSearch(result.value, result.operator);
+ if (not) primitive = new NotSearch(primitive);
+ filterViewer.addItem(primitive, filterName, "huid", result.value);
+ }
+
+ /* (non-Javadoc)
+ * @see osee.define.artifact.search.SearchFilter#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return !hridValue.getText().equals("");
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/InRelationFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/InRelationFilter.java
new file mode 100644
index 00000000000..82d26872eab
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/InRelationFilter.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.InRelationSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class InRelationFilter extends SearchFilter {
+ private ComboViewer relationTypeList;
+ private ComboViewer relationSideList;
+
+ public InRelationFilter(Control optionsControl, ComboViewer relationTypeList, ComboViewer relationSideList) {
+ super("Artifact in Relation", optionsControl);
+ this.relationTypeList = relationTypeList;
+ this.relationSideList = relationSideList;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#addFilterTo(osee.define.artifact.search.filter.FilterTableViewer)
+ */
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+ String type = relationTypeList.getCombo().getText();
+ String sideName = relationSideList.getCombo().getText();
+
+ IRelationLinkDescriptor linkDescriptor =
+ (IRelationLinkDescriptor) relationTypeList.getData(relationTypeList.getCombo().getText());
+ ISearchPrimitive primitive = new InRelationSearch(type, linkDescriptor.isSideAName(sideName));
+ if (not) primitive = new NotSearch(primitive);
+
+ filterViewer.addItem(primitive, filterName, type, sideName);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/IndexSearchFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/IndexSearchFilter.java
new file mode 100644
index 00000000000..224f73b6072
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/IndexSearchFilter.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.TagSearch;
+import org.eclipse.osee.framework.skynet.core.tagging.Tagger;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class IndexSearchFilter extends SearchFilter {
+
+ private Text indexText;
+ private Button caseSensitive;
+ private Button partialMatch;
+ private static final String FILTER_NAME = "Index Based";
+
+ /**
+ * @param optionsControl
+ */
+ public IndexSearchFilter(Control optionsControl, Text indexText, Button caseSensitive, Button partialMatch) {
+ super(FILTER_NAME, optionsControl);
+
+ this.indexText = indexText;
+ this.partialMatch = partialMatch;
+ this.caseSensitive = caseSensitive;
+ }
+
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+
+ for (String tag : Tagger.tokenizeAndSplit(indexText.getText())) {
+ ISearchPrimitive primitive = new TagSearch(tag, caseSensitive.getSelection(), partialMatch.getSelection());
+
+ if (not) primitive = new NotSearch(primitive);
+
+ filterViewer.addItem(primitive, FILTER_NAME, tag, "");
+ }
+ }
+
+ @Override
+ public boolean isValid() {
+ return indexText.getText().length() > 0;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/MaxMatchCountConfirmer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/MaxMatchCountConfirmer.java
new file mode 100644
index 00000000000..71161b25c79
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/MaxMatchCountConfirmer.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.type.MutableBoolean;
+import org.eclipse.osee.framework.skynet.core.artifact.ISearchConfirmer;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class MaxMatchCountConfirmer implements ISearchConfirmer {
+ private static final int MAX_RESULTS = 2000;
+
+ public boolean canProceed(final int count) {
+ if (count < MAX_RESULTS) return true;
+
+ final MutableBoolean result = new MutableBoolean(false);
+ final MutableBoolean done = new MutableBoolean(false);
+
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ result.setValue(MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Confirm Search",
+ "The search returned " + count + " results and may take a long time to load, continue?"));
+ synchronized (done) {
+ done.setValue(true);
+ done.notifyAll();
+ }
+ }
+ });
+
+ synchronized (done) {
+ while (!done.getValue()) {
+ try {
+ done.wait();
+ } catch (InterruptedException e) {
+ break;
+ }
+ }
+ }
+
+ return result.getValue();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/OrphanSearchFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/OrphanSearchFilter.java
new file mode 100644
index 00000000000..cce673e5575
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/OrphanSearchFilter.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.OrphanArtifactSearch;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class OrphanSearchFilter extends SearchFilter {
+ private ListViewer searchTypeList;
+
+ public OrphanSearchFilter(String filterName, Control optionsControl, ListViewer searchTypeList) {
+ super(filterName, optionsControl);
+ this.searchTypeList = searchTypeList;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#addFilterTo(osee.define.artifact.search.filter.FilterTableViewer)
+ */
+ @Override
+ public void addFilterTo(FilterTableViewer filterViewer) {
+ for (String type : searchTypeList.getList().getSelection()) {
+ ISearchPrimitive primitive = new OrphanArtifactSearch(type);
+ if (not) primitive = new NotSearch(primitive);
+ filterViewer.addItem(primitive, filterName, type, "");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.define.artifact.search.SearchFilter#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java
new file mode 100644
index 00000000000..c51c7644d47
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.artifact.search.AttributeValueSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.Operator;
+import org.eclipse.osee.framework.skynet.core.artifact.search.TagSearch;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.skynet.core.tagging.Tagger;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+import org.eclipse.osee.framework.ui.skynet.SkynetContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetDefaultBranchContributionItem;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModel;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModelList;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Robert A. Fisher
+ * @author Ryan D. Brooks
+ */
+public class QuickSearchView extends ViewPart implements IActionable, Listener, IEventReceiver {
+ private static final SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.QuickSearchView";
+ private static final String PRIOR_SEARCH_TEXT = "searchText";
+ private static final String PRIOR_CASE_SENSITIVE = "caseSensitive";
+ private static final String PRIOR_PARTIAL_MATCH = "partialMatch";
+ private static final String PRIOR_SEARCH_TYPE = "searchType";
+
+ private BranchPersistenceManager branchManager;
+
+ private Button btnSearch;
+ private Button chkCaseSensitive;
+ private Button chkPartialSearch;
+ private Button radIndexSearch;
+ private Button radNameSearch;
+ private Button historicalSearch;
+
+ private Group grpSearchType;
+ private Label branchLabel;
+ private Text txtSearch;
+
+ private boolean initialCaseSensitive;
+ private boolean initialPartialSearch;
+ private String initialSearchText;
+ private String initialSearchType;
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+ if (memento != null) {
+ initialSearchText = memento.getString(PRIOR_SEARCH_TEXT);
+
+ initialSearchType = memento.getString(PRIOR_SEARCH_TYPE);
+
+ String boolStr;
+ boolStr = memento.getString(PRIOR_CASE_SENSITIVE);
+ if (boolStr == null) {
+ initialCaseSensitive = false;
+ } else {
+ initialCaseSensitive = Boolean.parseBoolean(boolStr);
+ }
+ boolStr = memento.getString(PRIOR_PARTIAL_MATCH);
+ if (boolStr == null) {
+ initialPartialSearch = false;
+ } else {
+ initialPartialSearch = Boolean.parseBoolean(boolStr);
+ }
+ }
+ if (initialSearchText == null) {
+ initialSearchText = "";
+ }
+
+ this.branchManager = BranchPersistenceManager.getInstance();
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ memento.putString(PRIOR_SEARCH_TEXT, txtSearch.getText());
+ memento.putString(PRIOR_CASE_SENSITIVE, Boolean.toString(chkCaseSensitive.getSelection()));
+ memento.putString(PRIOR_PARTIAL_MATCH, Boolean.toString(chkPartialSearch.getSelection()));
+
+ for (Control control : grpSearchType.getChildren()) {
+ if (control instanceof Button) {
+ Button button = (Button) control;
+ if (button.getSelection()) {
+ memento.putString(PRIOR_SEARCH_TYPE, button.getText());
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ parent.setLayout(new GridLayout());
+ parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ branchLabel = new Label(parent, SWT.NONE);
+ branchLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ createOptionsArea(parent);
+ createSearchTextArea(parent);
+
+ btnSearch = new Button(parent, SWT.PUSH);
+ btnSearch.setText("Search");
+ btnSearch.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, true, false));
+ btnSearch.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ performSearch();
+ }
+ });
+
+ txtSearch.setText(initialSearchText);
+ chkCaseSensitive.setSelection(initialCaseSensitive);
+ chkPartialSearch.setSelection(initialPartialSearch);
+
+ initSearchTypeRadioButton();
+
+ SkynetDefaultBranchContributionItem.addTo(this, false);
+ SkynetContributionItem.addTo(this, true);
+
+ createActions();
+ setHelpContexts();
+
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+
+ updateWidgetEnablements();
+ }
+
+ private void initSearchTypeRadioButton() {
+ for (Control control : grpSearchType.getChildren()) {
+ if (control instanceof Button) {
+ Button button = (Button) control;
+ if (button.getText().equals(initialSearchType)) {
+ button.setSelection(true);
+ return;
+ }
+ }
+ }
+
+ // If a prior didn't pan out, then default to index based
+ radIndexSearch.setSelection(true);
+ }
+
+ private void createSearchTextArea(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Enter Search String");
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ group.setLayout(new GridLayout());
+
+ txtSearch = new Text(group, SWT.BORDER);
+ txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ txtSearch.addListener(SWT.Modify, this);
+ txtSearch.addKeyListener(new KeyAdapter() {
+
+ public void keyPressed(KeyEvent e) {
+ if (e.character == '\r') {
+ if (btnSearch.getEnabled()) {
+ performSearch();
+ }
+ }
+ }
+ });
+
+ }
+
+ private void createOptionsArea(Composite parent) {
+ grpSearchType = new Group(parent, SWT.NONE);
+ grpSearchType.setText("Search Type");
+ grpSearchType.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ grpSearchType.setLayout(new GridLayout(3, false));
+
+ radNameSearch = new Button(grpSearchType, SWT.RADIO);
+ radNameSearch.setText("Name");
+ radNameSearch.addListener(SWT.Selection, this);
+
+ radIndexSearch = new Button(grpSearchType, SWT.RADIO);
+ radIndexSearch.setText("Index");
+ radIndexSearch.addListener(SWT.Selection, this);
+
+ historicalSearch = new Button(grpSearchType, SWT.RADIO);
+ historicalSearch.setText("Multi-branch Historical");
+ historicalSearch.addListener(SWT.Selection, this);
+
+ chkCaseSensitive = new Button(grpSearchType, SWT.CHECK);
+ chkCaseSensitive.setText("Case-sensitive");
+
+ chkPartialSearch = new Button(grpSearchType, SWT.CHECK);
+ chkPartialSearch.setText("Partial Match");
+ }
+
+ private void createActions() {
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Quick Search");
+ }
+
+ private void setHelpContexts() {
+ SkynetGuiPlugin.getInstance().setHelp(btnSearch, "quick_search_text");
+ SkynetGuiPlugin.getInstance().setHelp(grpSearchType, "quick_search_text");
+ SkynetGuiPlugin.getInstance().setHelp(txtSearch, "quick_search_text");
+
+ SkynetGuiPlugin.getInstance().setHelp(radIndexSearch, "quick_search_index_radio");
+ SkynetGuiPlugin.getInstance().setHelp(radNameSearch, "quick_search_name_radio");
+ }
+
+ @Override
+ public void setFocus() {
+ txtSearch.setFocus();
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+ private void performSearch() {
+ NewSearchUI.activateSearchResultView();
+ FilterModelList filterList = new FilterModelList();
+ filterList.setAllSelected(true);
+
+ AbstractArtifactSearchQuery searchQuery;
+ if (historicalSearch.getSelection()) {
+ searchQuery = new HistoricalArtifactSearchQuery(txtSearch.getText().replace('*', '%'));
+ } else if (radNameSearch.getSelection()) {
+ filterList.addFilter(new FilterModel(new AttributeValueSearch("Name", txtSearch.getText().replace('*', '%'),
+ Operator.LIKE), "", "", ""), false);
+ searchQuery = new FilterArtifactSearchQuery(filterList, branchManager.getDefaultBranch());
+ } else if (radIndexSearch.getSelection()) {
+ for (String tag : Tagger.tokenizeAndSplit(txtSearch.getText())) {
+ ISearchPrimitive primitive =
+ new TagSearch(tag, chkCaseSensitive.getSelection(), chkPartialSearch.getSelection());
+
+ filterList.addFilter(new FilterModel(primitive, "", "", ""), false);
+ }
+ searchQuery = new FilterArtifactSearchQuery(filterList, branchManager.getDefaultBranch());
+ } else {
+ throw new IllegalStateException("unexpected search type radio button state");
+ }
+
+ NewSearchUI.runQueryInBackground(searchQuery);
+ }
+
+ private void updateWidgetEnablements() {
+ chkCaseSensitive.setEnabled(radIndexSearch.getSelection());
+ chkPartialSearch.setEnabled(radIndexSearch.getSelection());
+ btnSearch.setEnabled(!txtSearch.getText().trim().equals(""));
+
+ if (historicalSearch.getSelection()) {
+ branchLabel.setText("Searching on all branches");
+ } else {
+ branchLabel.setText("Searching on current default branch \"" + branchManager.getDefaultBranch() + "\"");
+ }
+ }
+
+ public void handleEvent(Event event) {
+ updateWidgetEnablements();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#onEvent(org.eclipse.osee.framework.ui.plugin.event.Event)
+ */
+ public void onEvent(org.eclipse.osee.framework.ui.plugin.event.Event event) {
+ updateWidgetEnablements();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.plugin.event.IEventReceiver#runOnEventInDisplayThread()
+ */
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/SearchFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/SearchFilter.java
new file mode 100644
index 00000000000..1e00b2aa77a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/SearchFilter.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search;
+
+import static org.eclipse.osee.framework.skynet.core.artifact.search.Operator.EQUAL;
+import static org.eclipse.osee.framework.skynet.core.artifact.search.Operator.LIKE;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.skynet.core.artifact.search.Operator;
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterTableViewer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class SearchFilter {
+ private static final Pattern wildCardPattern = Pattern.compile("(?<!\\\\)\\*");
+ protected String filterName;
+ protected Control optionsControl;
+ protected boolean not;
+
+ public SearchFilter(String filterName, Control optionsControl) {
+ this.filterName = filterName;
+ this.optionsControl = optionsControl;
+ this.not = false;
+ }
+
+ public void addFilterTo(FilterTableViewer filterViewer) {
+
+ }
+
+ public boolean isValid() {
+ return false;
+ }
+
+ protected class OperatorAndValue {
+ Operator operator;
+ String value;
+ }
+
+ public OperatorAndValue handleWildCard(String value) {
+ OperatorAndValue result = new OperatorAndValue();
+ Matcher wildCardMatcher = wildCardPattern.matcher(value);
+ if (wildCardMatcher.find()) {
+ wildCardMatcher.reset();
+ value = wildCardMatcher.replaceAll("%");
+ result.operator = LIKE;
+ } else {
+ result.operator = EQUAL;
+ }
+ result.value = value.replaceAll("\\\\\\*", "*");
+ return result;
+ }
+
+ /**
+ * @return Returns the not.
+ */
+ public boolean isNot() {
+ return not;
+ }
+
+ /**
+ * @param not The not to set.
+ */
+ public void setNot(boolean not) {
+ this.not = not;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModel.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModel.java
new file mode 100644
index 00000000000..1ddab801b4b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModel.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.filter;
+
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.InRelationSearch;
+
+public class FilterModel {
+
+ private String searchType;
+ private String type;
+ private String value;
+ private ISearchPrimitive searchPrimitive;
+
+ public FilterModel(ISearchPrimitive searchPrimitive, String search, String type, String value) {
+ this.searchPrimitive = searchPrimitive;
+ this.searchType = search;
+ this.type = type;
+ this.value = value;
+ }
+
+ /**
+ * @return Returns the name.
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type - The type to set.
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ /**
+ * @return Returns the function.
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * @param function The function to set.
+ */
+ public void setvalue(String function) {
+ this.value = function;
+ }
+
+ /**
+ * @return Returns the searchType.
+ */
+ public ISearchPrimitive getSearchPrimitive() {
+ return searchPrimitive;
+ }
+
+ /**
+ * @return Returns the searchType.
+ */
+ public String getSearch() {
+ return searchType;
+ }
+
+ /**
+ * @param searchType The searchType to set.
+ */
+ public void setSearch(String searchType) {
+ this.searchType = searchType;
+ }
+
+ public void setSearchPrimitive(ISearchPrimitive searchPrimitive) {
+ this.searchPrimitive = searchPrimitive;
+ }
+
+ @Override
+ public String toString() {
+ String toReturn = searchPrimitive.toString();
+ if (searchPrimitive instanceof InRelationSearch) {
+ toReturn += " " + value;
+ }
+ return toReturn;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelLabelProvider.java
new file mode 100644
index 00000000000..1317c8a3a42
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelLabelProvider.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.filter;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.osee.framework.skynet.core.artifact.search.NotSearch;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.graphics.Image;
+
+public class FilterModelLabelProvider implements ITableLabelProvider {
+
+ private static final Image deleteImage = SkynetGuiPlugin.getInstance().getImage("remove.gif");
+ private static final Image notImage = SkynetGuiPlugin.getInstance().getImage("not_equal.gif");
+
+ public FilterModelLabelProvider() {
+ super();
+ };
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ String result = "";
+ FilterModel model = (FilterModel) element;
+
+ switch (columnIndex) {
+ case FilterTableViewer.DELETE_NUM:
+ // This only has an image
+ break;
+ case FilterTableViewer.SEARCH_NUM:
+ result = model.getSearch();
+ break;
+ case FilterTableViewer.TYPE_NUM:
+ result = model.getType();
+ break;
+ case FilterTableViewer.VALUE_NUM:
+ result = model.getValue();
+ break;
+ default:
+ break;
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ Image result = null;
+
+ switch (columnIndex) {
+ case FilterTableViewer.DELETE_NUM:
+ result = deleteImage;
+ break;
+ case FilterTableViewer.SEARCH_NUM:
+ if (((FilterModel) element).getSearchPrimitive() instanceof NotSearch) result = notImage;
+ break;
+ }
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return true;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelList.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelList.java
new file mode 100644
index 00000000000..fd6491b6768
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterModelList.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.filter;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.framework.ui.skynet.search.ui.IFilterListViewer;
+
+public class FilterModelList {
+
+ private ArrayList<FilterModel> filters = new ArrayList<FilterModel>();
+ private Set<IFilterListViewer> changeListeners = new HashSet<IFilterListViewer>();
+ private boolean isAllSelected;
+
+ /**
+ * Constructor
+ */
+ public FilterModelList() {
+ super();
+ filters = new ArrayList<FilterModel>();
+ changeListeners = new HashSet<IFilterListViewer>();
+ }
+
+ /**
+ * Return the collection of ItemTask
+ */
+ public ArrayList<FilterModel> getFilters() {
+ return filters;
+ }
+
+ /**
+ * Add a new task to the collection of tasks
+ */
+ public void addFilter(FilterModel filter, boolean top) {
+ if (top)
+ filters.add(0, filter);
+ else
+ filters.add(filter);
+ for (IFilterListViewer flv : changeListeners)
+ flv.addFilter(filter);
+ }
+
+ /**
+ * @param filter -
+ */
+ public void removeFilter(FilterModel filter) {
+ filters.remove(filter);
+ for (IFilterListViewer flv : changeListeners)
+ flv.removeFilter(filter);
+ }
+
+ public String toString() {
+ String str = "";
+ for (int i = 0; i < filters.size(); i++) {
+ String name = filters.toString();
+ str += "\nTask " + name;
+ }
+ return str + "\n\n";
+ }
+
+ /**
+ * @param filter
+ */
+ public void filterChanged(FilterModel filter) {
+ for (IFilterListViewer flv : changeListeners)
+ flv.updateFilter(filter);
+ }
+
+ /**
+ * @param viewer
+ */
+ public void removeChangeListener(IFilterListViewer viewer) {
+ changeListeners.remove(viewer);
+ }
+
+ /**
+ * @param viewer
+ */
+ public void addChangeListener(IFilterListViewer viewer) {
+ changeListeners.add(viewer);
+ }
+
+ public boolean isAllSelected() {
+ return isAllSelected;
+ }
+
+ public void setAllSelected(boolean isAllSelected) {
+ this.isAllSelected = isAllSelected;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableCellModifier.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableCellModifier.java
new file mode 100644
index 00000000000..17dcfd24fe5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableCellModifier.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.filter;
+
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.swt.widgets.TableItem;
+
+public class FilterTableCellModifier implements ICellModifier {
+
+ private FilterTableViewer filterTableViewer;
+
+ public FilterTableCellModifier(FilterTableViewer filterTableViewer) {
+ super();
+ this.filterTableViewer = filterTableViewer;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
+ */
+ public boolean canModify(Object element, String property) {
+ // Find the index of the column
+ int columnIndex = filterTableViewer.getColumnNames().indexOf(property);
+
+ switch (columnIndex) {
+ case FilterTableViewer.DELETE_NUM:
+ return true;
+ }
+ return true;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
+ */
+ public Object getValue(Object element, String property) {
+ // Find the index of the column
+ int columnIndex = filterTableViewer.getColumnNames().indexOf(property);
+
+ switch (columnIndex) {
+ case FilterTableViewer.DELETE_NUM:
+ return new Boolean(false);
+ }
+ return "";
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
+ */
+ public void modify(Object element, String property, Object value) {
+
+ // Find the index of the column
+ int columnIndex = filterTableViewer.getColumnNames().indexOf(property);
+
+ TableItem item = (TableItem) element;
+ FilterModel model = (FilterModel) item.getData();
+
+ switch (columnIndex) {
+ case FilterTableViewer.DELETE_NUM:
+ filterTableViewer.removeFilter(model);
+ break;
+ default:
+ }
+ filterTableViewer.getFilterList().filterChanged(model);
+ filterTableViewer.refresh();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java
new file mode 100644
index 00000000000..89a4331576b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.filter;
+
+import java.util.Arrays;
+import java.util.List;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchPage;
+import org.eclipse.osee.framework.ui.skynet.search.ui.IFilterListViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+public class FilterTableViewer {
+
+ private Table table;
+ private TableViewer tableViewer;
+
+ private FilterModelList filterList;
+
+ private String[] columnNames = new String[] {"Remove", "Filter", "Type", "Value"};
+ private static int[] columnWidths = new int[] {75, 100, 100, 100, 200};
+
+ public static final int DELETE_NUM = 0;
+ public static final int SEARCH_NUM = 1;
+ public static final int TYPE_NUM = 2;
+ public static final int VALUE_NUM = 3;
+
+ /**
+ * @param table -
+ */
+ public FilterTableViewer(Table table) {
+ this.table = table;
+
+ this.createControl();
+
+ tableViewer.setContentProvider(new FilterContentProvider());
+ tableViewer.setLabelProvider(new FilterModelLabelProvider());
+ tableViewer.setInput(filterList);
+ }
+
+ public void addItem(ISearchPrimitive searchPrimitive, String search, String type, String value) {
+ FilterModel model = new FilterModel(searchPrimitive, search, type, value);
+ filterList.addFilter(model, true);
+ }
+
+ private void createControl() {
+ filterList = new FilterModelList();
+ createColumns();
+ createTableViewer();
+ }
+
+ /**
+ * Create the TableViewer
+ */
+ private void createTableViewer() {
+
+ tableViewer = new TableViewer(table);
+ tableViewer.setUseHashlookup(true);
+ tableViewer.setColumnProperties(columnNames);
+
+ CellEditor[] validEditors = new CellEditor[columnNames.length];
+ validEditors[DELETE_NUM] = new CheckboxCellEditor(table, SWT.NONE);
+
+ // Assign the cell editors to the viewer
+ tableViewer.setCellEditors(validEditors);
+ // Assign the cell modifier to the viewer
+ tableViewer.setCellModifier(new FilterTableCellModifier(this));
+ }
+
+ /**
+ * Create the Columns
+ */
+ private void createColumns() {
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ TableColumn column = new TableColumn(table, SWT.LEFT, DELETE_NUM);
+ column.setText(columnNames[DELETE_NUM]);
+ column.setWidth(columnWidths[DELETE_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, SEARCH_NUM);
+ column.setText(columnNames[SEARCH_NUM]);
+ column.setWidth(columnWidths[SEARCH_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, TYPE_NUM);
+ column.setText(columnNames[TYPE_NUM]);
+ column.setWidth(columnWidths[TYPE_NUM]);
+
+ column = new TableColumn(table, SWT.LEFT, VALUE_NUM);
+ column.setText(columnNames[VALUE_NUM]);
+ column.setWidth(columnWidths[VALUE_NUM]);
+ }
+
+ public List<String> getColumnNames() {
+ return Arrays.asList(columnNames);
+ }
+
+ public FilterModelList getFilterList() {
+ return this.filterList;
+ }
+
+ public void refresh() {
+ tableViewer.refresh();
+ ArtifactSearchPage.updateOKStatus();
+ }
+
+ /**
+ * @return Returns the table.
+ */
+ public Table getTable() {
+ return table;
+ }
+
+ public void removeFilter(FilterModel filter) {
+ filterList.removeFilter(filter);
+ }
+
+ public int getCount() {
+ return filterList.getFilters().size();
+ }
+ /**
+ * InnerClass that acts as a proxy for the FilterModelList providing content for the Table. It implements the
+ * IFilterListViewer interface since it must register changeListeners with the FilterModelList
+ */
+ class FilterContentProvider implements IStructuredContentProvider, IFilterListViewer {
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ if (newInput != null) filterList.addChangeListener(this);
+ if (oldInput != null) filterList.removeChangeListener(this);
+ }
+
+ public void dispose() {
+ filterList.removeChangeListener(this);
+ }
+
+ // Return the tasks as an array of Objects
+ public Object[] getElements(Object parent) {
+ return filterList.getFilters().toArray();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IFilterListViewer#addFilter(FilterModel)
+ */
+ public void addFilter(FilterModel filter) {
+ tableViewer.add(filter);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IFilterListViewer#removeFilter(FilterModel)
+ */
+ public void removeFilter(FilterModel filter) {
+ tableViewer.remove(filter);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IFilterListViewer#updateFilter(FilterModel)
+ */
+ public void updateFilter(FilterModel filter) {
+ tableViewer.update(filter, null);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchComposite.java
new file mode 100644
index 00000000000..7107cd706e0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchComposite.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page;
+
+import org.eclipse.osee.framework.ui.skynet.search.page.actions.BranchRevisionListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.actions.BranchSelectionListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.actions.ListSelectionListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.actions.RevisionVerificationListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.actions.TreeNodeCheckStateListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.actions.TreeRefreshListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.manager.DataManager;
+import org.eclipse.osee.framework.ui.skynet.search.page.manager.IDataListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.widget.ArtifactTreeSearchWidget;
+import org.eclipse.osee.framework.ui.skynet.search.page.widget.ArtifactTypeListWidget;
+import org.eclipse.osee.framework.ui.skynet.search.page.widget.IViewer;
+import org.eclipse.osee.framework.ui.skynet.search.page.widget.RevisionSelectionWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+public class ArtifactSearchComposite extends Composite implements IViewer {
+
+ private ArtifactTypeListWidget artifactTypeListWidget;
+ private ArtifactTreeSearchWidget artifactTreeSearchWidget;
+ private RevisionSelectionWidget revisionSelectionWidget;
+ private Button addButton;
+ private DataManager revisionDataManager;
+
+ public ArtifactSearchComposite(Composite parent, int style) {
+ super(parent, style);
+ create();
+ }
+
+ private void create() {
+ this.setLayout(new GridLayout());
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ this.setFont(this.getParent().getFont());
+
+ revisionDataManager = new DataManager();
+ createBranchRevisionArea(this);
+
+ SashForm sashForm = new SashForm(this, SWT.HORIZONTAL);
+ sashForm.SASH_WIDTH = 3;
+ sashForm.setLayout(new GridLayout());
+ sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ createArtifactSelectArea(sashForm);
+ createArtifactTreeSearchArea(sashForm);
+ sashForm.setWeights(new int[] {1, 2});
+ attachActions();
+ }
+
+ private void createBranchRevisionArea(Composite parent) {
+ Group composite = new Group(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ composite.setText("Select a Branch and Revision");
+
+ revisionSelectionWidget = new RevisionSelectionWidget(composite, SWT.NONE);
+ }
+
+ private void createArtifactSelectArea(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setLayout(new GridLayout(2, false));
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ group.setText("Select Artifact Types");
+ group.setToolTipText("Select Artifact Types from list to add to Tree Search Area.");
+
+ artifactTypeListWidget = new ArtifactTypeListWidget(group, SWT.NONE);
+
+ addButton = new Button(group, SWT.PUSH);
+ addButton.setText(">");
+ }
+
+ private void createArtifactTreeSearchArea(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Select Artifact Types and Attributes to Search");
+ group.setToolTipText("Super Explicit Instructions...");
+ group.setLayout(new GridLayout());
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ artifactTreeSearchWidget = new ArtifactTreeSearchWidget(group, SWT.NONE);
+ }
+
+ public ArtifactTreeSearchWidget getTreeWidget() {
+ return artifactTreeSearchWidget;
+ }
+
+ public ArtifactTypeListWidget getListWidget() {
+ return artifactTypeListWidget;
+ }
+
+ public RevisionSelectionWidget getRevisionWidget() {
+ return revisionSelectionWidget;
+ }
+
+ public void addSelectionListener(SelectionListener listener) {
+ if (addButton != null && !addButton.isDisposed()) {
+ addButton.addSelectionListener(listener);
+ }
+ }
+
+ public void addRevisionDataListener(IDataListener listener) {
+ if (this.revisionDataManager != null) {
+ this.revisionDataManager.addDataListener(listener);
+ }
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ artifactTreeSearchWidget.dispose();
+ artifactTypeListWidget.dispose();
+ revisionSelectionWidget.dispose();
+ }
+
+ public void refresh() {
+ artifactTreeSearchWidget.refresh();
+ artifactTypeListWidget.refresh();
+ revisionSelectionWidget.refresh();
+ }
+
+ private void attachActions() {
+ new BranchSelectionListener(this);
+ new RevisionVerificationListener(this);
+ new ListSelectionListener(this);
+ new BranchRevisionListener(this);
+ new TreeNodeCheckStateListener(this);
+ new TreeRefreshListener(this);
+ }
+
+ public DataManager getRevisionDataManager() {
+ return revisionDataManager;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchMainPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchMainPage.java
new file mode 100644
index 00000000000..2d068801eb4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/ArtifactSearchMainPage.java
@@ -0,0 +1,446 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page;
+
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.ArtifactTypeNode;
+import org.eclipse.search.ui.ISearchPage;
+import org.eclipse.search.ui.ISearchPageContainer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+public class ArtifactSearchMainPage extends DialogPage implements ISearchPage {
+ public static final String EXTENSION_POINT_ID = "osee.define.artifact.search.ArtifactSearchMainPage"; //$NON-NLS-1$
+
+ private static ISearchPageContainer aContainer;
+ private ArtifactSearchComposite artifactTreeSearchComposite;
+ private Composite advancedSearchComposite;
+ private Composite stackComposite;
+ private StackLayout stackLayout;
+
+ public ArtifactSearchMainPage() {
+ super();
+ }
+
+ public void createControl(Composite parent) {
+ initializeDialogUnits(parent);
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ createSearchTypeSelectArea(composite);
+
+ stackComposite = new Composite(composite, SWT.NONE);
+ stackLayout = new StackLayout();
+ stackComposite.setLayout(stackLayout);
+ stackComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ artifactTreeSearchComposite = new ArtifactSearchComposite(stackComposite, SWT.NONE);
+ advancedSearchComposite = new Composite(stackComposite, SWT.BORDER);
+
+ stackLayout.topControl = artifactTreeSearchComposite;
+ stackComposite.layout();
+
+ setControl(parent);
+ aContainer.setPerformActionEnabled(false);
+ }
+
+ private void createSearchTypeSelectArea(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(2, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Button treeSearch = new Button(composite, SWT.RADIO);
+ treeSearch.setSelection(true);
+ treeSearch.setText("Tree Search");
+ treeSearch.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ stackLayout.topControl = artifactTreeSearchComposite;
+ stackComposite.layout();
+ }
+ });
+
+ Button advanceSearch = new Button(composite, SWT.RADIO);
+ advanceSearch.setText("Advanced Search");
+ advanceSearch.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ stackLayout.topControl = advancedSearchComposite;
+ stackComposite.layout();
+ }
+ });
+ }
+
+ // private void addSearchScope(Composite composite) {
+ // Group allSelectionGroup = new Group(composite, SWT.NONE);
+ // allSelectionGroup.setText("Matches");
+ // GridLayout layout = new GridLayout();
+ // GridData grid = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ // layout.numColumns = 2;
+ // allSelectionGroup.setLayout(layout);
+ // allSelectionGroup.setLayoutData(grid);
+ //
+ // allButton = new Button(allSelectionGroup, SWT.RADIO);
+ // allButton.setText("All filters");
+ // allButton.setSelection(true);
+ //
+ // atLeastOneButton = new Button(allSelectionGroup, SWT.RADIO);
+ // atLeastOneButton.setText("At least one filter");
+ //
+ // allButton.addSelectionListener(new SelectionListener() {
+ //
+ // public void widgetSelected(SelectionEvent e) {
+ // isAllSelected = true;
+ // }
+ //
+ // public void widgetDefaultSelected(SelectionEvent e) {
+ //
+ // }
+ // });
+ //
+ // atLeastOneButton.addSelectionListener(new SelectionListener() {
+ //
+ // public void widgetSelected(SelectionEvent e) {
+ // isAllSelected = false;
+ // }
+ //
+ // public void widgetDefaultSelected(SelectionEvent e) {
+ //
+ // }
+ // });
+ // }
+
+ // private void addFilterControls(Composite composite) {
+ // Group filterGroup = new Group(composite, SWT.NONE);
+ // filterGroup.setText("Create Filter");
+ // GridLayout layout = new GridLayout();
+ // GridData grid = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ // layout.numColumns = 4;
+ // filterGroup.setLayout(layout);
+ // filterGroup.setLayoutData(grid);
+ //
+ // searchTypeLabel = new Label(filterGroup, SWT.HORIZONTAL);
+ // searchTypeLabel.setText("Filter");
+ //
+ // aTypeLabel = new Label(filterGroup, SWT.HORIZONTAL);
+ // aTypeLabel.setText("Type");
+ // aTypeLabel.setVisible(false);
+ //
+ // aValueLabel = new Label(filterGroup, SWT.HORIZONTAL);
+ // aValueLabel.setText("Value");
+ // aValueLabel.setVisible(false);
+ //
+ // new Label(filterGroup, SWT.NONE);
+ //
+ // searchTypeList = new Combo(filterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
+ // searchTypeList.setItems(searchListArray);
+ // searchTypeList.select(0);
+ //
+ // Composite selectionComp = new Composite(filterGroup, SWT.NONE);
+ // selectionLayout = new StackLayout();
+ // selectionComp.setLayout(selectionLayout);
+ // selectionComp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 2, 1));
+ //
+ // stdSelection = new Composite(selectionComp, SWT.NONE);
+ // stdSelection.setLayout(new GridLayout(2, true));
+ //
+ // aTypeText = new Text(stdSelection, SWT.BORDER);
+ // aTypeText.setVisible(false);
+ //
+ // aValueText = new Text(stdSelection, SWT.BORDER);
+ // aValueText.setText("");
+ // aValueText.setVisible(false);
+ //
+ // relSelection = new Composite(selectionComp, SWT.NONE);
+ // relSelection.setLayout(new GridLayout(2, true));
+ //
+ // relationTypeList = new Combo(relSelection, SWT.DROP_DOWN | SWT.READ_ONLY);
+ // for (IRelationLinkDescriptor linkDescriptor :
+ // RelationPersistenceManager.getInstance().getIRelationLinkDescriptors()) {
+ // relationTypeList.add(linkDescriptor.getName());
+ // relationTypeList.setData(linkDescriptor.getName(), linkDescriptor);
+ // }
+ // relationTypeList.addSelectionListener(new SelectionAdapter() {
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // relationSideList.removeAll();
+ // IRelationLinkDescriptor linkDescriptor = (IRelationLinkDescriptor)
+ // relationTypeList.getData(relationTypeList.getText());
+ // relationSideList.add(linkDescriptor.getSideAName());
+ // relationSideList.add(linkDescriptor.getSideBName());
+ // relationSideList.select(0);
+ // }
+ // });
+ // relationTypeList.select(0);
+ // relationTypeList.setVisible(true);
+ //
+ // relationSideList = new Combo(relSelection, SWT.DROP_DOWN | SWT.READ_ONLY);
+ // IRelationLinkDescriptor linkDescriptor = (IRelationLinkDescriptor)
+ // relationTypeList.getData(relationTypeList.getText());
+ // relationSideList.add(linkDescriptor.getSideAName());
+ // relationSideList.add(linkDescriptor.getSideBName());
+ // relationSideList.select(0);
+ // relationSideList.setVisible(true);
+ //
+ // selectionLayout.topControl = stdSelection;
+ //
+ // addButton = new Button(filterGroup, SWT.PUSH);
+ // addButton.setText("Add");
+ //
+ // new Label(filterGroup, SWT.NONE).setText("search string(* = any string)");
+ //
+ // wildCardChkBox = new Button(filterGroup, SWT.CHECK);
+ // wildCardChkBox.setText("Wild Card");
+ // wildCardChkBox.setEnabled(false);
+ //
+ // updateAddButton();
+ // }
+
+ // private void addFilterListeners() {
+ // wildCardChkBox.addSelectionListener(new SelectionListener() {
+ //
+ // public void widgetSelected(SelectionEvent e) {
+ // wildCardChecked = !wildCardChecked;
+ // }
+ //
+ // public void widgetDefaultSelected(SelectionEvent e) {
+ // }
+ //
+ // });
+ // addButton.addSelectionListener(new SelectionListener() {
+ // public void widgetSelected(SelectionEvent e) {
+ // addFilterToTable();
+ // updateOKStatus();
+ // aValueText.setText("");
+ // aTypeText.setText("");
+ // }
+ //
+ // public void widgetDefaultSelected(SelectionEvent e) {
+ // }
+ // });
+ //
+ // searchTypeList.addSelectionListener(new SelectionListener() {
+ //
+ // public void widgetSelected(SelectionEvent e) {
+ // if (searchTypeList.getText().compareTo(SELECT_FILTER) == 0) {
+ // setVisibilityOfWidgets(false, false, false, false, false, false);
+ // wildCardChecked = false;
+ // }
+ // else if (searchTypeList.getText().compareTo(ATTRIBUTE_VALUE_FILTER) == 0) {
+ // setVisibilityOfWidgets(true, true, true, true, true, false);
+ // }
+ // else if (searchTypeList.getText().compareTo(ARTIFACT_TYPE_FILTER) == 0) {
+ // setVisibilityOfWidgets(true, true, false, false, true, false);
+ // }
+ // else if (searchTypeList.getText().compareTo(IN_RELATION_FILTER) == 0) {
+ // setVisibilityOfWidgets(true, true, true, true, false, true);
+ // wildCardChecked = false;
+ // }
+ // updateAddButton();
+ // }
+ //
+ // public void widgetDefaultSelected(SelectionEvent e) {
+ // }
+ // });
+ //
+ // aTypeText.addModifyListener(new ModifyListener() {
+ // public void modifyText(ModifyEvent e) {
+ // updateAddButton();
+ // }
+ // });
+ //
+ // aValueText.addModifyListener(new ModifyListener() {
+ // public void modifyText(ModifyEvent e) {
+ // updateAddButton();
+ // }
+ // });
+ // }
+
+ // /**
+ // * @param typeLabel
+ // * @param typeText
+ // * @param valueLabel
+ // * @param valueText
+ // * @param wildcard
+ // * @param relationLists
+ // */
+ // private void setVisibilityOfWidgets(boolean typeLabel, boolean typeText, boolean valueLabel,
+ // boolean valueText,
+ // boolean wildcard, boolean relationLists) {
+ //
+ // aValueLabel.setText((relationLists) ? "Side" : "Value");
+ //
+ // aTypeLabel.setVisible(typeLabel);
+ // aTypeText.setVisible(typeText && !relationLists);
+ // aValueLabel.setVisible(valueLabel);
+ // aValueText.setVisible(valueText && !relationLists);
+ // // relationTypeList.setVisible(typeText && relationLists);
+ // // relationSideList.setVisible(valueText && relationLists);
+ // // relationTypeList.setVisible(true);
+ // // relationSideList.setVisible(true);
+ // selectionLayout.topControl = (relationLists) ? relSelection : stdSelection;
+ // selectionLayout.topControl.getParent().layout();
+ //
+ // wildCardChkBox.setEnabled(wildcard);
+ // }
+ //
+ // private void addTableControls(Composite composite) {
+ // Label tableLabel = new Label(composite, SWT.HORIZONTAL);
+ // tableLabel.setText("Filters");
+ //
+ // Table table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.HIDE_SELECTION);
+ // viewer = new FilterTableViewer(table);
+ // GridData gridData = new GridData();
+ // gridData.heightHint = 150;
+ // table.setLayoutData(gridData);
+ // }
+ //
+ // private void updateAddButton() {
+ // if (selectionLayout.topControl == relSelection)
+ // addButton.setEnabled(true);
+ // else if (aTypeText.getText().compareTo("") == 0)
+ // addButton.setEnabled(false);
+ // else if (searchTypeList.getText().compareTo(SELECT_FILTER) == 0)
+ // addButton.setEnabled(false);
+ // else if (aValueText.isVisible()) {
+ // if (aValueText.getText().length() == 0)
+ // addButton.setEnabled(false);
+ // else
+ // addButton.setEnabled(true);
+ // }
+ // else
+ // addButton.setEnabled(true);
+ // }
+
+ // private void addFilterToTable() {
+ // ISearchPrimitive primitive = null;
+ // Operator operator = null;
+ // String type = aTypeText.getText();
+ // String value = aValueText.getText();
+ //
+ // // TODO create class that will process querys...
+ // if (wildCardChecked) {
+ // operator = LIKE;
+ // type = type.replace("*", "%");
+ // value = value.replace("*", "%");
+ // }
+ // else {
+ // operator = EQUAL;
+ // }
+ //
+ // if (searchTypeList.getText().equals(ATTRIBUTE_VALUE_FILTER)) {
+ // primitive = new AttributeValueSearch(type, value, operator);
+ // }
+ // else if (searchTypeList.getText().equals(ARTIFACT_TYPE_FILTER)) {
+ // primitive = new ArtifactTypeSearch(type, operator);
+ // }
+ // else if (searchTypeList.getText().equals(IN_RELATION_FILTER)) {
+ // IRelationLinkDescriptor linkDescriptor = (IRelationLinkDescriptor)
+ // relationTypeList.getData(relationTypeList.getText());
+ // primitive = new InRelationSearch(relationTypeList.getText(),
+ // linkDescriptor.getSideAName().equals(
+ // relationSideList.getText()));
+ // }
+ //
+ // if (primitive != null) {
+ // String typeTxt, valueTxt;
+ // if (searchTypeList.getText().equals(IN_RELATION_FILTER)) {
+ // typeTxt = relationTypeList.getText();
+ // valueTxt = relationSideList.getText();
+ // }
+ // else {
+ // typeTxt = aTypeText.getText();
+ // valueTxt = aValueText.getText();
+ // }
+ // viewer.addItem(primitive, searchTypeList.getText(), typeTxt, valueTxt);
+ // }
+ // }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ this.artifactTreeSearchComposite.dispose();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.search.ui.ISearchPage#setContainer(org.eclipse.search.ui.ISearchPageContainer)
+ */
+ public void setContainer(ISearchPageContainer container) {
+ ArtifactSearchMainPage.aContainer = container;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.search.ui.ISearchPage#performAction()
+ */
+ public boolean performAction() {
+ System.out.println("Performing Query....");
+
+ // NewSearchUI.activateSearchResultView();
+ // viewer.getFilterList().setAllSelected(isAllSelected);
+ // ArtifactSearchQuery searchQuery = new ArtifactSearchQuery(viewer.getFilterList());
+ // NewSearchUI.runQueryInBackground(searchQuery);
+
+ OriginalArtifactSearch search = new OriginalArtifactSearch();
+ List<ArtifactTypeNode> treeRoots = artifactTreeSearchComposite.getTreeWidget().getInputManager().getInputList();
+ for (ArtifactTypeNode node : treeRoots) {
+ try {
+ // Tree<Artifact> artifactTree =
+ search.getArtifactSearch(node);
+ } catch (SQLException e) {
+
+ e.printStackTrace();
+ }
+
+ }
+
+ return true;
+ }
+
+ // /**
+ // * Returns the aContainer.
+ // */
+ // public static ISearchPageContainer getContainer() {
+ // return aContainer;
+ // }
+ // /*
+ // * Implements method from IDialogPage
+ // */
+
+ /**
+ * @param visible - boolean indication to set.
+ */
+ public void setVisible(boolean visible) {
+ // if (visible) {
+ // searchTypeList.setFocus();
+ // }
+ // updateOKStatus();
+ super.setVisible(visible);
+ }
+
+ // public static void updateOKStatus() {
+ // if (viewer.getFilterList().getFilters().isEmpty())
+ // getContainer().setPerformActionEnabled(false);
+ // else
+ // getContainer().setPerformActionEnabled(true);
+ // }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/OriginalArtifactSearch.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/OriginalArtifactSearch.java
new file mode 100644
index 00000000000..6569aa5885f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/OriginalArtifactSearch.java
@@ -0,0 +1,215 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page;
+
+import static org.eclipse.osee.framework.skynet.core.artifact.search.Operator.EQUAL;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.osee.framework.jdk.core.collection.tree.Tree;
+import org.eclipse.osee.framework.jdk.core.collection.tree.TreeNode;
+import org.eclipse.osee.framework.jdk.core.type.TreeObject;
+import org.eclipse.osee.framework.jdk.core.type.TreeParent;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactTypeIdSearch;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ISearchPrimitive;
+import org.eclipse.osee.framework.skynet.core.artifact.search.RelationTypeIdSearch;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.ArtifactTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.RelationTypeNode;
+
+public class OriginalArtifactSearch {
+
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final ArtifactPersistenceManager artifactManager = ArtifactPersistenceManager.getInstance();
+
+ // public static void dummySearch() {
+ // String name, version, pass, fail, status, executionDate;
+ //
+ // // ResultSetStructure resultSet = new ResultSetStructure();
+ //
+ // // resultSet.addColumn("name", 1);
+ // // resultSet.addColumn("version", 2);
+ // // resultSet.addColumn("pass", 3);
+ // // resultSet.addColumn("fail", 4);
+ // // resultSet.addColumn("status", 5);
+ // // resultSet.addColumn("execution date", 6);
+ //
+ // try {
+ // // GET ALL OF THE TEST_SCRIPTS
+ // List<ISearchPrimitive> criteria = new LinkedList<ISearchPrimitive>();
+ // criteria.add(new ArtifactTypeSearch(TestScript.ARTIFACT_NAME
+ // .toString(), EQUAL));
+ // Collection<Artifact> artifacts = ArtifactPersistenceManager
+ // .getInstance().getArtifacts(criteria, true,
+ // Branch.getDefaultBranch());
+ // Iterator<Artifact> artIt = artifacts.iterator();
+ // while (artIt.hasNext()) {
+ // Artifact artifact = artIt.next();
+ //
+ // name = artifact.getAttribute(TestAttributes.NAME.toString())
+ // .getSoleAttributeValue();
+ //
+ // Set<Artifact> configurations = artifact
+ // .getArtifacts(RelationSide.TestConfigurationRelation_TestConfiguration);
+ // Iterator<Artifact> configIt = configurations.iterator();
+ // while (configIt.hasNext()) {
+ // Artifact configuration = configIt.next();
+ //
+ // version = configuration.getAttribute(
+ // TestAttributes.VERSION.toString())
+ // .getSoleAttributeValue();
+ //
+ // Set<Artifact> runs = configuration
+ // .getArtifacts(RelationSide.TestRunConfigRelation_TestRun);
+ // Iterator<Artifact> runIt = runs.iterator();
+ // while (runIt.hasNext()) {
+ // Artifact run = runIt.next();
+ //
+ // Set<Artifact> users = run
+ // .getArtifacts(RelationSide.RunByRelation_User);
+ // Iterator<Artifact> userIt = users.iterator();
+ // while (userIt.hasNext()) {
+ // // Artifact user = userIt.next();
+ //
+ // // // User Run
+ // // Attributes[] attributes =
+ // // User.Attributes.values();
+ // // for (Attributes attribute : attributes) {
+ // // (attribute.name().toLowerCase(),
+ // // user.getAttribute(attribute.name()).getSoleAttributeValue());
+ // // }
+ //
+ // pass = run.getAttribute(
+ // TestAttributes.TEST_PASS.toString())
+ // .getSoleAttributeValue();
+ // fail = run.getAttribute(
+ // TestAttributes.TEST_FAIL.toString())
+ // .getSoleAttributeValue();
+ // status = run.getAttribute(
+ // TestAttributes.TEST_STATUS.toString())
+ // .getSoleAttributeValue();
+ // executionDate = run.getAttribute(
+ // TestAttributes.EXECUTION_DATE.toString())
+ // .getSoleAttributeValue();
+ //
+ // // userName =
+ // // run.getAttribute(TestAttributes.EXECUTION_DATE.toString()).getSoleAttributeValue();
+ //
+ // // resultSet.addRow(name, version, pass, fail, status,
+ // // executionDate);
+ //
+ // }
+ //
+ // }
+ // }
+ // }
+ // } catch (SQLException e) {
+ //
+ // e.printStackTrace();
+ //
+ // }
+ //
+ // }
+
+ public void recursiveArtifactSearch(TreeNode<Artifact> node) {
+
+ List<ISearchPrimitive> criteria = new LinkedList<ISearchPrimitive>();
+ try {
+ Collection<Artifact> artifacts =
+ artifactManager.getArtifacts(criteria, true, branchManager.getDefaultBranch());
+ Iterator<Artifact> artifact = artifacts.iterator();
+ while (artifact.hasNext()) {
+
+ }
+ } catch (SQLException e) {
+
+ e.printStackTrace();
+ }
+ }
+
+ // private Collection<Artifact> getArtifacts(int ArtifactTypeId, int RelationTypeId) {
+ // // ArtifactTypeIdSearch
+ // return null;
+ // }
+
+ // private List<ISearchPrimitive> buildSearch(ArtifactTypeNode parent, Artifact artifact){
+ // List<ISearchPrimitive> search = new ArrayList<ISearchPrimitive>();
+ //
+ // TreeObject[] objs = parent.getChildren();
+ // for( TreeObject obj : objs ){
+ // if(obj instanceof RelationTypeNode){
+ //
+ // }
+ // }
+ // return search;
+ // }
+
+ public Tree<Artifact> getArtifactSearch2(TreeParent parent) throws SQLException {
+ Tree<Artifact> artifactTree = new Tree<Artifact>();
+ if (parent instanceof ArtifactTypeNode) {
+ ArtifactTypeNode artNode = ((ArtifactTypeNode) parent);
+ TreeObject[] treeObjects = artNode.getChildren();
+ List<ISearchPrimitive> criteria = new LinkedList<ISearchPrimitive>();
+ ISearchPrimitive search = getSearchPrimative(parent);
+ if (search != null) {
+ criteria.add(search);
+ }
+ for (TreeObject treeObject : treeObjects) {
+ if (treeObject.isChecked()) {
+ search = getSearchPrimative(treeObject);
+ System.out.println(search.getArtIdColName());
+ System.out.println(search.getArtIdColName() + "1");
+ if (search != null) {
+ criteria.add(search);
+ }
+ }
+ }
+ System.out.println("hello 5");
+ Collection<Artifact> artifacts =
+ artifactManager.getArtifacts(criteria, true, branchManager.getDefaultBranch());
+ System.out.println("hello 6");
+ artifactTree.getRoot().addChildren(artifacts);
+
+ }
+ return artifactTree;
+ }
+
+ public Tree<Artifact> getArtifactSearch(TreeParent parent) throws SQLException {
+ Tree<Artifact> artifactTree = new Tree<Artifact>();
+ if (parent instanceof ArtifactTypeNode) {
+ List<ISearchPrimitive> criteria = new LinkedList<ISearchPrimitive>();
+ ISearchPrimitive search = getSearchPrimative(parent);
+ if (search != null) {
+ criteria.add(search);
+ }
+ Collection<Artifact> artifacts =
+ artifactManager.getArtifacts(criteria, true, branchManager.getDefaultBranch());
+ artifactTree.getRoot().addChildren(artifacts);
+
+ }
+ return artifactTree;
+ }
+
+ private ISearchPrimitive getSearchPrimative(TreeObject treeObject) {
+ if (treeObject instanceof ArtifactTypeNode) {
+ return new ArtifactTypeIdSearch(((ArtifactTypeNode) treeObject).getSubTypeDescriptor().getArtTypeId(), EQUAL);
+ } else if (treeObject instanceof RelationTypeNode) {
+ return new RelationTypeIdSearch(
+ ((RelationTypeNode) treeObject).getRelationLinkDescriptor().getPersistenceMemo().getLinkTypeId(), EQUAL);
+ }
+ return null;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/SkynetArtifactAdapter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/SkynetArtifactAdapter.java
new file mode 100644
index 00000000000..d1bd1f6aa78
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/SkynetArtifactAdapter.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeProcessor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeTypeProcessor;
+import org.eclipse.osee.framework.skynet.core.relation.DynamicRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.LinkDescriptorPersistenceMemo;
+import org.eclipse.osee.framework.skynet.core.sql.SkynetRevisionControl;
+import org.eclipse.osee.framework.skynet.core.sql.SkynetSql;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionId;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandlerStatement;
+import org.eclipse.osee.framework.ui.plugin.util.db.Query;
+import org.eclipse.osee.framework.ui.plugin.util.db.RsetProcessor;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.ArtifactTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.AttributeTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.RelationTypeNode;
+
+public class SkynetArtifactAdapter {
+ private static SkynetArtifactAdapter instance = null;
+ private static SkynetSql skynetSql = SkynetSql.getInstance();
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+
+ private SkynetArtifactAdapter() {
+ }
+
+ public static SkynetArtifactAdapter getInstance() {
+ if (instance == null) {
+ instance = new SkynetArtifactAdapter();
+ }
+ return instance;
+ }
+
+ public Map<String, Map<String, Integer>> getBranchRevisions() {
+ Map<String, Map<String, Integer>> map = new HashMap<String, Map<String, Integer>>();
+ try {
+ ConnectionHandlerStatement statement =
+ ConnectionHandler.runPreparedQuery(SkynetRevisionControl.SELECT_REVISION);
+ ResultSet rSet = statement.getRset();
+ while (rSet.next()) {
+ int branchId = rSet.getInt("branchId");
+ int min = rSet.getInt("minTX");
+ int max = rSet.getInt("maxTX");
+ String branch = rSet.getString("branchName");
+ if (branch != null && !branch.equals("")) {
+ Map<String, Integer> valuesMap = new HashMap<String, Integer>();
+ valuesMap.put("branchId", branchId);
+ valuesMap.put("minTX", min);
+ valuesMap.put("maxTX", max);
+ map.put(branch, valuesMap);
+ }
+ }
+ rSet.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ return map;
+ }
+
+ private Collection<DynamicAttributeDescriptor> getAttributeTypesFromArtifactTypeId(int artTypeid, int branchId, int revision) throws SQLException {
+ Collection<DynamicAttributeDescriptor> attributes = new LinkedList<DynamicAttributeDescriptor>();
+ String sql =
+ skynetSql.getMetaDataSql().getAttributeTypeBy("art_type_id", Integer.toString(artTypeid), branchId,
+ revision);
+ try {
+ Query.acquireCollection(attributes, sql, new DynamicAttributeTypeProcessor(branchManager.getBranch(branchId)));
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ return attributes;
+ }
+
+ private Collection<IRelationLinkDescriptor> getIRelationLinkDescriptorsFromArtifactTypeId(int artTypeid, int branchId, final int revision) throws SQLException {
+ Collection<IRelationLinkDescriptor> relationsTypes = new LinkedList<IRelationLinkDescriptor>();
+ String sql =
+ skynetSql.getMetaDataSql().getRelationTypeBy("art_type_id", Integer.toString(artTypeid), branchId, revision);
+ try {
+ Query.acquireCollection(relationsTypes, sql, new RsetProcessor<IRelationLinkDescriptor>() {
+ public IRelationLinkDescriptor process(ResultSet set) throws SQLException {
+ IRelationLinkDescriptor descriptor = null;
+ try {
+
+ TransactionId transactionId =
+ transactionIdManager.getEditableTransactionId(branchManager.getDefaultBranch());
+
+ descriptor =
+ new DynamicRelationLinkDescriptor(set.getString("type_name"), set.getString("a_name"),
+ set.getString("b_name"), set.getString("ab_phrasing"), set.getString("ba_phrasing"),
+ set.getString("short_name"), transactionId);
+ descriptor.setPersistenceMemo(new LinkDescriptorPersistenceMemo(set.getInt("rel_link_type_id")));
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return descriptor;
+ }
+
+ public boolean validate(IRelationLinkDescriptor item) {
+ return item != null;
+ }
+ });
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+
+ return relationsTypes;
+ }
+
+ private Collection<ArtifactSubtypeDescriptor> getArtifactTypeDescriptorsFromRelationLinkId(int relationLinkId, int branchId, int revision) throws SQLException {
+ Collection<ArtifactSubtypeDescriptor> descriptors = new LinkedList<ArtifactSubtypeDescriptor>();
+
+ String sql =
+ skynetSql.getMetaDataSql().getArtifactTypesWithRelationTypesById("rel_link_type_id",
+ Integer.toString(relationLinkId), branchId, revision);
+ try {
+ Query.acquireCollection(descriptors, sql, new ArtifactSubtypeProcessor(branchManager.getDefaultBranch()));
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ return descriptors;
+ }
+
+ public ArtifactTypeNode createArtifactTypeNode(ArtifactSubtypeDescriptor artifactType, int branchId, int revision) {
+ return createArtifactTypeNode(artifactType, "", branchId, revision); // Accept all relations
+ }
+
+ // Filter parent relations unless "" or null is passed in.
+ public ArtifactTypeNode createArtifactTypeNode(ArtifactSubtypeDescriptor artifactType, String parentRelationName, int branchId, int revision) {
+ ArtifactTypeNode artifactTypeNode = new ArtifactTypeNode(artifactType);
+ Collection<DynamicAttributeDescriptor> attributeTypes = null;
+ Collection<IRelationLinkDescriptor> relationsTypes = null;
+ int artTypeid = artifactType.getArtTypeId();
+ if (parentRelationName == null) {
+ parentRelationName = "";
+ }
+ try {
+ attributeTypes = getAttributeTypesFromArtifactTypeId(artTypeid, branchId, revision);
+ relationsTypes = getIRelationLinkDescriptorsFromArtifactTypeId(artTypeid, branchId, revision);
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ for (DynamicAttributeDescriptor descriptor : attributeTypes) {
+ artifactTypeNode.addChild(new AttributeTypeNode(descriptor));
+ }
+ for (IRelationLinkDescriptor relationType : relationsTypes) {
+ if (!relationType.getName().equals(parentRelationName)) {
+ artifactTypeNode.addChild(new RelationTypeNode(relationType, artifactTypeNode, branchId, revision));
+ }
+ }
+ return artifactTypeNode;
+ }
+
+ public Collection<ArtifactSubtypeDescriptor> getValidArtifactTypesForRelationLink(IRelationLinkDescriptor relationLinkDescriptor, int branchId, int revision) {
+ Collection<ArtifactSubtypeDescriptor> descriptors = null;
+ try {
+ if (relationLinkDescriptor != null && relationLinkDescriptor.getPersistenceMemo() != null) {
+ int relationLinkId = relationLinkDescriptor.getPersistenceMemo().getLinkTypeId();
+ descriptors = getArtifactTypeDescriptorsFromRelationLinkId(relationLinkId, branchId, revision);
+ }
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ return descriptors;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchRevisionListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchRevisionListener.java
new file mode 100644
index 00000000000..09c21ed00ee
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchRevisionListener.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.actions;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.osee.framework.ui.skynet.search.page.manager.IDataListener;
+import org.eclipse.swt.widgets.Display;
+
+public class BranchRevisionListener implements IDataListener {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(BranchRevisionListener.class);
+ private static final ConfigurationPersistenceManager configurationManager =
+ ConfigurationPersistenceManager.getInstance();
+ private ArtifactSearchComposite parentWindow;
+
+ public BranchRevisionListener(ArtifactSearchComposite parentWindow) {
+ this.parentWindow = parentWindow;
+ this.parentWindow.addRevisionDataListener(this);
+ }
+
+ public void dataChanged() {
+ System.out.println("Branch/Revision Changed");
+ refreshTypeList();
+ }
+
+ synchronized private void refreshTypeList() {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ int branch =
+ parentWindow.getRevisionWidget().getBranchId(parentWindow.getRevisionDataManager().getBranchName());
+ int revision = parentWindow.getRevisionDataManager().getRevision();
+
+ Collection<ArtifactSubtypeDescriptor> descriptors = null;
+ if (branch > 0 && revision > 0) {
+ try {
+ descriptors =
+ configurationManager.getArtifactSubtypeDescriptors(BranchPersistenceManager.getInstance().getBranch(
+ branch));
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+
+ if (descriptors != null) {
+ parentWindow.getListWidget().getListViewer().setInput(descriptors);
+ parentWindow.getTreeWidget().getInputManager().removeAll();
+ } else {
+ parentWindow.getListWidget().getListViewer().setInput(null);
+ parentWindow.getTreeWidget().getInputManager().removeAll();
+ }
+ }
+ });
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchSelectionListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchSelectionListener.java
new file mode 100644
index 00000000000..1311774d3ba
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/BranchSelectionListener.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.actions;
+
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+
+public class BranchSelectionListener extends SelectionAdapter {
+ private ArtifactSearchComposite parentWindow;
+
+ public BranchSelectionListener(ArtifactSearchComposite parentWindow) {
+ this.parentWindow = parentWindow;
+ this.parentWindow.getRevisionWidget().getBranchCombo().addSelectionListener(this);
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ String currentSelection = this.parentWindow.getRevisionWidget().getCurrentBranchSelection();
+ if (currentSelection != null && !currentSelection.equals("") && !currentSelection.equals(this.parentWindow.getRevisionWidget().getDefaultBranchValue())) {
+
+ this.parentWindow.getRevisionWidget().getRevisionField().setEnabled(true);
+ this.parentWindow.getRevisionWidget().getRevisionField().setEditable(true);
+ this.parentWindow.getRevisionWidget().setTextFieldToolTip(currentSelection);
+ } else {
+ this.parentWindow.getRevisionWidget().getRevisionField().setEnabled(false);
+ this.parentWindow.getRevisionWidget().setTextFieldToolTip(currentSelection);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/ListSelectionListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/ListSelectionListener.java
new file mode 100644
index 00000000000..f8e43193dc7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/ListSelectionListener.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.actions;
+
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.osee.framework.ui.skynet.search.page.SkynetArtifactAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+public class ListSelectionListener implements ISelectionChangedListener, SelectionListener {
+
+ private ArtifactSubtypeDescriptor selectedArtifact;
+ private ArtifactSearchComposite parentWindow;
+
+ public ListSelectionListener(ArtifactSearchComposite parentWindow) {
+ this.parentWindow = parentWindow;
+ this.parentWindow.addSelectionListener(this);
+ this.parentWindow.getListWidget().addSelectionListener(this);
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ selectedArtifact = (ArtifactSubtypeDescriptor) selection.getFirstElement();
+ }
+
+ public void addCurrentSelectionToTree() {
+ if (parentWindow.getTreeWidget() != null && selectedArtifact != null) {
+ int revision = parentWindow.getRevisionDataManager().getRevision();
+ int branchId =
+ parentWindow.getRevisionWidget().getBranchId(parentWindow.getRevisionDataManager().getBranchName());
+ parentWindow.getTreeWidget().getInputManager().addNode(
+ SkynetArtifactAdapter.getInstance().createArtifactTypeNode(selectedArtifact, branchId, revision));
+ parentWindow.getTreeWidget().refresh();
+ }
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ addCurrentSelectionToTree();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/RevisionVerificationListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/RevisionVerificationListener.java
new file mode 100644
index 00000000000..1722c9e4300
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/RevisionVerificationListener.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.actions;
+
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+public class RevisionVerificationListener implements Listener {
+
+ private ArtifactSearchComposite parentWindow;
+
+ public RevisionVerificationListener(ArtifactSearchComposite parentWindow) {
+ this.parentWindow = parentWindow;
+ this.parentWindow.getRevisionWidget().getRevisionField().addListener(SWT.Verify, this);
+ }
+
+ private void verifyRevisionValue(String currentValue, Event e) {
+ String currentBranch = this.parentWindow.getRevisionWidget().getCurrentBranchSelection();
+ int revision = (currentValue.equals("") ? 0 : Integer.parseInt(currentValue));
+ int min = this.parentWindow.getRevisionWidget().getValidMin(currentBranch);
+ int max = this.parentWindow.getRevisionWidget().getValidMax(currentBranch);
+
+ if (currentValue.equals("")) {
+ e.doit = true;
+ } else if (min <= revision && revision <= max) {
+ e.doit = true;
+ } else {
+ revision = 0;
+ e.doit = false;
+ }
+ updateListAndTree(currentBranch, revision);
+ }
+
+ public void handleEvent(Event e) {
+ Text textField = (Text) e.widget;
+ String currentText = textField.getText();
+
+ if (!Character.isDigit(e.character) && e.character != SWT.DEL && e.character != SWT.BS) {
+ e.doit = false;
+ return;
+ }
+
+ final String newString;
+ if (e.start >= currentText.length()) {
+ newString = currentText + e.text;
+ } else {
+ String first = currentText.substring(0, e.start);
+ String last = currentText.substring(e.end);
+ newString = first + e.text + last;
+ }
+
+ if (newString.matches("\\d*")) {
+ verifyRevisionValue(newString, e);
+ } else {
+ e.doit = false;
+ }
+ }
+
+ private void updateListAndTree(String currentBranch, int revision) {
+ this.parentWindow.getRevisionDataManager().setBranchAndRevision(currentBranch, revision);
+ this.parentWindow.getRevisionWidget().setToolTipText(currentBranch);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeNodeCheckStateListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeNodeCheckStateListener.java
new file mode 100644
index 00000000000..a682c0e0308
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeNodeCheckStateListener.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.actions;
+
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.osee.framework.jdk.core.type.TreeObject;
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.ArtifactTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.AttributeTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.RelationTypeNode;
+
+public class TreeNodeCheckStateListener implements ICheckStateListener {
+
+ private ArtifactSearchComposite parentWindow;
+
+ public TreeNodeCheckStateListener(ArtifactSearchComposite parentWindow) {
+ this.parentWindow = parentWindow;
+ this.parentWindow.getTreeWidget().addCheckBoxStateListener(this);
+ }
+
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ TreeObject treeObject = (TreeObject) event.getElement();
+ treeObject.setChecked(event.getChecked());
+ if (treeObject instanceof RelationTypeNode) {
+ parentWindow.getTreeWidget().getInputManager().inputChanged();
+ // GetArtifactTypesFromRelationJob job =
+ // new GetArtifactTypesFromRelationJob("Populate ArtifactTypes From Relation Link Type",
+ // parentWindow, (RelationTypeNode) treeObject, event.getChecked());
+ // GetArtifactTypesFromRelationJob.scheduleJob(job);
+
+ } else if (treeObject instanceof ArtifactTypeNode) {
+ ArtifactTypeNode artifactTypeNode = (ArtifactTypeNode) treeObject;
+ if (artifactTypeNode.hasChildren()) {
+ TreeObject[] children = artifactTypeNode.getChildren();
+ for (TreeObject child : children) {
+ if (child instanceof AttributeTypeNode) {
+ parentWindow.getTreeWidget().getTreeViewer().setChecked(child, event.getChecked());
+ }
+ }
+ }
+ parentWindow.getTreeWidget().refresh();
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeRefreshListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeRefreshListener.java
new file mode 100644
index 00000000000..a7123971e93
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/actions/TreeRefreshListener.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.actions;
+
+import java.util.Collection;
+import org.eclipse.osee.framework.jdk.core.type.IInputListener;
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.ArtifactTypeNode;
+
+public class TreeRefreshListener implements IInputListener<ArtifactTypeNode> {
+
+ private ArtifactSearchComposite parentWindow;
+
+ public TreeRefreshListener(ArtifactSearchComposite parentWindow) {
+ this.parentWindow = parentWindow;
+ this.parentWindow.getTreeWidget().getInputManager().addInputListener(this);
+ }
+
+ public void refresh() {
+ this.parentWindow.getTreeWidget().refresh();
+ }
+
+ public void addNode(ArtifactTypeNode node) {
+ refresh();
+ }
+
+ public void removeNode(ArtifactTypeNode node) {
+ refresh();
+ }
+
+ public void removeAll() {
+ refresh();
+ }
+
+ public void inputChanged() {
+ refresh();
+ }
+
+ public void addNodes(Collection<ArtifactTypeNode> nodes) {
+ refresh();
+ }
+
+ public void nodeChanged(ArtifactTypeNode inNode) {
+ refresh();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/ArtifactTypeNode.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/ArtifactTypeNode.java
new file mode 100644
index 00000000000..9e451784d99
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/ArtifactTypeNode.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.data;
+
+import org.eclipse.osee.framework.jdk.core.type.TreeParent;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class ArtifactTypeNode extends TreeParent implements Comparable<ArtifactTypeNode> {
+ private ArtifactSubtypeDescriptor subTypeDescriptor;
+
+ public ArtifactTypeNode(ArtifactSubtypeDescriptor subTypeDescriptor) {
+ super(subTypeDescriptor.getName());
+ this.subTypeDescriptor = subTypeDescriptor;
+ }
+
+ public String getArtifactTypeName() {
+ return getName();
+ }
+
+ public void setSchemaName(String artifactTypeName) {
+ setName(artifactTypeName);
+ }
+
+ public ArtifactSubtypeDescriptor getSubTypeDescriptor() {
+ return subTypeDescriptor;
+ }
+
+ public int compareTo(ArtifactTypeNode other) {
+ return this.getArtifactTypeName().compareTo(other.getArtifactTypeName());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/AttributeTypeNode.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/AttributeTypeNode.java
new file mode 100644
index 00000000000..2ce62547a49
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/AttributeTypeNode.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.data;
+
+import org.eclipse.osee.framework.jdk.core.type.TreeObject;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class AttributeTypeNode extends TreeObject implements Comparable<AttributeTypeNode> {
+
+ private DynamicAttributeDescriptor attributeType;
+
+ public AttributeTypeNode(DynamicAttributeDescriptor attributeType) {
+ super(attributeType.getName());
+ this.attributeType = attributeType;
+ }
+
+ public DynamicAttributeDescriptor getAttributeType() {
+ return attributeType;
+ }
+
+ public String getAttributeTypeName() {
+ return getName();
+ }
+
+ public void setAttributeTypeNamee(String attributeTypeName) {
+ setName(attributeTypeName);
+ }
+
+ public int compareTo(AttributeTypeNode other) {
+ return this.getAttributeTypeName().compareTo(other.getAttributeTypeName());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/RelationTypeNode.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/RelationTypeNode.java
new file mode 100644
index 00000000000..a9bdbe2d741
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/data/RelationTypeNode.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.data;
+
+import java.util.Collection;
+import java.util.TreeSet;
+import org.eclipse.osee.framework.jdk.core.type.TreeParent;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.ui.skynet.search.page.SkynetArtifactAdapter;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class RelationTypeNode extends TreeParent implements Comparable<RelationTypeNode> {
+
+ private IRelationLinkDescriptor relationLinkDescriptor;
+ private ArtifactTypeNode parentArtifactTypeNode;
+ private Collection<ArtifactTypeNode> childArtifactTypeNodes;
+ int branchId;
+ int revision;
+
+ public RelationTypeNode(IRelationLinkDescriptor relationLinkDescriptor, ArtifactTypeNode parentArtifactTypeNode, int branchId, int revision) {
+ super(relationLinkDescriptor.getName());
+ this.relationLinkDescriptor = relationLinkDescriptor;
+ this.parentArtifactTypeNode = parentArtifactTypeNode;
+ this.childArtifactTypeNodes = new TreeSet<ArtifactTypeNode>();
+ this.branchId = branchId;
+ this.revision = revision;
+ }
+
+ public String getRelationTypeName() {
+ return getName();
+ }
+
+ public void setRelationTypeName(String RelationTypeName) {
+ setName(RelationTypeName);
+ }
+
+ public void setChecked(boolean isChecked) {
+ super.setChecked(isChecked);
+ if (childArtifactTypeNodes.size() == 0) {
+ populateChildArtifactTypeNodes();
+ }
+ manageRelationDisplay(isChecked);
+ }
+
+ public Collection<ArtifactTypeNode> getChildArtifactTypeNodes() {
+ return childArtifactTypeNodes;
+ }
+
+ public void populateChildArtifactTypeNodes() {
+ Collection<ArtifactSubtypeDescriptor> descriptors =
+ SkynetArtifactAdapter.getInstance().getValidArtifactTypesForRelationLink(relationLinkDescriptor, branchId,
+ revision);
+ if (descriptors != null && (descriptors.size() > 0)) {
+ childArtifactTypeNodes.clear();
+ for (ArtifactSubtypeDescriptor descriptor : descriptors) {
+ if (!descriptor.getName().equals(parentArtifactTypeNode.getArtifactTypeName())) {
+ childArtifactTypeNodes.add(SkynetArtifactAdapter.getInstance().createArtifactTypeNode(descriptor,
+ getRelationTypeName(), branchId, revision));
+ }
+ }
+ }
+ }
+
+ public void manageRelationDisplay(boolean isChecked) {
+ if (isChecked()) {
+ for (ArtifactTypeNode node : childArtifactTypeNodes) {
+ addChild(node);
+ }
+ } else {
+ for (ArtifactTypeNode node : childArtifactTypeNodes) {
+ removeChild(node);
+ }
+ }
+ }
+
+ public ArtifactTypeNode getParentArtifactTypeNode() {
+ return parentArtifactTypeNode;
+ }
+
+ public IRelationLinkDescriptor getRelationLinkDescriptor() {
+ return relationLinkDescriptor;
+ }
+
+ public int compareTo(RelationTypeNode other) {
+ return this.getRelationTypeName().compareTo(other.getRelationTypeName());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/jobs/GetArtifactTypesFromRelationJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/jobs/GetArtifactTypesFromRelationJob.java
new file mode 100644
index 00000000000..41a267d4959
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/jobs/GetArtifactTypesFromRelationJob.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.jobs;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.ui.skynet.search.page.ArtifactSearchComposite;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.RelationTypeNode;
+import org.eclipse.swt.widgets.Display;
+
+public class GetArtifactTypesFromRelationJob extends Job {
+
+ private ArtifactSearchComposite composite;
+ private RelationTypeNode node;
+ private boolean isChecked;
+
+ public GetArtifactTypesFromRelationJob(String title, ArtifactSearchComposite composite, RelationTypeNode node, boolean isChecked) {
+ super(title);
+ this.composite = composite;
+ this.node = node;
+ this.isChecked = isChecked;
+ }
+
+ public static void scheduleJob(Job job) {
+ job.setUser(true);
+ job.setPriority(Job.SHORT);
+ job.schedule();
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ if (node.getChildArtifactTypeNodes().size() == 0) {
+ node.populateChildArtifactTypeNodes();
+ }
+ node.manageRelationDisplay(isChecked);
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ composite.getTreeWidget().getInputManager().inputChanged();
+ }
+ });
+ return Status.OK_STATUS;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/DataManager.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/DataManager.java
new file mode 100644
index 00000000000..bf74b2531db
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/DataManager.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.manager;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class DataManager implements IDataListener {
+ private Set<IDataListener> listeners = new HashSet<IDataListener>();
+
+ private String branchName;
+ private int revision;
+
+ public DataManager() {
+ super();
+ branchName = "";
+ revision = 0;
+ }
+
+ public String getBranchName() {
+ return branchName;
+ }
+
+ public int getRevision() {
+ return revision;
+ }
+
+ public void setBranchName(String branchName) {
+ if (!this.branchName.equals(branchName)) {
+ this.branchName = branchName;
+ dataChanged();
+ }
+ }
+
+ public void setRevision(int revision) {
+ if (this.revision != revision) {
+ this.revision = revision;
+ dataChanged();
+ }
+ }
+
+ public void setBranchAndRevision(String branchName, int revision) {
+ boolean branchChanged = false;
+ boolean revisionChanged = false;
+
+ if (!this.branchName.equals(branchName)) {
+ this.branchName = branchName;
+ branchChanged = true;
+ }
+
+ if (this.revision != revision) {
+ this.revision = revision;
+ revisionChanged = true;
+ }
+
+ if (branchChanged || revisionChanged) {
+ dataChanged();
+ }
+ }
+
+ public void addDataListener(IDataListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removeDataListener(IDataListener listener) {
+ listeners.remove(listener);
+ }
+
+ public void dataChanged() {
+ Iterator<IDataListener> iterator = listeners.iterator();
+ while (iterator.hasNext()) {
+ (iterator.next()).dataChanged();
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/IDataListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/IDataListener.java
new file mode 100644
index 00000000000..c8cd48bf6ea
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/manager/IDataListener.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.manager;
+
+public interface IDataListener {
+
+ void dataChanged();
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTreeSearchWidget.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTreeSearchWidget.java
new file mode 100644
index 00000000000..461c9d02800
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTreeSearchWidget.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.widget;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.jdk.core.type.InputManager;
+import org.eclipse.osee.framework.jdk.core.type.TreeObject;
+import org.eclipse.osee.framework.jdk.core.type.TreeParent;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.ArtifactTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.AttributeTypeNode;
+import org.eclipse.osee.framework.ui.skynet.search.page.data.RelationTypeNode;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+
+public class ArtifactTreeSearchWidget extends Composite implements IViewer {
+
+ private CheckboxTreeViewer treeViewer;
+ private InputManager<ArtifactTypeNode> inputManager;
+
+ private static final Image ARTIFACT_IMAGE = SkynetGuiPlugin.getInstance().getImage("laser_16_16.gif");
+ private static final Image RELATION_IMAGE = SkynetGuiPlugin.getInstance().getImage("relate.gif");
+
+ public ArtifactTreeSearchWidget(Composite parent, int style) {
+ super(parent, style);
+ createControl();
+ }
+
+ private void createControl() {
+ this.setLayout(new GridLayout());
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.widthHint = 300;
+ this.setLayoutData(gd);
+ createTreeArea(this);
+ }
+
+ private void createTreeArea(Composite parent) {
+ inputManager = new InputManager<ArtifactTypeNode>();
+ treeViewer =
+ new CheckboxTreeViewer(parent,
+ SWT.MULTI | SWT.CHECK | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new TreeContentProvider());
+ treeViewer.setLabelProvider(new TreeLableProvider());
+ treeViewer.setInput(inputManager.getInputList());
+ treeViewer.getTree().setBackground(Display.getDefault().getSystemColor(SWT.COLOR_GRAY));
+ }
+
+ public CheckboxTreeViewer getTreeViewer() {
+ return treeViewer;
+ }
+
+ public void addSelectionListener(ISelectionChangedListener listener) {
+ treeViewer.addSelectionChangedListener(listener);
+ }
+
+ synchronized public void setTreeInput(List<ArtifactTypeNode> inputList) {
+ treeViewer.setInput(inputList);
+ }
+
+ public void addCheckBoxStateListener(ICheckStateListener listener) {
+ treeViewer.addCheckStateListener(listener);
+ }
+
+ public void dispose() {
+ this.treeViewer.getTree().dispose();
+ }
+
+ public void refresh() {
+ this.treeViewer.refresh();
+ };
+
+ public InputManager<ArtifactTypeNode> getInputManager() {
+ return inputManager;
+ }
+
+ private class TreeLableProvider extends LabelProvider {
+
+ public Image getImage(Object obj) {
+ Image toReturn = null;
+ if (obj instanceof ArtifactTypeNode) {
+ toReturn = ARTIFACT_IMAGE;
+ } else if (obj instanceof AttributeTypeNode) {
+ // toReturn = ATTRIBUTE_IMAGE;
+ } else if (obj instanceof RelationTypeNode) {
+ toReturn = RELATION_IMAGE;
+ }
+ return toReturn;
+ }
+
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+ };
+
+ private class TreeContentProvider implements ITreeContentProvider {
+
+ public void dispose() {
+
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement != null && parentElement instanceof TreeParent) {
+ TreeParent parent = (TreeParent) parentElement;
+ if (parent.hasChildren()) {
+ return parent.getChildren();
+ }
+ }
+ return new Object[0];
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object inputElement) {
+ if (inputElement != null && inputElement instanceof ArrayList) {
+ ArrayList elementArray = (ArrayList) inputElement;
+ return elementArray.toArray();
+ }
+ return new Object[0];
+ }
+
+ public Object getParent(Object element) {
+ if (element != null && element instanceof TreeObject) {
+ TreeObject child = (TreeObject) element;
+ return child.getParent();
+ }
+ return new Object();
+ }
+
+ public boolean hasChildren(Object element) {
+ if (element instanceof TreeParent) {
+ TreeParent parent = (TreeParent) element;
+ return parent.hasChildren();
+ }
+ return false;
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTypeListWidget.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTypeListWidget.java
new file mode 100644
index 00000000000..e0034f5c0ee
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/ArtifactTypeListWidget.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.widget;
+
+import java.util.LinkedList;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+public class ArtifactTypeListWidget extends Composite implements IViewer {
+
+ private ListViewer artTypeList;
+
+ public ArtifactTypeListWidget(Composite parent, int style) {
+ super(parent, style);
+ createControl();
+ }
+
+ public void createControl() {
+ this.setLayout(new GridLayout());
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ artTypeList = new ListViewer(this, SWT.CHECK | SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
+ artTypeList.setContentProvider(new ContentProvider());
+ artTypeList.setLabelProvider(new ArtTypeLabelProvider());
+ artTypeList.setSorter(new ListSorter());
+
+ GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);
+ gd.heightHint = 300;
+ gd.widthHint = 200;
+ artTypeList.getControl().setLayoutData(gd);
+ artTypeList.setInput(null);
+ }
+
+ public ListViewer getListViewer() {
+ return artTypeList;
+ }
+
+ public void addSelectionListener(ISelectionChangedListener listener) {
+ artTypeList.addSelectionChangedListener(listener);
+ }
+
+ public class ListSorter extends ViewerSorter {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((ArtifactSubtypeDescriptor) e1).getName(),
+ ((ArtifactSubtypeDescriptor) e2).getName());
+ }
+ }
+
+ public class ContentProvider implements IStructuredContentProvider {
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object arg0) {
+ return ((LinkedList) arg0).toArray();
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
+ }
+ }
+
+ public class ArtTypeLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ return ((ArtifactSubtypeDescriptor) arg0).getName();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+ }
+
+ public class ArtLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ return ((Artifact) arg0).getHumanReadableId();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+ }
+
+ public void dispose() {
+ this.artTypeList.getList().dispose();
+ }
+
+ public void refresh() {
+ this.artTypeList.refresh();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/IViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/IViewer.java
new file mode 100644
index 00000000000..ecc1de4bb1d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/IViewer.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.widget;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface IViewer {
+ public void dispose();
+
+ public void refresh();
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/RevisionSelectionWidget.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/RevisionSelectionWidget.java
new file mode 100644
index 00000000000..142aec62873
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/page/widget/RevisionSelectionWidget.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.page.widget;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.osee.framework.ui.skynet.search.page.SkynetArtifactAdapter;
+import org.eclipse.osee.framework.ui.swt.SearchCCombo;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+
+public class RevisionSelectionWidget extends Composite implements IViewer {
+
+ private static final String DEFAULT_BRANCH_STRING = "NO BRANCH AVAILABLE";
+ private SearchCCombo branchCombo;
+ private Text revisionField;
+ private Map<String, Map<String, Integer>> branches;
+
+ public RevisionSelectionWidget(Composite parent, int style) {
+ super(parent, style);
+ branches = new HashMap<String, Map<String, Integer>>();
+ createControl();
+ }
+
+ public void createControl() {
+ this.setLayout(new GridLayout(2, false));
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ createBranchSelectionCombo(this);
+ createRevisionSelection(this);
+
+ refresh();
+ }
+
+ private void createBranchSelectionCombo(Composite parent) {
+ branchCombo = new SearchCCombo(parent, SWT.BORDER);
+ branchCombo.setLayout(new GridLayout());
+ branchCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ branchCombo.setText(DEFAULT_BRANCH_STRING);
+ branchCombo.setToolTipText("Select the Branch to search.");
+
+ }
+
+ private void createRevisionSelection(Composite parent) {
+ revisionField = new Text(parent, SWT.BORDER | SWT.Verify);
+ revisionField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
+ revisionField.setText("");
+ revisionField.setEnabled(false);
+ }
+
+ public Text getRevisionField() {
+ return revisionField;
+ }
+
+ public SearchCCombo getBranchCombo() {
+ return branchCombo;
+ }
+
+ public void dispose() {
+ branchCombo.dispose();
+ revisionField.dispose();
+ }
+
+ public void refresh() {
+ refreshCombos();
+ }
+
+ public int getValidMin(String branch) {
+ Map<String, Integer> minMaxArray = branches.get(branch);
+ if (minMaxArray != null) {
+ return minMaxArray.get("minTX");
+ }
+ return -1;
+ }
+
+ public int getValidMax(String branch) {
+ Map<String, Integer> minMaxArray = branches.get(branch);
+ if (minMaxArray != null) {
+ return minMaxArray.get("maxTX");
+ }
+ return -1;
+ }
+
+ public int getBranchId(String branch) {
+ Map<String, Integer> minMaxArray = branches.get(branch);
+ if (minMaxArray != null) {
+ return minMaxArray.get("branchId");
+ }
+ return -1;
+ }
+
+ public void setTextFieldToolTip(String branch) {
+ if (branches.containsKey(branch)) {
+ revisionField.setToolTipText("Valid range is: [" + getValidMin(branch) + "..." + getValidMax(branch) + "]");
+ } else {
+ revisionField.setToolTipText("Select a Branch before entering revision number.");
+ }
+ }
+
+ public String getCurrentBranchSelection() {
+ return branchCombo.getItem(branchCombo.getSelectionIndex());
+ }
+
+ public String getDefaultBranchValue() {
+ return DEFAULT_BRANCH_STRING;
+ }
+
+ private void populateCombos() {
+ if (branches.size() > 0) {
+ Set<String> branchNames = branches.keySet();
+ branchCombo.clearSelection();
+ for (String branch : branchNames) {
+ branchCombo.add(branch);
+ }
+ branchCombo.select(0);
+ setTextFieldToolTip(branchCombo.getItem(0));
+ revisionField.setEnabled(true);
+ revisionField.setEditable(true);
+ } else {
+ branchCombo.clearSelection();
+ revisionField.setEnabled(false);
+ branchCombo.setText(DEFAULT_BRANCH_STRING);
+ revisionField.setText("");
+ }
+ }
+
+ synchronized private void refreshCombos() {
+ Display.getCurrent().asyncExec(new Runnable() {
+ public void run() {
+ branches = SkynetArtifactAdapter.getInstance().getBranchRevisions();
+ populateCombos();
+ }
+ });
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ModificationReportJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ModificationReportJob.java
new file mode 100644
index 00000000000..6a81c5c3d4c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ModificationReportJob.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.report;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.io.CharBackedInputStream;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.excel.ExcelXmlWriter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.revision.RevisionManager;
+import org.eclipse.osee.framework.ui.plugin.util.AIFile;
+import org.eclipse.osee.framework.ui.plugin.util.OseeData;
+import org.eclipse.swt.program.Program;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class ModificationReportJob extends ReportJob {
+ private final HashMap<Artifact, String[]> matrix;
+ private final String[] header = new String[] {"Artifact Name", "HRID", "Modification Count"};
+
+ public ModificationReportJob() {
+ super("Modification Report");
+ matrix = new HashMap<Artifact, String[]>();
+ }
+
+ @Override
+ public void generateReport(List<Artifact> selectedArtifacts, IProgressMonitor monitor) throws CoreException, IOException, SQLException {
+ matrix.clear();
+
+ int columnIndex = 2;
+ for (Artifact artifact : selectedArtifacts) {
+ if (artifact != null) {
+ processArtifact(artifact, monitor);
+ }
+ columnIndex++;
+ }
+ writeMatrix();
+ }
+
+ private void processArtifact(Artifact artifact, IProgressMonitor monitor) throws SQLException {
+ monitor.subTask("Processing " + artifact.getDescriptiveName());
+
+ String[] row = new String[3];
+
+ row[0] = artifact.getDescriptiveName();
+ row[1] = artifact.getHumanReadableId();
+ row[2] = Integer.toString(RevisionManager.getInstance().getTransactionsPerArtifact(artifact).size());
+
+ matrix.put(artifact, row);
+
+ // Recursively process the full DH tree
+ for (Artifact child : artifact.getChildren())
+ processArtifact(child, monitor);
+ }
+
+ private void writeMatrix() throws IOException, CoreException {
+ CharBackedInputStream charBak = new CharBackedInputStream();
+ ExcelXmlWriter excelWriter = new ExcelXmlWriter(charBak.getWriter());
+ excelWriter.startSheet("Modification Report");
+
+ excelWriter.writeRow(header);
+ for (String[] row : matrix.values()) {
+ excelWriter.writeRow(row);
+ }
+ excelWriter.endWorkbook();
+
+ IFile iFile = OseeData.getIFile("Modification Report " + new Date().toString().replaceAll(":", ";") + ".xml");
+ AIFile.writeToFile(iFile, charBak);
+
+ // Ensure Excel is used since the file assocation for xml could be off
+ Program.findProgram("xls").execute(iFile.getLocation().toOSString());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/RelationMatrixExportJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/RelationMatrixExportJob.java
new file mode 100644
index 00000000000..b90b5d2bc13
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/RelationMatrixExportJob.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.report;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.io.CharBackedInputStream;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.excel.ExcelXmlWriter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.LinkManager;
+import org.eclipse.osee.framework.ui.plugin.util.AIFile;
+import org.eclipse.osee.framework.ui.plugin.util.OseeData;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class RelationMatrixExportJob extends ReportJob {
+ private final HashMap<Artifact, String[]> matrix;
+ private final String relationTypeName;
+ private IRelationLinkDescriptor relationType;
+ private int columnCount;
+ private String[] header;
+
+ public RelationMatrixExportJob(IRelationLinkDescriptor relationType) {
+ super(relationType.getName() + " Report");
+ this.relationTypeName = relationType.getName();
+ matrix = new HashMap<Artifact, String[]>();
+ this.relationType = relationType;
+ }
+
+ @Override
+ public void generateReport(List<Artifact> selectedArtifacts, IProgressMonitor monitor) throws CoreException, IOException, SQLException {
+ matrix.clear();
+ columnCount = selectedArtifacts.size() + 2; // use first column is the artifact name and 2nd is its identifier
+ header = new String[columnCount];
+ header[0] = "Artifact Name";
+ header[1] = "Artifact ID";
+
+ int columnIndex = 2;
+ for (Artifact columnArtifact : selectedArtifacts) {
+ if (columnArtifact != null) {
+ saveRelationsForColumn(columnArtifact, columnIndex);
+ }
+ columnIndex++;
+ }
+ writeMatrix();
+ }
+
+ private void saveRelationsForColumn(Artifact columnArtifact, int columnIndex) throws SQLException {
+ header[columnIndex] = columnArtifact.getDescriptiveName();
+
+ LinkManager linkManager = columnArtifact.getLinkManager();
+ for (IRelationLink link : columnArtifact.getRelations(relationType)) {
+ String[] row = getAssociatedRow(linkManager.getOtherSideAritfact(link));
+ String rationale = link.getRationale();
+ if (rationale == null || rationale.trim().equals("")) {
+ row[columnIndex] = "X";
+ } else {
+ row[columnIndex] = rationale;
+ }
+ }
+ }
+
+ private String[] getAssociatedRow(Artifact artifact) {
+ String[] row = matrix.get(artifact);
+ if (row == null) {
+ row = new String[columnCount];
+ row[0] = artifact.getDescriptiveName();
+ row[1] = artifact.getSoleAttributeValue("Imported Paragraph Number");
+ matrix.put(artifact, row);
+ }
+ return row;
+ }
+
+ private void writeMatrix() throws IOException, CoreException {
+ CharBackedInputStream charBak = new CharBackedInputStream();
+ ExcelXmlWriter excelWriter = new ExcelXmlWriter(charBak.getWriter());
+ excelWriter.startSheet(relationTypeName + " Matrix");
+
+ excelWriter.writeRow(header);
+ for (String[] row : matrix.values()) {
+ excelWriter.writeRow(row);
+ }
+ excelWriter.endWorkbook();
+
+ IFile iFile = OseeData.getIFile(relationTypeName + ".xml");
+ AIFile.writeToFile(iFile, charBak);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportJob.java
new file mode 100644
index 00000000000..a5bb6475d7f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportJob.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.report;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.search.ui.text.Match;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class ReportJob extends Job {
+ private IStructuredSelection selection;
+
+ /**
+ * @param name
+ */
+ public ReportJob(String name) {
+ super(name);
+ }
+
+ @Override
+ protected final IStatus run(IProgressMonitor monitor) {
+ try {
+ List<Artifact> artifacts;
+ if (selection == null) {
+ artifacts = new ArrayList<Artifact>(0);
+ } else {
+ artifacts = new ArrayList<Artifact>(selection.size());
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ Object obj = iter.next();
+ if (obj instanceof Match && ((Match) obj).getElement() instanceof Artifact) artifacts.add((Artifact) ((Match) obj).getElement());
+ }
+ }
+ generateReport(artifacts, monitor);
+ } catch (Exception ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+ return Status.OK_STATUS;
+ }
+
+ /**
+ * All exceptoins that are thrown will be gracefully handled by the GUI
+ *
+ * @param selectedArtifacts
+ * @param monitor
+ */
+ public abstract void generateReport(List<Artifact> selectedArtifacts, IProgressMonitor monitor) throws Exception;
+
+ /**
+ * @param selection
+ */
+ public final void setSelection(IStructuredSelection selection) {
+ this.selection = selection;
+ }
+
+ public final IStructuredSelection getSelection() {
+ return selection;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportSelectionListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportSelectionListener.java
new file mode 100644
index 00000000000..099403dffa1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/report/ReportSelectionListener.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.report;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.ui.plugin.util.Jobs;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ReportSelectionListener implements SelectionListener {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ReportSelectionListener.class);
+ private TableViewer tableViewer;
+
+ public ReportSelectionListener(TableViewer tableViewer) {
+ super();
+ this.tableViewer = tableViewer;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent ev) {
+ ReportJob job = (ReportJob) ((MenuItem) ev.getSource()).getData();
+ job.setSelection((IStructuredSelection) tableViewer.getSelection());
+ try {
+ Jobs.startJob(job);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactMatchAdapter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactMatchAdapter.java
new file mode 100644
index 00000000000..a07c082cd34
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactMatchAdapter.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.ui;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.search.AbstractArtifactSearchResult;
+import org.eclipse.search.ui.text.Match;
+
+public interface IArtifactMatchAdapter {
+ /**
+ * Returns an array with all matches contained in the given artifact in the given search result. If the matches are
+ * not contained within an <code>Artifact</code>, this method must return an empty array.
+ *
+ * @param result the search result to find matches in
+ * @param artifact the artifact to find matches in
+ * @return an array of matches (possibly empty)
+ */
+ public abstract Match computeContainedMatch(AbstractArtifactSearchResult result, Artifact artifact);
+
+ /**
+ * Returns the artifact associated with the given element (usually the artifact the element is contained in). If the
+ * element is not associated with a artifact, this method should return <code>null</code>.
+ *
+ * @param element an element associated with a match
+ * @return the artifact associated with the element or <code>null</code>
+ */
+ public abstract Artifact getArtifact(Object element);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchContentProvider.java
new file mode 100644
index 00000000000..20aa3a0bd29
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchContentProvider.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.ui;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public interface IArtifactSearchContentProvider {
+ public abstract void elementsChanged(Object[] updatedElements);
+
+ public abstract void clear();
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchResultCollector.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchResultCollector.java
new file mode 100644
index 00000000000..41556da637e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IArtifactSearchResultCollector.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.ui;
+
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+/**
+ * @author Michael S. Rodgers
+ */
+public interface IArtifactSearchResultCollector {
+ /**
+ * Returns the progress monitor used to setup and report progress.
+ *
+ * @return The progress monitor
+ */
+ public IProgressMonitor getProgressMonitor();
+
+ /**
+ * Called before the actual search starts.
+ *
+ * @throws CoreException Throws when starting failed.
+ */
+ public void aboutToStart() throws CoreException;
+
+ /**
+ * Accepts the given search result.
+ *
+ * @param proxy proxy the resource proxy in which the match has been found.
+ * @param start position from the beginning of the file. Start position is zero based.
+ * @param length the length of the match.
+ * @throws CoreException Processing failed
+ */
+ public void accept(IResourceProxy proxy, int start, int length) throws CoreException;
+
+ /**
+ * Called when the search has ended.
+ *
+ * @throws CoreException Throws when finish failed.
+ */
+ public void done() throws CoreException;
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IFilterListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IFilterListViewer.java
new file mode 100644
index 00000000000..d1c594ac872
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ui/IFilterListViewer.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.search.ui;
+
+import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModel;
+
+public interface IFilterListViewer {
+
+ /**
+ * Update the view to reflect the fact that a FilterModel was added to the FilterModel list
+ *
+ * @param filter
+ */
+ public void addFilter(FilterModel filter);
+
+ /**
+ * Update the view to reflect the fact that a FilterModel was removed from the FilterModel list
+ *
+ * @param filter
+ */
+ public void removeFilter(FilterModel filter);
+
+ /**
+ * Update the view to reflect the fact that one of the FilterModels was modified
+ *
+ * @param filter
+ */
+ public void updateFilter(FilterModel filter);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphContentProvider.java
new file mode 100644
index 00000000000..da034257e9f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphContentProvider.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.mylyn.zest.core.viewers.IGraphEntityContentProvider;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.LinkManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+
+/**
+ * @author Robert A. Fisher
+ * @author Donald G. Dunne
+ */
+public class ArtifactGraphContentProvider implements IGraphEntityContentProvider {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactGraphContentProvider.class);
+ // private static final Collection<Artifact>EMPTY_LIST = new ArrayList<Artifact>(0);
+ private SkyWalkerOptions options;
+
+ /**
+ * @param levels
+ */
+ public ArtifactGraphContentProvider(SkyWalkerOptions options) {
+ super();
+ this.options = options;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.mylar.zest.core.viewers.IGraphEntityContentProvider#getConnectedTo(java.lang.Object)
+ */
+ public Object[] getConnectedTo(Object entity) {
+ List<Artifact> otherItems = new LinkedList<Artifact>();
+
+ // Don't want to create any links to artifacts that are NOT in displayArtifacts
+ try {
+ LinkManager linkManager = ((Artifact) entity).getLinkManager();
+ for (RelationLinkGroup linkGroup : linkManager.getGroups()) {
+ if (!options.isFilterEnabled()) {
+ for (Artifact art : linkGroup.getArtifacts()) {
+ if (displayArtifacts.contains(art)) otherItems.add(art);
+ }
+ } else if (options.isValidRelationLinkGroup(linkGroup)) for (Artifact art : linkGroup.getArtifacts())
+ if (options.isValidArtifactType(art) && displayArtifacts.contains(art)) otherItems.add(art);
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ return otherItems.toArray();
+
+ }
+
+ private Set<Artifact> displayArtifacts = new HashSet<Artifact>();
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.mylar.zest.core.viewers.IGraphEntityContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ // Only perform this method for top level artifact
+ if (inputElement.equals(options.getArtifact())) {
+ displayArtifacts.clear();
+ displayArtifacts.add((Artifact) inputElement);
+ getDescendants(displayArtifacts, (Artifact) inputElement, options.getLevels());
+ return displayArtifacts.toArray();
+ }
+ return null;
+ }
+
+ private void getDescendants(Collection<Artifact> displayArtifacts, Artifact artifact, int level) {
+ // System.out.println("getDecendants level: " + level + " artifact => " + artifact);
+ if (level == 0) {
+ return;
+ } else {
+ try {
+ LinkManager linkManager = artifact.getLinkManager();
+ for (RelationLinkGroup linkGroup : linkManager.getGroups()) {
+ if (!options.isFilterEnabled()) {
+ for (Artifact art : linkGroup.getArtifacts()) {
+ displayArtifacts.add(art);
+ getDescendants(displayArtifacts, art, level - 1);
+ }
+ } else if (options.isValidRelationLinkGroup(linkGroup)) {
+ for (Artifact art : linkGroup.getArtifacts()) {
+ if (options.isValidArtifactType(art)) {
+ displayArtifacts.add(art);
+ getDescendants(displayArtifacts, art, level - 1);
+ }
+ }
+ }
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.mylar.zest.core.viewers.IGraphEntityContentProvider#getWeight(java.lang.Object,
+ * java.lang.Object)
+ */
+ public double getWeight(Object entity1, Object entity2) {
+ return 0;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphLabelProvider.java
new file mode 100644
index 00000000000..efb3f6726dc
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ArtifactGraphLabelProvider.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.mylyn.zest.core.viewers.EntityConnectionData;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLink;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptions.LinkName;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Robert A. Fisher
+ * @author Donald G. Dunne
+ */
+public class ArtifactGraphLabelProvider implements ILabelProvider {
+ private final SkyWalkerOptions options;
+
+ public ArtifactGraphLabelProvider(SkyWalkerOptions options) {
+ this.options = options;
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage(Object element) {
+ if (element instanceof Artifact) {
+ return ((Artifact) element).getImage();
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object element) {
+ try {
+ if (element instanceof Artifact) {
+ return ((Artifact) element).getDescriptiveName() + options.getExtendedName((Artifact) element);
+ } else if (element instanceof EntityConnectionData) {
+ Object obj1 = ((EntityConnectionData) element).dest;
+ Object obj2 = ((EntityConnectionData) element).source;
+ if (obj1 instanceof Artifact && obj2 instanceof Artifact) {
+ Artifact dest = (Artifact) obj1;
+ Artifact source = (Artifact) obj2;
+
+ Collection<IRelationLink> links = dest.getRelations(source);
+
+ Collection<String> linkNames = new ArrayList<String>(links.size());
+ for (IRelationLink link : links) {
+ if (options.getLinkName() == LinkName.Phrasing_A_to_B) {
+ if (link.getArtifactA().equals(source)) {
+ linkNames.add(source + " (" + link.getSidePhrasingFor(source) + ") " + dest);
+ } else {
+ linkNames.add(dest + " (" + link.getSidePhrasingFor(dest) + ") " + source);
+ }
+ } else if (options.getLinkName() == LinkName.Phrasing_B_to_A) {
+ if (link.getArtifactA().equals(source)) {
+ linkNames.add(dest + " (" + link.getSidePhrasingFor(dest) + ") " + source);
+ } else {
+ linkNames.add(source + " (" + link.getSidePhrasingFor(source) + ") " + dest);
+ }
+ } else if (options.getLinkName() == LinkName.Link_Name)
+ linkNames.add(link.getLinkDescriptor().getName());
+ else if (options.getLinkName() == LinkName.Full_Link_Name)
+ linkNames.add(link.getLinkDescriptor().toString());
+ else if (options.getLinkName() == LinkName.Other_Side_Name) {
+ if (link.getArtifactA().equals(source)) {
+ linkNames.add(source + " (" + link.getSideNameFor(source) + ")" + " <--> " + dest + " (" + link.getSideNameFor(dest) + ")");
+ } else {
+ linkNames.add(dest + " (" + link.getSideNameFor(dest) + ")" + " <--> " + source + " (" + link.getSideNameFor(source) + ")");
+ }
+ } else
+ linkNames.add("");
+ }
+ return Collections.toString("\n", linkNames);
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ return ex.getLocalizedMessage();
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ISkyWalkerOptionsChangeListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ISkyWalkerOptionsChangeListener.java
new file mode 100644
index 00000000000..f3c066dac3e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/ISkyWalkerOptionsChangeListener.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface ISkyWalkerOptionsChangeListener {
+
+ public enum ModType {
+ Artifact, Level, ArtType, RelType, FilterEnabled, Layout, Link_Name, Show_Attribute
+ };
+
+ public void modified(ModType... modTypes);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/RelTypeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/RelTypeContentProvider.java
new file mode 100644
index 00000000000..9d85b5582f4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/RelTypeContentProvider.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class RelTypeContentProvider implements ITreeContentProvider {
+
+ /**
+ *
+ */
+ public RelTypeContentProvider() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Collection) return ((Collection) parentElement).toArray();
+ if (parentElement instanceof IRelationLinkDescriptor) {
+ return new Object[] {new RelationLinkDescriptorSide((IRelationLinkDescriptor) parentElement, true),
+ new RelationLinkDescriptorSide((IRelationLinkDescriptor) parentElement, false)};
+ }
+ return new Object[] {};
+ }
+
+ public static class RelationLinkDescriptorSide {
+ private final IRelationLinkDescriptor desc;
+ private final Boolean sideA;
+
+ public RelationLinkDescriptorSide(IRelationLinkDescriptor desc, boolean sideA) {
+ this.desc = desc;
+ this.sideA = sideA;
+ }
+
+ public String toString() {
+ return (sideA ? desc.getSideAName() : desc.getSideBName()) + " - " + desc.getName();
+ }
+
+ /**
+ * @return the sideA
+ */
+ public boolean isSideA() {
+ return sideA;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof RelationLinkDescriptorSide) {
+ return (((RelationLinkDescriptorSide) obj).getDesc().equals(desc) && ((RelationLinkDescriptorSide) obj).isSideA() == sideA);
+ }
+ return super.equals(obj);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ return desc.hashCode() + sideA.hashCode();
+ }
+
+ /**
+ * @return the desc
+ */
+ public IRelationLinkDescriptor getDesc() {
+ return desc;
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ return (element instanceof IRelationLinkDescriptor);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerArtTypeTabItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerArtTypeTabItem.java
new file mode 100644
index 00000000000..ccb321f9769
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerArtTypeTabItem.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerArtTypeTabItem {
+
+ private CheckboxTreeViewer treeViewer;
+ private Button selectAll;
+ private Button deSelectAll;
+ private final SkyWalkerOptions options;
+
+ public SkyWalkerArtTypeTabItem(org.eclipse.swt.widgets.TabFolder tabFolder, SkyWalkerOptions options) {
+
+ this.options = options;
+ TabItem item = new TabItem(tabFolder, SWT.NONE);
+ item.setText("Artifact Type");
+
+ Composite comp = new Composite(tabFolder, SWT.BORDER);
+ comp.setLayout(ALayout.getZeroMarginLayout());
+ comp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
+
+ treeViewer = new CheckboxTreeViewer(comp, SWT.MULTI | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new ArrayTreeContentProvider());
+ treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ storeSelected();
+ }
+ });
+ treeViewer.setLabelProvider(new LabelProvider() {
+
+ public Image getImage(Object obj) {
+ if (obj instanceof ArtifactSubtypeDescriptor) {
+ return ((ArtifactSubtypeDescriptor) obj).getImage();
+ }
+ return null;
+ }
+
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+ });
+ treeViewer.setSorter(new ViewerSorter());
+
+ Composite buttonComp = new Composite(comp, SWT.BORDER);
+ buttonComp.setLayout(ALayout.getZeroMarginLayout(2, false));
+ buttonComp.setLayoutData(new GridData());
+
+ selectAll = new Button(buttonComp, SWT.PUSH);
+ selectAll.setText("Select All");
+ selectAll.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.setAllChecked(true);
+ storeSelected();
+ }
+ });
+
+ deSelectAll = new Button(buttonComp, SWT.PUSH);
+ deSelectAll.setText("De-Select All");
+ deSelectAll.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.setAllChecked(false);
+ storeSelected();
+ }
+ });
+ options.addSkyWalkerOptionsChangeListener(new ISkyWalkerOptionsChangeListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener#modified(org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType[])
+ */
+ public void modified(ModType... modTypes) {
+ handleOptionModified(modTypes);
+ }
+ });
+
+ // Set UI to defaults
+ handleOptionModified(ModType.FilterEnabled);
+ handleOptionModified(ModType.ArtType);
+ item.setControl(comp);
+ }
+
+ public void handleOptionModified(ModType... modTypes) {
+ List<ModType> modList = Arrays.asList(modTypes);
+ if (modList.contains(ModType.FilterEnabled)) {
+ if (selectAll != null) selectAll.setEnabled(options.isFilterEnabled());
+ if (deSelectAll != null) deSelectAll.setEnabled(options.isFilterEnabled());
+ }
+ if (modList.contains(ModType.ArtType)) {
+ if (treeViewer != null) {
+ treeViewer.setCheckedElements(options.getSelectedArtTypes().toArray());
+ }
+ }
+ if (modList.contains(ModType.Artifact)) {
+ if (treeViewer.getInput() == null && options.getAllArtTypes() != null && options.getAllArtTypes().size() > 0) {
+ treeViewer.setInput(options.getAllArtTypes());
+ treeViewer.setAllChecked(true);
+ }
+ }
+ }
+
+ public void storeSelected() {
+ Set<ArtifactSubtypeDescriptor> selected = new HashSet<ArtifactSubtypeDescriptor>();
+ for (Object obj : treeViewer.getCheckedElements()) {
+ if (obj instanceof ArtifactSubtypeDescriptor) selected.add((ArtifactSubtypeDescriptor) obj);
+ }
+ options.setSelectedArtTypes(selected);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerLayoutTabItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerLayoutTabItem.java
new file mode 100644
index 00000000000..fc56a1545c1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerLayoutTabItem.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.util.Arrays;
+import java.util.List;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.mylyn.zest.layouts.algorithms.AbstractLayoutAlgorithm;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType;
+import org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptions.LinkName;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XRadioButtons;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.TabItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerLayoutTabItem {
+
+ private TreeViewer treeViewer;
+ private final Spinner levelSpinner;
+ private final SkyWalkerOptions options;
+ private final XRadioButtons radioButtons;
+
+ public SkyWalkerLayoutTabItem(org.eclipse.swt.widgets.TabFolder tabFolder, final SkyWalkerOptions options) {
+
+ this.options = options;
+ TabItem item = new TabItem(tabFolder, SWT.NONE);
+ item.setText("Layout");
+
+ Composite comp = new Composite(tabFolder, SWT.BORDER);
+ comp.setLayout(ALayout.getZeroMarginLayout());
+ comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite levelComp = new Composite(comp, SWT.BORDER);
+ levelComp.setLayout(ALayout.getZeroMarginLayout(2, false));
+ levelComp.setLayoutData(new GridData());
+
+ (new Label(levelComp, SWT.NONE)).setText("Level: ");
+ levelSpinner = new Spinner(levelComp, SWT.BORDER);
+ levelSpinner.setMinimum(0);
+ levelSpinner.setMaximum(4);
+ levelSpinner.setIncrement(1);
+ levelSpinner.setPageIncrement(1);
+ levelSpinner.pack();
+ levelSpinner.addModifyListener(new ModifyListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
+ */
+ public void modifyText(ModifyEvent e) {
+ options.setLevels(levelSpinner.getSelection());
+ }
+ });
+
+ Composite treeComp = new Composite(comp, SWT.BORDER);
+ treeComp.setLayout(ALayout.getZeroMarginLayout());
+ treeComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ treeViewer = new TreeViewer(treeComp, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new ArrayTreeContentProvider());
+ treeViewer.setLabelProvider(new LabelProvider() {
+
+ public Image getImage(Object obj) {
+ return null;
+ }
+
+ public String getText(Object obj) {
+ return options.getLayoutName((AbstractLayoutAlgorithm) obj);
+ }
+ });
+ treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ if (treeViewer.getSelection().isEmpty()) return;
+ AbstractLayoutAlgorithm layout =
+ (AbstractLayoutAlgorithm) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
+ if (layout != null) options.setLayout(layout);
+ }
+ });
+ treeViewer.setInput(options.getLayouts());
+
+ radioButtons = new XRadioButtons("Link Naming", "");
+ radioButtons.setVertical(true, 1);
+ radioButtons.setVerticalLabel(true);
+ for (LinkName linkName : LinkName.values())
+ radioButtons.addButton(linkName.name());
+ radioButtons.createWidgets(comp, 1);
+ radioButtons.setSelected(options.getLinkName().name());
+ radioButtons.addXModifiedListener(new XModifiedListener() {
+ public void widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget widget) {
+ if (radioButtons.getSelectedNames().size() > 0) if (!options.getLinkName().equals(
+ radioButtons.getSelectedNames().iterator().next())) options.setLinkName(LinkName.valueOf(radioButtons.getSelectedNames().iterator().next()));
+ };
+ });
+
+ options.addSkyWalkerOptionsChangeListener(new ISkyWalkerOptionsChangeListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptionsChangeListener#modified(org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptionsChangeListener.ModType)
+ */
+ public void modified(ModType... modTypes) {
+ handleOptionModified(modTypes);
+ }
+ });
+
+ // Set UI to defaults
+ handleOptionModified(ModType.FilterEnabled);
+ handleOptionModified(ModType.Level);
+ handleOptionModified(ModType.Layout);
+ handleOptionModified(ModType.Link_Name);
+ item.setControl(comp);
+ }
+
+ public AbstractLayoutAlgorithm getSelected() {
+ return (AbstractLayoutAlgorithm) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
+ }
+
+ public void handleOptionModified(ModType... modTypes) {
+ List<ModType> modList = Arrays.asList(modTypes);
+ if (modList.contains(ModType.Level)) {
+ if (levelSpinner != null) {
+ if (levelSpinner.getSelection() != options.getLevels()) levelSpinner.setSelection(options.getLevels());
+ }
+ }
+ if (modList.contains(ModType.Link_Name)) {
+ if (radioButtons != null) {
+ if (options.getLinkName().equals(radioButtons.getSelectedNames().iterator().next())) radioButtons.setSelected(options.getLinkName().name());
+ }
+ }
+ if (modList.contains(ModType.Layout)) {
+ if (treeViewer != null) {
+ if (treeViewer.getSelection() != options.getLayout()) treeViewer.setSelection(new StructuredSelection(
+ new Object[] {options.getLayout()}));
+ }
+ }
+ if (modList.contains(ModType.FilterEnabled)) {
+ if (levelSpinner != null) levelSpinner.setEnabled(options.isFilterEnabled());
+ if (treeViewer != null) treeViewer.getTree().setEnabled(options.isFilterEnabled());
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerOptions.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerOptions.java
new file mode 100644
index 00000000000..8be74eaa6b6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerOptions.java
@@ -0,0 +1,458 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import org.eclipse.mylyn.zest.layouts.LayoutStyles;
+import org.eclipse.mylyn.zest.layouts.algorithms.AbstractLayoutAlgorithm;
+import org.eclipse.mylyn.zest.layouts.algorithms.GridLayoutAlgorithm;
+import org.eclipse.mylyn.zest.layouts.algorithms.RadialLayoutAlgorithm;
+import org.eclipse.mylyn.zest.layouts.algorithms.SpringLayoutAlgorithm;
+import org.eclipse.mylyn.zest.layouts.algorithms.TreeLayoutAlgorithm;
+import org.eclipse.mylyn.zest.layouts.algorithms.VerticalLayoutAlgorithm;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLinkGroup;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType;
+import org.eclipse.osee.framework.ui.skynet.skywalker.RelTypeContentProvider.RelationLinkDescriptorSide;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerOptions {
+
+ private Artifact artifact;
+ private int levels = 1;
+ private static Map<AbstractLayoutAlgorithm, String> layouts;
+ private AbstractLayoutAlgorithm layout;
+ protected AbstractLayoutAlgorithm defaultLayout;
+ private Map<ArtifactSubtypeDescriptor, Boolean> artTypes;
+ private Map<DynamicAttributeDescriptor, Boolean> showAttributes;
+ // IRelationLinkDescriptor and RelationLinkDescriptorSide
+ private Map<Object, Boolean> relTypes;
+ private boolean filterEnabled = true;
+ private Set<ISkyWalkerOptionsChangeListener> listeners = new HashSet<ISkyWalkerOptionsChangeListener>();
+ public static String RADIAL_DOWN_LAYOUT = "Radial - Down";
+ public static String SPRING_LAYOUT = "Spring";
+ public static enum LinkName {
+ None, Link_Name, Full_Link_Name, Phrasing_A_to_B, Phrasing_B_to_A, Other_Side_Name
+ };
+ private LinkName linkName = LinkName.Link_Name;
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public SkyWalkerOptions() {
+ loadLayouts();
+ layout = defaultLayout;
+ }
+
+ public void addSkyWalkerOptionsChangeListener(ISkyWalkerOptionsChangeListener skyWalkerOptionsChangeListener) {
+ listeners.add(skyWalkerOptionsChangeListener);
+ }
+
+ public String getExtendedName(Artifact artifact) throws SQLException {
+ if (getSelectedShowAttributeTypes().size() == 0)
+ return "";
+ else {
+ StringBuffer sb = new StringBuffer();
+ for (DynamicAttributeDescriptor desc : getSelectedShowAttributeTypes()) {
+ if (artifact.isAttributeTypeValid(desc.getName()) && artifact.getAttributeManager(desc).getAttributes().size() > 0) sb.append("\n" + artifact.getAttributeManager(
+ desc).getAttributesStr());
+ }
+ return sb.toString();
+ }
+ }
+
+ private void loadArtTypes() {
+ if (artTypes == null) {
+ artTypes = new HashMap<ArtifactSubtypeDescriptor, Boolean>();
+ try {
+ for (ArtifactSubtypeDescriptor descriptor : ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptors(
+ artifact.getBranch())) {
+ artTypes.put(descriptor, true);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ }
+
+ private void loadAttributeTypes() {
+ if (showAttributes == null) {
+ showAttributes = new HashMap<DynamicAttributeDescriptor, Boolean>();
+ try {
+ for (DynamicAttributeDescriptor descriptor : ConfigurationPersistenceManager.getInstance().getDynamicAttributeDescriptors(
+ artifact.getBranch())) {
+ showAttributes.put(descriptor, false);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ }
+
+ private void loadRelTypes() {
+ if (relTypes == null) {
+ relTypes = new HashMap<Object, Boolean>();
+ try {
+ for (IRelationLinkDescriptor descriptor : RelationPersistenceManager.getInstance().getIRelationLinkDescriptors(
+ artifact.getBranch())) {
+ relTypes.put(descriptor, true);
+ relTypes.put(new RelTypeContentProvider.RelationLinkDescriptorSide(descriptor, true), true);
+ relTypes.put(new RelTypeContentProvider.RelationLinkDescriptorSide(descriptor, false), true);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ }
+
+ public String toXml() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(AXml.addTagData("guid", artifact.getGuid()));
+ sb.append(AXml.addTagData("branchId", artifact.getBranch().getBranchId() + ""));
+ sb.append(AXml.addTagData("artTypes", org.eclipse.osee.framework.jdk.core.util.Collections.toString(",",
+ getSelectedArtTypes())));
+ sb.append(AXml.addTagData("relTypes", org.eclipse.osee.framework.jdk.core.util.Collections.toString(",",
+ getSelectedRelTypes())));
+ sb.append(AXml.addTagData("showAttributes", org.eclipse.osee.framework.jdk.core.util.Collections.toString(",",
+ getSelectedShowAttributeTypes())));
+ sb.append(AXml.addTagData("layout", getLayoutName(getLayout())));
+ sb.append(AXml.addTagData("levels", getLevels() + ""));
+ sb.append(AXml.addTagData("linkName", getLinkName() + ""));
+ return sb.toString();
+ }
+
+ public void fromXml(String xml) {
+ try {
+ String guid = AXml.getTagData(xml, "guid");
+ if (guid != null && !guid.equals("")) {
+ String branchId = AXml.getTagData(xml, "branchId");
+ Branch branch = BranchPersistenceManager.getInstance().getBranch(Integer.parseInt(branchId));
+ Artifact art = ArtifactPersistenceManager.getInstance().getArtifact(guid, branch);
+ if (art != null) {
+ setArtifact(art);
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logWarning(SkynetGuiPlugin.class, "SkyWalker couldn't find stored artifact via guid", ex, false);
+ }
+ String artTypeStr = AXml.getTagData(xml, "artTypes");
+ if (artTypeStr != null && !artTypeStr.equals("")) {
+ for (Entry<ArtifactSubtypeDescriptor, Boolean> desc : artTypes.entrySet()) {
+ desc.setValue(false);
+ }
+ for (String name : artTypeStr.split(",")) {
+ for (Entry<ArtifactSubtypeDescriptor, Boolean> desc : artTypes.entrySet()) {
+ if (desc.getKey().getName().equals(name)) {
+ desc.setValue(true);
+ break;
+ }
+ }
+ }
+ }
+ String relTypeStr = AXml.getTagData(xml, "relTypes");
+ if (relTypeStr != null && !relTypeStr.equals("")) {
+ for (Entry<Object, Boolean> desc : relTypes.entrySet()) {
+ desc.setValue(false);
+ }
+ for (String name : relTypeStr.split(",")) {
+ for (Entry<Object, Boolean> desc : relTypes.entrySet()) {
+ if (desc.getKey().toString().equals(name)) {
+ desc.setValue(true);
+ break;
+ }
+ }
+ }
+ }
+ String showAttrString = AXml.getTagData(xml, "showAttributes");
+ if (showAttrString != null && !showAttrString.equals("")) {
+ for (Entry<DynamicAttributeDescriptor, Boolean> desc : showAttributes.entrySet()) {
+ desc.setValue(false);
+ }
+ for (String name : showAttrString.split(",")) {
+ for (Entry<DynamicAttributeDescriptor, Boolean> desc : showAttributes.entrySet()) {
+ if (desc.getKey().getName().equals(name)) {
+ desc.setValue(true);
+ break;
+ }
+ }
+ }
+ }
+ String layoutStr = AXml.getTagData(xml, "layout");
+ if (layoutStr != null && !layoutStr.equals("")) {
+ for (AbstractLayoutAlgorithm layout : getLayouts()) {
+ if (getLayoutName(layout).equals(layoutStr)) {
+ setLayout(layout);
+ break;
+ }
+ }
+ }
+ String levelStr = AXml.getTagData(xml, "levels");
+ if (levelStr != null && !levelStr.equals("")) {
+ setLevels(Integer.parseInt(levelStr));
+ }
+
+ String linkNameStr = AXml.getTagData(xml, "linkName");
+ if (linkNameStr != null && !linkNameStr.equals("")) {
+ setLinkName(LinkName.valueOf(linkNameStr));
+ }
+
+ notifyListeners(ModType.ArtType, ModType.RelType, ModType.Level, ModType.Layout, ModType.Link_Name,
+ ModType.Show_Attribute);
+ }
+
+ /**
+ * @return the artifact
+ */
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ private Map<AbstractLayoutAlgorithm, String> loadLayouts() {
+ if (layouts == null) {
+ layouts = new HashMap<AbstractLayoutAlgorithm, String>();
+
+ RadialLayoutAlgorithm radLayout = new RadialLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING);
+ radLayout.setRangeToLayout((-90 * Math.PI) / 360, (90 * Math.PI) / 360);
+ defaultLayout = radLayout;
+ layouts.put(radLayout, "Radial - Right (default)");
+
+ radLayout = new RadialLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING);
+ radLayout.setRangeToLayout(0, (180 * Math.PI) / 360);
+ layouts.put(radLayout, RADIAL_DOWN_LAYOUT);
+
+ layouts.put(new RadialLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), "Radial - Full");
+ layouts.put(new SpringLayoutAlgorithm(), SPRING_LAYOUT);
+ layouts.put(new TreeLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), "Tree");
+ layouts.put(new VerticalLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), "Vertical");
+ layouts.put(new GridLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), "Grid");
+ }
+ return layouts;
+ }
+
+ /**
+ * @return the defaultLayout
+ */
+ public AbstractLayoutAlgorithm getLayout() {
+ return layout;
+ }
+
+ public AbstractLayoutAlgorithm getLayout(String layoutName) {
+ for (Entry<AbstractLayoutAlgorithm, String> entry : layouts.entrySet()) {
+ if (entry.getValue().equals(layoutName)) return entry.getKey();
+ }
+ return defaultLayout;
+ }
+
+ public Set<AbstractLayoutAlgorithm> getLayouts() {
+ return layouts.keySet();
+ }
+
+ public String getLayoutName(AbstractLayoutAlgorithm layout) {
+ return layouts.get(layout);
+ }
+
+ /**
+ * @param artifact the artifact to set
+ */
+ public void setArtifact(Artifact artifact) {
+ if (this.artifact == artifact) return;
+ this.artifact = artifact;
+ loadArtTypes();
+ loadRelTypes();
+ loadAttributeTypes();
+ notifyListeners(ModType.Artifact);
+ }
+
+ public boolean isValidArtifactType(Artifact artifact) {
+ if (!isFilterEnabled()) return true;
+ return getSelectedArtTypes().contains(artifact.getDescriptor());
+ }
+
+ public boolean isValidRelationLinkGroup(RelationLinkGroup linkGroup) {
+ if (!isFilterEnabled()) return true;
+ return getSelectedRelTypes().contains(linkGroup.getDescriptor()) || getSelectedRelTypes().contains(
+ new RelationLinkDescriptorSide(linkGroup.getDescriptor(), linkGroup.isSideA()));
+ }
+
+ /**
+ * @return the levels
+ */
+ public int getLevels() {
+ return levels;
+ }
+
+ /**
+ * @param levels the levels to set
+ */
+ public void setLevels(int levels) {
+ if (this.levels == levels) return;
+ this.levels = levels;
+ notifyListeners(ModType.Level);
+ }
+
+ /**
+ * @return the filterByArtType
+ */
+ public boolean isFilterEnabled() {
+ return filterEnabled;
+ }
+
+ /**
+ * @param filterByArtType the filterByArtType to set
+ */
+ public void setFilterEnabled(boolean enable) {
+ if (this.filterEnabled == enable) return;
+ this.filterEnabled = enable;
+ notifyListeners(ModType.FilterEnabled);
+ }
+
+ private void notifyListeners(ModType... modType) {
+ for (ISkyWalkerOptionsChangeListener listener : listeners)
+ listener.modified(modType);
+ }
+
+ public void setSelectedRelTypes(Object[] selected) {
+ List<Object> selList = new ArrayList<Object>();
+ for (Object obj : selected)
+ selList.add(obj);
+ for (Entry<Object, Boolean> entry : relTypes.entrySet()) {
+ entry.setValue(selList.contains(entry.getKey()));
+ }
+ notifyListeners(ModType.RelType);
+ }
+
+ public void setSelectedShowAttributes(Object[] selected) {
+ List<Object> selList = new ArrayList<Object>();
+ for (Object obj : selected)
+ selList.add(obj);
+ for (Entry<DynamicAttributeDescriptor, Boolean> entry : showAttributes.entrySet()) {
+ entry.setValue(selList.contains(entry.getKey()));
+ }
+ notifyListeners(ModType.Show_Attribute);
+ }
+
+ public void setSelectedArtTypes(Collection<ArtifactSubtypeDescriptor> selected) {
+ for (Entry<ArtifactSubtypeDescriptor, Boolean> entry : artTypes.entrySet()) {
+ entry.setValue(selected.contains(entry.getKey()));
+ }
+ notifyListeners(ModType.ArtType);
+ }
+
+ public Set<ArtifactSubtypeDescriptor> getSelectedArtTypes() {
+ Set<ArtifactSubtypeDescriptor> selected = new HashSet<ArtifactSubtypeDescriptor>();
+ if (artTypes == null) return selected;
+ for (ArtifactSubtypeDescriptor desc : artTypes.keySet())
+ if (artTypes.get(desc)) selected.add(desc);
+ return selected;
+ }
+
+ public Set<Object> getSelectedRelTypes() {
+ Set<Object> selected = new HashSet<Object>();
+ if (relTypes == null) return selected;
+ for (Object desc : relTypes.keySet())
+ if (relTypes.get(desc)) selected.add(desc);
+ return selected;
+ }
+
+ public Set<DynamicAttributeDescriptor> getSelectedShowAttributeTypes() {
+ Set<DynamicAttributeDescriptor> selected = new HashSet<DynamicAttributeDescriptor>();
+ if (showAttributes == null) return selected;
+ for (DynamicAttributeDescriptor desc : showAttributes.keySet())
+ if (showAttributes.get(desc)) selected.add(desc);
+ return selected;
+ }
+
+ public Set<ArtifactSubtypeDescriptor> getAllArtTypes() {
+ if (artTypes == null) return new HashSet<ArtifactSubtypeDescriptor>();
+ return artTypes.keySet();
+ }
+
+ public Set<Object> getAllRelTypes() {
+ if (relTypes == null) return new HashSet<Object>();
+ return relTypes.keySet();
+ }
+
+ public Set<DynamicAttributeDescriptor> getAllShowAttributes() {
+ if (showAttributes == null) return new HashSet<DynamicAttributeDescriptor>();
+ return showAttributes.keySet();
+ }
+
+ public Set<IRelationLinkDescriptor> getAllIRelationLinkDescriptorTypes() {
+ if (relTypes == null) return new HashSet<IRelationLinkDescriptor>();
+ Set<IRelationLinkDescriptor> descs = new HashSet<IRelationLinkDescriptor>();
+ for (Object obj : relTypes.keySet()) {
+ if (obj instanceof IRelationLinkDescriptor) descs.add((IRelationLinkDescriptor) obj);
+ }
+ return descs;
+ }
+
+ /**
+ * @param layout the layout to set
+ */
+ public void setLayout(AbstractLayoutAlgorithm layout) {
+ if (this.layout == layout) return;
+ this.layout = layout;
+ notifyListeners(ModType.Layout);
+ }
+
+ /**
+ * @return the linkName
+ */
+ public LinkName getLinkName() {
+ return linkName;
+ }
+
+ /**
+ * @param linkName the linkName to set
+ */
+ public void setLinkName(LinkName linkName) {
+ if (this.linkName == linkName) return;
+ this.linkName = linkName;
+ notifyListeners(ModType.Link_Name);
+ }
+
+ /**
+ * @return the defaultLayout
+ */
+ public AbstractLayoutAlgorithm getDefaultLayout() {
+ return defaultLayout;
+ }
+
+ /**
+ * @param defaultLayout the defaultLayout to set
+ */
+ public void setDefaultLayout(AbstractLayoutAlgorithm defaultLayout) {
+ this.defaultLayout = defaultLayout;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerRelTypeTabItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerRelTypeTabItem.java
new file mode 100644
index 00000000000..393aa6a7ce4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerRelTypeTabItem.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.util.Arrays;
+import java.util.List;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerRelTypeTabItem {
+
+ private CheckboxTreeViewer treeViewer;
+ private Button selectAll;
+ private Button deSelectAll;
+ private final SkyWalkerOptions options;
+
+ public SkyWalkerRelTypeTabItem(org.eclipse.swt.widgets.TabFolder tabFolder, SkyWalkerOptions options) {
+
+ this.options = options;
+ TabItem item = new TabItem(tabFolder, SWT.NONE);
+ item.setText("Relation Type");
+
+ Composite comp = new Composite(tabFolder, SWT.BORDER);
+ comp.setLayout(ALayout.getZeroMarginLayout());
+ comp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
+
+ treeViewer = new CheckboxTreeViewer(comp, SWT.MULTI | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new RelTypeContentProvider());
+ treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ storeSelected();
+ }
+ });
+ treeViewer.setLabelProvider(new LabelProvider() {
+
+ public Image getImage(Object obj) {
+ return null;
+ }
+
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+ });
+ treeViewer.setSorter(new ViewerSorter());
+
+ Composite buttonComp = new Composite(comp, SWT.BORDER);
+ buttonComp.setLayout(ALayout.getZeroMarginLayout(2, false));
+ buttonComp.setLayoutData(new GridData());
+
+ selectAll = new Button(buttonComp, SWT.PUSH);
+ selectAll.setText("Select All");
+ selectAll.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.setAllChecked(true);
+ storeSelected();
+ }
+ });
+
+ deSelectAll = new Button(buttonComp, SWT.PUSH);
+ deSelectAll.setText("De-Select All");
+ deSelectAll.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.setAllChecked(false);
+ storeSelected();
+ }
+ });
+
+ options.addSkyWalkerOptionsChangeListener(new ISkyWalkerOptionsChangeListener() {
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener#modified(org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType[])
+ */
+ public void modified(ModType... modTypes) {
+ handleOptionModified(modTypes);
+ }
+ });
+ // Set UI to defaults
+ handleOptionModified(ModType.FilterEnabled);
+ handleOptionModified(ModType.RelType);
+ item.setControl(comp);
+ }
+
+ public void storeSelected() {
+ options.setSelectedRelTypes(treeViewer.getCheckedElements());
+ }
+
+ public void handleOptionModified(ModType... modTypes) {
+ List<ModType> modList = Arrays.asList(modTypes);
+ if (modList.contains(ModType.FilterEnabled)) {
+ if (selectAll != null) selectAll.setEnabled(options.isFilterEnabled());
+ if (deSelectAll != null) deSelectAll.setEnabled(options.isFilterEnabled());
+ }
+ if (modList.contains(ModType.RelType)) {
+ if (treeViewer != null) {
+ treeViewer.setCheckedElements(options.getSelectedRelTypes().toArray());
+ }
+ }
+ if (modList.contains(ModType.Artifact)) {
+ if (treeViewer.getInput() == null && options.getAllRelTypes() != null && options.getAllRelTypes().size() > 0) {
+ treeViewer.setInput(options.getAllIRelationLinkDescriptorTypes());
+ treeViewer.setAllChecked(true);
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerShowAttributeTabItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerShowAttributeTabItem.java
new file mode 100644
index 00000000000..dbbc4138160
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerShowAttributeTabItem.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.util.Arrays;
+import java.util.List;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerShowAttributeTabItem {
+
+ private CheckboxTreeViewer treeViewer;
+ private final SkyWalkerOptions options;
+
+ public SkyWalkerShowAttributeTabItem(org.eclipse.swt.widgets.TabFolder tabFolder, SkyWalkerOptions options) {
+
+ this.options = options;
+ TabItem item = new TabItem(tabFolder, SWT.NONE);
+ item.setText("Show Attribute");
+
+ Composite comp = new Composite(tabFolder, SWT.BORDER);
+ comp.setLayout(ALayout.getZeroMarginLayout());
+ comp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
+
+ treeViewer = new CheckboxTreeViewer(comp, SWT.MULTI | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new ArrayTreeContentProvider());
+ treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ storeSelected();
+ }
+ });
+ treeViewer.setLabelProvider(new LabelProvider() {
+
+ public Image getImage(Object obj) {
+ return null;
+ }
+
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+ });
+ treeViewer.setSorter(new ViewerSorter());
+
+ options.addSkyWalkerOptionsChangeListener(new ISkyWalkerOptionsChangeListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener#modified(org.eclipse.osee.framework.ui.skynet.skywalker.ISkyWalkerOptionsChangeListener.ModType[])
+ */
+ public void modified(ModType... modTypes) {
+ handleOptionModified(modTypes);
+ }
+ });
+ // Set UI to defaults
+ handleOptionModified(ModType.FilterEnabled);
+ handleOptionModified(ModType.Show_Attribute);
+ item.setControl(comp);
+ }
+
+ public void storeSelected() {
+ options.setSelectedShowAttributes(treeViewer.getCheckedElements());
+ }
+
+ public void handleOptionModified(ModType... modTypes) {
+ List<ModType> modList = Arrays.asList(modTypes);
+ if (modList.contains(ModType.Show_Attribute)) {
+ if (treeViewer != null) {
+ treeViewer.setCheckedElements(options.getSelectedShowAttributeTypes().toArray());
+ }
+ }
+ if (modList.contains(ModType.Artifact)) {
+ if (treeViewer.getInput() == null && options.getAllShowAttributes() != null && options.getAllShowAttributes().size() > 0) {
+ treeViewer.setInput(options.getAllShowAttributes());
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerTabOptions.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerTabOptions.java
new file mode 100644
index 00000000000..9794c4285e6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerTabOptions.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabFolder;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerTabOptions {
+
+ private TabFolder tabFolder;
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public SkyWalkerTabOptions(Composite parent, int style, SkyWalkerOptions options) {
+ tabFolder = new TabFolder(parent, SWT.BORDER);
+
+ new SkyWalkerLayoutTabItem(tabFolder, options);
+ new SkyWalkerArtTypeTabItem(tabFolder, options);
+ new SkyWalkerRelTypeTabItem(tabFolder, options);
+ new SkyWalkerShowAttributeTabItem(tabFolder, options);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerView.java
new file mode 100644
index 00000000000..4ecd45f6449
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/skywalker/SkyWalkerView.java
@@ -0,0 +1,368 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.skywalker;
+
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.mylyn.zest.core.viewers.GraphViewer;
+import org.eclipse.mylyn.zest.core.widgets.GraphItem;
+import org.eclipse.mylyn.zest.core.widgets.GraphNode;
+import org.eclipse.mylyn.zest.core.widgets.ZestStyles;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.user.UserEnum;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.ArtifactDoubleClick;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.ImageCapture;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Robert A. Fisher
+ * @author Donald G. Dunne
+ */
+public class SkyWalkerView extends ViewPart {
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerView";
+ protected GraphViewer viewer;
+ private static final String INPUT = "input";
+ private static final String GUID = "guid";
+ private static final String BRANCHID = "branchId";
+ private String storedGuid;
+ private String storedBrandId;
+ private final SkyWalkerOptions options = new SkyWalkerOptions();
+ private List<Artifact> history = new LinkedList<Artifact>();
+ private Action filterAction;
+ private Composite viewerComp;
+ protected SashForm sashForm;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+
+ sashForm = new SashForm(parent, SWT.HORIZONTAL);
+ sashForm.setLayout(new FillLayout());
+
+ viewerComp = new Composite(sashForm, SWT.NONE);
+ viewerComp.setLayout(new FillLayout());
+
+ viewer = new GraphViewer(viewerComp, ZestStyles.NONE);
+ viewer.setContentProvider(new ArtifactGraphContentProvider(options));
+ viewer.setLabelProvider(new ArtifactGraphLabelProvider(options));
+ viewer.setConnectionStyle(ZestStyles.CONNECTIONS_STRAIGHT);
+ viewer.setNodeStyle(ZestStyles.NODES_HIGHLIGHT_ADJACENT | ZestStyles.NODES_NO_LAYOUT_RESIZE);
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+
+ public void doubleClick(DoubleClickEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ Iterator<?> itemsIter = selection.iterator();
+ while (itemsIter.hasNext()) {
+ Object obj = itemsIter.next();
+ if (!(obj instanceof Artifact)) continue;
+ Artifact artifact = (Artifact) obj;
+ explore(artifact);
+ }
+ }
+
+ });
+
+ Composite child1 = new Composite(sashForm, SWT.BORDER);
+ child1.setLayout(new FillLayout());
+ new SkyWalkerTabOptions(child1, SWT.NONE, options);
+
+ options.addSkyWalkerOptionsChangeListener(new ISkyWalkerOptionsChangeListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptionsChangeListener#modified(org.eclipse.osee.framework.ui.skynet.skywalker.SkyWalkerOptionsChangeListener.ModType)
+ */
+ public void modified(ModType... modTypes) {
+ List<ModType> modList = Arrays.asList(modTypes);
+ // Don't redraw if artifact has been changed; else get in infinite loop
+ if (modList.contains(ModType.Artifact)) return;
+ if (modList.contains(ModType.Layout))
+ viewer.setLayoutAlgorithm(options.getLayout(), true);
+ else if (modList.contains(ModType.Show_Attribute)) {
+ try {
+ // exploring another artifact and then the original forces a redraw of all the
+ // objects
+ // which is necessary for a node size change
+ Artifact art = (Artifact) viewer.getInput();
+ explore(SkynetAuthentication.getInstance().getUser(UserEnum.UnAssigned));
+ if (art != null) explore(art);
+ } catch (SQLException ex) {
+ // DO Nothing
+ }
+ } else
+ redraw();
+ }
+ });
+
+ sashForm.setWeights(new int[] {75, 25});
+
+ createActions();
+ viewer.setLayoutAlgorithm(options.getLayout());
+ // Restore current artifact if stored upon shutdown
+ try {
+ if (storedGuid != null) {
+ Artifact art =
+ ArtifactPersistenceManager.getInstance().getArtifact(storedGuid,
+ BranchPersistenceManager.getInstance().getBranch(Integer.parseInt(storedBrandId)));
+ if (art != null) explore(art);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+
+ protected void createActions() {
+
+ IActionBars bars = getViewSite().getActionBars();
+ // IMenuManager mm = bars.getMenuManager();
+ IToolBarManager tbm = bars.getToolBarManager();
+
+ filterAction = new Action("Enable Filters", Action.AS_CHECK_BOX) {
+ public void run() {
+ options.setFilterEnabled(filterAction.isChecked());
+ redraw();
+ }
+ };
+ filterAction.setChecked(options.isFilterEnabled());
+ filterAction.setToolTipText("Enable Filters");
+ filterAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("filter.gif"));
+ tbm.add(filterAction);
+
+ Action action = new Action() {
+ public void run() {
+ ArtifactDoubleClick.openArtifact(viewer.getSelection());
+ }
+ };
+ action.setText("Open Selected");
+ action.setToolTipText("Open Selected");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("edit2.gif"));
+ tbm.add(action);
+
+ action = new Action() {
+ public void run() {
+ if (history.size() > 0) {
+ Artifact art = history.get(history.size() - 1);
+ history.remove(history.size() - 1);
+ explore(art, true);
+ }
+ }
+ };
+ action.setText("Back");
+ action.setToolTipText("Back");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("back.gif"));
+ tbm.add(action);
+
+ action = new Action() {
+ public void run() {
+ ImageCapture imgCapture = new ImageCapture(viewerComp);
+ imgCapture.popupDialog();
+ }
+ };
+ action.setText("Print");
+ action.setToolTipText("Print");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("print.gif"));
+ tbm.add(action);
+
+ action = new Action() {
+ public void run() {
+ handleSaveOptions();
+ }
+ };
+ action.setText("Save Options");
+ action.setToolTipText("Save Options");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("save.gif"));
+ tbm.add(action);
+
+ action = new Action() {
+ public void run() {
+ handleLoadOptions();
+ }
+ };
+ action.setText("Load Options");
+ action.setToolTipText("Load Options");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("load.gif"));
+ tbm.add(action);
+
+ action = new Action() {
+ public void run() {
+ redraw();
+ }
+ };
+ action.setText("Refresh");
+ action.setToolTipText("Refresh");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("refresh.gif"));
+ tbm.add(action);
+ }
+
+ public void handleSaveOptions() {
+ final FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell().getShell(), SWT.SAVE);
+ dialog.setFilterExtensions(new String[] {"*.sky"});
+ String filename = dialog.open();
+ if (filename != null) {
+ AFile.writeFile(filename, options.toXml());
+ AWorkbench.popup("Saved", "Save Successful");
+ }
+ }
+
+ public void handleLoadOptions() {
+ final FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell().getShell(), SWT.OPEN);
+ dialog.setFilterExtensions(new String[] {"*.sky"});
+ String filename = dialog.open();
+ if (filename != null) {
+ String xml = AFile.readFile(filename);
+ options.fromXml(xml);
+ explore(options.getArtifact());
+ }
+ }
+
+ public void redraw() {
+ if (viewer.getInput() != null) explore((Artifact) viewer.getInput());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.skynet.gui.ats.IActionable#getActionDescription()
+ */
+ public String getActionDescription() {
+ return "";
+ }
+
+ public void explore(Artifact artifact) {
+ explore(artifact, false);
+ }
+
+ private boolean inExplore = false;
+
+ private void explore(Artifact artifact, boolean fromHistory) {
+ // If already in explore method, don't respond to events trying to redraw
+ if (inExplore) return;
+ inExplore = true;
+ options.setArtifact(artifact);
+
+ // Add current artifact to history only if explore wasn't caused by going back in history
+ if (!fromHistory && viewer.getInput() != null) {
+ Artifact currArt = (Artifact) viewer.getInput();
+ if (history.size() == 0)
+ history.add(currArt);
+ else if (history.size() > 0 && !history.get(history.size() - 1).equals(currArt)) history.add(currArt);
+ }
+ viewer.setInput(options.getArtifact());
+ // Highlight center object
+ GraphItem item = viewer.findGraphItem(options.getArtifact());
+ if (item != null && (item instanceof GraphNode)) {
+ GraphNode node = (GraphNode) item;
+ node.setBackgroundColor(Display.getCurrent().getSystemColor(SWT.COLOR_CYAN));
+ viewer.update(node, null);
+ }
+ setPartName("Sky Walker (" + artifact.getDescriptiveName() + ")");
+ inExplore = false;
+ }
+
+ public static void exploreArtifact(Artifact artifact) {
+ exploreArtifact(artifact.getDescriptiveName(), artifact);
+ }
+
+ public static void exploreArtifact(String name, Artifact artifact) {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ SkyWalkerView view;
+ try {
+ view =
+ (SkyWalkerView) page.showView(SkyWalkerView.VIEW_ID, new GUID().toString(), IWorkbenchPage.VIEW_ACTIVATE);
+ view.explore(artifact);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.ViewPart#saveState(org.eclipse.ui.IMemento)
+ */
+ @Override
+ public void saveState(IMemento memento) {
+ super.saveState(memento);
+
+ if (viewer.getInput() == null) return;
+ Artifact artifact = (Artifact) viewer.getInput();
+ memento = memento.createChild(INPUT);
+ memento.putString(GUID, artifact.getGuid());
+ memento.putString(BRANCHID, String.valueOf(artifact.getBranch().getBranchId()));
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+ try {
+ if (memento != null) {
+ memento = memento.getChild(INPUT);
+ if (memento != null) {
+ storedGuid = memento.getString(GUID);
+ storedBrandId = memento.getString(BRANCHID);
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logWarning(getClass(), "Sky Walker error on init: " + ex.getLocalizedMessage(), false);
+ }
+ }
+
+ /**
+ * @return the options
+ */
+ public SkyWalkerOptions getOptions() {
+ return options;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactClipboard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactClipboard.java
new file mode 100644
index 00000000000..1da8be413bb
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactClipboard.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.ui.skynet.HTMLTransferFormatter;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.swt.NonBlankValidator;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.HTMLTransfer;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ArtifactClipboard {
+ private static final String STATUS = "work";
+ private Clipboard clipboard;
+ private String viewId;
+
+ public ArtifactClipboard(String viewId) {
+ this.clipboard = new Clipboard(null);
+ this.viewId = viewId;
+ }
+
+ public void setArtifactsToClipboard(Collection<Artifact> artifactTransferData, Collection<String> textTransferData) {
+ if (artifactTransferData == null) {
+ throw new IllegalArgumentException("Artifacts can not be null for artifact copy.");
+ }
+ if (artifactTransferData.isEmpty()) {
+ throw new IllegalArgumentException("Artifacts can not be empty.");
+ }
+
+ clipboard.setContents(new Object[] {
+ new ArtifactData(artifactTransferData.toArray(Artifact.EMPTY_ARRAY), STATUS, viewId),
+ HTMLTransferFormatter.getHtml(artifactTransferData.toArray(Artifact.EMPTY_ARRAY)),
+ Collections.toString(textTransferData, null, ", ", null)}, new Transfer[] {ArtifactTransfer.getInstance(),
+ HTMLTransfer.getInstance(), TextTransfer.getInstance()});
+ }
+
+ public void setTextToClipboard(Collection<String> textTransferData) {
+ if (textTransferData == null) {
+ throw new IllegalArgumentException("Artifacts can not be null for artifact copy.");
+ }
+ if (textTransferData.isEmpty()) {
+ throw new IllegalArgumentException("Artifacts can not be empty.");
+ }
+
+ clipboard.setContents(new Object[] {Collections.toString(textTransferData, null, ", ", null)},
+ new Transfer[] {TextTransfer.getInstance()});
+ }
+
+ private static IInputValidator inputValidator = new NonBlankValidator("The new name must not be blank");
+
+ /**
+ * This method must be called from the display thread
+ */
+ public void pasteArtifactsFromClipboard(Artifact parent) throws SQLException {
+ if (parent == null) throw new IllegalArgumentException("Parent can not be null.");
+
+ Object object = clipboard.getContents(ArtifactTransfer.getInstance());
+
+ if (object instanceof ArtifactData) {
+ Artifact[] clipboardArtifacts = ((ArtifactData) object).getArtifacts();
+
+ if (clipboardArtifacts.length == 1) {
+ Artifact clipboardArtifact = clipboardArtifacts[0];
+ if (clipboardArtifact instanceof User) {
+ return;
+ }
+
+ InputDialog dialog =
+ new InputDialog(Display.getCurrent().getActiveShell(), "Name Artifact", "Enter artifact name",
+ clipboardArtifacts[0].getDescriptiveName(), inputValidator);
+
+ if (dialog.open() == Window.CANCEL) {
+ return;
+ } else {
+ Artifact newArtifact = null;
+ try {
+ newArtifact = clipboardArtifact.duplicate(parent.getBranch());
+ newArtifact.setDescriptiveName(dialog.getValue());
+ parent.addChild(newArtifact);
+ } catch (CloneNotSupportedException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ } else {
+ for (Artifact clipboardArtifact : clipboardArtifacts) {
+ // We do not support duplicating user artifacts.
+ if (clipboardArtifact instanceof User) {
+ continue;
+ }
+
+ Artifact newArtifact = null;
+ try {
+ newArtifact = clipboardArtifact.duplicate(parent.getBranch());
+ } catch (CloneNotSupportedException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ parent.addChild(newArtifact);
+ }
+ }
+
+ parent.persist(true);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactDescriptiveLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactDescriptiveLabelProvider.java
new file mode 100644
index 00000000000..8c6f13cc8f9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactDescriptiveLabelProvider.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Generic Artifact Label Provider showing Descriptive Name as text
+ *
+ * @author Donald G. Dunne
+ */
+public class ArtifactDescriptiveLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ return ((Artifact) arg0).getDescriptiveName();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameReverseSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameReverseSorter.java
new file mode 100644
index 00000000000..6faa65a61b4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameReverseSorter.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * Default sorter for artifacts. Sorts on descriptive name
+ */
+public class ArtifactNameReverseSorter extends ViewerSorter {
+
+ /**
+ * Default sorter for artifacts. Sorts on descriptive name
+ */
+ public ArtifactNameReverseSorter() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc) Method declared on ViewerSorter.
+ */
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object o1, Object o2) {
+
+ return getComparator().compare(((Artifact) o2).getDescriptiveName(), ((Artifact) o1).getDescriptiveName());
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameSorter.java
new file mode 100644
index 00000000000..b6d651d772a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ArtifactNameSorter.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * Default sorter for artifacts. Sorts on descriptive name
+ */
+public class ArtifactNameSorter extends ViewerSorter {
+
+ /**
+ * Default sorter for artifacts. Sorts on descriptive name
+ */
+ public ArtifactNameSorter() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc) Method declared on ViewerSorter.
+ */
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object o1, Object o2) {
+
+ return getComparator().compare(((Artifact) o1).getDescriptiveName(), ((Artifact) o2).getDescriptiveName());
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/AttributeCheckListDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/AttributeCheckListDialog.java
new file mode 100644
index 00000000000..3e22d12535a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/AttributeCheckListDialog.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Level;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ArtifactTreeContentProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.SelectionDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AttributeCheckListDialog extends SelectionDialog {
+ private CheckboxTreeViewer treeViewer;
+ private final ArrayList<DynamicAttributeDescriptor> selectedAttributes;
+ private String preferenceKey;
+
+ public AttributeCheckListDialog(Shell parent, String preferenceKey) {
+ this(parent, null, preferenceKey);
+ }
+
+ public AttributeCheckListDialog(Shell parent, Collection<DynamicAttributeDescriptor> attrTypes, String preferenceKey) {
+ super(parent);
+ setTitle("Select Attributes");
+ setMessage("Select Attributes");
+ this.selectedAttributes = new ArrayList<DynamicAttributeDescriptor>();
+ this.preferenceKey = preferenceKey;
+
+ if (attrTypes != null && !attrTypes.isEmpty()) {
+ selectedAttributes.addAll(attrTypes);
+ }
+ }
+
+ public String getSelectedAttributeData(Artifact artifact) {
+ if (artifact == null) {
+ throw new IllegalArgumentException("Attribute data can not be acquired for null artifact.");
+ }
+
+ StringBuilder result = new StringBuilder();
+ try {
+ for (DynamicAttributeManager attributeManager : artifact.getAttributes()) {
+ if (selectedAttributes.contains(attributeManager.getDescriptor())) {
+ result.append(" - " + attributeManager.getAttributesStr());
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return result.toString();
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+
+ Composite comp = new Composite(container, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+ comp.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ treeViewer =
+ new CheckboxTreeViewer(comp,
+ SWT.MULTI | SWT.CHECK | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ treeViewer.setContentProvider(new ArtifactTreeContentProvider());
+ treeViewer.setSorter(new AttributeViewerSorter());
+ ArrayList<Object> objs = new ArrayList<Object>();
+ for (Object obj : selectedAttributes)
+ objs.add(obj);
+ treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ selectedAttributes.clear();
+ for (Object obj : treeViewer.getCheckedElements())
+ selectedAttributes.add((DynamicAttributeDescriptor) obj);
+ };
+ });
+ treeViewer.setLabelProvider(new LabelProvider() {
+
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+ });
+ try {
+ treeViewer.setInput(ConfigurationPersistenceManager.getInstance().getDynamicAttributeDescriptors(
+ BranchPersistenceManager.getInstance().getDefaultBranch()));
+ treeViewer.setCheckedElements(objs.toArray(new Object[objs.size()]));
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.toString(), ex);
+ }
+ return container;
+ }
+
+ public class AttributeViewerSorter extends ViewerSorter {
+ public AttributeViewerSorter() {
+ super();
+ }
+
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object o1, Object o2) {
+ return getComparator().compare(((DynamicAttributeDescriptor) o1).getName(),
+ ((DynamicAttributeDescriptor) o2).getName());
+ }
+ }
+
+ public boolean noneSelected() {
+ return selectedAttributes.isEmpty();
+ }
+
+ /**
+ * @return the selectedAttributes
+ */
+ public Collection<DynamicAttributeDescriptor> getSelectedAttributes() {
+ return selectedAttributes;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+ super.okPressed();
+
+ IPreferenceStore prefStore = SkynetGuiPlugin.getInstance().getPreferenceStore();
+ prefStore.setValue(preferenceKey, Collections.toString(getSelectedAttributes(), "", "|", ""));
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/BranchSelectionDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/BranchSelectionDialog.java
new file mode 100644
index 00000000000..19ce9f04b38
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/BranchSelectionDialog.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ListDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class BranchSelectionDialog extends ListDialog {
+
+ Branch selected = null;
+
+ public BranchSelectionDialog(Shell parent) {
+ super(parent);
+ setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new BranchLabelProvider());
+ try {
+ setInput(BranchPersistenceManager.getInstance().getBranches());
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ setTitle("Select Branch");
+ setMessage("Select Branch");
+ }
+
+ public Branch getSelection() {
+ return (Branch) getResult()[0];
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+
+ Control c = super.createDialogArea(container);
+ if (selected != null) {
+ ArrayList<Object> sel = new ArrayList<Object>();
+ sel.add(selected);
+ getTableViewer().setSelection(new StructuredSelection(sel.toArray(new Object[sel.size()])));
+ getTableViewer().getTable().setFocus();
+ }
+ return c;
+ }
+
+ @Override
+ protected void okPressed() {
+ if (getTableViewer().getSelection().isEmpty()) {
+ AWorkbench.popup("ERROR", "Must make selection.");
+ return;
+ }
+ super.okPressed();
+ }
+
+ public class BranchLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ Branch type = (Branch) arg0;
+ return type.getBranchName();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+
+ }
+
+ public void setSelected(Branch selected) {
+ this.selected = selected;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ChangeType.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ChangeType.java
new file mode 100644
index 00000000000..767d1a4056e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ChangeType.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public enum ChangeType {
+
+ None, Support, Problem, Improvement;
+
+ public static String[] getChangeTypes() {
+ ArrayList<String> types = new ArrayList<String>();
+ for (ChangeType type : values())
+ if (type != None) types.add(type.name());
+ return types.toArray(new String[types.size()]);
+ }
+
+ public static ChangeType getChangeType(String name) {
+ for (ChangeType type : values()) {
+ if (type.name().equals(name)) return type;
+ }
+ return None;
+ }
+
+ public Image getImage() {
+ if (this == ChangeType.Problem)
+ return SkynetGuiPlugin.getInstance().getImage("greenBug.gif");
+ else if (this == ChangeType.Improvement)
+ return SkynetGuiPlugin.getInstance().getImage("greenPlus.gif");
+ else if (this == ChangeType.Support) return SkynetGuiPlugin.getInstance().getImage("users2.gif");
+ return null;
+ }
+
+ public static class ChangeTypeLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return ((ChangeType) arg0).getImage();
+ }
+
+ public String getText(Object arg0) {
+ return ((ChangeType) arg0).name();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EmailableJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EmailableJob.java
new file mode 100644
index 00000000000..5d114049b97
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EmailableJob.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.util.AEmail;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EmailableJob extends Job {
+
+ private Collection<User> notifyUsers = new HashSet<User>();
+
+ /**
+ * @param name
+ */
+ public EmailableJob(String name) {
+ super(name);
+ }
+
+ /**
+ * Called by the extending job that the job is complete
+ *
+ * @param htmlBody
+ */
+ protected void notifyOfCompletion(String subject, String htmlBody) {
+ if (notifyUsers.size() > 0) {
+ Set<String> emails = new HashSet<String>();
+ for (User user : notifyUsers)
+ emails.add(user.getEmail());
+ AEmail emailMessage =
+ new AEmail(emails.toArray(new String[emails.size()]),
+ SkynetAuthentication.getInstance().getAuthenticatedUser().getEmail(),
+ SkynetAuthentication.getInstance().getAuthenticatedUser().getEmail(), subject);
+ try {
+ emailMessage.setSubject(subject);
+ emailMessage.addHTMLBody(htmlBody);
+ emailMessage.send();
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, "Your Email Message could not be sent.", ex, true);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ return null;
+ }
+
+ public Collection<User> getNotifyUsers() {
+ return notifyUsers;
+ }
+
+ public void setNotifyUsers(Collection<User> notifyUsers) {
+ this.notifyUsers = notifyUsers;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringMultiSelectionDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringMultiSelectionDialog.java
new file mode 100644
index 00000000000..f438987fd50
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringMultiSelectionDialog.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.Collection;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.StringViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.widgets.XRadioButton;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EnumStringMultiSelectionDialog extends CheckedTreeSelectionDialog {
+
+ private XRadioButton addSelectedRadioButton =
+ new XRadioButton("Add selected item(s) to existing if not already chosen.");
+ private XRadioButton replaceAllRadioButton = new XRadioButton("Replace all existing with selected item(s)");
+ private XRadioButton deleteSelectedRadioButton = new XRadioButton("Remove selected item(s) if already chosen.");
+ public static enum Selection {
+ AddSelection, ReplaceAll, DeleteSelected
+ };
+ private Selection selected = Selection.AddSelection;
+
+ /**
+ * @param parent
+ * @param artifacts
+ */
+ public EnumStringMultiSelectionDialog(String displayName, Collection<String> enums, Collection<String> selEnums) {
+ super(Display.getCurrent().getActiveShell(), new StringLabelProvider(), new ArrayTreeContentProvider());
+ setTitle("Select " + displayName);
+ setMessage("Select " + displayName + " to add, delete or replace.");
+ setInput(enums);
+ setComparator(new StringViewerSorter());
+ setInitialSelections(selEnums.toArray());
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+
+ Composite comp = new Composite(container, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+
+ addSelectedRadioButton.createWidgets(comp, 2);
+ addSelectedRadioButton.setSelected(true);
+ addSelectedRadioButton.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ if (addSelectedRadioButton.isSelected()) selected = Selection.AddSelection;
+ }
+ });
+
+ replaceAllRadioButton.createWidgets(comp, 2);
+ replaceAllRadioButton.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ if (replaceAllRadioButton.isSelected()) selected = Selection.ReplaceAll;
+ }
+ });
+
+ deleteSelectedRadioButton.createWidgets(comp, 2);
+ deleteSelectedRadioButton.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ if (deleteSelectedRadioButton.isSelected()) selected = Selection.DeleteSelected;
+ }
+ });
+ return c;
+ }
+
+ public Selection getSelected() {
+ return selected;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringSingleSelectionDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringSingleSelectionDialog.java
new file mode 100644
index 00000000000..3c04762d462
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/EnumStringSingleSelectionDialog.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.osee.framework.ui.skynet.StringViewerSorter;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EnumStringSingleSelectionDialog extends org.eclipse.ui.dialogs.ListDialog {
+
+ public EnumStringSingleSelectionDialog(String title, String message, Collection<String> options, String currSelected) {
+ super(Display.getCurrent().getActiveShell());
+ this.setTitle(title);
+ this.setMessage(message);
+ this.setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new StringLabelProvider());
+ setInput(options);
+ if (currSelected != null) setInitialSelections(new Object[] {currSelected});
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+ getTableViewer().setSorter(new StringViewerSorter());
+ return c;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HierarchicalReportDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HierarchicalReportDialog.java
new file mode 100644
index 00000000000..cab752bab52
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HierarchicalReportDialog.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.SelectionDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class HierarchicalReportDialog extends SelectionDialog {
+
+ XCheckBox showAttributesCheck = new XCheckBox("Include Attributes");
+ boolean showAttributes = true;
+ XCheckBox recurseChildrenCheck = new XCheckBox("Recurse Children");
+ boolean recurseChildren = true;
+
+ public HierarchicalReportDialog(Shell parent) {
+ super(parent);
+ setTitle("Heirarchical Report");
+ setMessage(String.format("Select Reporting Options"));
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+
+ Composite comp = new Composite(container, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+ comp.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ showAttributesCheck.createWidgets(comp, 2);
+ showAttributesCheck.set(showAttributes);
+ showAttributesCheck.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ showAttributes = showAttributesCheck.isSelected();
+ };
+ });
+ recurseChildrenCheck.createWidgets(comp, 2);
+ recurseChildrenCheck.set(recurseChildren);
+ recurseChildrenCheck.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ recurseChildren = recurseChildrenCheck.isSelected();
+ };
+ });
+
+ return container;
+ }
+
+ public boolean isRecurseChildren() {
+ return recurseChildren;
+ }
+
+ public boolean isShowAttributes() {
+ return showAttributes;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlExportTable.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlExportTable.java
new file mode 100644
index 00000000000..71662cef3f1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlExportTable.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.io.File;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class HtmlExportTable {
+
+ private static String elementTags[] = new String[] {"th", "td"};
+ private final String title;
+ private final String html;
+ private final boolean openInSystem;
+ private final boolean popupConfirm;
+
+ /**
+ * Given html and title, export embedded table into csv file and open in system editor
+ *
+ * @param shell used to request where to save file
+ * @param title for the top of the exported file
+ * @param html html that contains table - only first table will be exported
+ * @param openInSystem true if desire to open resulting file in operating system editor upon completion
+ */
+ public HtmlExportTable(String title, String html, boolean openInSystem) {
+ this(title, html, openInSystem, true);
+ }
+
+ public HtmlExportTable(String title, String html, boolean openInSystem, boolean popupConfirm) {
+ super();
+ this.title = title;
+ this.html = html;
+ this.openInSystem = openInSystem;
+ this.popupConfirm = popupConfirm;
+ }
+
+ public Result export() {
+ if (!popupConfirm || (popupConfirm && MessageDialog.openConfirm(Display.getCurrent().getActiveShell(),
+ "Export Table", "Export Table to CSV?"))) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(title + "\n");
+ String htmlStr = AHTML.htmlToText(html);
+ Matcher m =
+ Pattern.compile("<table.*?</table>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE).matcher(
+ htmlStr);
+ if (m.find()) {
+ String csv = m.group();
+ Matcher rowM =
+ Pattern.compile("<tr.*?>(.*?)</tr>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE).matcher(
+ csv);
+ while (rowM.find()) {
+ String row = rowM.group(1);
+ row = row.replaceAll("[\n\r]*", "");
+ // Handle all the headers
+ for (String tag : elementTags) {
+ Matcher thM =
+ Pattern.compile("<" + tag + ".*?>(.*?)</" + tag + ">",
+ Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE).matcher(row);
+ String csvRow = "";
+ while (thM.find()) {
+ csvRow += "\"" + removeLeadTrailSpaces(thM.group(1)) + "\",";
+ }
+ if (!csvRow.equals("")) {
+ csvRow = csvRow.replaceFirst(",$", "\n");
+ sb.append(csvRow);
+ }
+ }
+ }
+ String path = "";
+ if (popupConfirm) {
+ FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell(), SWT.SAVE | SWT.SINGLE);
+ dialog.setFilterExtensions(new String[] {"*.csv"});
+ dialog.setFilterPath(System.getProperty("user.home"));
+ dialog.setFileName("table.csv");
+ path = dialog.open();
+ } else
+ path = System.getProperty("user.home") + File.separator + "table.csv";
+
+ if (path != null) {
+ File file = new File(path);
+ AFile.writeFile(file, sb.toString());
+ if (openInSystem) Program.launch(file.getAbsolutePath());
+ return Result.TrueResult;
+ }
+ } else {
+ AWorkbench.popup("ERROR", "Can't find table in results.\n\nNothing to export");
+ }
+ }
+ return Result.FalseResult;
+ }
+
+ private String removeLeadTrailSpaces(String inStr) {
+ String str = inStr;
+ str = str.replaceAll("^ *", "");
+ str = str.replaceAll(" *$", "");
+ str = str.replaceAll("\"", "'");
+ str = str.replaceAll("\n", " ");
+ return str;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlReportJob.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlReportJob.java
new file mode 100644
index 00000000000..788ca061daa
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/HtmlReportJob.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.skynet.core.attribute.WordAttribute;
+import org.eclipse.osee.framework.skynet.core.relation.RelationSide;
+import org.eclipse.osee.framework.skynet.core.util.WordConverter;
+import org.eclipse.osee.framework.ui.plugin.util.AIFile;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer;
+import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class HtmlReportJob extends Job {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(HtmlReportJob.class);
+ private final RelationSide side;
+ private boolean includeAttributes;
+ private boolean recurseChildren;
+ private final String title;
+ private final Collection<Artifact> artifacts;
+ private Collection<String> onlyAttributeNames;
+ private IProgressMonitor monitor;
+
+ /**
+ * @throws TransformerFactoryConfigurationError
+ * @throws IOException
+ * @throws TransformerConfigurationException
+ */
+ public HtmlReportJob(String title, Collection<Artifact> artifacts, RelationSide side) throws TransformerConfigurationException, IOException, TransformerFactoryConfigurationError {
+ super(title);
+ this.title = title;
+ this.artifacts = artifacts;
+ this.side = side;
+ }
+
+ public HtmlReportJob(String title, Artifact artifact, RelationSide side) throws TransformerConfigurationException, IOException, TransformerFactoryConfigurationError {
+ this(title, new ArrayList<Artifact>(), side);
+ artifacts.add(artifact);
+ }
+
+ public IStatus run(IProgressMonitor monitor) {
+ this.monitor = monitor;
+
+ monitor.beginTask("", IProgressMonitor.UNKNOWN);
+ try {
+ final String html = generateHtml(title);
+
+ if (!monitor.isCanceled()) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+
+ IFile workingFile;
+ try {
+ workingFile =
+ FileSystemRenderer.ensureRenderFolderExists(PresentationType.PREVIEW).getFile(
+ GUID.generateGuidStr() + ".html");
+ AIFile.writeToFile(workingFile, html);
+ Program.launch(workingFile.getLocation().toString());
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ });
+ }
+ } catch (SQLException ex) {
+ return new Status(Status.ERROR, SkynetGuiPlugin.PLUGIN_ID, -1, ex.toString(), ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+
+ public String generateHtml(String title) throws SQLException {
+ StringBuilder sb = new StringBuilder();
+ sb.append(AHTML.heading(3, title));
+ sb.append(AHTML.beginSimpleTable(0, 100));
+ int x = 1;
+ for (Artifact artifact : artifacts) {
+ monitor.setTaskName(String.format("Processing %s/%s", x + "", artifacts.size() + ""));
+ sb.append(AHTML.addSimpleTableRow(processArtifact(artifact, "" + x++, side, recurseChildren,
+ includeAttributes, onlyAttributeNames)));
+ }
+ sb.append(AHTML.endSimpleTable());
+ return AHTML.titledPage(title, sb.toString());
+ }
+
+ public String processArtifact(Artifact art, String paraNum, RelationSide side, boolean recurseChildren, boolean includeAttributes, Collection<String> onlyAttributeNames) throws SQLException {
+ if (monitor.isCanceled()) {
+ return "";
+ }
+
+ monitor.subTask(art.getDescriptiveName());
+ StringBuilder sb = new StringBuilder();
+ sb.append(AHTML.beginSimpleTable(0, 100));
+ sb.append(AHTML.addSimpleTableRow(String.format("%s %s", paraNum + "", AHTML.bold(art.getDescriptiveName()))));
+ if (includeAttributes) sb.append(AHTML.addSimpleTableRow(processAttributes(art, recurseChildren,
+ includeAttributes, onlyAttributeNames)));
+ int x = 1;
+ if (recurseChildren) for (Artifact child : art.getArtifacts(side)) {
+ sb.append(AHTML.addSimpleTableRow(processArtifact(child, paraNum + "." + x++, side, recurseChildren,
+ includeAttributes, onlyAttributeNames)));
+ }
+ sb.append(AHTML.endSimpleTable());
+ return sb.toString();
+ }
+
+ public String processAttributes(Artifact artifact, boolean recurseChildren, boolean includeAttributes, Collection<String> onlyAttributeNames) {
+ StringBuilder sb = new StringBuilder();
+ String wordHtml = null;
+
+ sb.append(AHTML.beginMultiColumnTable(90));
+ if (includeAttributes) {
+ try {
+ for (DynamicAttributeManager dam : artifact.getAttributes()) {
+ if (onlyAttributeNames == null || onlyAttributeNames.contains(dam.getDescriptor().getName())) {
+ for (Attribute attr : dam.getAttributes()) {
+ if (!dam.getDescriptor().getName().equals("Name") && !dam.getDescriptor().getName().equals(
+ WordAttribute.CONTENT_NAME)) {
+ sb.append(AHTML.addRowMultiColumnTable(new String[] {dam.getDescriptor().getName(),
+ attr.getVarchar()}));
+ } else if (dam.getDescriptor().getName().equals(WordAttribute.CONTENT_NAME)) {
+ try {
+ ByteArrayInputStream wordMl =
+ new ByteArrayInputStream(
+ ("<body>" + attr.getStringData() + "</body>").getBytes("UTF-8"));
+ wordHtml = WordConverter.getInstance().toHtml(wordMl);
+ } catch (UnsupportedEncodingException ex) {
+ wordHtml = ex.getLocalizedMessage();
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ }
+ }
+ }
+
+ if (wordHtml != null) {
+ sb.append(AHTML.addRowSpanMultiColumnTable(wordHtml, 2));
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ sb.append(AHTML.endMultiColumnTable());
+ return sb.toString();
+ }
+
+ public boolean isIncludeAttributes() {
+ return includeAttributes;
+ }
+
+ public void setIncludeAttributes(boolean includeAttributes) {
+ this.includeAttributes = includeAttributes;
+ }
+
+ public boolean isRecurseChildren() {
+ return recurseChildren;
+ }
+
+ public void setRecurseChildren(boolean recurseChildren) {
+ this.recurseChildren = recurseChildren;
+ }
+
+ public Collection<String> getOnlyAttributeNames() {
+ return onlyAttributeNames;
+ }
+
+ public void setOnlyAttributeNames(Collection<String> onlyAttributeNames) {
+ this.onlyAttributeNames = onlyAttributeNames;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/IOseeDictionary.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/IOseeDictionary.java
new file mode 100644
index 00000000000..79bac9728a1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/IOseeDictionary.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IOseeDictionary {
+
+ public boolean isWord(String word);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ImageCapture.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ImageCapture.java
new file mode 100644
index 00000000000..65faefb9bc4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ImageCapture.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.ImageDialog;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ImageCapture {
+
+ final Image image;
+
+ public ImageCapture(Control control) {
+ GC gc = new GC(control.getDisplay());
+ Rectangle bounds = control.getBounds();
+ Point topLeft = control.toDisplay(0, 0);
+ image = new Image(Display.getCurrent(), bounds.width, bounds.height);
+ gc.copyArea(image, topLeft.x, topLeft.y);
+ gc.dispose();
+ }
+
+ public Image getImage() {
+ return image;
+ }
+
+ public void popupDialog() {
+ ImageDialog diag = new ImageDialog(image, Display.getCurrent().getActiveShell());
+ diag.open();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OSEELog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OSEELog.java
new file mode 100644
index 00000000000..016f7fef032
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OSEELog.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OSEELog {
+
+ public static void logException(Class<?> clazz, String str, Exception ex, boolean popup) {
+ Logger logger = ConfigUtil.getConfigFactory().getLogger(clazz);
+ if (popup) {
+ if (ex == null)
+ AWorkbench.popup("ERROR", str);
+ else
+ AWorkbench.popup("ERROR", (str == null ? "" : str + "\n\n") + ex.getLocalizedMessage());
+ }
+ if (ex != null)
+ if (str == null || str.equals(""))
+ logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+ else
+ logger.log(Level.SEVERE, str, ex);
+ else
+ logger.log(Level.SEVERE, str);
+ }
+
+ public static void logSevere(Class<?> clazz, String str, boolean popup) {
+ logException(clazz, str, new IllegalStateException(str), popup);
+ }
+
+ public static void logInfo(Class<?> clazz, String str, boolean popup) {
+ Logger logger = ConfigUtil.getConfigFactory().getLogger(clazz);
+ if (popup) AWorkbench.popup("Info", str);
+ logger.log(Level.INFO, str);
+ }
+
+ public static void logWarning(Class<?> clazz, String str, boolean popup) {
+ logWarning(clazz, str, null, popup);
+ }
+
+ public static void logWarning(Class<?> clazz, Exception ex, boolean popup) {
+ logWarning(clazz, null, ex, popup);
+ }
+
+ public static void logWarning(Class<?> clazz, String str, Exception ex, boolean popup) {
+ Logger logger = ConfigUtil.getConfigFactory().getLogger(clazz);
+ if (popup) AWorkbench.popup("Warning", str);
+ if (ex != null)
+ if (str == null || str.equals(""))
+ logger.log(Level.WARNING, ex.getLocalizedMessage(), ex);
+ else
+ logger.log(Level.WARNING, str, ex);
+ else
+ logger.log(Level.WARNING, str);
+ }
+
+ public static void logException(Class<?> clazz, Exception ex, boolean popup) {
+ logException(clazz, null, ex, popup);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeDictionary.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeDictionary.java
new file mode 100644
index 00000000000..eddae13fe32
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeDictionary.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.swt.styledText.IDictionary;
+import org.osgi.framework.Bundle;
+
+/**
+ * Dictionary provided by OSEE that includes all dictionarys through the OseeDictionary extension point.
+ *
+ * @author Donald G. Dunne
+ */
+public class OseeDictionary implements IDictionary {
+
+ private static Set<IOseeDictionary> dictionaries;
+ private static OseeDictionary instance = new OseeDictionary();
+
+ public static OseeDictionary getInstance() {
+ return instance;
+ }
+
+ private OseeDictionary() {
+ }
+
+ public boolean isWord(String word) {
+ // System.out.println("Lookup => \""+word+"\"");
+ if (dictionaries == null) {
+ getIDictionaries();
+ }
+ String cleanWord = getCleanWord(word);
+ if (cleanWord.equals("") || cleanWord.length() == 1) return true;
+ for (IOseeDictionary dict : dictionaries) {
+ if (dict.isWord(cleanWord)) return true;
+ }
+ return false;
+ }
+
+ // Remove any junky characters and check for acronyms and other known
+ // non-word type stuff. Return valid word to check in dictionary OR
+ // "" if there is no word in this string
+ // eg now) = now
+ // a..b = ""
+ // SQA = ""
+ // NEon = ""
+ private static Pattern pattern = Pattern.compile("^[a-zA-Z]{1}[a-z]+$");
+
+ private String getCleanWord(String w) {
+ // Single character is a valid word
+ if (w.length() == 1) return w;
+
+ // First, remove any non-word characters before and after string
+ // eg. end. (now) it!
+ w = w.replaceAll("^\\W+", "");
+ w = w.replaceAll("\\W+$", "");
+ w = w.replaceAll("'s$", ""); // Get rid of 's at end of word
+
+ // If any non-alphabetic characters still in string, not a word
+ // If string not either all lowercase or first letter capitalized, not a
+ // word
+ Matcher m = pattern.matcher(w);
+ if (!m.find()) return "";
+ return w.toLowerCase();
+ }
+
+ @SuppressWarnings("deprecation")
+ private static void getIDictionaries() {
+ dictionaries = new HashSet<IOseeDictionary>();
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.ui.skynet.OseeDictionary");
+ if (point == null) {
+ OSEELog.logSevere(SkynetGuiPlugin.class, "Can't access OseeDictionary extension point", true);
+ return;
+ }
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("OseeDictionary")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> taskClass = bundle.loadClass(classname);
+ Object obj = taskClass.newInstance();
+ dictionaries.add((IOseeDictionary) obj);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, "Error loading OseeDictionary extension", ex, true);
+ }
+ }
+
+ }
+ }
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeMainDictionary.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeMainDictionary.java
new file mode 100644
index 00000000000..fc4affc6933
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/OseeMainDictionary.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OseeMainDictionary implements IOseeDictionary {
+
+ Set<String> dict;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.util.IOseeDictionary#isWord(java.lang.String)
+ */
+ public boolean isWord(String word) {
+ if (dict == null) loadDictionary();
+ boolean contains = dict.contains(word);
+ return contains;
+ }
+
+ private void loadDictionary() {
+ dict = new HashSet<String>();
+ String line;
+ InputStream is = null;
+ BufferedReader br = null;
+
+ // open OSEE english dictionary
+ try {
+ is = SkynetGuiPlugin.getInstance().getBundle().getEntry("support/spellCheck/AllWords.txt").openStream();
+ br = new BufferedReader(new InputStreamReader(is));
+ while ((line = br.readLine()) != null) {
+ line.replaceAll("[\t\r\n ]+$", "");
+ dict.add(line);
+ }
+ is.close();
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ShowAttributeAction.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ShowAttributeAction.java
new file mode 100644
index 00000000000..9e2c1afabb1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/ShowAttributeAction.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.Collection;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class ShowAttributeAction extends Action {
+ private AttributeCheckListDialog attributeDialog;
+ private final StructuredViewer viewer;
+ private String preferenceKey;
+
+ public ShowAttributeAction(StructuredViewer viewer, String preferenceKey) {
+ super("Show Attributes", SkynetGuiPlugin.getInstance().getImageDescriptor("filter.gif"));
+ setToolTipText("Show Attributes");
+ this.viewer = viewer;
+ this.preferenceKey = preferenceKey;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.action.Action#run()
+ */
+ @Override
+ public void run() {
+ int result = attributeDialog.open();
+ if (result == 0) {
+ viewer.refresh(true);
+ }
+ }
+
+ public void addToView(ViewPart viewPart) {
+ addToView(viewPart, null);
+ }
+
+ public void addToView(ViewPart viewPart, Collection<DynamicAttributeDescriptor> attrTypes) {
+ IMenuManager toolbarManager = viewPart.getViewSite().getActionBars().getMenuManager();
+ toolbarManager.add(this);
+ attributeDialog = new AttributeCheckListDialog(viewPart.getSite().getShell(), attrTypes, preferenceKey);
+ }
+
+ public String getSelectedAttributeData(Artifact artifact) {
+ return attributeDialog.getSelectedAttributeData(artifact);
+ }
+
+ public boolean noneSelected() {
+ return attributeDialog.noneSelected();
+ }
+
+ public Collection<DynamicAttributeDescriptor> getSelectedAttributes() {
+ return attributeDialog.getSelectedAttributes();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetDragAndDrop.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetDragAndDrop.java
new file mode 100644
index 00000000000..a15188bbaa6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetDragAndDrop.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactData;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.ui.skynet.HTMLTransferFormatter;
+import org.eclipse.osee.framework.ui.skynet.changeReport.ChangeReportView;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSource;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.DropTargetAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.HTMLTransfer;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public abstract class SkynetDragAndDrop {
+ private String viewId;
+ private DragSource source;
+ private DropTarget target;
+
+ public SkynetDragAndDrop(Control dragAndDropControl, String viewId) {
+ this(dragAndDropControl, dragAndDropControl, viewId);
+ }
+
+ /**
+ * Caller may optionally pass null for either the dragSource or dropTarget when both are not needed
+ *
+ * @param dragSource
+ * @param dropTarget
+ * @param viewId
+ */
+ public SkynetDragAndDrop(Control dragSource, Control dropTarget, String viewId) {
+ this.viewId = viewId;
+ if (dragSource != null) {
+ source = new DragSource(dragSource, DND.DROP_MOVE | DND.DROP_COPY);
+ setupDragSupport();
+ }
+ if (dropTarget != null) {
+ target = new DropTarget(dropTarget, DND.DROP_MOVE | DND.DROP_COPY);
+ setupDropSupport();
+ }
+ }
+
+ private void setupDragSupport() {
+ source.setTransfer(new Transfer[] {HTMLTransfer.getInstance(), ArtifactTransfer.getInstance(),
+ TextTransfer.getInstance()});
+ source.addDragListener(new DragSourceListener() {
+
+ public void dragFinished(DragSourceEvent event) {
+ }
+
+ public void dragSetData(DragSourceEvent event) {
+ performDataTransafer(event);
+ }
+
+ public void dragStart(DragSourceEvent event) {
+ }
+ });
+ }
+
+ private void performDataTransafer(DragSourceEvent event) {
+ if (HTMLTransfer.getInstance().isSupportedType(event.dataType)) {
+ htmlTransferDragSetData(event);
+ } else if (ArtifactTransfer.getInstance().isSupportedType(event.dataType)) {
+ artifactTransferDragSetData(event);
+ } else if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
+ textTransferDragSetData(event);
+ }
+ }
+
+ private void setupDropSupport() {
+ target.setTransfer(new Transfer[] {FileTransfer.getInstance(), TextTransfer.getInstance(),
+ ArtifactTransfer.getInstance()});
+ target.addDropListener(new DropTargetAdapter() {
+
+ public void dragOperationChanged(DropTargetEvent event) {
+ operationChanged(event);
+ }
+
+ public void drop(DropTargetEvent event) {
+ performDrop(event);
+ }
+
+ public void dragOver(DropTargetEvent event) {
+ performDragOver(event);
+ }
+
+ public void dropAccept(DropTargetEvent event) {
+ }
+ });
+ }
+
+ public void performDragOver(DropTargetEvent event) {
+ }
+
+ public void artifactTransferDragSetData(DragSourceEvent event) {
+ try {
+ if (getArtifacts() != null && getArtifacts().length > 0) {
+ event.data = new ArtifactData(getArtifacts(), "work", viewId);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(ChangeReportView.class, ex, true);
+ }
+ }
+
+ public void htmlTransferDragSetData(DragSourceEvent event) {
+ try {
+ if (getArtifacts() != null && getArtifacts().length > 0) {
+ event.data = HTMLTransferFormatter.getHtml(getArtifacts());
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(ChangeReportView.class, ex, true);
+ }
+ }
+
+ public void textTransferDragSetData(DragSourceEvent event) {
+ try {
+ if (getArtifacts() != null && getArtifacts().length > 0) {
+ Artifact[] artifacts = getArtifacts();
+ Collection<String> names = new ArrayList<String>(artifacts.length);
+
+ for (Artifact artifact : artifacts)
+ names.add(artifact.getDescriptiveName());
+
+ event.data = Collections.toString(names, null, ", ", null);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(ChangeReportView.class, ex, true);
+ }
+ }
+
+ /**
+ * Override this method to supply the base class with artifacts to be used for drag and drop.
+ */
+ public abstract Artifact[] getArtifacts() throws Exception;
+
+ /**
+ * Override this method to implement the drop operation.
+ */
+ public void performDrop(DropTargetEvent event) {
+ if (event.data instanceof ArtifactData) {
+ performArtifactDrop(((ArtifactData) event.data).getArtifacts());
+ } else if (event.data instanceof String[]) {
+ performFileDrop((String[]) event.data);
+ } else if (event.data instanceof String) {
+ performTextDrop((String) event.data);
+ }
+ }
+
+ public void operationChanged(DropTargetEvent event) {
+ }
+
+ /**
+ * override this method and its cousins rather than performDrop in order to have the drop data preprocessed and
+ * passed in the desired form
+ *
+ * @param text
+ */
+ public void performTextDrop(String text) {
+
+ }
+
+ /**
+ * override this method and its cousins rather than performDrop in order to have the drop data preprocessed and
+ * passed in the desired form
+ *
+ * @param dropArtifacts
+ */
+ public void performArtifactDrop(Artifact[] dropArtifacts) {
+
+ }
+
+ /**
+ * override this method and its cousins rather than performDrop in order to have the drop data preprocessed and
+ * passed in the desired form
+ *
+ * @param fileNames
+ */
+ public void performFileDrop(String[] fileNames) {
+
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetGuiDebug.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetGuiDebug.java
new file mode 100644
index 00000000000..b1ba61f9bd4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetGuiDebug.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.osee.framework.ui.plugin.util.Debug;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkynetGuiDebug extends Debug {
+
+ protected String getPluginName() {
+ return "SkynetGui";
+ }
+
+ /**
+ * @param debugOn
+ * @param timeStampOn
+ * @param nameSpace
+ */
+ public SkynetGuiDebug(boolean debugOn, boolean timeStampOn, String nameSpace) {
+ super(debugOn, timeStampOn, nameSpace);
+ }
+
+ /**
+ * @param debugOn
+ * @param nameSpace
+ */
+ public SkynetGuiDebug(boolean debugOn, String nameSpace) {
+ super(debugOn, nameSpace);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetSelections.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetSelections.java
new file mode 100644
index 00000000000..dfb9e7ac248
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetSelections.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.sql.SQLException;
+import java.util.Iterator;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.revision.TransactionData;
+import org.eclipse.osee.framework.ui.swt.ITreeNode;
+
+/**
+ * @author Robert A. Fisher
+ */
+public final class SkynetSelections {
+
+ /*
+ * This is a utility class and should not be instantiated
+ */
+ private SkynetSelections() {
+ }
+
+ public static boolean oneBranchSelected(IStructuredSelection selection) {
+ return selection.size() == 1 && boilDownObject(selection.getFirstElement()) instanceof Branch;
+ }
+
+ public static boolean oneDescendantBranchSelected(IStructuredSelection selection) {
+ Object object = boilDownObject(selection.getFirstElement());
+ return selection.size() == 1 && object instanceof Branch && ((Branch) object).getParentBranch() != null;
+ }
+
+ public static boolean oneTransactionSelected(IStructuredSelection selection) {
+ return selection.size() == 1 && boilDownObject(selection.getFirstElement()) instanceof TransactionData;
+ }
+
+ public static boolean transactionsSelected(IStructuredSelection selection) {
+ if (!selection.isEmpty()) {
+ Iterator<?> iter = selection.iterator();
+ while (iter.hasNext()) {
+ Object object = iter.next();
+ if (!(boilDownObject(object) instanceof TransactionData)) {
+ return false;
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean twoTransactionsSelectedOnSameBranch(IStructuredSelection selection) throws SQLException {
+ if (selection.size() == 2) {
+ Iterator<?> iter = selection.iterator();
+ Object obj1 = boilDownObject(iter.next());
+ Object obj2 = boilDownObject(iter.next());
+
+ return obj1 instanceof TransactionData && obj2 instanceof TransactionData && ((TransactionData) obj1).getTransactionId().getBranch() == ((TransactionData) obj2).getTransactionId().getBranch();
+ }
+
+ return false;
+ }
+
+ public static Object boilDownObject(Object object) {
+ while (object instanceof ITreeNode) {
+ object = ((ITreeNode) object).getBackingData();
+ }
+
+ return object;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetViews.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetViews.java
new file mode 100644
index 00000000000..d9e243c3c65
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/SkynetViews.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionIdManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class SkynetViews {
+
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static final TransactionIdManager transactionIdManager = TransactionIdManager.getInstance();
+
+ /**
+ * @param memento
+ * @return Returns a collection of <code>DynamicAttributeDescriptor</code> stored in a memento.
+ * @throws SQLException
+ */
+ public static List<DynamicAttributeDescriptor> loadAttrTypesFromPreferenceStore(String preferenceKey) throws SQLException {
+ List<DynamicAttributeDescriptor> attributeDescriptors = new LinkedList<DynamicAttributeDescriptor>();
+ Collection<DynamicAttributeDescriptor> descriptors =
+ configurationPersistenceManager.getDynamicAttributeDescriptors(transactionIdManager.getEditableTransactionId(branchManager.getDefaultBranch()));
+
+ IPreferenceStore preferenceStore = SkynetGuiPlugin.getInstance().getPreferenceStore();
+ for (String attributeType : preferenceStore.getString(preferenceKey).split("\\|")) {
+ for (DynamicAttributeDescriptor descriptor : descriptors) {
+ if (attributeType.equals(descriptor.getName())) {
+ attributeDescriptors.add(descriptor);
+ break;
+ }
+ }
+ }
+
+ return attributeDescriptors;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/StringLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/StringLabelProvider.java
new file mode 100644
index 00000000000..ba30d340760
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/StringLabelProvider.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Generic Artifact Label Provider showing Descriptive Name as text
+ *
+ * @author Donald G. Dunne
+ */
+public class StringLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ return ((String) arg0);
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailGroup.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailGroup.java
new file mode 100644
index 00000000000..b72c88d32a4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailGroup.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util.email;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EmailGroup {
+
+ private final String groupName;
+ private ArrayList<String> emails = new ArrayList<String>();
+
+ public EmailGroup(String groupName, Collection<String> emails) {
+ this.groupName = groupName;
+ for (String s : emails)
+ this.emails.add(s);
+ }
+
+ public String getGroupName() {
+ return groupName;
+ }
+
+ public String toString() {
+ return groupName;
+ }
+
+ public ArrayList<String> getEmails() {
+ return emails;
+ }
+
+ public void setEmails(ArrayList<String> emails) {
+ this.emails = emails;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizard.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizard.java
new file mode 100644
index 00000000000..0eff25fb11b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizard.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util.email;
+
+import java.util.ArrayList;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osee.framework.jdk.core.util.AEmail;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EmailWizard extends Wizard {
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private EmailWizardPage wizardPage;
+ private String htmlMessage = null;
+ private String subject = null;
+ private ArrayList<EmailGroup> emailableGroups;
+ private ArrayList<Object> initialAddress = null;
+
+ public EmailWizard() {
+ super();
+ }
+
+ /**
+ * @param htmlMessage
+ * @param subject
+ * @param emailableFields
+ * @param initialAddress - User, AtsEmailGroup or String
+ */
+ public EmailWizard(String htmlMessage, String subject, ArrayList<EmailGroup> emailableFields, ArrayList<Object> initialAddress) {
+ this.htmlMessage = htmlMessage;
+ this.subject = subject;
+ this.emailableGroups = emailableFields;
+ this.initialAddress = initialAddress;
+ }
+
+ public void addPages() {
+ wizardPage = new EmailWizardPage("Page1", emailableGroups, initialAddress);
+ addPage(wizardPage);
+ }
+
+ public boolean performFinish() {
+ AEmail emailMessage =
+ new AEmail(null, skynetAuth.getAuthenticatedUser().getEmail(),
+ skynetAuth.getAuthenticatedUser().getEmail(), subject);
+ try {
+ emailMessage.setRecipients(Message.RecipientType.TO, wizardPage.getToAddresses());
+ emailMessage.setRecipients(Message.RecipientType.CC, wizardPage.getCcAddresses());
+ emailMessage.setRecipients(Message.RecipientType.BCC, wizardPage.getBccAddresses());
+ String otherText = wizardPage.getText();
+ if (!otherText.equals("")) emailMessage.setHTMLBody("<p>" + AHTML.textToHtml(wizardPage.getText()) + "</p><p>--------------------------------------------------------</p>");
+ // Remove hyperlinks cause they won't work in email.
+ emailMessage.addHTMLBody(htmlMessage);
+ emailMessage.send();
+ } catch (MessagingException e) {
+ MessageDialog.openInformation(null, "Message Could Not Be Sent",
+ "Your Email Message could not be sent.\n\n" + e.getLocalizedMessage());
+
+ // e.printStackTrace();
+ return false;
+ }
+
+ return true;
+ }
+
+ public void setEmailableGroups(ArrayList<EmailGroup> emailableGroups) {
+ this.emailableGroups = emailableGroups;
+ }
+
+ public void setHtmlMessage(String htmlMessage) {
+ this.htmlMessage = htmlMessage;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public ArrayList<Object> getInitialAddress() {
+ return initialAddress;
+ }
+
+ public void setInitialAddress(ArrayList<Object> initialAddress) {
+ this.initialAddress = initialAddress;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizardPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizardPage.java
new file mode 100644
index 00000000000..a2e0d47e2ad
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/email/EmailWizardPage.java
@@ -0,0 +1,295 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util.email;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.user.UserEnum;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EmailWizardPage extends WizardPage {
+ private static final SkynetAuthentication skynetAuth = SkynetAuthentication.getInstance();
+ private Text text;
+ private ArrayList<Object> initialAddress;
+ private TreeViewer namesList;
+ private ListViewer toList;
+ private ListViewer ccList;
+ private ListViewer bccList;
+
+ private final static String separator = "===============";
+ private final ArrayList<EmailGroup> groups;
+
+ /**
+ * @param pageName
+ * @param groups
+ * @param initialAddress User, AtsEmailGroup or String
+ */
+ protected EmailWizardPage(String pageName, ArrayList<EmailGroup> groups, ArrayList<Object> initialAddress) {
+ super(pageName);
+ this.groups = groups;
+ this.initialAddress = initialAddress;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createControl(Composite parent) {
+ setTitle("Email Action");
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ composite.setLayout(gl);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ composite.setLayoutData(gd);
+
+ Composite namesComp = new Composite(composite, SWT.NONE);
+ namesComp.setLayout(new GridLayout());
+ gd = new GridData(GridData.FILL_VERTICAL);
+ namesComp.setLayoutData(gd);
+
+ // Fill names array
+ ArrayList<Object> names = new ArrayList<Object>();
+ if (groups != null) {
+ names.addAll(groups);
+ if (groups.size() > 0) names.add(separator);
+ }
+
+ try {
+ names.addAll(SkynetAuthentication.getInstance().getUsers());
+ names.remove(skynetAuth.getUser(UserEnum.UnAssigned));
+ names.remove(skynetAuth.getUser(UserEnum.NoOne));
+ } catch (SQLException ex) {
+ OSEELog.logException(getClass(), ex, false);
+ names.add(ex.getLocalizedMessage());
+ }
+
+ namesList = new TreeViewer(namesComp);
+ namesList.setContentProvider(new ArrayTreeContentProvider());
+ namesList.setLabelProvider(new NamesLabelProvider());
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 75;
+ namesList.getTree().setLayoutData(gd);
+ namesList.getTree().setLinesVisible(false);
+ namesList.setInput(names);
+ namesList.getTree().addListener(SWT.MouseDoubleClick, new Listener() {
+ public void handleEvent(Event event) {
+ if (event.button == 1) {
+ IStructuredSelection sel = (IStructuredSelection) namesList.getSelection();
+ Object obj = sel.getFirstElement();
+ if ((obj instanceof String) && ((String) obj).equals(separator)) return;
+ toList.add(sel.getFirstElement());
+ }
+ }
+ });
+
+ Composite toComp = new Composite(composite, SWT.NONE);
+ gl = new GridLayout();
+ gl.numColumns = 2;
+ toComp.setLayout(gl);
+ gd = new GridData(GridData.FILL_BOTH);
+ toComp.setLayoutData(gd);
+
+ // Empty label to take up left column
+ Label label = new Label(toComp, SWT.NONE);
+ label = new Label(toComp, SWT.NONE);
+ label.setText("(select and right-click to delete)");
+
+ Button b = new Button(toComp, SWT.NONE);
+ b.setText("To-> ");
+ b.setSize(1000, 5);
+ b.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ IStructuredSelection sel = (IStructuredSelection) namesList.getSelection();
+ for (Object obj : sel.toList())
+ toList.add(obj);
+ }
+ });
+
+ toList = new ListViewer(toComp);
+ toList.setContentProvider(new ArrayContentProvider());
+ toList.setLabelProvider(new NamesLabelProvider());
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 50;
+ toList.getList().setLayoutData(gd);
+ if (initialAddress != null) toList.setInput(initialAddress);
+ toList.getList().setMenu(getDeletePopup(toList));
+
+ b = new Button(toComp, SWT.NONE);
+ b.setText(" Cc-> ");
+ b.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ IStructuredSelection sel = (IStructuredSelection) namesList.getSelection();
+ for (Object obj : sel.toList())
+ ccList.add(obj);
+ }
+ });
+
+ ccList = new ListViewer(toComp);
+ ccList.setContentProvider(new ArrayContentProvider());
+ ccList.setLabelProvider(new NamesLabelProvider());
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 20;
+ ccList.getList().setLayoutData(gd);
+ ccList.getList().setMenu(getDeletePopup(ccList));
+
+ b = new Button(toComp, SWT.NONE);
+ b.setText(" Bcc-> ");
+ b.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ IStructuredSelection sel = (IStructuredSelection) namesList.getSelection();
+ for (Object obj : sel.toList())
+ bccList.add(obj);
+ }
+ });
+
+ bccList = new ListViewer(toComp);
+ bccList.setContentProvider(new ArrayContentProvider());
+ bccList.setLabelProvider(new NamesLabelProvider());
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 20;
+ bccList.getList().setLayoutData(gd);
+ bccList.getList().setMenu(getDeletePopup(bccList));
+ bccList.setInput(new Object[] {SkynetAuthentication.getInstance().getAuthenticatedUser().getEmail()});
+
+ // Additional Text
+ Label l = new Label(composite, SWT.NONE);
+ l.setText("Additional Text:");
+ gd = new GridData();
+ gd.horizontalSpan = 2;
+ l.setLayoutData(gd);
+
+ text = new Text(composite, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ gd.heightHint = 75;
+ text.setLayoutData(gd);
+
+ setControl(composite);
+ }
+
+ private Menu getDeletePopup(ListViewer listView) {
+ Menu previewMenu = new Menu(listView.getControl());
+ MenuItem item = new MenuItem(previewMenu, SWT.CASCADE);
+ item.setText("Delete");
+ final ListViewer fListView = listView;
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection sel = (IStructuredSelection) fListView.getSelection();
+ for (Object obj : sel.toList())
+ fListView.remove(obj);
+ }
+ });
+
+ return previewMenu;
+ }
+
+ public String[] getToAddresses() {
+ return getEmails(toList);
+ }
+
+ public String[] getCcAddresses() {
+ return getEmails(ccList);
+ }
+
+ public String[] getBccAddresses() {
+ return getEmails(bccList);
+ }
+
+ public String[] getEmails(ListViewer list) {
+
+ ArrayList<String> emails = new ArrayList<String>();
+ for (int x = 0; x < list.getList().getItemCount(); x++) {
+ Object obj = list.getElementAt(x);
+ if (obj instanceof User)
+ emails.add(((User) obj).getEmail());
+ else if (obj instanceof String)
+ emails.add(((String) obj));
+ else if (obj instanceof EmailGroup) emails.addAll(((EmailGroup) obj).getEmails());
+ }
+ return emails.toArray(new String[emails.size()]);
+ }
+
+ public String getText() {
+ return text.getText();
+ }
+
+ public class NamesLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object element) {
+ if (element instanceof User)
+ return ((User) element).getName();
+ else if (element instanceof EmailGroup)
+ return ((EmailGroup) element).toString();
+ else if (element instanceof String) return ((String) element).toString();
+ return "";
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/filteredTree/OSEEFilteredTree.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/filteredTree/OSEEFilteredTree.java
new file mode 100644
index 00000000000..7cf1aa692f3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/filteredTree/OSEEFilteredTree.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util.filteredTree;
+
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OSEEFilteredTree extends FilteredTree {
+
+ /**
+ * @param parent
+ * @param treeStyle
+ * @param filter
+ */
+ public OSEEFilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
+ super(parent, treeStyle, filter);
+ setInitialText("");
+ }
+
+ @Override
+ protected Composite createFilterControls(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(ALayout.getZeroMarginLayout(3, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ (new Label(comp, SWT.NONE)).setText("Filter: ");
+ super.createFilterControls(comp);
+
+ return comp;
+ }
+
+ @Override
+ protected void createFilterText(Composite parent) {
+ super.createFilterText(parent);
+ filterText.addKeyListener(new KeyListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.KeyListener#keyPressed(org.eclipse.swt.events.KeyEvent)
+ */
+ public void keyPressed(KeyEvent e) {
+ filterText.setFocus();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.KeyListener#keyReleased(org.eclipse.swt.events.KeyEvent)
+ */
+ public void keyReleased(KeyEvent e) {
+ filterText.setFocus();
+ }
+ });
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/Matrix.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/Matrix.java
new file mode 100644
index 00000000000..154e318bb8e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/Matrix.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util.matrix;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+
+/**
+ * Creates HTML matrix
+ *
+ * @author Donald G. Dunne
+ */
+public class Matrix {
+ private String title;
+ private final ArrayList<MatrixItem> items;
+ private Map<String, MatrixItem> nameToItem = new HashMap<String, MatrixItem>();
+ private Set<String> values = new HashSet<String>();
+ private Map<String, Set<String>> nameToValues = new HashMap<String, Set<String>>();
+ // Names with no values will be listed at the bottom of the report so they don't take up space
+ private Set<String> noValueNames = new HashSet<String>();
+ private boolean useNameAsMark = false;
+ private IProgressMonitor monitor;
+
+ public Matrix(String title, ArrayList<MatrixItem> items) {
+ this.title = title;
+ this.items = items;
+ }
+
+ public String getMatrix() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(AHTML.heading(3, title));
+ sb.append(getMatrixBody());
+ return sb.toString();
+ }
+
+ private void processData() {
+ for (MatrixItem item : items) {
+ nameToItem.put(item.getName(), item);
+ values.addAll(item.getValues());
+ if (nameToValues.containsKey(item.getName())) {
+ Set<String> vals = nameToValues.get(item.getName());
+ vals.addAll(item.getValues());
+ nameToValues.remove(item.getName());
+ nameToValues.put(item.getName(), vals);
+ } else
+ nameToValues.put(item.getName(), item.getValues());
+ }
+ }
+
+ private String getMatrixBody() {
+ processData();
+ StringBuilder sb = new StringBuilder();
+ sb.append(AHTML.beginMultiColumnTable(100, 1));
+ // Determine all the names to deal with
+ Set<String> names = new HashSet<String>();
+ // Don't want to take up valuable table space with names that have no values; keep track
+ // of them and print them at the end of the report
+ for (String name : nameToItem.keySet()) {
+ System.out.println("nameToValues.get(name) *" + nameToValues.get(name) + "*");
+ if (nameToValues.get(name) == null || nameToValues.get(name).size() == 0)
+ noValueNames.add(name);
+ else
+ names.add(name);
+ }
+ // Create sortedNames for use in looping through
+ String[] sortedNames = names.toArray(new String[names.size()]);
+ Arrays.sort(sortedNames);
+ // Create headerNames with one more field due to value name column
+ names.add(" ");
+ String[] headerNames = names.toArray(new String[names.size()]);
+ Arrays.sort(headerNames);
+ // Add header names to table
+ sb.append(AHTML.addHeaderRowMultiColumnTable(headerNames));
+ int x = 1;
+ // Create sorted list of values
+ String[] sortedValues = values.toArray(new String[values.size()]);
+ Arrays.sort(sortedValues);
+ for (String value : sortedValues) {
+ String str = String.format("Processing %s/%s \"%s\"", x++ + "", values.size(), value);
+ System.out.println(str);
+ if (monitor != null) monitor.subTask(str);
+ List<String> marks = new ArrayList<String>();
+ marks.add(value);
+ for (String name : sortedNames) {
+ if (nameToValues.get(name) != null && nameToValues.get(name).contains(value))
+ marks.add(useNameAsMark ? name : "X");
+ else
+ marks.add(".");
+ }
+ String[] colOptions = new String[marks.size()];
+ int i = 0;
+ colOptions[i] = "";
+ for (i = 1; i < marks.size(); i++)
+ colOptions[i] = " align=center";
+ sb.append(AHTML.addRowMultiColumnTable(marks.toArray(new String[marks.size()]), colOptions));
+ }
+ sb.append(AHTML.endMultiColumnTable());
+ if (noValueNames.size() > 0) {
+ sb.append(AHTML.newline(2) + AHTML.bold("Items with no values: "));
+ String[] sortedItems = noValueNames.toArray(new String[noValueNames.size()]);
+ Arrays.sort(sortedItems);
+ for (String str : sortedItems)
+ sb.append(AHTML.newline() + str);
+ sb.append(AHTML.newline());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * @return Returns the useNameAsMark.
+ */
+ public boolean isUseNameAsMark() {
+ return useNameAsMark;
+ }
+
+ /**
+ * @param useNameAsMark The useNameAsMark to set.
+ */
+ public void setUseNameAsMark(boolean useNameAsMark) {
+ this.useNameAsMark = useNameAsMark;
+ }
+
+ public IProgressMonitor getMonitor() {
+ return monitor;
+ }
+
+ public void setMonitor(IProgressMonitor monitor) {
+ this.monitor = monitor;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/MatrixItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/MatrixItem.java
new file mode 100644
index 00000000000..176004a4e54
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/util/matrix/MatrixItem.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.util.matrix;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class MatrixItem {
+
+ private String name;
+ private Set<String> values = new HashSet<String>();
+
+ public MatrixItem() {
+ this("Unset", null);
+ }
+
+ public MatrixItem(String name) {
+ this(name, null);
+ }
+
+ public void addValues(Collection<String> values) {
+ this.values.addAll(values);
+ }
+
+ public void addValue(String value) {
+ this.values.add(value);
+ }
+
+ public MatrixItem(String name, String[] values) {
+ this.name = name;
+ if (values != null) for (String value : values)
+ this.values.add(value);
+ }
+
+ public Set<String> getValues() {
+ return values;
+ }
+
+ public void setValues(Set<String> values) {
+ this.values = values;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/ArtifactTypeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/ArtifactTypeContentProvider.java
new file mode 100644
index 00000000000..9c315f2a963
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/ArtifactTypeContentProvider.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ArtifactSubtypeDescriptor;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class ArtifactTypeContentProvider implements ITreeContentProvider {
+
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ protected static final Logger logger = ConfigUtil.getConfigFactory().getLogger(ArtifactTypeContentProvider.class);
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Branch) {
+ ArrayList<Object> descriptors = new ArrayList<Object>();
+
+ try {
+ for (ArtifactSubtypeDescriptor descriptor : configurationPersistenceManager.getArtifactSubtypeDescriptors((Branch) parentElement)) {
+ descriptors.add((Object) descriptor);
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ return descriptors.toArray();
+ }
+ return null;
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return false;
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/AttributeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/AttributeContentProvider.java
new file mode 100644
index 00000000000..d5b6cbc1a30
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/AttributeContentProvider.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeDescriptor;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class AttributeContentProvider implements ITreeContentProvider {
+
+ private static final ConfigurationPersistenceManager configurationPersistenceManager =
+ ConfigurationPersistenceManager.getInstance();
+ protected static final Logger logger = ConfigUtil.getConfigFactory().getLogger(AttributeContentProvider.class);
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Branch) {
+ ArrayList<Object> descriptors = new ArrayList<Object>();
+
+ try {
+ for (DynamicAttributeDescriptor descriptor : configurationPersistenceManager.getDynamicAttributeDescriptors((Branch) parentElement)) {
+ descriptors.add((Object) descriptor);
+ }
+ } catch (SQLException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ return descriptors.toArray();
+
+ }
+ return null;
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return false;
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/DefaultBranchContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/DefaultBranchContentProvider.java
new file mode 100644
index 00000000000..c4da679610c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/DefaultBranchContentProvider.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.DefaultBranchChangedEvent;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+import org.eclipse.osee.framework.ui.plugin.event.Event;
+import org.eclipse.osee.framework.ui.plugin.event.IEventReceiver;
+
+/**
+ * @author Robert A. Fisher
+ */
+public class DefaultBranchContentProvider implements ITreeContentProvider, IEventReceiver {
+ private SkynetEventManager eventManager = SkynetEventManager.getInstance();
+ private final ITreeContentProvider provider;
+ private Viewer viewer;
+
+ /**
+ * @param provider
+ */
+ public DefaultBranchContentProvider(final ITreeContentProvider provider) {
+ if (provider == null) throw new IllegalArgumentException("provider can not be null");
+
+ this.provider = provider;
+ this.viewer = null;
+
+ eventManager.register(DefaultBranchChangedEvent.class, this);
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = viewer;
+ }
+
+ public void dispose() {
+ eventManager.unRegisterAll(this);
+ }
+
+ public void onEvent(Event event) {
+
+ if (event instanceof DefaultBranchChangedEvent) {
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+ }
+
+ public boolean runOnEventInDisplayThread() {
+ return true;
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ return provider.getChildren(parentElement);
+ }
+
+ public Object getParent(Object element) {
+ return provider.getParent(element);
+ }
+
+ public boolean hasChildren(Object element) {
+ return provider.hasChildren(element);
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return provider.getElements(BranchPersistenceManager.getInstance().getDefaultBranch());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/HyperLinkLabel.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/HyperLinkLabel.java
new file mode 100644
index 00000000000..eef7171640b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/HyperLinkLabel.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseTrackListener;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * Creates a hyperlink label that when enabled, shows as blue and changes cursor when hover over and when disabled,
+ * shows in black with no cursor change. To add listener, use: link.addListener(SWT.MouseUp, new Listener() { public
+ * void handleEvent(org.eclipse.swt.widgets.Event event) { System.out.println("Link Selected"); } });
+ *
+ * @author Donald G. Dunne
+ */
+
+public class HyperLinkLabel extends Label {
+
+ private boolean hyperEnabled = true;
+ /**
+ * Amount of the margin width around the hyperlink (default is 1).
+ */
+ protected int marginWidth = 1;
+
+ /**
+ * Amount of the margin height around the hyperlink (default is 1).
+ */
+ protected int marginHeight = 1;
+
+ public HyperLinkLabel(Composite parent, int style) {
+ this(null, parent, style, null);
+ }
+
+ public HyperLinkLabel(FormToolkit toolkit, Composite parent, int style) {
+ this(toolkit, parent, style, null);
+ }
+
+ public HyperLinkLabel(FormToolkit toolkit, Composite parent, int style, String text) {
+ super(parent, style);
+ if (text != null) setText(text);
+ if (toolkit != null) toolkit.adapt(this, true, true);
+ refresh();
+ }
+
+ public static void adapt(final Label label) {
+ label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
+ label.addMouseTrackListener(new MouseTrackListener() {
+
+ public void mouseEnter(MouseEvent e) {
+ label.setCursor(new Cursor(null, SWT.CURSOR_HAND));
+ }
+
+ public void mouseExit(MouseEvent e) {
+ label.setCursor(null);
+ };
+
+ public void mouseHover(MouseEvent e) {
+ }
+ });
+ }
+
+ MouseTrackListener listener = new MouseTrackListener() {
+
+ public void mouseEnter(MouseEvent e) {
+ setCursor(new Cursor(null, SWT.CURSOR_HAND));
+ }
+
+ public void mouseExit(MouseEvent e) {
+ setCursor(null);
+ };
+
+ public void mouseHover(MouseEvent e) {
+ }
+ };
+
+ public void refresh() {
+ if (hyperEnabled) {
+ setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
+ addMouseTrackListener(listener);
+ } else {
+ setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
+ removeMouseTrackListener(listener);
+ }
+ }
+
+ public boolean isHyperEnabled() {
+ return hyperEnabled;
+ }
+
+ public void setHyperEnabled(boolean hyperEnabled) {
+ this.hyperEnabled = hyperEnabled;
+ refresh();
+ }
+
+ @Override
+ protected void checkSubclass() {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/IDamWidget.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/IDamWidget.java
new file mode 100644
index 00000000000..1e8c4c22627
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/IDamWidget.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IDamWidget {
+ public void setArtifact(Artifact artifact, String attrName) throws IllegalStateException, SQLException;
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/RelationTypeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/RelationTypeContentProvider.java
new file mode 100644
index 00000000000..6fc33bbd2ba
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/RelationTypeContentProvider.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import java.util.logging.Logger;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.relation.IRelationLinkDescriptor;
+import org.eclipse.osee.framework.skynet.core.relation.RelationPersistenceManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class RelationTypeContentProvider implements ITreeContentProvider {
+ protected static final Logger logger = ConfigUtil.getConfigFactory().getLogger(RelationTypeContentProvider.class);
+ private static final RelationPersistenceManager relationPersistenceManager =
+ RelationPersistenceManager.getInstance();
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Branch) {
+ ArrayList<Object> descriptors = new ArrayList<Object>();
+
+ for (IRelationLinkDescriptor descriptor : relationPersistenceManager.getIRelationLinkDescriptors((Branch) parentElement)) {
+ descriptors.add((Object) descriptor);
+ }
+
+ return descriptors.toArray();
+
+ }
+ return null;
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return false;
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/SkynetSpellModifyDictionary.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/SkynetSpellModifyDictionary.java
new file mode 100644
index 00000000000..438b5763652
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/SkynetSpellModifyDictionary.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.GlobalPreferences;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.IOseeDictionary;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkynetSpellModifyDictionary implements XTextSpellModifyDictionary, IOseeDictionary {
+
+ private static String ATTRIBUTE_NAME = "Dictionary";
+ private static Set<String> dictionary;
+ private boolean debug = false;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XTextSpellModifyDictionary#addToGlobalDictionary(java.lang.String)
+ */
+ public boolean addToGlobalDictionary(String word) {
+ try {
+ return updateArtifact("Global", word, GlobalPreferences.get());
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XTextSpellModifyDictionary#addToLocalDictionary(java.lang.String)
+ */
+ public boolean addToLocalDictionary(String word) {
+ return updateArtifact("Local", word, SkynetAuthentication.getInstance().getAuthenticatedUser());
+ }
+
+ private boolean updateArtifact(String type, String word, Artifact art) {
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Add to " + type + " Dictionary",
+ "Add \"" + word + "\" to " + type + " Dictionary")) {
+ try {
+ Set<String> words = new HashSet<String>();
+ for (String str : art.getSoleAttributeValue(ATTRIBUTE_NAME).split(";"))
+ words.add(str);
+ words.add(word);
+ art.setSoleAttributeValue(ATTRIBUTE_NAME, Collections.toString(";", words));
+ art.persist();
+ loadDictionary(true);
+ return true;
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.util.IOseeDictionary#isWord(java.lang.String)
+ */
+ public boolean isWord(String word) {
+ loadDictionary(false);
+ boolean contains = dictionary.contains(word);
+ if (debug) System.out.println("Checking SkynetSpell => \"" + word + "\" " + contains);
+ if (debug) System.out.println("SkynetSpellDict => " + Collections.toString(",", dictionary));
+ return contains;
+ }
+
+ public void loadDictionary(boolean force) {
+ if (!force && dictionary != null) return;
+ try {
+ dictionary = new HashSet<String>();
+ for (String str : SkynetAuthentication.getInstance().getAuthenticatedUser().getSoleAttributeValue(
+ ATTRIBUTE_NAME).split(";")) {
+ if (debug) System.out.println("Adding Local => \"" + str + "\"");
+ if (str != null && !str.equals("")) dictionary.add(str);
+ }
+ if (GlobalPreferences.get() != null) {
+ for (String str : GlobalPreferences.get().getSoleAttributeValue(ATTRIBUTE_NAME).split(";")) {
+ if (debug) System.out.println("Adding Global => \"" + str + "\"");
+ if (str != null && !str.equals("")) dictionary.add(str);
+ }
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XArtifactTypeListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XArtifactTypeListViewer.java
new file mode 100644
index 00000000000..f8b08b28bd4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XArtifactTypeListViewer.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class XArtifactTypeListViewer extends XTypeListViewer {
+ private static final String NAME = "XArtifactTypeListViewer";
+ private BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+
+ public XArtifactTypeListViewer() {
+ super(NAME);
+
+ setContentProvider(new DefaultBranchContentProvider(new ArtifactTypeContentProvider()));
+ ArrayList<Object> input = new ArrayList<Object>(1);
+ input.add(branchPersistenceManager.getDefaultBranch());
+
+ setInput(input);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XAttributeTypeListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XAttributeTypeListViewer.java
new file mode 100644
index 00000000000..2ef5ad08211
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XAttributeTypeListViewer.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class XAttributeTypeListViewer extends XTypeListViewer {
+ private static final String NAME = "XAttributeTypeListViewer";
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+
+ /**
+ * @param name
+ */
+ public XAttributeTypeListViewer() {
+ super(NAME);
+
+ setContentProvider(new DefaultBranchContentProvider(new AttributeContentProvider()));
+ ArrayList<Object> input = new ArrayList<Object>(1);
+ input.add(branchPersistenceManager.getDefaultBranch());
+
+ setInput(input);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XBranchListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XBranchListViewer.java
new file mode 100644
index 00000000000..945749a861d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XBranchListViewer.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class XBranchListViewer extends XTypeListViewer {
+
+ private static final String NAME = "XBranchListViewer";
+
+ /**
+ * @param name
+ */
+ public XBranchListViewer() {
+ super(NAME);
+
+ setContentProvider(new ContentProvider());
+
+ ArrayList<Object> input = new ArrayList<Object>(1);
+ input.add(BranchPersistenceManager.getInstance());
+
+ setInput(input);
+ setMultiSelect(false);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XListViewer#getData()
+ */
+ @Override
+ public Object getData() {
+ Object object = null;
+ ArrayList<Object> datas = new ArrayList<Object>();
+ datas.addAll(getSelected());
+
+ if (!datas.isEmpty()) {
+ object = datas.iterator().next();
+ }
+ return object;
+ }
+
+ public class ContentProvider implements IStructuredContentProvider {
+
+ /**
+ * Returns the elements in the input, which must be either an array or a <code>Collection</code>.
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof Collection) {
+ Collection<Object> collection = (Collection<Object>) inputElement;
+
+ if (!collection.isEmpty()) {
+ Object object = collection.iterator().next();
+
+ if (object instanceof BranchPersistenceManager) {
+ try {
+ return ((BranchPersistenceManager) object).getBranches().toArray();
+ } catch (SQLException ex) {
+ }
+ }
+ }
+ }
+ return new Object[0];
+ }
+
+ /**
+ * This implementation does nothing.
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // do nothing.
+ }
+
+ /**
+ * This implementation does nothing.
+ */
+ public void dispose() {
+ // do nothing.
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBox.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBox.java
new file mode 100644
index 00000000000..6db840570a9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBox.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XCheckBox extends XWidget {
+
+ private Button checkButton;
+ private Composite parent;
+ private boolean selected = false;
+ private boolean labelAfter = true;
+
+ public XCheckBox(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public XCheckBox(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return checkButton;
+ }
+
+ /**
+ * Create Check Widgets. Widgets Created: Label: "text entry" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ if (horizontalSpan < 2) {
+ horizontalSpan = 2;
+ }
+ this.parent = parent;
+
+ // Create Text Widgets
+ if (!labelAfter) {
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label + ":");
+ }
+
+ checkButton = new Button(parent, SWT.CHECK);
+ GridData gd2 = new GridData(GridData.BEGINNING);
+ checkButton.setLayoutData(gd2);
+ checkButton.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent event) {
+ selected = checkButton.getSelection();
+ setLabelError();
+ notifyXModifiedListeners();
+ }
+ });
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan = horizontalSpan - 1;
+
+ if (labelAfter) {
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label);
+ }
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ checkButton.setLayoutData(gd);
+ updateCheckWidget();
+ checkButton.setEnabled(isEditable());
+ }
+
+ @Override
+ public void dispose() {
+ labelWidget.dispose();
+ checkButton.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void setFocus() {
+ return;
+ }
+
+ public String getXmlData() {
+ if (get())
+ return "true";
+ else
+ return "false";
+ }
+
+ public String getReportData() {
+ return getXmlData();
+ }
+
+ public void setXmlData(String set) {
+ if (set.equals("true"))
+ set(true);
+ else
+ set(false);
+ }
+
+ public void addSelectionListener(SelectionListener selectionListener) {
+ checkButton.addSelectionListener(selectionListener);
+ }
+
+ public boolean get() {
+ if (checkButton == null || checkButton.isDisposed()) {
+ return selected;
+ } else {
+ return checkButton.getSelection();
+ }
+ }
+
+ private void updateCheckWidget() {
+ if (checkButton != null) checkButton.setSelection(selected);
+ setLabelError();
+ }
+
+ public void set(boolean selected) {
+ this.selected = selected;
+ updateCheckWidget();
+ }
+
+ public void refresh() {
+ updateCheckWidget();
+ }
+
+ public boolean isValid() {
+ if (requiredEntry && !selected) return false;
+ return true;
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + selected;
+ }
+
+ /**
+ * If set, label will be displayed after the checkbox NOTE: Has to be set before call to createWidgets
+ *
+ * @param labelAfter The labelAfter to set.
+ */
+ public void setLabelAfter(boolean labelAfter) {
+ this.labelAfter = labelAfter;
+ }
+
+ public Button getCheckButton() {
+ return checkButton;
+ }
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ Collection<Object> data = new LinkedList<Object>();
+
+ if (isSelected()) {
+ data.add(checkButton.getText());
+ }
+ return data;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxDam.java
new file mode 100644
index 00000000000..18ed4b503a0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxDam.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XCheckBoxDam extends XCheckBox implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ /**
+ * @param displayLabel
+ * @param xmlRoot
+ */
+ public XCheckBoxDam(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ /**
+ * @param displayLabel
+ */
+ public XCheckBoxDam(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (IllegalStateException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ super.createWidgets(parent, horizontalSpan);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ public void set(boolean selected) {
+ super.set(selected);
+ try {
+ save();
+ } catch (IllegalStateException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) throws IllegalStateException, SQLException {
+ this.artifact = artifact;
+ this.attrName = attrName;
+ super.set(artifact.getSoleBooleanAttributeValue(attrName));
+ }
+
+ @Override
+ public void save() throws IllegalStateException, SQLException {
+ if (isDirty()) {
+ artifact.setSoleBooleanAttributeValue(attrName, get());
+ }
+ }
+
+ @Override
+ public boolean isDirty() throws IllegalStateException, SQLException {
+ return artifact.getSoleBooleanAttributeValue(attrName) != get();
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxViaAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxViaAttribute.java
new file mode 100644
index 00000000000..171a40f3c73
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCheckBoxViaAttribute.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XCheckBoxViaAttribute extends XCheckBox {
+
+ private Attribute attribute;
+
+ public XCheckBoxViaAttribute(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ public XCheckBoxViaAttribute(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public Attribute getAttribute() {
+ return attribute;
+ }
+
+ public void setAttribute(Attribute attribute) {
+ this.attribute = attribute;
+ super.set(attribute.getStringData().equals("yes") ? true : false);
+ }
+
+ @Override
+ public void set(boolean selected) {
+ super.set(selected);
+ attribute.setStringData(get() ? "yes" : "no");
+ }
+
+ @Override
+ public void save() {
+ if (isDirty()) {
+ attribute.setStringData(get() ? "yes" : "no");
+ }
+ }
+
+ @Override
+ public boolean isDirty() {
+ return (!attribute.getStringData().equals(get() ? "yes" : "no"));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCombo.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCombo.java
new file mode 100644
index 00000000000..432d86da692
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XCombo.java
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XCombo extends XWidget {
+
+ private Combo dataCombo;
+ private Composite parent;
+ private String data = "";
+ protected String[] inDataStrings; // Strings sent in for display
+ //
+ private Map<String, Integer> displayDataStrings = new HashMap<String, Integer>();
+ protected Map<String, String> dataStringToXmlString;
+ private String displayArray[];
+
+ public XCombo(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ }
+
+ public XCombo(String displayLabel, String xmlRoot) {
+ this(displayLabel, xmlRoot, "");
+ }
+
+ public XCombo(String displayLabel) {
+ this(displayLabel, "", "");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return dataCombo;
+ }
+
+ public void setEnabled(boolean enabled) {
+ dataCombo.setEnabled(enabled);
+ }
+
+ public void createWidgets(Composite composite, int horizontalSpan, String inDataStrings[]) {
+ this.inDataStrings = inDataStrings;
+ createWidgets(composite, horizontalSpan);
+ }
+
+ /**
+ * Create Data Widgets. Widgets Created: Data: "--select--" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2 the string "--select--" will be added to the sent in dataStrings array
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ GridData gd;
+ this.parent = parent;
+
+ if (inDataStrings == null) {
+ inDataStrings = new String[] {"DATA NOT FOUND"};
+ }
+ setDisplayDataStrings();
+
+ if (horizontalSpan < 2) {
+ horizontalSpan = 2;
+ }
+
+ // Create Data Widgets
+ if (!label.equals("")) {
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+
+ dataCombo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
+ dataCombo.setItems(displayArray);
+ if (displayArray.length < 15) dataCombo.setVisibleItemCount(displayArray.length);
+ gd = new GridData();
+ if (fillHorizontally) gd.grabExcessHorizontalSpace = true;
+ if (fillVertically) gd.grabExcessVerticalSpace = true;
+ gd.horizontalSpan = horizontalSpan - 1;
+ dataCombo.setLayoutData(gd);
+ ModifyListener dataComboListener = new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ data = dataCombo.getText();
+ if (data.compareTo("--select--") == 0) {
+ data = "";
+ }
+ setLabelError();
+ notifyXModifiedListeners();
+ }
+ };
+ dataCombo.addModifyListener(dataComboListener);
+
+ refresh();
+ dataCombo.setEnabled(editable);
+ }
+
+ public int getDisplayPosition(String str) {
+ for (int i = 0; i < displayArray.length; i++) {
+ if (str.equals(displayArray[i])) return i;
+ }
+ return 0;
+ }
+
+ public int getDisplayPosition() {
+ for (int i = 0; i < displayArray.length; i++) {
+ if (data.equals(displayArray[i])) return i;
+ }
+ return 0;
+ }
+
+ public void setDataStrings(String[] inDataStrings) {
+ this.inDataStrings = inDataStrings;
+ setDisplayDataStrings();
+ if (dataCombo != null && !dataCombo.isDisposed()) {
+ dataCombo.setItems(displayArray);
+ if (displayArray.length < 15) dataCombo.setVisibleItemCount(displayArray.length);
+ }
+ updateComboWidget();
+ }
+
+ /**
+ * Given the inDataStrings, create the mapping of all data strings including "--select--" and map them to their index
+ * in the combo list.
+ */
+ private void setDisplayDataStrings() {
+ displayDataStrings.clear();
+ displayDataStrings.put("--select--", 0);
+ displayArray = new String[inDataStrings.length + 1];
+ displayArray[0] = "--select--";
+ for (int i = 0; i < inDataStrings.length; i++) {
+ displayDataStrings.put(inDataStrings[i], (i + 1));
+ displayArray[i + 1] = inDataStrings[i];
+ }
+ }
+
+ public void setFocus() {
+ if (dataCombo != null) dataCombo.setFocus();
+ }
+
+ public void setDataStringToXmlTranslations(Map<String, String> dataStringToXmlString) {
+ this.dataStringToXmlString = dataStringToXmlString;
+ }
+
+ @SuppressWarnings( {"unchecked", "unchecked"})
+ @Override
+ public void setFromXml(String xml) throws IllegalStateException, SQLException {
+ Matcher m;
+ if (xmlSubRoot.equals("")) {
+ m =
+ Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(
+ xml);
+ } else {
+ m =
+ Pattern.compile("<" + xmlRoot + "><" + xmlSubRoot + ">(.*?)</" + xmlSubRoot + "></" + xmlRoot + ">",
+ Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+ }
+ while (m.find()) {
+ String str = m.group(1);
+ String transStr = null;
+ // If translation given, translate back to display string
+ // ie. bems number => full name
+ if (dataStringToXmlString != null) {
+ if (dataStringToXmlString.containsValue(str)) {
+ for (Iterator iter = dataStringToXmlString.entrySet().iterator(); iter.hasNext();) {
+ Map.Entry<String, String> entry = (Map.Entry<String, String>) iter.next();
+ if (str.equals(entry.getValue())) {
+ transStr = (String) entry.getKey();
+ break;
+ }
+ }
+ }
+ }
+ if (transStr != null) {
+ set(transStr);
+ } else {
+ set(str);
+ }
+ break;
+ }
+ refresh();
+ }
+
+ public void refresh() {
+ updateComboWidget();
+ }
+
+ public void addModifyListener(ModifyListener modifyListener) {
+ if (dataCombo != null) dataCombo.addModifyListener(modifyListener);
+ }
+
+ public Combo getComboBox() {
+ return dataCombo;
+ }
+
+ /**
+ * @return selected display value (eg. Donald Dunne)
+ */
+ public String get() {
+ return data;
+ }
+
+ /**
+ * @return returns translated xml value (eg. 727536)
+ */
+ public String getXml() {
+ String s = "";
+ if (dataStringToXmlString == null) {
+ s = data;
+ } else {
+ s = (String) dataStringToXmlString.get(data);
+ if (s == null) {
+ s = data;
+ }
+ }
+ return s;
+ }
+
+ public String getReportData() {
+ return data;
+ }
+
+ public String getXmlData() {
+ return getReportData();
+ }
+
+ public void setXmlData(String str) {
+ }
+
+ private void updateComboWidget() {
+ if (dataCombo != null && !dataCombo.isDisposed()) {
+ if (displayDataStrings.containsKey(data)) {
+ if (data.compareTo("") == 0) {
+ dataCombo.select(0);
+ } else {
+ Integer pos = displayDataStrings.get(data);
+ dataCombo.select(pos.intValue());
+ }
+ } else if (data.compareTo("") != 0) {
+ // if not found, add it and select it
+ displayDataStrings.put(data, displayDataStrings.size());
+ dataCombo.add(data);
+ dataCombo.select(displayDataStrings.size() - 1);
+ } else {
+ dataCombo.select(0);
+ }
+ if (displayDataStrings.size() < 15) dataCombo.setVisibleItemCount(displayDataStrings.size());
+ }
+ setLabelError();
+ }
+
+ public void set(String data) throws IllegalStateException, SQLException {
+ this.data = data;
+ updateComboWidget();
+ }
+
+ public void set(int pos) {
+ if (displayArray.length > pos) {
+ this.data = displayArray[pos];
+ updateComboWidget();
+ }
+ }
+
+ public void remove(String data) {
+ displayDataStrings.remove(data);
+ if (dataCombo.indexOf(data) >= 0) dataCombo.remove(data);
+ }
+
+ public boolean isValid() {
+ if (requiredEntry && (data.compareTo("") == 0)) {
+ return false;
+ }
+ return true;
+ }
+
+ public String toXml() {
+ return toXml(xmlRoot);
+ }
+
+ public String toXml(String xmlRoot) {
+ String s;
+ String dataStr = getXml();
+ if (xmlSubRoot == null || xmlSubRoot.equals("")) {
+ s = "<" + xmlRoot + ">" + dataStr + "</" + xmlRoot + ">\n";
+ } else {
+ s = "<" + xmlRoot + "><" + xmlSubRoot + ">" + dataStr + "</" + xmlSubRoot + "></" + xmlRoot + ">\n";
+ }
+ return s;
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + data;
+ }
+
+ public static void copy(XCombo from, XCombo to) throws IllegalStateException, SQLException {
+ to.set(from.get());
+ }
+
+ public void dispose() {
+ if (labelWidget != null) labelWidget.dispose();
+ if (dataCombo != null) dataCombo.dispose();
+ if (labelWidget != null) labelWidget.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public String[] getDisplayArray() {
+ return displayArray;
+ }
+
+ @Override
+ public Object getData() {
+ return dataCombo.getText();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java
new file mode 100644
index 00000000000..c40a7453f67
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+public class XComboDam extends XCombo implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ public XComboDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (IllegalStateException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XCombo#createWidgets(org.eclipse.swt.widgets.Composite, int,
+ * java.lang.String[])
+ */
+ @Override
+ public void createWidgets(Composite composite, int horizontalSpan, String[] inDataStrings) {
+ super.createWidgets(composite, horizontalSpan, inDataStrings);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ public void createWidgets(Composite composite, int horizontalSpan) {
+ super.createWidgets(composite, horizontalSpan);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) throws IllegalStateException, SQLException {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ super.set(artifact.getSoleAttributeValue(attrName));
+ }
+
+ @Override
+ public void set(String text) throws IllegalStateException, SQLException {
+ super.set(text);
+ artifact.setSoleAttributeValue(attrName, text);
+ }
+
+ @Override
+ public void save() throws IllegalStateException, SQLException {
+ if (isDirty()) {
+ artifact.setSoleAttributeValue(attrName, get());
+ }
+ }
+
+ @Override
+ public boolean isDirty() {
+ return !artifact.getSoleAttributeValue(attrName).equals(get());
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboViewer.java
new file mode 100644
index 00000000000..dc0adba379c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboViewer.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XComboViewer extends XWidget {
+
+ private ComboViewer comboViewer;
+ private Composite parent;
+ private Composite composite;
+ private boolean grabHorizontal = false;
+
+ protected SelectionListener listListener = new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ handleSelection();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ };
+ private Collection<Object> input;
+ private IContentProvider contentProvider;
+ private ILabelProvider labelProvider;
+ private ViewerSorter sorter;
+ private int widthHint;
+ private int heightHint;
+
+ public XComboViewer(String displayLabel) {
+ this(displayLabel, "list", "");
+ }
+
+ public XComboViewer() {
+ this("List", "list", "");
+ }
+
+ public XComboViewer(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ setReportType(XWidget.RPT_SINGLE_LINE);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return comboViewer.getControl();
+ }
+
+ public void setContentProvider(IContentProvider contentProvider) {
+ this.contentProvider = contentProvider;
+ }
+
+ public void setLabelProvider(ILabelProvider labelProvider) {
+ this.labelProvider = labelProvider;
+ }
+
+ public void setSorter(ViewerSorter sorter) {
+ this.sorter = sorter;
+ }
+
+ public void setInput(Collection<Object> input) {
+ this.input = input;
+ if (comboViewer != null) comboViewer.setInput(input);
+ }
+
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ comboViewer.addSelectionChangedListener(listener);
+ }
+
+ public void setHints(int widthHint, int heightHint) {
+ this.widthHint = widthHint;
+ this.heightHint = heightHint;
+ }
+
+ /**
+ * Create List Widgets. Widgets Created: List: horizonatalSpan takes up 2 columns; horizontalSpan must be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ this.parent = parent;
+ composite = null;
+
+ if (!verticalLabel && (horizontalSpan < 2)) {
+ horizontalSpan = 2;
+ } else if (verticalLabel) {
+ horizontalSpan = 1;
+ }
+
+ if (displayLabel && verticalLabel) {
+ composite = new Composite(parent, SWT.NONE);
+ int numColumns = 1;
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = numColumns;
+ composite.setLayout(gridLayout);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = horizontalSpan;
+ composite.setLayoutData(gd);
+ } else {
+ composite = parent;
+ }
+
+ // Create List Widgets
+ if (displayLabel) {
+ labelWidget = new Label(composite, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+
+ comboViewer = new ComboViewer(composite, SWT.NONE);
+ comboViewer.setContentProvider(contentProvider);
+ comboViewer.setLabelProvider(labelProvider);
+ if (sorter != null) comboViewer.setSorter(sorter);
+ comboViewer.setInput(input);
+ comboViewer.getCombo().addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ handleSelection();
+ }
+ });
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ if (grabHorizontal) gd.grabExcessHorizontalSpace = true;
+ if (widthHint > 0) gd.widthHint = widthHint;
+ if (heightHint > 0) gd.heightHint = heightHint;
+ comboViewer.getCombo().setLayoutData(gd);
+ comboViewer.getCombo().addSelectionListener(listListener);
+ updateListWidget();
+ }
+
+ @Override
+ public void dispose() {
+ labelWidget.dispose();
+ comboViewer.getCombo().dispose();
+ if (composite != null && !composite.isDisposed()) composite.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void setFocus() {
+ }
+
+ /**
+ * Don't need this since overriding toReport and toXml
+ */
+ public String getXmlData() {
+ return "";
+ }
+
+ /**
+ * Don't need this since overriding setFromXml
+ */
+ public void setXmlData(String str) {
+ return;
+ }
+
+ private void handleSelection() {
+ setLabelError();
+ notifyXModifiedListeners();
+ }
+
+ public void refresh() {
+ updateListWidget();
+ }
+
+ public void addSelectionListener(SelectionListener selectionListener) {
+ comboViewer.getCombo().addSelectionListener(selectionListener);
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object getSelected() {
+ IStructuredSelection selection = (IStructuredSelection) comboViewer.getSelection();
+ Iterator iter = selection.iterator();
+ if (iter.hasNext()) return iter.next();
+ return null;
+ }
+
+ public void setFromXml(String xml) {
+ }
+
+ public Combo getCombo() {
+ return comboViewer.getCombo();
+ }
+
+ protected void updateListWidget() {
+ comboViewer.refresh();
+ setLabelError();
+ }
+
+ public void add(Object obj) {
+ input.add(obj);
+ }
+
+ public void add(Object[] names) {
+ for (Object name : names) {
+ add(name);
+ }
+ }
+
+ public void add(Collection<String> names) {
+ input.addAll(names);
+ }
+
+ public void setSelected(ArrayList<Object> selected) {
+ comboViewer.setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
+ updateListWidget();
+ }
+
+ public boolean isValid() {
+ if (!requiredEntry) return true;
+ Object selected = getSelected();
+ if (selected == null && isRequiredEntry()) return false;
+ return true;
+ }
+
+ public String getReportData() {
+ String s = "\n";
+ Object obj = getSelected();
+ s = s + " - " + obj + "\n";
+ s = s.replaceAll("\n+$", "");
+ return s;
+ }
+
+ public String toXml() {
+ return toXml(xmlRoot, xmlSubRoot);
+ }
+
+ public String toXml(String xmlRoot, String xmlSubRoot) {
+ return "";
+ }
+
+ public String toHTML(String labelFont) {
+ String s = "<dl><dt>" + AHTML.getLabelStr(labelFont, label + ": ") + "<dt><ul type=\"disc\">";
+ Object xItem = getSelected();
+ s += "<li>" + xItem;
+ return s + "</ul></dl>";
+ }
+
+ /**
+ * @param grabHorizontal The grabHorizontal to set.
+ */
+ public void setGrabHorizontal(boolean grabHorizontal) {
+ this.grabHorizontal = grabHorizontal;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return getSelected();
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDate.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDate.java
new file mode 100644
index 00000000000..ce62541c846
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDate.java
@@ -0,0 +1,292 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.nebula.widgets.datechooser.DateChooserCombo;
+import org.eclipse.nebula.widgets.formattedtext.DateFormatter;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XDate extends XWidget {
+
+ private DateChooserCombo dateCombo;
+ private Composite parent;
+ private Date date;
+ public static String MMDDYY = "MM/dd/yyyy";
+ public static String MMDDYYHHMM = "MM/dd/yyyy hh:mm a";
+ public static String HHMMSS = "hh:mm:ss";
+ public static String HHMM = "hh:mm";
+ private String defaultFormat = MMDDYYHHMM;
+ private ArrayList<ModifyListener> listeners = new ArrayList<ModifyListener>();
+ private boolean requireFutureDate = false;
+
+ public XDate() {
+ this("", "");
+ }
+
+ public XDate(Date date) {
+ this("", "");
+ this.date = date;
+ }
+
+ public XDate(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ public XDate(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ date = null;
+ }
+
+ public String getHHMM() {
+ return get(HHMM);
+ }
+
+ public String getHHMMSS() {
+ return get(HHMMSS);
+ }
+
+ public String getMMDDYY() {
+ return get(MMDDYY);
+ }
+
+ public String getMMDDYYHHMM() {
+ return get(MMDDYYHHMM);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return dateCombo;
+ }
+
+ /**
+ * Set the default format for the date ADate.MMMDDDYY or ADate MMMDDDYYYHHHMM or use java.util.date format string
+ *
+ * @param format
+ */
+ public void setFormat(String format) {
+ defaultFormat = format;
+ if (dateCombo != null) dateCombo.setFormatter(new DateFormatter(defaultFormat));
+ }
+
+ public void clearData() {
+ date = null;
+ }
+
+ public static String getDateStr(Date date, String format) {
+ if (date == null) return "";
+ return (new SimpleDateFormat(format)).format(date);
+ }
+
+ public static String getDateNow() {
+ return getDateNow(MMDDYY);
+ }
+
+ public static String getDateNow(String format) {
+ XDate d = new XDate();
+ d.setDateToNow();
+ return d.get(format);
+ }
+
+ /**
+ * Create Date Widgets Label/DatePickerCombo
+ *
+ * @param parent
+ * @param horizontalSpan - horizontalSpan takes up 4 columns, therefore horizontalSpan must be >=4
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ // composite = new Composite(parent, parent.getStyle());
+ this.parent = parent;
+
+ if (horizontalSpan < 2) horizontalSpan = 2;
+
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label + ": ");
+ dateCombo = new DateChooserCombo(parent, SWT.BORDER);
+ dateCombo.setFooterVisible(true);
+ dateCombo.setFormatter(new DateFormatter("MM/dd/yyyy"));
+ dateCombo.setEnabled(true);
+ GridData gd = new GridData();
+ gd.widthHint = 100;
+ if (date != null) dateCombo.setValue(date);
+ dateCombo.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ date = dateCombo.getValue();
+ setLabelError();
+ notifyXModifiedListeners();
+ dateCombo.getParent().layout();
+ }
+ });
+
+ }
+
+ @Override
+ public void dispose() {
+ labelWidget.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void setFromXml(String xml) {
+ Matcher m =
+ Pattern.compile("<" + xmlRoot + ">(\\d+)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(
+ xml);
+ if (m.find()) {
+ try {
+ Long l = new Long(m.group(1));
+ date = new Date(l.longValue());
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ }
+ }
+ refresh();
+ }
+
+ public void addModifyListener(ModifyListener listener) {
+ listeners.add(listener);
+ updateListeners();
+ }
+
+ public void updateListeners() {
+ for (ModifyListener listener : listeners) {
+ if (dateCombo != null) {
+ dateCombo.removeModifyListener(listener);
+ dateCombo.addModifyListener(listener);
+ }
+ }
+ }
+
+ public void clear() {
+ date = new Date();
+ refresh();
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDateToNow() {
+ setDate(new java.util.Date());
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ if (dateCombo != null && !dateCombo.isDisposed()) {
+ if (dateCombo != null)
+ dateCombo.setValue(date);
+ else
+ dateCombo.setValue(null);
+ }
+ }
+
+ public void refresh() {
+ setLabelError();
+ }
+
+ public boolean isValid() {
+ if (isRequireFutureDate()) {
+ if (getDate().before(new Date())) return false;
+ }
+ if (requiredEntry) {
+ if (get().equals("")) return false;
+ }
+ return true;
+ }
+
+ public String getReportData() {
+ return get();
+ }
+
+ public String get() {
+ if (date == null) return "";
+ return date.toString();
+ }
+
+ public String get(String pattern) {
+ if (date == null) return "";
+ String result = (new SimpleDateFormat(pattern)).format(date);
+ return result;
+ }
+
+ public void setFocus() {
+ if (dateCombo != null) dateCombo.setFocus();
+ }
+
+ /**
+ * Don't need this since overriding toReport and toXml
+ */
+ public String getXmlData() {
+ String dateStr = "";
+ if (date != null) dateStr = date.getTime() + "";
+ return dateStr;
+ }
+
+ /**
+ * Don't need this since overriding setFromXml
+ */
+ public void setXmlData(String str) {
+ if (str.equals(""))
+ date = null;
+ else {
+ try {
+ Long l = new Long(str);
+ date = new Date(l.longValue());
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ date = null;
+ }
+ }
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + get(defaultFormat);
+ }
+
+ public String toHTML(String labelFont, String pattern) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + get(pattern);
+ }
+
+ public boolean isRequireFutureDate() {
+ return requireFutureDate;
+ }
+
+ public void setRequireFutureDate(boolean requireFutureDate) {
+ this.requireFutureDate = requireFutureDate;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return getDate();
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateAttribute.java
new file mode 100644
index 00000000000..0a86d07bcd3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateAttribute.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.Date;
+import org.eclipse.osee.framework.skynet.core.attribute.DateAttribute;
+
+public class XDateAttribute extends XDate {
+
+ private DateAttribute attribute;
+
+ public XDateAttribute() {
+ super();
+ }
+
+ public XDateAttribute(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public DateAttribute getAttribute() {
+ return attribute;
+ }
+
+ public void setAttribute(DateAttribute attribute) {
+ this.attribute = attribute;
+ super.setDate(attribute.getDate());
+ }
+
+ @Override
+ public void setDate(Date date) {
+ super.setDate(date);
+ attribute.setStringData("" + date.getTime());
+ }
+
+ @Override
+ public void setDateToNow() {
+ super.setDateToNow();
+ attribute.setStringData("" + getDate().getTime());
+ }
+
+ @Override
+ public void save() {
+ if (isDirty()) attribute.setStringData(get(DateAttribute.MMDDYY));
+ }
+
+ @Override
+ public boolean isDirty() {
+ return (!attribute.getStringData().equals(getDate().getTime() + ""));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateDam.java
new file mode 100644
index 00000000000..bd6ca3fa822
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDateDam.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DateAttribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Composite;
+
+public class XDateDam extends XDate implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ public XDateDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public DynamicAttributeManager getUdat() throws SQLException {
+ return artifact.getAttributeManager(attrName);
+ }
+
+ public String getUdatStringFormattedValue() throws SQLException {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null) return "";
+ String dateStr = getUdatStringValue();
+ if (!dateStr.equals("")) return ((DateAttribute) udat.getSoleAttribute()).getStringValue(DateAttribute.MMDDYY);
+ return "";
+ }
+
+ public String getUdatStringValue() throws SQLException {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null) return "";
+ return udat.getSoleAttributeValue();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XDate#createWidgets(org.eclipse.swt.widgets.Composite, int)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ super.createWidgets(parent, horizontalSpan);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ @Override
+ public void save() throws SQLException {
+ if (isDirty()) {
+ if (get().equals("")) {
+ if (getUdat() != null) {
+ for (Attribute attr : getUdat().getAttributes())
+ attr.delete();
+ }
+ } else {
+ DynamicAttributeManager udat = getUdat();
+ udat.setSoleAttributeValue(getDate().getTime() + "");
+ }
+ }
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) throws SQLException {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ if (!getUdatStringValue().equals("")) {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null)
+ super.setDate(null);
+ else
+ super.setDate(((DateAttribute) udat.getSoleAttribute()).getDate());
+ }
+
+ this.addModifyListener(new ModifyListener() {
+ public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
+ try {
+ String date = get(DateAttribute.MMDDYY);
+ if (date.equals("")) {
+ DynamicAttributeManager udat = getUdat();
+ if (udat != null) {
+ if (udat.getAttributes().size() > 0) {
+ udat.removeAttribute(udat.getAttributes().iterator().next());
+ }
+ }
+ } else {
+ getUdat().setSoleAttributeValue(getDate().getTime() + "");
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ };
+ });
+ }
+
+ @Override
+ public boolean isDirty() throws SQLException {
+ // System.out.println("Stored "+getUdatStringValue()+" Selected "+getDate().getTime());
+ if (getDate() == null && getUdatStringValue().equals("")) return false;
+ if (getDate() == null && !getUdatStringValue().equals("")) return true;
+ return (!getUdatStringValue().equals(getDate().getTime() + ""));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDragAndDrop.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDragAndDrop.java
new file mode 100644
index 00000000000..46dfc1e6d37
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XDragAndDrop.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class XDragAndDrop extends SkynetDragAndDrop {
+
+ /**
+ * @param control
+ * @param viewId
+ */
+ public XDragAndDrop(Control control, String viewId) {
+ super(control, viewId);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop#getArtifacts()
+ */
+ @Override
+ public Artifact[] getArtifacts() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop#performArtifactDrop(org.eclipse.osee.framework.skynet.core.artifact.Artifact[])
+ */
+ @Override
+ public void performArtifactDrop(Artifact[] dropArtifacts) {
+
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloat.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloat.java
new file mode 100644
index 00000000000..f9fd846bd75
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloat.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XFloat extends XText {
+ private double minValue = 0;
+ private boolean minValueSet = false;
+ private double maxValue = 0;
+ private boolean maxValueSet = false;
+
+ public XFloat(String displayLabel) {
+ super(displayLabel, "float");
+ }
+
+ public XFloat(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public void setMinValue(double minValue) {
+ minValueSet = true;
+ this.minValue = minValue;
+ }
+
+ public void setMaxValue(double maxValue) {
+ maxValueSet = false;
+ this.maxValue = maxValue;
+ }
+
+ public double getFloat() {
+ if (get().equals(""))
+ return 0.0;
+ else
+ return new Double(get());
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry() || (super.get().compareTo("") != 0)) {
+ String name = getLabel();
+ if (name.equals("")) name = "Value";
+ if (!super.isValid()) {
+ return new Result(name + " is invalid");
+ } else if (!this.isFloat()) {
+ return new Result(name + " must be a Float");
+ } else if (minValueSet && (this.getFloat() < minValue)) {
+ return new Result(name + " must be >= " + minValue);
+ } else if (maxValueSet && (this.getFloat() > maxValue)) {
+ return new Result(name + " must be <= " + maxValue);
+ }
+ }
+ return Result.TrueResult;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatAttribute.java
new file mode 100644
index 00000000000..47729467be2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatAttribute.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XFloatAttribute extends XTextAttribute {
+ private double minValue = 0;
+ private boolean minValueSet = false;
+ private double maxValue = 0;
+ private boolean maxValueSet = false;
+ private boolean greaterThanZero = false;
+
+ public XFloatAttribute(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public void setMinValue(double minValue) {
+ minValueSet = true;
+ this.minValue = minValue;
+ }
+
+ public void setMaxValue(double maxValue) {
+ maxValueSet = false;
+ this.maxValue = maxValue;
+ }
+
+ public double getFloat() {
+ if (get().equals(""))
+ return 0.0;
+ else
+ return new Double(get());
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry() || (super.get().equals(""))) {
+ if (!super.isValid())
+ return new Result("Invalid");
+ else if (!this.isFloat())
+ return new Result("Must be a Float");
+ else if (this.getFloat() <= 0 && greaterThanZero)
+ return new Result("Must be > 0");
+ else if (minValueSet && (this.getFloat() < minValue))
+ return new Result("Must be >= " + minValue);
+ else if (maxValueSet && (this.getFloat() > maxValue)) return new Result("Must be <= " + maxValue);
+ }
+ return Result.TrueResult;
+ }
+
+ public boolean isGreaterThanZero() {
+ return greaterThanZero;
+ }
+
+ public void setGreaterThanZero(boolean greaterThanZero) {
+ this.greaterThanZero = greaterThanZero;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatDam.java
new file mode 100644
index 00000000000..0e697938df2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XFloatDam.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XFloatDam extends XFloat implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ /**
+ * @param displayLabel
+ */
+ public XFloatDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ /**
+ * @param displayLabel
+ * @param xmlRoot
+ */
+ public XFloatDam(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public DynamicAttributeManager getUdat() throws SQLException {
+ return artifact.getAttributeManager(attrName);
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) throws SQLException {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ super.set(getUdatStringValue());
+ }
+
+ @Override
+ public void set(String text) {
+ super.set(text);
+ try {
+ getUdat().setSoleAttributeValue(text);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XText#createWidgets(org.eclipse.swt.widgets.Composite, int, boolean)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan, boolean fillText) {
+ super.createWidgets(parent, horizontalSpan, fillText);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ public String getUdatStringValue() throws SQLException {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null) return "";
+ return udat.getSoleAttributeValue();
+ }
+
+ @Override
+ public boolean isDirty() throws SQLException {
+ return (!getUdatStringValue().equals(get()));
+ }
+
+ @Override
+ public void save() throws SQLException {
+ if (isDirty()) {
+ DynamicAttributeManager udat = getUdat();
+ udat.setSoleAttributeValue(get());
+ }
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelDam.java
new file mode 100644
index 00000000000..46280dae543
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelDam.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+public class XHyperlabelMemberSelDam extends XHyperlabelMemberSelection implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ public XHyperlabelMemberSelDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ super.setSelectedUsers(getUdatUsers());
+ }
+
+ public DynamicAttributeManager getUdat() throws SQLException {
+ return artifact.getAttributeManager(attrName);
+ }
+
+ public String getUdatStringValue() throws SQLException {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null) return "";
+ return udat.getSoleAttributeValue();
+ }
+
+ public Set<User> getUdatUsers() {
+ Set<User> users = new HashSet<User>();
+ try {
+ Matcher m = Pattern.compile("<userId>(.*?)</userId>").matcher(getUdatStringValue());
+ while (m.find()) {
+ users.add(SkynetAuthentication.getInstance().getUserByIdWithError(m.group(1)));
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+
+ return users;
+ }
+
+ @Override
+ public boolean handleSelection() {
+ boolean changed = super.handleSelection();
+ if (changed) {
+ try {
+ save();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XText#createWidgets(org.eclipse.swt.widgets.Composite, int,
+ * boolean)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ super.createWidgets(parent, horizontalSpan);
+ }
+
+ @Override
+ public void save() throws SQLException {
+ if (isDirty()) {
+ DynamicAttributeManager udat = getUdat();
+ udat.setSoleAttributeValue(getSelectedStringValue());
+ }
+ }
+
+ public String getSelectedStringValue() {
+ StringBuffer sb = new StringBuffer();
+ for (User user : getSelectedUsers()) {
+ sb.append(AXml.addTagData("userId", user.getUserId()));
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public boolean isDirty() throws SQLException {
+ return (!getUdatStringValue().equals(getSelectedStringValue()));
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java
new file mode 100644
index 00000000000..a2079be59fe
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserCheckTreeDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XHyperlabelMemberSelection extends XHyperlinkLabelSelection {
+
+ Set<User> selectedUsers = new HashSet<User>();
+
+ /**
+ * @param label
+ */
+ public XHyperlabelMemberSelection(String label) {
+ super(label);
+ }
+
+ public Set<User> getSelectedUsers() {
+ return selectedUsers;
+ }
+
+ @Override
+ public String getCurrentValue() {
+ StringBuffer sb = new StringBuffer();
+ for (User user : selectedUsers)
+ sb.append(user.getName() + ", ");
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ public void setSelectedUsers(Set<User> selectedUsers) {
+ this.selectedUsers = selectedUsers;
+ refresh();
+ }
+
+ @Override
+ public boolean handleSelection() {
+ UserCheckTreeDialog uld = new UserCheckTreeDialog(Display.getCurrent().getActiveShell());
+ uld.setMessage("Select to assign.\nDeSelect to un-assign.");
+ uld.setInitialSelections(selectedUsers);
+ if (uld.open() != 0) return false;
+ selectedUsers.clear();
+ for (Artifact art : uld.getSelection()) {
+ selectedUsers.add((User) art);
+ }
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java
new file mode 100644
index 00000000000..5d080845522
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class XHyperlinkLabelSelection extends XWidget {
+
+ org.eclipse.swt.widgets.Label valueLabel;
+ Label hyperLinkLabel;
+
+ /**
+ * @param label
+ */
+ public XHyperlinkLabelSelection(String label) {
+ super(label);
+ }
+
+ public String getCurrentValue() {
+ return "";
+ }
+
+ public String getHyperlinkLabelString() {
+ return " (modify) ";
+ }
+
+ public boolean handleSelection() {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.skynet.gui.widgets.XWidget#createWidgets(org.eclipse.swt.widgets.Composite, int)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(ALayout.getZeroMarginLayout(3, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create Text Widgets
+ if (displayLabel && !label.equals("")) {
+ labelWidget = new Label(comp, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+
+ hyperLinkLabel = new HyperLinkLabel(comp, SWT.NONE);
+ hyperLinkLabel.setToolTipText("Select to modify");
+ hyperLinkLabel.addListener(SWT.MouseUp, new Listener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+ */
+ public void handleEvent(Event event) {
+ if (handleSelection()) {
+ refresh();
+ notifyXModifiedListeners();
+ }
+ }
+ });
+ valueLabel = new Label(comp, SWT.NONE);
+ valueLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ }
+
+ public void createWidgets(FormToolkit toolkit, Composite parent, int horizontalSpan) {
+ this.createWidgets(parent, horizontalSpan);
+ toolkit.adapt(valueLabel, false, false);
+ valueLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
+ refresh();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.skynet.gui.widgets.XWidget#refresh()
+ */
+ @Override
+ public void refresh() {
+ hyperLinkLabel.setText(getHyperlinkLabelString());
+ valueLabel.setText(getCurrentValue());
+ valueLabel.getParent().layout();
+ setLabelError();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.skynet.gui.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return valueLabel;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see osee.skynet.gui.widgets.XWidget#toHTML(java.lang.String)
+ */
+ @Override
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelValueStr(AHTML.LABEL_FONT, getHyperlinkLabelString(), getCurrentValue());
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#dispose()
+ */
+ @Override
+ public void dispose() {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getReportData()
+ */
+ @Override
+ public String getReportData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getXmlData()
+ */
+ @Override
+ public String getXmlData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ if (isRequiredEntry()) return !getCurrentValue().equals("");
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#setXmlData(java.lang.String)
+ */
+ @Override
+ public void setXmlData(String str) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XInteger.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XInteger.java
new file mode 100644
index 00000000000..fcfad6992cd
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XInteger.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XInteger extends XText {
+ private int minValue = 0;
+ private boolean minValueSet = false;
+ private int maxValue = 0;
+ private boolean maxValueSet = false;
+
+ public XInteger(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ public XInteger(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public void setMinValue(int minValue) {
+ minValueSet = true;
+ this.minValue = minValue;
+ }
+
+ public void setMaxValue(int maxValue) {
+ maxValueSet = false;
+ this.maxValue = maxValue;
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry() || (super.get().compareTo("") != 0)) {
+ if (!super.isValid()) {
+ return new Result("Invalid");
+ } else if (!this.isInteger()) {
+ return new Result("Must be an Integer");
+ } else if (minValueSet && (this.getInteger() < minValue)) {
+ return new Result("Must be >= " + minValue);
+ } else if (maxValueSet && (this.getInteger() > maxValue)) {
+ return new Result("Must be <= " + maxValue);
+ }
+ }
+ return Result.TrueResult;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerAttribute.java
new file mode 100644
index 00000000000..cf0c6d7a6f2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerAttribute.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+public class XIntegerAttribute extends XTextAttribute {
+
+ private int minValue = 0;
+ private boolean minValueSet = false;
+ private int maxValue = 0;
+ private boolean maxValueSet = false;
+
+ public XIntegerAttribute(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public void setMinValue(int minValue) {
+ minValueSet = true;
+ this.minValue = minValue;
+ }
+
+ public void setMaxValue(int maxValue) {
+ maxValueSet = false;
+ this.maxValue = maxValue;
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry() || (super.get().compareTo("") != 0)) {
+ if (!super.isValid()) {
+ return new Result("Invalid");
+ } else if (!this.isInteger()) {
+ return new Result("Must be an Integer");
+ } else if (minValueSet && (this.getInteger() < minValue)) {
+ return new Result("Must be >= " + minValue);
+ } else if (maxValueSet && (this.getInteger() > maxValue)) {
+ return new Result("Must be <= " + maxValue);
+ }
+ }
+ return Result.TrueResult;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java
new file mode 100644
index 00000000000..d3e75f1f764
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+public class XIntegerDam extends XInteger implements IDamWidget {
+
+ private int minValue = 0;
+ private boolean minValueSet = false;
+ private int maxValue = 0;
+ private boolean maxValueSet = false;
+ private Artifact artifact;
+ private String attrName;
+
+ public XIntegerDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public DynamicAttributeManager getUdat() throws SQLException {
+ return artifact.getAttributeManager(attrName);
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) throws SQLException {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ super.set(getUdatStringValue());
+ }
+
+ @Override
+ public void set(String text) {
+ super.set(text);
+ try {
+ getUdat().setSoleAttributeValue(text);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ public String getUdatStringValue() throws SQLException {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null) return "";
+ return udat.getSoleAttributeValue();
+ }
+
+ public void setMinValue(int minValue) {
+ minValueSet = true;
+ this.minValue = minValue;
+ }
+
+ @Override
+ public boolean isDirty() throws SQLException {
+ return (!getUdatStringValue().equals(get()));
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ @Override
+ public void save() throws SQLException {
+ if (isDirty()) {
+ DynamicAttributeManager udat = getUdat();
+ udat.setSoleAttributeValue(get());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XText#createWidgets(org.eclipse.swt.widgets.Composite, int, boolean)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan, boolean fillText) {
+ super.createWidgets(parent, horizontalSpan, fillText);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ public void setMaxValue(int maxValue) {
+ maxValueSet = false;
+ this.maxValue = maxValue;
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry() || (super.get().compareTo("") != 0)) {
+ if (!this.isInteger()) {
+ return new Result("Must be an Integer");
+ } else if (minValueSet && (this.getInteger() < minValue)) {
+ return new Result("Must be >= " + minValue);
+ } else if (maxValueSet && (this.getInteger() > maxValue)) {
+ return new Result("Must be <= " + maxValue);
+ }
+ }
+ return Result.TrueResult;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabel.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabel.java
new file mode 100644
index 00000000000..03ad73d857c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabel.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * Simply shows the label name and nothing else. No storage or value associated with this widget.
+ *
+ * @author Donald G. Dunne
+ */
+public class XLabel extends XWidget {
+
+ public XLabel(String displayLabel) {
+ super(displayLabel, "");
+ }
+
+ /**
+ * Create Data Widgets. Widgets Created: Data: "--select--" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2 the string "--select--" will be added to the sent in dataStrings array
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ if (horizontalSpan < 2) horizontalSpan = 2;
+ // Create Data Widgets
+ if (!label.equals("")) {
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label);
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+ }
+
+ public void setFocus() {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#dispose()
+ */
+ @Override
+ public void dispose() {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return labelWidget;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getReportData()
+ */
+ @Override
+ public String getReportData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#getXmlData()
+ */
+ @Override
+ public String getXmlData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#refresh()
+ */
+ @Override
+ public void refresh() {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#setXmlData(java.lang.String)
+ */
+ @Override
+ public void setXmlData(String str) {
+ }
+
+ /* (non-Javadoc)
+ * @see osee.skynet.gui.widgets.XWidget#toHTML(java.lang.String)
+ */
+ @Override
+ public String toHTML(String labelFont) {
+ return "";
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelAttribute.java
new file mode 100644
index 00000000000..c49c3aeaff0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelAttribute.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XLabelAttribute extends XWidget {
+
+ private Composite parent;
+ private String data = "";
+ private Label valueLabel;
+ private Attribute attribute;
+
+ //
+ public XLabelAttribute(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ }
+
+ public XLabelAttribute(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public XLabelAttribute(String displayLabel) {
+ super(displayLabel, "");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return valueLabel;
+ }
+
+ /**
+ * Create Data Widgets. Widgets Created: Data: "--select--" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2 the string "--select--" will be added to the sent in dataStrings array
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ this.parent = parent;
+ if (horizontalSpan < 2) horizontalSpan = 2;
+ // Create Data Widgets
+ if (!label.equals("")) {
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+ valueLabel = new Label(parent, SWT.NONE);
+ valueLabel.setText(data);
+
+ refresh();
+ }
+
+ public void setFocus() {
+ }
+
+ public void setAttribute(Attribute attribute) {
+ this.attribute = attribute;
+ set(attribute.getStringData());
+ }
+
+ public void setFromXml(String xml) {
+ Matcher m;
+ if (xmlSubRoot.equals("")) {
+ m =
+ Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(
+ xml);
+ } else {
+ m =
+ Pattern.compile("<" + xmlRoot + "><" + xmlSubRoot + ">(.*?)</" + xmlSubRoot + "></" + xmlRoot + ">",
+ Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+ }
+ while (m.find()) {
+ String str = m.group(1);
+ set(str);
+ break;
+ }
+ refresh();
+ }
+
+ public void refresh() {
+ if (valueLabel != null && !valueLabel.isDisposed()) {
+ if (attribute != null && data != attribute.getStringData()) data = attribute.getStringData();
+ valueLabel.setText(data);
+ valueLabel.getParent().layout();
+ }
+ }
+
+ /**
+ * @return selected display value (eg. Donald Dunne)
+ */
+ public String get() {
+ return data;
+ }
+
+ /**
+ * @return returns translated xml value (eg. 727536)
+ */
+ public String getXml() {
+ return data;
+ }
+
+ public String getReportData() {
+ return data;
+ }
+
+ public String getXmlData() {
+ return getReportData();
+ }
+
+ public void setXmlData(String str) {
+ }
+
+ public void set(String data) {
+ this.data = data;
+ attribute.setStringData(data);
+ refresh();
+ }
+
+ public boolean isValid() {
+ if (requiredEntry && data.equals("")) return false;
+ return true;
+ }
+
+ public String toXml() {
+ return toXml(xmlRoot);
+ }
+
+ public String toXml(String xmlRoot) {
+ String s;
+ String dataStr = getXml();
+ if (xmlSubRoot == null || xmlSubRoot.equals("")) {
+ s = "<" + xmlRoot + ">" + dataStr + "</" + xmlRoot + ">\n";
+ } else {
+ s = "<" + xmlRoot + "><" + xmlSubRoot + ">" + dataStr + "</" + xmlSubRoot + "></" + xmlRoot + ">\n";
+ }
+ return s;
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + data;
+ }
+
+ public static void copy(XLabelAttribute from, XLabelAttribute to) {
+ to.set(from.get());
+ }
+
+ public void dispose() {
+ if (labelWidget != null) labelWidget.dispose();
+ if (valueLabel != null) valueLabel.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return valueLabel.getText();
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelDam.java
new file mode 100644
index 00000000000..b6d14df148d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XLabelDam.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Provided to show the contents of an attribute without any ability to edit
+ *
+ * @author Donald G. Dunne
+ */
+public class XLabelDam extends XWidget implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+ private String data = "";
+ private Text valueLabel;
+ private Composite parent;
+
+ public XLabelDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ @Override
+ public Control getControl() {
+ return valueLabel;
+ }
+
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ this.parent = parent;
+ if (horizontalSpan < 2) horizontalSpan = 2;
+ // Create Data Widgets
+ if (!label.equals("")) {
+ labelWidget = new Label(parent, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+ valueLabel = new Text(parent, SWT.NONE);
+ valueLabel.setText(data);
+ valueLabel.setEditable(false);
+
+ refresh();
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ refresh();
+ }
+
+ @Override
+ public void save() {
+ }
+
+ @Override
+ public boolean isDirty() {
+ return false;
+ }
+
+ public void refresh() {
+ if (artifact != null && valueLabel != null && !valueLabel.isDisposed()) {
+ try {
+ valueLabel.setText(artifact.getAttributesToString(attrName));
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ }
+
+ public void dispose() {
+ if (labelWidget != null) labelWidget.dispose();
+ if (valueLabel != null) valueLabel.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getReportData()
+ */
+ @Override
+ public String getReportData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getXmlData()
+ */
+ @Override
+ public String getXmlData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#setXmlData(java.lang.String)
+ */
+ @Override
+ public void setXmlData(String str) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#toHTML(java.lang.String)
+ */
+ @Override
+ public String toHTML(String labelFont) {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return valueLabel.getText();
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XList.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XList.java
new file mode 100644
index 00000000000..1b83577a23b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XList.java
@@ -0,0 +1,451 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Menu;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XList extends XWidget {
+
+ public class XListItem {
+ private String name = "";
+ private String xmlValue = null;
+ private Object data = null;
+ private boolean selected = false;
+
+ public XListItem(String name) {
+ this.name = name;
+ }
+
+ public String toString() {
+ return name;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public void setSelected(boolean selected) {
+ this.selected = selected;
+ }
+
+ public String getXmlValue() {
+ return xmlValue;
+ }
+
+ public void setXmlValue(String xmlValue) {
+ this.xmlValue = xmlValue;
+ }
+ }
+
+ private List listList;
+ private Menu listMenu;
+ private Composite parent;
+ private Composite composite;
+ private Map<String, XListItem> items = new HashMap<String, XListItem>();
+ private int requiredMinSelected = 0;
+ private int requiredMaxSelected = 0;
+ private boolean grabHorizontal = false;
+
+ protected SelectionListener listListener = new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ handleSelection();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ };
+
+ public XList(String displayLabel) {
+ this(displayLabel, "list", "");
+ }
+
+ public XList() {
+ this("List", "list", "");
+ }
+
+ public XList(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ setReportType(XWidget.RPT_SINGLE_LINE);
+ listMenu = null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return listList;
+ }
+
+ /**
+ * @param listMenu The listMenu to set.
+ */
+ public void setListMenu(Menu listMenu) {
+ this.listMenu = listMenu;
+ }
+
+ /**
+ * Create List Widgets. Widgets Created: List: horizonatalSpan takes up 2 columns; horizontalSpan must be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ this.parent = parent;
+ composite = null;
+
+ if (!verticalLabel && (horizontalSpan < 2)) {
+ horizontalSpan = 2;
+ } else if (verticalLabel) {
+ horizontalSpan = 1;
+ }
+
+ if (displayLabel && verticalLabel) {
+ composite = new Composite(parent, SWT.NONE);
+ int numColumns = 1;
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = numColumns;
+ composite.setLayout(gridLayout);
+ GridData gd =
+ new GridData(
+ GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
+ gd.horizontalSpan = horizontalSpan;
+ composite.setLayoutData(gd);
+ } else {
+ composite = parent;
+ }
+
+ // Create List Widgets
+ if (displayLabel) {
+ labelWidget = new Label(composite, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+
+ listList = new List(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
+ String array[] = (String[]) items.keySet().toArray(new String[items.size()]);
+ java.util.Arrays.sort(array);
+ listList.setMenu(listMenu);
+ listList.setItems(array);
+ GridData gridData5 = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
+ gridData5.verticalSpan = 10;
+ if (grabHorizontal) {
+ gridData5.grabExcessHorizontalSpace = true;
+ }
+ int listHeight = listList.getItemHeight() * 6;
+ Rectangle trim = listList.computeTrim(0, 0, 0, listHeight);
+ gridData5.heightHint = trim.height;
+ gridData5.grabExcessVerticalSpace = true;
+ listList.setLayoutData(gridData5);
+ listList.addSelectionListener(listListener);
+ updateListWidget();
+ listList.setEnabled(isEditable());
+ }
+
+ @Override
+ public void dispose() {
+ labelWidget.dispose();
+ listList.dispose();
+ if (composite != parent) composite.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void setFocus() {
+ }
+
+ /**
+ * Don't need this since overriding toReport and toXml
+ */
+ public String getXmlData() {
+ return "";
+ }
+
+ /**
+ * Don't need this since overriding setFromXml
+ */
+ public void setXmlData(String str) {
+ return;
+ }
+
+ private void handleSelection() {
+ String sels[] = listList.getSelection();
+ for (XListItem xItem : items.values())
+ xItem.setSelected(false);
+ for (String sel : sels) {
+ XListItem xItem = items.get(sel);
+ if (xItem != null) xItem.setSelected(true);
+ }
+ setLabelError();
+
+ notifyXModifiedListeners();
+ }
+
+ public void refresh() {
+ updateListWidget();
+ }
+
+ public void addSelectionListener(SelectionListener selectionListener) {
+ listList.addSelectionListener(selectionListener);
+ }
+
+ public Set<XListItem> getSelected() {
+ Set<XListItem> sel = new HashSet<XListItem>();
+ for (XListItem xItem : items.values()) {
+ if (xItem.isSelected()) sel.add(xItem);
+ }
+ return sel;
+ }
+
+ public void setFromXml(String xml) {
+ Matcher inner, outter;
+ String outterXml;
+ items.clear();
+ outter =
+ Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+ while (outter.find()) {
+ outterXml = outter.group(1);
+ inner = Pattern.compile("<" + xmlSubRoot + ">(.*?)</" + xmlSubRoot + ">").matcher(outterXml);
+ while (inner.find()) {
+ String str = inner.group(1);
+ XListItem xItem = getByXmlName(str);
+ if (xItem != null)
+ xItem.setSelected(true);
+ else {
+ xItem = add(str);
+ xItem.setSelected(true);
+ }
+ }
+ }
+ refresh();
+ }
+
+ public List getList() {
+ return listList;
+ }
+
+ public XListItem get(String name) {
+ return items.get(name);
+ }
+
+ public String getSelectedStr() {
+ StringBuffer sb = new StringBuffer();
+ for (XListItem item : getSelected())
+ sb.append(item.getName() + ", ");
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ public XListItem getByXmlName(String xmlName) {
+ for (XListItem xItem : items.values()) {
+ if (xItem.xmlValue.equals(xmlName)) return xItem;
+ }
+ return null;
+ }
+
+ protected void updateListWidget() {
+ String listItems[] = listList.getItems();
+ Set<String> listItemsSet = new HashSet<String>();
+ Set<String> selected = new HashSet<String>();
+ for (String listItem : listItems)
+ listItemsSet.add(listItem);
+ if (listList != null) {
+ listList.deselectAll();
+ for (XListItem xItem : items.values()) {
+ if (!listItemsSet.contains(xItem.getName())) {
+ listList.add(xItem.getName());
+ if (xItem.isSelected()) selected.add(xItem.getName());
+ } else if (xItem.isSelected()) selected.add(xItem.getName());
+ }
+ listList.setSelection(selected.toArray(new String[selected.size()]));
+ setLabelError();
+ }
+ }
+
+ public XListItem add(String name) {
+ XListItem xItem = new XListItem(name);
+ items.put(name, xItem);
+ return xItem;
+ }
+
+ public void add(String[] names) {
+ for (String name : names) {
+ add(name);
+ }
+ }
+
+ public void add(Collection<String> names) {
+ for (String name : names) {
+ add(name);
+ }
+ }
+
+ public void addSelected(String name) {
+ XListItem xItem = get(name);
+ if (xItem != null)
+ xItem.setSelected(true);
+ else {
+ xItem = add(name);
+ xItem.setSelected(true);
+ }
+ updateListWidget();
+ }
+
+ public void setSelected(String name) {
+ setSelected(Arrays.asList(new String[] {name}));
+ updateListWidget();
+ }
+
+ public void setSelected(Collection<String> names) {
+ ArrayList<String> handledNames = new ArrayList<String>();
+ for (Entry<String, XListItem> entry : items.entrySet()) {
+ if (names.contains(entry.getKey())) {
+ entry.getValue().selected = true;
+ handledNames.add(entry.getKey());
+ } else
+ entry.getValue().selected = false;
+ }
+ for (String name : names) {
+ if (!handledNames.contains(name)) {
+ XListItem item = new XListItem(name);
+ item.selected = true;
+ items.put(name, item);
+ }
+ }
+ updateListWidget();
+ }
+
+ public boolean isValid() {
+ if (!requiredEntry) return true;
+ int size = getSelected().size();
+ if (requiredMaxSelected != 0) return ((size >= requiredMinSelected) && (size <= requiredMaxSelected));
+ return size > 0;
+ }
+
+ /**
+ * Minimum number of selected items that makes this widget valid
+ *
+ * @param minSelected -
+ * @param maxSelected -
+ */
+ public void setRequiredSelected(int minSelected, int maxSelected) {
+ this.requiredMinSelected = minSelected;
+ this.requiredMaxSelected = maxSelected;
+ setRequiredEntry(true);
+ }
+
+ @Override
+ public void setRequiredEntry(boolean requiredEntry) {
+ super.setRequiredEntry(requiredEntry);
+ if (!requiredEntry) {
+ this.requiredMinSelected = 1;
+ this.requiredMaxSelected = 1;
+ }
+ }
+
+ public String getReportData() {
+ String s = "\n";
+ for (XListItem xItem : getSelected()) {
+ s = s + " - " + xItem + "\n";
+ }
+ s = s.replaceAll("\n+$", "");
+ return s;
+ }
+
+ public String toXml() {
+ return toXml(xmlRoot, xmlSubRoot);
+ }
+
+ public String toXml(String xmlRoot, String xmlSubRoot) {
+ String s = "<" + xmlRoot + ">\n";
+ for (XListItem xItem : getSelected()) {
+ String dataStr;
+ if (xItem.getXmlValue() != null) {
+ dataStr = xItem.getXmlValue();
+ } else {
+ dataStr = xItem.getName();
+ }
+ s = s + " <" + xmlSubRoot + ">" + dataStr + "</" + xmlSubRoot + ">\n";
+ }
+ s = s + "</" + xmlRoot + ">\n";
+ return s;
+ }
+
+ public String toHTML(String labelFont) {
+ String s = "<dl><dt>" + AHTML.getLabelStr(labelFont, label + ": ") + "<dt><ul type=\"disc\">";
+ for (XListItem xItem : getSelected()) {
+ s += "<li>" + xItem;
+ }
+
+ return s + "</ul></dl>";
+ }
+
+ /**
+ * @param grabHorizontal The grabHorizontal to set.
+ */
+ public void setGrabHorizontal(boolean grabHorizontal) {
+ this.grabHorizontal = grabHorizontal;
+ }
+
+ protected void clearAll() {
+ if (listList != null) listList.removeAll();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return getSelected();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDam.java
new file mode 100644
index 00000000000..6778b65ae68
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDam.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XListDam extends XList implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ /**
+ * @param displayLabel
+ */
+ public XListDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public DynamicAttributeManager getUdat() throws SQLException {
+ return artifact.getAttributeManager(attrName);
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ setSelected(getStoredNames());
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ @Override
+ public void save() throws SQLException {
+ if (isDirty()) {
+ ArrayList<String> selectedNames = new ArrayList<String>();
+ for (XListItem item : getSelected())
+ selectedNames.add(item.getName());
+
+ artifact.setDamAttributes(attrName, selectedNames);
+ }
+ }
+
+ public ArrayList<String> getStoredNames() {
+ ArrayList<String> storedNames = new ArrayList<String>();
+ try {
+ for (Attribute attr : getUdat().getAttributes()) {
+ storedNames.add(attr.getStringData());
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ return storedNames;
+ }
+
+ public String getStoredStr() {
+ StringBuffer sb = new StringBuffer();
+ for (String item : getStoredNames())
+ sb.append(item + ", ");
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XList#createWidgets(org.eclipse.swt.widgets.Composite, int)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ super.createWidgets(parent, horizontalSpan);
+ super.addXModifiedListener(modifyListener);
+ }
+
+ @Override
+ public boolean isDirty() {
+ return (!getStoredStr().equals(getSelectedStr()));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDropViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDropViewer.java
new file mode 100644
index 00000000000..f52b2ee1164
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListDropViewer.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.ui.skynet.ArtifactLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.util.SkynetDragAndDrop;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class XListDropViewer extends XListViewer {
+
+ /**
+ * @param displayLabel
+ */
+ public XListDropViewer(String displayLabel) {
+ super(displayLabel);
+ setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new ArtifactLabelProvider());
+ }
+
+ /**
+ * Adds artifacts to the viewer's input.
+ *
+ * @param artifacts
+ */
+ public void addToInput(Artifact... artifacts) {
+ ArrayList<Object> objects = new ArrayList<Object>();
+
+ for (Artifact artifact : artifacts) {
+ objects.add((Object) artifact);
+ }
+
+ if (getInput() == null) {
+ setInput(objects);
+ } else {
+ add(objects);
+ updateListWidget();
+ }
+ notifyXModifiedListeners();
+ }
+
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ super.createWidgets(parent, horizontalSpan);
+
+ // the viewer must be initialized first so the control is not null.
+ new XDragAndDrop();
+ }
+
+ @Override
+ public Object getData() {
+ return getInput();
+ }
+
+ private class XDragAndDrop extends SkynetDragAndDrop {
+ public XDragAndDrop() {
+ super(null, getControl(), "viewId");
+ }
+
+ @Override
+ public void performDragOver(DropTargetEvent event) {
+ if (ArtifactTransfer.getInstance().isSupportedType(event.currentDataType)) {
+ event.detail = DND.DROP_COPY;
+ }
+ }
+
+ @Override
+ public Artifact[] getArtifacts() {
+ return null;
+ }
+
+ @Override
+ public void performArtifactDrop(Artifact[] dropArtifacts) {
+ addToInput(dropArtifacts);
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListViewer.java
new file mode 100644
index 00000000000..fbd1e9f7249
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XListViewer.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XListViewer extends XWidget {
+
+ // XListViewer uses a table so images can be used. SWT doesn't support images in ListViewer
+ private TableViewer listViewer;
+ private Menu listMenu;
+ private Composite parent;
+ private Composite composite;
+ private int requiredMinSelected = 0;
+ private int requiredMaxSelected = 0;
+ private boolean grabHorizontal = false;
+ private boolean multiSelect = false;
+
+ protected SelectionListener listListener = new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ handleSelection();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ };
+ private Collection<Object> input;
+ private IContentProvider contentProvider;
+ private ILabelProvider labelProvider;
+ private ViewerSorter sorter;
+ private int widthHint;
+ private int heightHint;
+
+ public XListViewer(String displayLabel) {
+ this(displayLabel, "list", "");
+ }
+
+ public XListViewer() {
+ this("List", "list", "");
+ }
+
+ public XListViewer(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ setReportType(XWidget.RPT_SINGLE_LINE);
+ listMenu = null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return listViewer.getControl();
+ }
+
+ /**
+ * @param listMenu The listMenu to set.
+ */
+ public void setListMenu(Menu listMenu) {
+ this.listMenu = listMenu;
+ }
+
+ public void setContentProvider(IContentProvider contentProvider) {
+ this.contentProvider = contentProvider;
+ }
+
+ public void setLabelProvider(ILabelProvider labelProvider) {
+ this.labelProvider = labelProvider;
+ if (listViewer != null) listViewer.setLabelProvider(labelProvider);
+ }
+
+ public void setSorter(ViewerSorter sorter) {
+ this.sorter = sorter;
+ }
+
+ public void setInput(Collection<Object> input) {
+ this.input = input;
+ if (listViewer != null) listViewer.setInput(input);
+ }
+
+ /**
+ * @param input
+ */
+ public void setInput(Object input) {
+ if (listViewer != null) listViewer.setInput(input);
+ }
+
+ public Object getInput() {
+ return listViewer.getInput();
+ }
+
+ public void setInputArtifacts(Collection<? extends Artifact> arts) {
+ ArrayList<Object> objs = new ArrayList<Object>();
+ for (Artifact art : arts)
+ objs.add((Object) art);
+ setInput(objs);
+ }
+
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ listViewer.addSelectionChangedListener(listener);
+ }
+
+ public void setHints(int widthHint, int heightHint) {
+ this.widthHint = widthHint;
+ this.heightHint = heightHint;
+ }
+
+ /**
+ * Create List Widgets. Widgets Created: List: horizonatalSpan takes up 2 columns; horizontalSpan must be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ this.parent = parent;
+ composite = null;
+
+ if (!verticalLabel && (horizontalSpan < 2))
+ horizontalSpan = 2;
+ else if (verticalLabel) horizontalSpan = 1;
+
+ if (displayLabel && verticalLabel) {
+ composite = new Composite(parent, SWT.NONE);
+ // composite.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_CYAN));
+ composite.setLayout(new GridLayout(1, false));
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 2;
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+ composite.setLayoutData(gd);
+ } else {
+ composite = parent;
+ }
+
+ // Create List Widgets
+ if (displayLabel) {
+ labelWidget = new Label(composite, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+
+ listViewer =
+ new TableViewer(composite,
+ (multiSelect ? SWT.MULTI : SWT.SINGLE) | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ listViewer.setContentProvider(contentProvider);
+ listViewer.setLabelProvider(labelProvider);
+ if (sorter != null) listViewer.setSorter(sorter);
+ listViewer.setInput(input);
+ listViewer.getTable().setMenu(listMenu);
+ listViewer.getTable().addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ handleSelection();
+ }
+ });
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.verticalSpan = 10;
+ if (grabHorizontal) {
+ gd.grabExcessHorizontalSpace = true;
+ }
+ if (widthHint > 0) gd.widthHint = widthHint;
+ if (heightHint > 0) gd.heightHint = heightHint;
+ gd.grabExcessVerticalSpace = true;
+ listViewer.getTable().setLayoutData(gd);
+ listViewer.getTable().addSelectionListener(listListener);
+ updateListWidget();
+ }
+
+ @Override
+ public void dispose() {
+ labelWidget.dispose();
+ listViewer.getTable().dispose();
+ if (composite != null && !composite.isDisposed()) composite.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void setFocus() {
+ }
+
+ /**
+ * Don't need this since overriding toReport and toXml
+ */
+ public String getXmlData() {
+ return "";
+ }
+
+ /**
+ * Don't need this since overriding setFromXml
+ */
+ public void setXmlData(String str) {
+ return;
+ }
+
+ private void handleSelection() {
+ setLabelError();
+ notifyXModifiedListeners();
+ }
+
+ public void refresh() {
+ updateListWidget();
+ }
+
+ public void addSelectionListener(SelectionListener selectionListener) {
+ listViewer.getTable().addSelectionListener(selectionListener);
+ }
+
+ @SuppressWarnings("unchecked")
+ public ArrayList<Object> getSelected() {
+ ArrayList<Object> selected = new ArrayList<Object>();
+ IStructuredSelection selection = (IStructuredSelection) listViewer.getSelection();
+ Iterator i = selection.iterator();
+ while (i.hasNext())
+ selected.add(i.next());
+ return selected;
+ }
+
+ public void setFromXml(String xml) {
+ }
+
+ public Table getTable() {
+ return listViewer.getTable();
+ }
+
+ protected void updateListWidget() {
+ listViewer.refresh();
+ setLabelError();
+ }
+
+ public void add(Object object) {
+ if (!input.contains(object)) {
+ input.add(object);
+ }
+ }
+
+ public void add(Object[] objects) {
+ for (Object object : objects) {
+ add(object);
+ }
+ }
+
+ public void add(Collection<Object> objects) {
+ // to ensure no duplicates
+ input.removeAll(objects);
+
+ if (!input.containsAll(objects)) {
+ input.addAll(objects);
+ }
+ }
+
+ public void setSelected(ArrayList<Object> selected) {
+ listViewer.setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
+ updateListWidget();
+ }
+
+ public boolean isValid() {
+ if (!requiredEntry) return true;
+ int size = getSelected().size();
+ return ((size >= requiredMinSelected) && (size <= requiredMaxSelected));
+ }
+
+ /**
+ * Minimum number of selected items that makes this widget valid
+ *
+ * @param minSelected -
+ * @param maxSelected =
+ */
+ public void setRequiredSelected(int minSelected, int maxSelected) {
+ this.requiredMinSelected = minSelected;
+ this.requiredMaxSelected = maxSelected;
+ setRequiredEntry(true);
+ }
+
+ @Override
+ public void setRequiredEntry(boolean requiredEntry) {
+ super.setRequiredEntry(requiredEntry);
+ if (!requiredEntry) {
+ this.requiredMinSelected = 1;
+ this.requiredMaxSelected = 1;
+ }
+ }
+
+ public String getReportData() {
+ String s = "\n";
+ for (Object obj : getSelected()) {
+ s = s + " - " + obj + "\n";
+ }
+ s = s.replaceAll("\n+$", "");
+ return s;
+ }
+
+ public String toXml() {
+ return toXml(xmlRoot, xmlSubRoot);
+ }
+
+ public String toXml(String xmlRoot, String xmlSubRoot) {
+ return "";
+ }
+
+ public String toHTML(String labelFont) {
+ String s = "<dl><dt>" + AHTML.getLabelStr(labelFont, label + ": ") + "<dt><ul type=\"disc\">";
+ for (Object xItem : getSelected()) {
+ s += "<li>" + xItem;
+ }
+
+ return s + "</ul></dl>";
+ }
+
+ /**
+ * @param grabHorizontal The grabHorizontal to set.
+ */
+ public void setGrabHorizontal(boolean grabHorizontal) {
+ this.grabHorizontal = grabHorizontal;
+ }
+
+ public boolean isMultiSelect() {
+ return multiSelect;
+ }
+
+ public void setMultiSelect(boolean multiSelect) {
+ this.multiSelect = multiSelect;
+ }
+
+ @Override
+ public Object getData() {
+ return getSelected();
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersCombo.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersCombo.java
new file mode 100644
index 00000000000..d0f3701ed2c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersCombo.java
@@ -0,0 +1,306 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.ui.swt.Search;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XMembersCombo extends XWidget {
+ private static final Logger logger = ConfigUtil.getConfigFactory().getLogger(XMembersCombo.class);
+ private static SkynetAuthentication skyAuth = SkynetAuthentication.getInstance();
+ private static final String DEFAULT_SELECTION = "--select--";
+ private Combo dataCombo;
+ private Composite composite;
+ private User selectedUser;
+ private Search searchControl;
+ private boolean resetCommand = false;
+
+ public XMembersCombo(String displayLabel) {
+ this(displayLabel, "", "");
+ }
+
+ @SuppressWarnings("unchecked")
+ public XMembersCombo(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ }
+
+ @SuppressWarnings("unchecked")
+ public XMembersCombo(String displayLabel, Collection<User> members) {
+ super(displayLabel, displayLabel, "user");
+ }
+
+ public XMembersCombo(String displayLabel, String xmlRoot) {
+ this(displayLabel, xmlRoot, "");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return dataCombo;
+ }
+
+ public boolean equals(User user) {
+ return user.equals(selectedUser);
+ }
+
+ public boolean equals(Object obj) {
+ if (obj instanceof XMembersCombo)
+ return ((XMembersCombo) obj).selectedUser.equals(selectedUser);
+ else
+ return super.equals(obj);
+ }
+
+ public void set(User user) {
+ selectedUser = user;
+ updateComboWidget();
+ }
+
+ public String toString() {
+ return label + ": *" + get() + "*";
+ }
+
+ /**
+ * Create Data Widgets. Widgets Created: Data: DEFAULT_SELECTION horizonatalSpan takes up 2 columns; horizontalSpan
+ * must be >=2 the string DEFAULT_SELECTION will be added to the sent in dataStrings array
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ composite = parent;
+
+ if (horizontalSpan < 2) horizontalSpan = 2;
+
+ // Create Data Widgets
+ if (!label.equals("")) {
+ labelWidget = new Label(composite, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+
+ dataCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ dataCombo.add(DEFAULT_SELECTION);
+ dataCombo.setData(DEFAULT_SELECTION, null);
+ for (User user : SkynetAuthentication.getInstance().getUsers()) {
+ dataCombo.add(user.getName());
+ dataCombo.setData(user.getName(), user);
+ }
+ searchControl = new Search(dataCombo.getItems());
+
+ GridData gridData = new GridData();
+ if (fillHorizontally) gridData.grabExcessHorizontalSpace = true;
+ if (fillVertically) gridData.grabExcessVerticalSpace = true;
+ gridData.horizontalSpan = horizontalSpan - 1;
+ dataCombo.setLayoutData(gridData);
+
+ if (dataCombo.getItemCount() > 20) dataCombo.setVisibleItemCount(20);
+
+ ModifyListener dataComboListener = new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ String selectedUserName = dataCombo.getText();
+ selectedUser = (User) dataCombo.getData(selectedUserName);
+ setLabelError();
+
+ if (resetCommand) {
+ resetCommand = false;
+ searchControl.reset();
+ dataCombo.setItems(searchControl.getItems());
+ refresh();
+ }
+ notifyXModifiedListeners();
+ }
+ };
+ dataCombo.addModifyListener(dataComboListener);
+
+ dataCombo.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ resetCommand = true;
+ }
+ });
+
+ dataCombo.addKeyListener(new KeyAdapter() {
+ // hook key pressed - see PR 14201
+ public void keyPressed(KeyEvent e) {
+ keyReleaseOccured(e);
+ }
+ });
+
+ refresh();
+ dataCombo.setEnabled(editable);
+ }
+
+ @Override
+ public void dispose() {
+ if (composite != null && !composite.isDisposed()) composite.dispose();
+ }
+
+ public User getUser() {
+ return selectedUser;
+ }
+
+ public boolean isAssigned() {
+ return selectedUser != null;
+ }
+
+ public boolean isAssigned(User user) {
+ return selectedUser != null && selectedUser.equals(user);
+ }
+
+ public void setEditable(boolean editable) {
+ super.setEditable(editable);
+ if (dataCombo != null && !dataCombo.isDisposed()) dataCombo.setEnabled(editable);
+ }
+
+ public void setFocus() {
+ if (dataCombo != null) dataCombo.setFocus();
+ }
+
+ public void setFromXml(String xml) {
+ Matcher matcher;
+ if (xmlSubRoot.equals("")) {
+ matcher =
+ Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(
+ xml);
+ } else {
+ matcher =
+ Pattern.compile("<" + xmlRoot + "><" + xmlSubRoot + ">(.*?)</" + xmlSubRoot + "></" + xmlRoot + ">",
+ Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+ }
+ while (matcher.find()) {
+ String userId = matcher.group(1);
+ User user = null;
+ try {
+ user = skyAuth.getUserByIdWithError(userId);
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Error Searching for User in DB.\n", ex);
+ }
+ set(user);
+ }
+ refresh();
+ }
+
+ public void refresh() {
+ updateComboWidget();
+ }
+
+ public void addModifyListener(ModifyListener modifyListener) {
+ dataCombo.addModifyListener(modifyListener);
+ }
+
+ public Combo getComboBox() {
+ return dataCombo;
+ }
+
+ /**
+ * @return selected display value (eg. Dunne, Donald G)
+ */
+ public String get() {
+ return selectedUser == null ? "" : selectedUser.getName();
+ }
+
+ public String getReportData() {
+ return get();
+ }
+
+ public String getXmlData() {
+ return get();
+ }
+
+ public void setXmlData(String str) {
+ }
+
+ private void updateComboWidget() {
+ if (dataCombo != null) {
+ int index = 0;
+
+ if (selectedUser != null) {
+ index = dataCombo.indexOf(selectedUser.getName());
+ if (index == -1) {
+ index = 0;
+ }
+ }
+ dataCombo.select(index);
+ }
+ setLabelError();
+ }
+
+ public void clear() {
+ selectedUser = null;
+ updateComboWidget();
+ }
+
+ public boolean isValid() {
+ if (requiredEntry && !isAssigned()) return false;
+ return true;
+ }
+
+ public String toXml() {
+ return toXml(xmlRoot);
+ }
+
+ public String toXml(String xmlRoot) {
+ String s;
+ String dataStr = selectedUser.getUserId();
+ if (xmlSubRoot == null || xmlSubRoot.equals("")) {
+ s = "<" + xmlRoot + ">" + dataStr + "</" + xmlRoot + ">\n";
+ } else {
+ s = "<" + xmlRoot + "><" + xmlSubRoot + ">" + dataStr + "</" + xmlSubRoot + "></" + xmlRoot + ">\n";
+ }
+ return s;
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + get();
+ }
+
+ protected void keyReleaseOccured(KeyEvent keyEvent) {
+ if (keyEvent.character != 0x00 && keyEvent.character != SWT.CR) {
+ searchControl.progressiveSearch(keyEvent);
+ if (searchControl.getDirty()) {
+ dataCombo.setItems(searchControl.getItems());
+ searchControl.setDirty(false);
+ refresh();
+ }
+ }
+ }
+
+ @Override
+ public Object getData() {
+ return dataCombo.getText();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersList.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersList.java
new file mode 100644
index 00000000000..696bb9c0a17
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XMembersList.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.ui.skynet.ArtifactLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.ArtifactViewerSorter;
+
+/**
+ * Set a AList with the members as the selections
+ *
+ * @author Donald G. Dunne
+ */
+public class XMembersList extends XListViewer {
+
+ private static SkynetAuthentication skyAuth = SkynetAuthentication.getInstance();
+
+ public XMembersList() {
+ this("MList", "", "");
+ }
+
+ public XMembersList(String displayLabel) {
+ this(displayLabel, "", "");
+ }
+
+ public XMembersList(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ super.setLabelProvider(new ArtifactLabelProvider());
+ super.setContentProvider(new ArrayContentProvider());
+ super.setInputArtifacts(skyAuth.getUsers());
+ super.setSorter(new ArtifactViewerSorter());
+ }
+
+ public String[] getEmails() {
+ ArrayList<String> v = new ArrayList<String>();
+ for (Object obj : this.getSelected()) {
+ User u = (User) obj;
+ String name = u.getName();
+ String email = u.getEmail();
+ if (!email.equals(""))
+ v.add(email);
+ else
+ v.add(name);
+ }
+ return (String[]) (v.toArray(new String[0]));
+ }
+
+ public ArrayList<User> getUsers() {
+ ArrayList<User> v = new ArrayList<User>();
+
+ for (Object obj : this.getSelected()) {
+ v.add((User) obj);
+ }
+ return v;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XModifiedListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XModifiedListener.java
new file mode 100644
index 00000000000..8bd01a76947
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XModifiedListener.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface XModifiedListener {
+
+ public void widgetModified(XWidget widget);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercent.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercent.java
new file mode 100644
index 00000000000..fb4344a3c7e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercent.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XPercent extends XText {
+
+ public XPercent(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public void set(int percent) {
+ super.set(percent + "");
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry()) {
+ if (!super.isValid()) {
+ return new Result("Invalid");
+ } else if (!this.isInteger()) {
+ return new Result("Percent must be an Integer");
+ } else if (this.getInteger() < 0 || this.getInteger() > 100) {
+ return new Result("Percent must be between 0 and 100");
+ }
+ }
+ return Result.TrueResult;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercentAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercentAttribute.java
new file mode 100644
index 00000000000..542862231aa
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XPercentAttribute.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+
+public class XPercentAttribute extends XTextAttribute {
+
+ public XPercentAttribute(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public boolean isValid() {
+ return isValidResult().isTrue();
+ }
+
+ public Result isValidResult() {
+ if (super.requiredEntry()) {
+ if (!super.isValid()) {
+ return new Result("Invalid");
+ } else if (!this.isInteger()) {
+ return new Result("Percent must be an Integer");
+ } else if (this.getInteger() < 0 || this.getInteger() > 100) {
+ return new Result("Percent must be between 0 and 100");
+ }
+ }
+ return Result.TrueResult;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButton.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButton.java
new file mode 100644
index 00000000000..65cdb1f64d0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButton.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * Generic label and radiobutton field object for use by single entry artifact attributes
+ *
+ * @author Donald G. Dunne
+ */
+public class XRadioButton extends XWidget {
+
+ private Composite parent;
+ private boolean selected = false;
+ private final String xmlRoot;
+ private Button button;
+ public static enum ButtonType {
+ Check, Radio
+ };
+ private ButtonType buttonType = ButtonType.Radio;
+ private boolean labelAfter;
+
+ public XRadioButton(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ public XRadioButton(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ this.xmlRoot = xmlRoot;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return button;
+ }
+
+ public void setSelected(boolean selected) {
+ this.selected = selected;
+ if (button != null) button.setSelection(selected);
+ }
+
+ public String toString() {
+ return getLabel() + ": " + selected;
+ }
+
+ public void setFromXml(String xml) {
+ Matcher m;
+ m = Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+ if (m.find()) {
+ String str = m.group(1);
+ if (str.equals("true"))
+ setSelected(true);
+ else if (str.equals("false"))
+ setSelected(false);
+ else
+ System.err.println("Unexpected radiobutton value " + str);
+ }
+ refresh();
+ }
+
+ public String getXmlData() {
+ return "" + selected;
+ }
+
+ public String getDisplayStr() {
+ return getXmlData();
+ }
+
+ /**
+ * Don't need this since overriding setFromXml
+ */
+ public void setXmlData(String str) {
+ }
+
+ /**
+ * Create radio Widgets. Widgets Created: Label: "text entry" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ this.parent = parent;
+ // Create Text Widgets
+ if (!isLabelAfter() && isDisplayLabel()) createLabel(parent);
+
+ button = new Button(parent, (buttonType == ButtonType.Check) ? SWT.CHECK : SWT.RADIO);
+ if (toolTip != null && !toolTip.equals("")) button.setToolTipText(toolTip);
+ if (getToolTip() != null && !getToolTip().equals("")) button.setToolTipText(getToolTip());
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ button.setLayoutData(gd);
+ button.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent event) {
+ Button b = (Button) event.getSource();
+ setSelected(b.getSelection());
+ notifyXModifiedListeners();
+ }
+ });
+ if (isLabelAfter()) createLabel(parent);
+ refresh();
+ }
+
+ public void createLabel(Composite parent) {
+ labelWidget = new Label(parent, SWT.NONE);
+ String str = label;
+ if (!isLabelAfter()) str += ":";
+ labelWidget.setText(str);
+ if (toolTip != null && !toolTip.equals("")) labelWidget.setToolTipText(toolTip);
+ }
+
+ public void dispose() {
+ button.dispose();
+ if (labelWidget != null) labelWidget.dispose();
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void addSelectionListener(SelectionListener selectionListener) {
+ if (button != null) button.addSelectionListener(selectionListener);
+ }
+
+ public void removeSelectionListener(SelectionListener selectionListener) {
+ button.removeSelectionListener(selectionListener);
+ }
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public void refresh() {
+ if (button != null) {
+ button.setSelection(selected);
+ }
+ setLabelError();
+ }
+
+ public boolean isValid() {
+ if (requiredEntry) {
+ return selected;
+ }
+ return true;
+ }
+
+ public String getReportData() {
+ return getXmlData();
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + getDisplayStr();
+ }
+
+ public boolean isLabelAfter() {
+ return labelAfter;
+ }
+
+ /**
+ * @return the buttonType
+ */
+ public ButtonType getButtonType() {
+ return buttonType;
+ }
+
+ /**
+ * @param buttonType the buttonType to set
+ */
+ public void setButtonType(ButtonType buttonType) {
+ this.buttonType = buttonType;
+ }
+
+ /**
+ * @param labelAfter the labelAfter to set
+ */
+ public void setLabelAfter(boolean labelAfter) {
+ this.labelAfter = labelAfter;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return selected;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ button.setFocus();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonTest.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonTest.java
new file mode 100644
index 00000000000..36f43cf08c2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonTest.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.ui.skynet.widgets.XRadioButton.ButtonType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public class XRadioButtonTest extends Composite {
+
+ public XRadioButtonTest(Composite parent, int style) {
+ super(parent, style);
+ Composite c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(2, false));
+ c.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+
+ final XRadioButton rb = new XRadioButton("Single Button", "singleButton");
+ rb.createWidgets(c, 2);
+ rb.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb.isSelected() + "*");
+ System.out.println("toXml *" + rb.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(2, false));
+ c.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+
+ final XRadioButton rb2 = new XRadioButton("Label After", "labelAfter");
+ rb2.setLabelAfter(true);
+ rb2.createWidgets(c, 2);
+ rb2.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb2.isSelected() + "*");
+ System.out.println("toXml *" + rb2.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(2, false));
+ c.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+
+ final XRadioButton rb3 = new XRadioButton("Check Box", "checkBox");
+ rb3.setButtonType(ButtonType.Check);
+ rb3.setLabelAfter(true);
+ rb3.createWidgets(c, 2);
+
+ rb3.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb3.isSelected() + "*");
+ System.out.println("toXml *" + rb3.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(1, false));
+ c.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+
+ final XRadioButtons rb4 = new XRadioButtons("Radios", "radios");
+ rb4.addButton("aaaaaa", "First tool tip");
+ rb4.addButton("ccccc", "2nd tool tip");
+ rb4.addButton("bbbbb", "3rd tool tip");
+ rb4.createWidgets(c, 1);
+ rb4.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb4.getXmlData() + "*");
+ System.out.println("toXml *" + rb4.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(2, false));
+
+ rb4.setLabel("Sorted Radios");
+ rb4.setSortNames(true);
+ rb4.createWidgets(c, 7);
+ rb4.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb4.getXmlData() + "*");
+ System.out.println("toXml *" + rb4.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(1, false));
+ final XRadioButtons rb5 = new XRadioButtons("Multi Select", "multiSelect");
+ rb5.addButton("aaaaaa", "First tool tip");
+ rb5.addButton("ddddd", "2nd tool tip");
+ rb5.addButton("fffff", "3rd tool tip");
+ rb5.addButton("bbbb", "3rd tool tip");
+ rb5.addButton("ccccc", "3rd tool tip");
+ rb5.setMultiSelect(true);
+ rb5.createWidgets(c, 11);
+ rb5.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb5.getXmlData() + "*");
+ System.out.println("toXml *" + rb5.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(1, false));
+
+ rb5.setLabel("Sorted Multi Select");
+ rb5.setSortNames(true);
+ rb5.createWidgets(c, 11);
+ rb5.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("isSelected *" + rb5.getXmlData() + "*");
+ System.out.println("toXml *" + rb5.toXml() + "*");
+ };
+ });
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(1, false));
+ final XRadioButtons rb6 = new XRadioButtons("Multi Select", "multiSelect");
+ rb6.addButtons(new String[] {"a", "k", "b", "c", "l", "d", "e", "m", "f", "g", "h", "i", "j"});
+ rb6.setVertical(true, 7);
+ rb6.setSortNames(true);
+ rb6.setMultiSelect(true);
+ rb6.createWidgets(c, 11);
+ rb6.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
+ };
+
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ System.out.println("selected *" + rb6.getXmlData() + "*");
+ System.out.println("toXml *" + rb6.toXml() + "*");
+ };
+ });
+
+ }
+
+ public static void main(String[] args) {
+ Display Display_1 = Display.getDefault();
+ Shell Shell_1 = new Shell(Display_1, SWT.SHELL_TRIM);
+ Shell_1.setBounds(0, 0, 500, 500);
+ Shell_1.setLayout(new GridLayout());
+ Shell_1.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.HORIZONTAL_ALIGN_BEGINNING));
+
+ new XRadioButtonTest(Shell_1, SWT.NONE);
+
+ Shell_1.open();
+ while (!Shell_1.isDisposed()) {
+ if (!Display_1.readAndDispatch()) {
+ Display_1.sleep();
+ }
+ }
+
+ Display_1.dispose();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonViaAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonViaAttribute.java
new file mode 100644
index 00000000000..16912e35b3e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtonViaAttribute.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XRadioButtonViaAttribute extends XRadioButton {
+
+ private Attribute attribute;
+
+ public XRadioButtonViaAttribute(String displayLabel) {
+ this(displayLabel, "");
+ }
+
+ public XRadioButtonViaAttribute(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public Attribute getAttribute() {
+ return attribute;
+ }
+
+ public void setAttribute(Attribute attribute) {
+ this.attribute = attribute;
+
+ super.setSelected(attribute.getStringData().equals("yes") ? true : false);
+ }
+
+ @Override
+ public void setSelected(boolean selected) {
+ super.setSelected(selected);
+ attribute.setStringData(isSelected() ? "yes" : "no");
+ }
+
+ @Override
+ public void save() {
+ if (isDirty()) attribute.setStringData(isSelected() ? "yes" : "no");
+ }
+
+ @Override
+ public boolean isDirty() {
+ return (!attribute.getStringData().equals(isSelected() ? "yes" : "no"));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtons.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtons.java
new file mode 100644
index 00000000000..a230348c668
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRadioButtons.java
@@ -0,0 +1,332 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.widgets.XRadioButton.ButtonType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * Generic label and radiobutton field object for use by single entry artifact attributes
+ *
+ * @author Donald G. Dunne
+ */
+public class XRadioButtons extends XWidget {
+
+ private Composite comp;
+ private ArrayList<XRadioButton> xButtons = new ArrayList<XRadioButton>();
+ private boolean multiSelect;
+ private boolean vertical;
+ private int verticalColumns;
+ private boolean sortNames;
+
+ public XRadioButtons(String displayLabel, String xmlRoot) {
+ super(displayLabel, xmlRoot);
+ }
+
+ public void setFocus() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return null;
+ }
+
+ public void createWidgets(FormToolkit toolkit, Composite parent, int horizontalSpan) {
+ createWidgets(parent, horizontalSpan);
+ for (XRadioButton button : xButtons)
+ toolkit.adapt(button.getControl(), true, true);
+ if (labelWidget != null) toolkit.adapt(labelWidget, true, true);
+ }
+
+ public void addButtons(String items[]) {
+ xButtons.clear();
+ for (String item : items) {
+ xButtons.add(new XRadioButton(item, item));
+ }
+ }
+
+ public void addButton(String item, String toolTip) {
+ XRadioButton rb = new XRadioButton(item, item);
+ rb.setToolTip(toolTip);
+ xButtons.add(rb);
+ // System.out.println("added " + item);
+ }
+
+ public void addButton(String item) {
+ XRadioButton rb = new XRadioButton(item, item);
+ xButtons.add(rb);
+ // System.out.println("added " + item);
+ }
+
+ public void selectAll(boolean selected) {
+ for (XRadioButton rb : xButtons)
+ rb.setSelected(selected);
+ refresh();
+ }
+
+ public XRadioButton getButton(String name) {
+ for (XRadioButton button : xButtons)
+ if (button.getLabel().equals(name)) return button;
+ return null;
+ }
+
+ public void setSelected(String selected[]) {
+ // First, clear out all previous selections
+ selectAll(false);
+ // Set, selected items sent in
+ for (String name : selected) {
+ XRadioButton rb = getButton(name);
+ if (rb != null) rb.setSelected(true);
+ }
+ refresh();
+ }
+
+ public void setSelected(Collection<String> selected) {
+ if (selected != null) setSelected((String[]) selected.toArray(new String[selected.size()]));
+ }
+
+ public void setFromXml(String xml) throws IllegalStateException, SQLException {
+ selectAll(false);
+ if (!multiSelect)
+ super.setFromXml(xml);
+ else {
+ Matcher m;
+ m =
+ Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(
+ xml);
+ if (m.find()) {
+ String str = m.group(1);
+ String strs[] = str.split(",");
+ setSelected(strs);
+ }
+ }
+ refresh();
+ }
+
+ public String getXmlData() {
+ String sel = "";
+ for (String str : getSelectedNames())
+ sel += str + ",";
+ sel = sel.replaceFirst(",$", "");
+ return sel;
+ }
+
+ public String getDisplayStr() {
+ return getXmlData();
+ }
+
+ public String toString() {
+ return getLabel() + ": " + Collections.toString(",", getSelectedNames());
+ }
+
+ public void setXmlData(String str) {
+ setSelected(str);
+ }
+
+ /**
+ * Create radio Widgets. Widgets Created: Label: "text entry" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+
+ Map<String, XRadioButton> nameToButton = new HashMap<String, XRadioButton>();
+ String names[] = new String[xButtons.size()];
+ int x = 0;
+ for (XRadioButton rb : xButtons) {
+ nameToButton.put(rb.getLabel().toLowerCase(), rb);
+ names[x++] = rb.getLabel().toLowerCase();
+ }
+
+ int numColumns = (names.length * 2) + (displayLabel ? 1 : 0);
+ if (vertical && horizontalSpan == 1)
+ numColumns = 1;
+ else if (vertical) numColumns = (displayLabel ? 1 : 0) + 1; // only need label an composite
+ // System.out.println("numColumns *" + numColumns + "*");
+ comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(numColumns, false));
+ GridData gd = new GridData();
+ gd.horizontalSpan = horizontalSpan;
+ comp.setLayoutData(gd);
+ // comp.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
+
+ // Create Text Widgets
+ if (displayLabel) {
+ labelWidget = new Label(comp, SWT.NONE);
+ labelWidget.setText(label + ":");
+ }
+ if (toolTip != null && displayLabel) {
+ labelWidget.setToolTipText(toolTip);
+ }
+
+ if (sortNames) Arrays.sort(names);
+
+ int numRows = 1;
+ if (vertical && xButtons.size() > verticalColumns) {
+ numRows = (int) (xButtons.size() / verticalColumns);
+ if ((xButtons.size() / verticalColumns) > 0) numRows++;
+ // System.out.println("numRows *" + numRows + "*");
+ }
+
+ Composite c = comp;
+ if (vertical) {
+ // System.out.println("verticalColumns *" + verticalColumns + "*");
+ c = new Composite(comp, SWT.NONE);
+ c.setLayout(ALayout.getZeroMarginLayout(verticalColumns, false));
+ // c.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+ }
+
+ Composite inComp = null;
+ if (!vertical) inComp = c;
+ for (int i = 0; i < names.length; i++) {
+ if (vertical && i % numRows == 0) {
+ inComp = new Composite(c, SWT.NONE);
+ inComp.setLayout(new GridLayout(2, false));
+ inComp.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+ // inComp.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_CYAN+i));
+ }
+ XRadioButton button = nameToButton.get(names[i]);
+ if (multiSelect) button.setButtonType(ButtonType.Check);
+ button.setLabelAfter(true);
+ button.createWidgets(inComp, 2);
+ // Since each button has it's own listeners, pass the notification on to anyone listening
+ // to XRadioButtons:w
+ button.addXModifiedListener(new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ notifyXModifiedListeners();
+ }
+ });
+ }
+ refresh();
+ }
+
+ @Override
+ public void dispose() {
+ for (XRadioButton rb : xButtons)
+ rb.dispose();
+ if (labelWidget != null) labelWidget.dispose();
+ if (comp != null && !comp.isDisposed()) comp.dispose();
+ }
+
+ public void addSelectionListener(SelectionListener selectionListener) {
+ for (XRadioButton rb : xButtons) {
+ rb.addSelectionListener(selectionListener);
+ }
+ }
+
+ public void removeSelectionListener(SelectionListener selectionListener) {
+ for (XRadioButton rb : xButtons) {
+ rb.removeSelectionListener(selectionListener);
+ }
+ }
+
+ public Set<String> getSelectedNames() {
+ Set<String> names = new HashSet<String>();
+ for (XRadioButton rb : xButtons) {
+ if (rb.isSelected()) names.add(rb.label);
+ }
+ return names;
+ }
+
+ public boolean isSelected(String name) {
+ XRadioButton rb = getButton(name);
+ if (rb != null) return rb.isSelected();
+ return false;
+ }
+
+ public boolean isSelected() {
+ for (XRadioButton rb : xButtons) {
+ if (rb.isSelected()) return true;
+ }
+ return false;
+ }
+
+ public void setSelected(String name) {
+ setSelected(new String[] {name});
+ }
+
+ public void refresh() {
+ setLabelError();
+ }
+
+ public boolean isValid() {
+ if (requiredEntry) return (getSelectedNames().size() > 0);
+ return true;
+ }
+
+ public String getReportData() {
+ return getXmlData();
+ }
+
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelStr(labelFont, label + ": ") + getDisplayStr();
+ }
+
+ public boolean isMultiSelect() {
+ return multiSelect;
+ }
+
+ public void setMultiSelect(boolean multiSelect) {
+ this.multiSelect = multiSelect;
+ }
+
+ public boolean isVertical() {
+ return vertical;
+ }
+
+ public void setVertical(boolean vertical, int columns) {
+ this.vertical = vertical;
+ this.verticalColumns = columns;
+ }
+
+ public boolean isSortNames() {
+ return sortNames;
+ }
+
+ public void setSortNames(boolean sortNames) {
+ this.sortNames = sortNames;
+ }
+
+ @Override
+ public Object getData() {
+ return getSelectedNames();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRelationTypeListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRelationTypeListViewer.java
new file mode 100644
index 00000000000..cb1b0aacb9e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XRelationTypeListViewer.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class XRelationTypeListViewer extends XTypeListViewer {
+ private static final String NAME = "XRelationTypeListViewer";
+ private static final BranchPersistenceManager branchPersistenceManager = BranchPersistenceManager.getInstance();
+
+ /**
+ * @param branch
+ * @param name
+ * @throws SQLException
+ */
+ public XRelationTypeListViewer() {
+ super(NAME);
+
+ setContentProvider(new DefaultBranchContentProvider(new RelationTypeContentProvider()));
+ ArrayList<Object> input = new ArrayList<Object>(1);
+ input.add(branchPersistenceManager.getDefaultBranch());
+
+ setInput(input);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java
new file mode 100644
index 00000000000..4cd181c771e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java
@@ -0,0 +1,520 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.util.OseeDictionary;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * Generic label and text field object for use by single entry artifact attributes
+ *
+ * @author Donald G. Dunne
+ */
+public class XText extends XWidget {
+
+ protected StyledText sText; // Contains visable representation of text
+ private Composite parent;
+ protected String text = ""; // Where actual text with xml tags is stored
+ private int maxTextChars = 0;
+
+ private boolean dragableArtifact = false;
+ private boolean spellCheck = true;
+ private boolean debug = false;
+ private int width = 0;
+ private int height = 0;
+ private XTextSpellCheckPaintListener spellPaintListener;
+ private XTextSpellModifyDictionary modDict;
+
+ public XText() {
+ super("AText", "text");
+ }
+
+ public XText(String displayLabel) {
+ this(displayLabel, "text");
+ }
+
+ public XText(String displayLabel, String xmlRoot) {
+ this(displayLabel, xmlRoot, "");
+ }
+
+ public XText(String displayLabel, String xmlRoot, String xmlSubRoot) {
+ super(displayLabel, xmlRoot, xmlSubRoot);
+ }
+
+ public void setEnabled(boolean enabled) {
+ sText.setEnabled(enabled);
+ }
+
+ public void setSize(int width, int height) {
+ this.width = width;
+ this.height = height;
+ if (sText != null && !sText.isDisposed()) sText.setSize(width, height);
+ }
+
+ public void setHeight(int height) {
+ this.height = height;
+ if (sText != null && !sText.isDisposed()) sText.setSize(sText.getSize().x, height);
+ }
+
+ public String toString() {
+ return label + ": *" + text + "*";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return sText;
+ }
+
+ /**
+ * Create Text Widgets. Widgets Created: Label: "text entry" horizonatalSpan takes up 2 columns; horizontalSpan must
+ * be >=2
+ */
+ public void createWidgets(Composite parent, int horizontalSpan) {
+ createWidgets(parent, horizontalSpan, true);
+ }
+
+ public void createWidgets(Composite parent, int horizontalSpan, boolean fillText) {
+
+ if (!verticalLabel && (horizontalSpan < 2)) {
+ horizontalSpan = 2;
+ }
+
+ this.parent = parent;
+ Composite composite = null;
+
+ ModifyListener textListener = new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ if (sText != null) {
+ debug("modifyText");
+ text = sText.getText();
+ setLabelError();
+ notifyXModifiedListeners();
+ }
+ }
+ };
+
+ if (fillVertically) {
+ composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = ALayout.getZeroMarginLayout(1, false);
+ layout.verticalSpacing = 4;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ } else {
+ composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = ALayout.getZeroMarginLayout(2, false);
+ layout.verticalSpacing = 4;
+ composite.setLayout(layout);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = horizontalSpan;
+ composite.setLayoutData(gd);
+ }
+ // composite = parent;
+
+ // Create Text Widgets
+ if (displayLabel && !label.equals("")) {
+ labelWidget = new Label(composite, SWT.NONE);
+ labelWidget.setText(label + ":");
+ if (toolTip != null) {
+ labelWidget.setToolTipText(toolTip);
+ }
+ }
+ if (fillVertically) {
+ sText = new StyledText(composite, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.H_SCROLL | SWT.V_SCROLL);
+ } else {
+ sText = new StyledText(composite, SWT.BORDER | SWT.SINGLE);
+ }
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ if (verticalLabel)
+ gd.horizontalSpan = horizontalSpan;
+ else
+ gd.horizontalSpan = horizontalSpan - 1;
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalAlignment = GridData.FILL;
+ if (fillVertically) {
+ gd.grabExcessVerticalSpace = true;
+ gd.verticalAlignment = GridData.FILL;
+ }
+ if (fillVertically) {
+ if (height > 0) gd.heightHint = height;
+ }
+
+ sText.setLayoutData(gd);
+ sText.setMenu(getDefaultMenu());
+ sText.addModifyListener(textListener);
+ spellPaintListener = new XTextSpellCheckPaintListener(this, OseeDictionary.getInstance());
+ if (spellCheck) {
+ sText.addPaintListener(spellPaintListener);
+ if (modDict != null) spellPaintListener.addXTextSpellModifyDictionary(modDict);
+ }
+ if (width != 0 && height != 0) sText.setSize(width, height);
+
+ if (maxTextChars > 0) {
+ sText.setTextLimit(maxTextChars);
+ }
+ if (fillText) updateTextWidget();
+ setLabelError();
+ sText.setEditable(editable);
+ parent.layout();
+ }
+
+ public void addXTextSpellModifyDictionary(XTextSpellModifyDictionary modDict) {
+ this.modDict = modDict;
+ if (spellPaintListener != null) spellPaintListener.addXTextSpellModifyDictionary(modDict);
+ }
+
+ /**
+ * @return text including xml tags replaced for references
+ */
+ public String getText() {
+ String text = sText.getText();
+ return text;
+ }
+
+ /**
+ * @param text
+ */
+ public void setText(String text) {
+ sText.setText(text);
+ }
+
+ public Menu getDefaultMenu() {
+ Menu menu = new Menu(sText.getShell());
+ MenuItem cut = new MenuItem(menu, SWT.NONE);
+ cut.setText("Cut");
+ cut.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ sText.cut();
+ sText.redraw();
+ }
+ });
+ MenuItem copy = new MenuItem(menu, SWT.NONE);
+ copy.setText("Copy");
+ copy.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ sText.copy();
+ }
+ });
+ MenuItem paste = new MenuItem(menu, SWT.NONE);
+ paste.setText("Paste");
+ paste.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ sText.paste();
+ sText.redraw();
+ }
+ });
+ return menu;
+ }
+
+ @Override
+ public void dispose() {
+ labelWidget.dispose();
+ if (sText != null) {
+ if (spellPaintListener != null && !sText.isDisposed()) sText.removePaintListener(spellPaintListener);
+ sText.dispose();
+ sText = null;
+ }
+ if (parent != null && !parent.isDisposed()) parent.layout();
+ }
+
+ public void setFocus() {
+ if (sText != null) sText.setFocus();
+ }
+
+ public void setSpellChecking(boolean spellCheck) {
+ if (sText != null) {
+ if (spellCheck)
+ sText.addPaintListener(spellPaintListener);
+ else if (spellPaintListener != null) sText.removePaintListener(spellPaintListener);
+ }
+ this.spellCheck = spellCheck;
+ }
+
+ public void setEditable(boolean editable) {
+ super.setEditable(editable);
+ if (sText != null && !sText.isDisposed()) {
+ sText.setEditable(editable);
+ }
+ }
+
+ /**
+ * Set max character limit on text field
+ *
+ * @param limit - if 0, then limit is 999, else sets to limit
+ */
+ public void setMaxTextLimit(int limit) {
+ this.maxTextChars = limit;
+ if (sText != null) {
+ if (limit == 0) {
+ sText.setTextLimit(999);
+ } else {
+ sText.setTextLimit(limit);
+ }
+ }
+ }
+
+ public void forceFocus() {
+ if (sText != null) {
+ sText.forceFocus();
+ }
+ }
+
+ public void setFillVertically(boolean fillVertically) {
+ super.setFillVertically(fillVertically);
+ }
+
+ public boolean isInteger() {
+ try {
+ new Integer(text);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean isFloat() {
+ try {
+ new Float(text);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ return true;
+ }
+
+ public int getInteger() {
+ Integer num;
+ try {
+ num = new Integer(text);
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ return num.intValue();
+ }
+
+ public double getFloat() {
+ Double num;
+ try {
+ num = new Double(text);
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ return num.doubleValue();
+ }
+
+ public void setRequiredEntry(boolean requiredEntry) {
+ super.setRequiredEntry(requiredEntry);
+ setLabelError();
+ }
+
+ public boolean requiredEntry() {
+ return requiredEntry;
+ }
+
+ public void addModifyListener(ModifyListener modifyListener) {
+ if (sText != null) sText.addModifyListener(modifyListener);
+ }
+
+ public String get() {
+ if (debug) System.err.println("text set *" + text + "*");
+ return text;
+ }
+
+ public String getXmlData() {
+ if (sText == null || sText.isDisposed())
+ return AXml.textToXml(text);
+ else
+ try {
+ return AXml.textToXml(sText.getText());
+ } catch (SWTException e) {
+ return AXml.textToXml(text);
+ }
+ }
+
+ public String toXml() {
+ if (xmlSubRoot.equals("")) {
+ return toXml(xmlRoot);
+ } else {
+ return toXml(xmlRoot, xmlSubRoot);
+ }
+ }
+
+ public String toXml(String xmlRoot) {
+ String s = "<" + xmlRoot + ">" + getXmlData() + "</" + xmlRoot + ">\n";
+ return s;
+ }
+
+ public String toXml(String xmlRoot, String xmlSubRoot) {
+ String s =
+ "<" + xmlRoot + ">" + "<" + xmlSubRoot + ">" + getXmlData() + "</" + xmlSubRoot + ">" + "</" + xmlRoot + ">\n";
+ return s;
+ }
+
+ public void setXmlData(String str) {
+ set(str);
+ if (debug) System.err.println("setFromXml *" + str + "*");
+ }
+
+ public void setFromXml(String xml) {
+ Matcher m;
+ m = Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+
+ if (m.find()) {
+ String xmlStr = m.group(1);
+ if (debug) System.err.println("xmlStr *" + xmlStr + "*");
+ String str = AXml.xmlToText(xmlStr);
+ if (debug) System.err.println("str *" + str + "*");
+ setXmlData(str);
+ }
+ }
+
+ public int getInt() {
+ Integer percent = new Integer(0);
+ try {
+ percent = new Integer(text);
+ } catch (NumberFormatException e) {
+ }
+ return percent.intValue();
+ }
+
+ protected void updateTextWidget() {
+ if (sText != null) {
+ if (text.equals(sText.getText())) return;
+ // Disable Listeners so not to fill Undo List
+ sText.setText(text);
+ // Reenable Listeners
+ setLabelError();
+ }
+ }
+
+ public void set(String text) {
+ if (text == null)
+ this.text = "";
+ else
+ this.text = text;
+ if (debug) System.err.println("set *" + text + "*");
+ updateTextWidget();
+ }
+
+ public void set(XText text) {
+ set(text.get());
+ }
+
+ public void append(String text) {
+ this.text = this.text + text;
+ updateTextWidget();
+ }
+
+ public void refresh() {
+ updateTextWidget();
+ }
+
+ public boolean isValid() {
+ if (requiredEntry && (text.compareTo("") == 0)) {
+ return false;
+ }
+ return true;
+ }
+
+ public String getReportData() {
+ String s = "";
+ String textStr = new String(text);
+ if (fillVertically) {
+ s = s + "\n";
+ textStr = textStr.replaceAll("\n", "\n" + " ");
+ textStr = " " + textStr;
+ }
+ s = s + textStr;
+ s = s.replaceAll("\n$", "");
+ return s;
+ }
+
+ public String toHTML(String labelFont, boolean newLineText) {
+ String s = AHTML.getLabelStr(labelFont, label + ": ");
+ if (newLineText) s = "<dl><dt>" + s + "<dd>";
+ s += text;
+ if (newLineText) s += "</dl>";
+ return s;
+ }
+
+ public String toHTML(String labelFont) {
+ return toHTML(labelFont, false);
+ }
+
+ /**
+ * @return Returns the dragableArtifact.
+ */
+ public boolean isDragableArtifact() {
+ return dragableArtifact;
+ }
+
+ /**
+ * @param dragableArtifact The dragableArtifact to set.
+ */
+ public void setDragableArtifact(boolean dragableArtifact) {
+ this.dragableArtifact = dragableArtifact;
+ }
+
+ public void debug(String str) {
+ if (debug) System.err.println("AText :" + str);
+ }
+
+ public Result isValidResult() {
+ if (isRequiredEntry() && get().equals("")) {
+ return new Result(String.format("Must enter \"%s\"", label));
+ }
+ return Result.TrueResult;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XWidget#getData()
+ */
+ @Override
+ public Object getData() {
+ return sText.getText();
+ }
+
+ /**
+ * @return the sText
+ */
+ public StyledText getStyledText() {
+ return sText;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextAttribute.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextAttribute.java
new file mode 100644
index 00000000000..8a55c70a889
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextAttribute.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+
+public class XTextAttribute extends XText {
+
+ private Attribute attribute;
+
+ public XTextAttribute(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public Attribute getAttribute() {
+ return attribute;
+ }
+
+ public void setAttribute(Attribute attribute) {
+ this.attribute = attribute;
+ super.set(attribute.getStringData());
+ }
+
+ @Override
+ public void set(String text) {
+ super.set(text);
+ }
+
+ @Override
+ public void save() {
+ if (isDirty()) {
+ attribute.setStringData(text);
+ }
+ }
+
+ @Override
+ public boolean isDirty() {
+ if (attribute == null || attribute.getStringData() == null) return false;
+ return (!attribute.getStringData().equals(get()));
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDam.java
new file mode 100644
index 00000000000..82a1f425015
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDam.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.widgets.Composite;
+
+public class XTextDam extends XText implements IDamWidget {
+
+ private Artifact artifact;
+ private String attrName;
+
+ public XTextDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ public void setArtifact(Artifact artifact, String attrName) throws SQLException {
+ this.artifact = artifact;
+ this.attrName = attrName;
+
+ super.set(getUdatStringValue());
+ }
+
+ public DynamicAttributeManager getUdat() throws SQLException {
+ return artifact.getAttributeManager(attrName);
+ }
+
+ public String getUdatStringValue() throws SQLException {
+ DynamicAttributeManager udat = getUdat();
+ if (udat == null) return "";
+ return udat.getSoleAttributeValue();
+ }
+
+ XModifiedListener modifyListener = new XModifiedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener#widgetModified(org.eclipse.osee.framework.ui.skynet.widgets.XWidget)
+ */
+ public void widgetModified(XWidget widget) {
+ try {
+ save();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ };
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XText#createWidgets(org.eclipse.swt.widgets.Composite, int,
+ * boolean)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan, boolean fillText) {
+ super.createWidgets(parent, horizontalSpan, fillText);
+ addXModifiedListener(modifyListener);
+ }
+
+ @Override
+ public void save() throws SQLException {
+ if (isDirty()) {
+ DynamicAttributeManager udat = getUdat();
+ udat.setSoleAttributeValue(get());
+ }
+ }
+
+ @Override
+ public boolean isDirty() throws SQLException {
+ return (!getUdatStringValue().equals(get()));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDescriptiveName.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDescriptiveName.java
new file mode 100644
index 00000000000..411b3adb98c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextDescriptiveName.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+public class XTextDescriptiveName extends XText {
+
+ public Artifact artifact;
+
+ public XTextDescriptiveName(String displayLabel) {
+ super(displayLabel);
+ }
+
+ @Override
+ public void set(String text) {
+ super.set(text);
+ }
+
+ @Override
+ public void save() {
+ if (isDirty()) {
+ artifact.setDescriptiveName(get());
+ }
+ }
+
+ @Override
+ public boolean isDirty() {
+ return (!artifact.getDescriptiveName().equals(get()));
+ }
+
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ public void setArtifact(Artifact artifact) {
+ this.artifact = artifact;
+ super.set(artifact.getDescriptiveName());
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextResourceDropDam.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextResourceDropDam.java
new file mode 100644
index 00000000000..0f355a90885
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextResourceDropDam.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTransfer;
+import org.eclipse.osee.framework.svn.VersionControl;
+import org.eclipse.osee.framework.ui.plugin.util.AJavaProject;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkspace;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.DropTargetAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ResourceTransfer;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XTextResourceDropDam extends XTextDam {
+
+ /**
+ * @param displayLabel
+ */
+ public XTextResourceDropDam(String displayLabel) {
+ super(displayLabel);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XTextDam#createWidgets(org.eclipse.swt.widgets.Composite,
+ * int, boolean)
+ */
+ @Override
+ public void createWidgets(Composite parent, int horizontalSpan, boolean fillText) {
+ super.createWidgets(parent, horizontalSpan, fillText);
+ setupDragAndDropSupport();
+ }
+
+ private void setupDragAndDropSupport() {
+
+ // Do not allow drop if default branch is not same as artifacts that reside in this table
+ DropTarget target = new DropTarget(getStyledText(), DND.DROP_COPY);
+ target.setTransfer(new Transfer[] {ResourceTransfer.getInstance(), FileTransfer.getInstance(),
+ TextTransfer.getInstance(), ArtifactTransfer.getInstance()});
+ target.addDropListener(new DropTargetAdapter() {
+
+ public void drop(DropTargetEvent event) {
+ performDrop(event);
+ }
+
+ public void dragOver(DropTargetEvent event) {
+ event.detail = DND.DROP_COPY;
+ }
+
+ public void dropAccept(DropTargetEvent event) {
+ }
+ });
+ }
+
+ private void performDrop(DropTargetEvent e) {
+ Set<String> strs = new HashSet<String>();
+ if (e.data instanceof String) {
+ strs.add((String) e.data);
+ } else if (e.data instanceof String[]) {
+ for (String str : (String[]) e.data)
+ strs.add(str);
+ } else if (e.data instanceof IResource[]) {
+ IResource res[] = (IResource[]) e.data;
+ for (Object obj : res) {
+ StringBuffer sb = new StringBuffer();
+ if (obj instanceof IFile) {
+ IFile iFile = (IFile) obj;
+ if (iFile != null) {
+ File file = AWorkspace.iFileToFile(iFile);
+ try {
+ String javaPkg = AJavaProject.getJavaPackage(file);
+ if (javaPkg != null && !javaPkg.equals("")) sb.append(javaPkg + " - ");
+ } catch (Exception ex) {
+ // do nothing
+ System.out.println("here");
+ }
+ sb.append(iFile.getName());
+ String ver = VersionControl.getInstance().getRepositoryEntry(file).getVersion();
+ if (ver != null) {
+ if (ver.equals("unknown")) ver = "enter version here";
+ sb.append(" (" + ver + ")");
+ }
+ }
+ }
+ if (!sb.toString().equals("")) strs.add(sb.toString());
+ }
+ }
+ for (String str : strs) {
+ append(str + "\n");
+ }
+ refresh();
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellCheckPaintListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellCheckPaintListener.java
new file mode 100644
index 00000000000..748df0ab22d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellCheckPaintListener.java
@@ -0,0 +1,228 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.StringTokenizer;
+import org.eclipse.osee.framework.ui.swt.styledText.ASpellWord;
+import org.eclipse.osee.framework.ui.swt.styledText.IDictionary;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MenuEvent;
+import org.eclipse.swt.events.MenuListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * PaintListener that will underline all misspelled words in a StyledText widget. This class must be extended to provide
+ * for getting the dictionary and activating/deactivating certain functionality.
+ *
+ * @author Donald G. Dunne
+ */
+public class XTextSpellCheckPaintListener implements PaintListener {
+
+ private final IDictionary dict;
+ private final XText xText;
+ private Set<ASpellWord> errors = new HashSet<ASpellWord>();
+ private XTextSpellModifyDictionary modDict;
+
+ public XTextSpellCheckPaintListener(final XText xText, IDictionary dict) {
+ this.xText = xText;
+ this.dict = dict;
+ if (modDict != null) {
+ addXTextSpellModifyDictionary(modDict);
+ }
+ }
+
+ public void addXTextSpellModifyDictionary(XTextSpellModifyDictionary modDict) {
+ this.modDict = modDict;
+ xText.getStyledText().addMouseListener(mouseListener);
+ xText.getStyledText().addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ xText.getStyledText().removeMouseListener(mouseListener);
+ }
+ });
+ }
+
+ public void paintControl(PaintEvent e) {
+ GC gc = e.gc;
+ gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
+ if (xText != null) {
+ String text = xText.getStyledText().getText();
+
+ // Get spelling errors
+ getErrors(text);
+ for (ASpellWord sw : errors)
+ drawError(sw.start, sw.word.length(), xText.getStyledText(), gc);
+ }
+ }
+
+ private MouseListener mouseListener = new MouseListener() {
+ public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
+ StyledText styledText = (StyledText) e.widget;
+ int offset = 0;
+ try {
+ offset = styledText.getOffsetAtLocation(new Point(e.x, e.y));
+ } catch (IllegalArgumentException ex) {
+ // Illegal arguement exception happens when selected point is outside
+ // the range of the rectangle. Since it does it's own calculation, just
+ // throw this exception away.
+ return;
+ }
+ for (ASpellWord sw : errors) {
+ if (sw.start < offset && (sw.start + sw.word.length()) > offset) {
+ // System.out.println("Found error word " + sw.word);
+ handleErrorSelected(sw);
+ break;
+ }
+ }
+ };
+
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ public void mouseDown(MouseEvent e) {
+ }
+ };
+
+ private void handleErrorSelected(final ASpellWord sw) {
+ Menu menu = xText.getStyledText().getMenu();
+
+ new MenuItem(menu, SWT.SEPARATOR);
+
+ MenuItem addLocal = new MenuItem(menu, SWT.NONE);
+ addLocal.setText("Add \"" + sw.word + "\" to Personal dictionary.");
+ addLocal.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if (modDict.addToLocalDictionary(sw.word)) {
+ xText.getStyledText().redraw();
+ }
+ }
+ });
+
+ MenuItem addGlobal = new MenuItem(menu, SWT.NONE);
+ addGlobal.setText("Add \"" + sw.word + "\" to Global dictionary.");
+ addGlobal.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if (modDict.addToGlobalDictionary(sw.word)) {
+ xText.getStyledText().redraw();
+ }
+ }
+ });
+ menu.addMenuListener(new MenuListener() {
+ public void menuHidden(MenuEvent e) {
+ xText.getStyledText().setMenu(xText.getDefaultMenu());
+ }
+
+ public void menuShown(MenuEvent e) {
+ };
+ });
+ }
+
+ /**
+ * Draws a single spelling error squiggly line
+ *
+ * @param offset - offset of bad word
+ * @param len - length of bad word
+ */
+ private void drawError(int offset, int len, StyledText sText, GC gc) {
+ if (sText.isDisposed()) return;
+ // Convert to coordinates
+ try {
+ Point off1 = sText.getLocationAtOffset(offset);
+ off1.y--;
+ Point off2 = sText.getLocationAtOffset(offset + len);
+ off2.y--;
+ int h = sText.getLineHeight();
+ int[] polyline = computePolyline(off1, off2, h);
+ gc.drawPolyline(polyline);
+ } catch (RuntimeException e) {
+ }
+ }
+
+ /**
+ */
+ private void getErrors(String str) {
+ errors.clear();
+ StringTokenizer st = new StringTokenizer(str, "[\t\r\n ]", true);
+ int loc = 0;
+ while (st.hasMoreTokens()) {
+ String string = st.nextToken();
+ // if not a whitespace character
+ if (!string.matches("^\\s*$")) {
+ // System.out.println("isWord: orig *" + string + "* => *" + word + "*");
+ if (!dict.isWord(string)) {
+ ASpellWord sw = new ASpellWord(string, loc);
+ // System.out.println("word " + word + " is error");
+ errors.add(sw);
+ }
+ }
+ loc += string.length();
+ }
+ }
+
+ /**
+ * Computes the squiggly line.
+ *
+ * @param left the left end point
+ * @param right the right end point
+ * @param height the height of the squiggly line
+ * @return the polyline array
+ */
+ private int[] computePolyline(Point left, Point right, int height) {
+
+ final int WIDTH = 3;
+ final int HEIGHT = 0;
+
+ int w2 = 2 * WIDTH;
+ int peeks = (right.x - left.x) / w2;
+
+ int leftX = left.x;
+
+ // compute (number of points) * 2
+ int length = 4 * peeks + 2;
+ if (length <= 0) return new int[0];
+
+ int[] coordinates = new int[length];
+
+ // compute top and bottom of peeks
+ int bottom = left.y + height;
+ int top = bottom - HEIGHT;
+
+ // populate array with peek coordinates
+ int index = 0;
+ for (int i = 0; i < peeks; i++) {
+ coordinates[index++] = leftX + (w2 * i);
+ coordinates[index++] = bottom;
+ coordinates[index++] = coordinates[index - 3] + WIDTH;
+ coordinates[index++] = top;
+ }
+ // add the last down flank
+ coordinates[length - 2] = left.x + (w2 * peeks);
+ coordinates[length - 1] = bottom;
+ return coordinates;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellModifyDictionary.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellModifyDictionary.java
new file mode 100644
index 00000000000..96c23555d63
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTextSpellModifyDictionary.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface XTextSpellModifyDictionary {
+
+ public boolean addToLocalDictionary(String word);
+
+ public boolean addToGlobalDictionary(String word);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTypeListViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTypeListViewer.java
new file mode 100644
index 00000000000..21a40f2a2a4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XTypeListViewer.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.event.SkynetEventManager;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public abstract class XTypeListViewer extends XListViewer {
+ SkynetEventManager eventManager = SkynetEventManager.getInstance();
+
+ public XTypeListViewer(String name) {
+ super(name);
+
+ setLabelProvider(new LabelProvider());
+ setSorter(new ViewerSorter());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java
new file mode 100644
index 00000000000..9696673a747
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java
@@ -0,0 +1,437 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets;
+
+import java.sql.SQLException;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * Abstract class for all widgets used in Wizards and Editors
+ */
+public abstract class XWidget {
+
+ protected Label labelWidget = null;
+ protected String label = "";
+ protected String xmlRoot = "";
+ protected String xmlSubRoot = "";
+ protected String toolTip = null;
+ protected boolean requiredEntry = false;
+ protected boolean editable = true;
+ protected boolean verticalLabel = false;
+ protected boolean fillVertically = false;
+ protected boolean fillHorizontally = false;
+ protected boolean displayLabel = true;
+ private Set<XModifiedListener> modifiedListeners = new LinkedHashSet<XModifiedListener>();
+ private MouseListener mouseLabelListener;
+
+ /**
+ * Display "label: data"
+ */
+ public final static int RPT_NONE = 0;
+ /**
+ * Display "label: data\n\n" Default of AAtribute
+ */
+ public final static int RPT_SINGLE_LINE = 1;
+ /**
+ * Display "label:\n data\n\n"
+ */
+ public final static int RPT_MULTI_LINE = 2;
+ protected int reportType = RPT_SINGLE_LINE;
+ protected FormToolkit toolkit;
+
+ public XWidget(String label) {
+ this.label = label;
+ }
+
+ public XWidget(String label, String xmlRoot) {
+ this.label = label;
+ this.xmlRoot = xmlRoot;
+ }
+
+ public XWidget(String label, String xmlRoot, String xmlSubRoot) {
+ this.label = label;
+ this.xmlRoot = xmlRoot;
+ this.xmlSubRoot = xmlSubRoot;
+ }
+
+ public void setToolTip(String toolTip) {
+ this.toolTip = toolTip;
+ if (this.labelWidget != null) this.labelWidget.setToolTipText(toolTip);
+ }
+
+ public void addXModifiedListener(XModifiedListener listener) {
+ modifiedListeners.add(listener);
+ }
+
+ public void notifyXModifiedListeners() {
+ for (XModifiedListener listener : modifiedListeners)
+ listener.widgetModified(this);
+ }
+
+ public void setLabelError() {
+ if (labelWidget == null || labelWidget.isDisposed()) {
+ return;
+ }
+ if (!isValid()) {
+ labelWidget.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+ } else {
+ labelWidget.setForeground(null);
+ }
+ if (mouseLabelListener == null) {
+ mouseLabelListener = new MouseListener() {
+ public void mouseDoubleClick(MouseEvent e) {
+ openHelp();
+ }
+
+ public void mouseDown(MouseEvent e) {
+ }
+
+ public void mouseUp(MouseEvent e) {
+ }
+ };
+ labelWidget.addMouseListener(mouseLabelListener);
+ }
+ }
+
+ public abstract Control getControl();
+
+ public void openHelp() {
+ try {
+ if (toolTip != null && label != null) MessageDialog.openInformation(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), label + " Tool Tip", toolTip);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+
+ /**
+ * Create Widgets used to display label and entry for wizards and editors
+ */
+ public abstract void createWidgets(Composite parent, int horizontalSpan);
+
+ public void createWidgets(FormToolkit toolkit, Composite parent, int horizontalSpan) {
+ this.toolkit = toolkit;
+ createWidgets(parent, horizontalSpan);
+ if (getControl() != null) toolkit.adapt(getControl(), true, true);
+ if (labelWidget != null) toolkit.adapt(labelWidget, true, true);
+ }
+
+ /**
+ * Create Widgets used to display label and entry for wizards and editors
+ */
+ public abstract void dispose();
+
+ /**
+ * Set focus to the entry widget
+ */
+ public abstract void setFocus();
+
+ /**
+ * Refresh the entry widget
+ */
+ public abstract void refresh();
+
+ /**
+ * Return true if entry is valid
+ *
+ * @return Return boolean validity indication.
+ */
+ public abstract boolean isValid();
+
+ /**
+ * Called with string found between xml tags Used by setFromXml() String will be sent through AXml.xmlToText() before
+ * being sent to setXmlData implementation. Used by: setFromXml
+ *
+ * @param str - value to set
+ */
+ public abstract void setXmlData(String str);
+
+ /**
+ * Return string to save off between xml tags Used by call to toXml() String returned will be sent through
+ * AXml.textToXml() before being saved Used by: toXml
+ *
+ * @return Return Xml data string.
+ */
+ public abstract String getXmlData();
+
+ public abstract String toHTML(String labelFont);
+
+ public String toXml() {
+ if (xmlSubRoot.equals("")) {
+ return toXml(xmlRoot);
+ } else {
+ return toXml(xmlRoot, xmlSubRoot);
+ }
+ }
+
+ public String toXml(String xmlRoot) {
+ String s = "<" + xmlRoot + ">" + AXml.textToXml(getXmlData()) + "</" + xmlRoot + ">\n";
+ return s;
+ }
+
+ public String toXml(String xmlRoot, String xmlSubRoot) {
+ String s =
+ "<" + xmlRoot + ">" + "<" + xmlSubRoot + ">" + AXml.textToXml(getXmlData()) + "</" + xmlSubRoot + ">" + "</" + xmlRoot + ">\n";
+ return s;
+ }
+
+ public void setFromXml(String xml) throws IllegalStateException, SQLException {
+ Matcher m;
+ m = Pattern.compile("<" + xmlRoot + ">(.*?)</" + xmlRoot + ">", Pattern.MULTILINE | Pattern.DOTALL).matcher(xml);
+ if (m.find()) setXmlData(AXml.xmlToText(m.group(1)));
+ }
+
+ /**
+ * @return Returns vector of Strings.
+ */
+ public Vector<String> getDisplayLabels() {
+ Vector<String> l = new Vector<String>();
+ l.add(label);
+ return l;
+ }
+
+ /**
+ * @param displayLabel The displayLabel to set.
+ */
+ public void setDisplayLabel(String displayLabel) {
+ this.label = displayLabel;
+ }
+
+ /**
+ * @return Returns the editable.
+ */
+ public boolean isEditable() {
+ return editable;
+ }
+
+ /**
+ * @param editable The editable to set.
+ */
+ public void setEditable(boolean editable) {
+ this.editable = editable;
+ }
+
+ /**
+ * @return Returns the verticalLabel.
+ */
+ public boolean isVerticalLabel() {
+ return verticalLabel;
+ }
+
+ /**
+ * @param verticalLabel The verticalLabel to set.
+ */
+ public void setVerticalLabel(boolean verticalLabel) {
+ this.verticalLabel = verticalLabel;
+ }
+
+ /**
+ * @return Returns the xmlRoot.
+ */
+ public String getXmlRoot() {
+ return xmlRoot;
+ }
+
+ /**
+ * @param xmlRoot The xmlRoot to set.
+ */
+ public void setXmlRoot(String xmlRoot) {
+ this.xmlRoot = xmlRoot;
+ }
+
+ /**
+ * @return Returns the xmlSubRoot.
+ */
+ public String getXmlSubRoot() {
+ return xmlSubRoot;
+ }
+
+ /**
+ * @param xmlSubRoot The xmlSubRoot to set.
+ */
+ public void setXmlSubRoot(String xmlSubRoot) {
+ this.xmlSubRoot = xmlSubRoot;
+ }
+
+ /**
+ * @return Returns the toolTip.
+ */
+ public String getToolTip() {
+ return toolTip;
+ }
+
+ /**
+ * @return Returns the fillVertically.
+ */
+ public boolean isFillVertically() {
+ return fillVertically;
+ }
+
+ /**
+ * @param fillVertically The fillVertically to set.
+ */
+ public void setFillVertically(boolean fillVertically) {
+ this.fillVertically = fillVertically;
+ }
+
+ /**
+ * @return Returns the label.
+ */
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * @param label The label to set.
+ */
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ /**
+ * @return Returns the labelWidget.
+ */
+ public Label getLabelWidget() {
+ return labelWidget;
+ }
+
+ /**
+ * @param labelWidget The labelWidget to set.
+ */
+ public void setLabelWidget(Label labelWidget) {
+ this.labelWidget = labelWidget;
+ }
+
+ /**
+ * @return Returns the requiredEntry.
+ */
+ public boolean isRequiredEntry() {
+ return requiredEntry;
+ }
+
+ /**
+ * @param requiredEntry The requiredEntry to set.
+ */
+ public void setRequiredEntry(boolean requiredEntry) {
+ this.requiredEntry = requiredEntry;
+ }
+
+ /**
+ * @return Returns the reportType.
+ */
+ public int getReportType() {
+ return reportType;
+ }
+
+ /**
+ * @param reportType The reportType to set.
+ */
+ public void setReportType(int reportType) {
+ this.reportType = reportType;
+ }
+
+ /**
+ * Return data for display in Report (without label) NOTE: There should be no newlines at end of String
+ *
+ * @return Return string.
+ */
+ public abstract String getReportData();
+
+ public String toString() {
+ return toReport();
+ }
+
+ public String toReport() {
+ return toReport(reportType);
+ }
+
+ /**
+ * RPT_NONE (label: data), RPT_SINGLE_LINE (label: data\n\n), RPT_MULTI_LINE (label:\n data\n\n)
+ *
+ * @return String report
+ */
+ public String toReport(int rptType) {
+ String s = label + ": ";
+ switch (rptType) {
+ case RPT_SINGLE_LINE:
+ s += getReportData() + "\n\n";
+ break;
+ case RPT_MULTI_LINE:
+ String data = getReportData();
+ data = data.replaceAll("\n", "\n ");
+ s += "\n" + data + "\n\n";
+ break;
+ default:
+ s += getReportData();
+ break;
+ }
+ return s;
+ }
+
+ /**
+ * If set, label will be displayed with entry widget.
+ *
+ * @param displayLabel The displayLabel to set.
+ */
+ public void setDisplayLabel(boolean displayLabel) {
+ this.displayLabel = displayLabel;
+ }
+
+ public void setFillHorizontally(boolean fillHorizontally) {
+ this.fillHorizontally = fillHorizontally;
+ }
+
+ /**
+ * Used by XWidgets that perform external data storage
+ */
+ public void save() throws SQLException {
+ }
+
+ /**
+ * Used by XWidgets that perform external data storage
+ */
+ public void revert() {
+ }
+
+ /**
+ * Used by XWidgets that perform external data storage
+ */
+ public boolean isDirty() throws IllegalStateException, SQLException {
+ return false;
+ }
+
+ public abstract Object getData();
+
+ /**
+ * @return the displayLabel
+ */
+ public boolean isDisplayLabel() {
+ return displayLabel;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/DateValue.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/DateValue.java
new file mode 100644
index 00000000000..13ad5156bcf
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/DateValue.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.cellEditor;
+
+import java.util.Date;
+import org.eclipse.nebula.widgets.datechooser.DateChooserCombo;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class DateValue extends UniversalCellEditorValue {
+ private Date date;
+
+ /**
+ *
+ */
+ public DateValue() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.jdk.core.swt.universalCellEditor.UniversalCellEditorValue#selectControl(org.eclipse.swt.widgets.Control[])
+ */
+ @Override
+ public Control prepareControl(UniversalCellEditor universalEditor) {
+ DateChooserCombo datePicker = universalEditor.getDateControl();
+ datePicker.setValue(date);
+ return datePicker;
+ }
+
+ public void setValue(Date date) {
+ this.date = date;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/EnumeratedValue.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/EnumeratedValue.java
new file mode 100644
index 00000000000..b7fcfebac05
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/EnumeratedValue.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.cellEditor;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class EnumeratedValue extends UniversalCellEditorValue {
+ private String value;
+ private String[] choices;
+
+ /**
+ *
+ */
+ public EnumeratedValue() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.jdk.core.swt.universalCellEditor.UniversalCellEditorValue#selectControl(org.eclipse.swt.widgets.Control[])
+ */
+ @Override
+ public Control prepareControl(UniversalCellEditor universalEditor) {
+ Combo comboBox = universalEditor.getEnumeratedControl();
+ comboBox.setItems(choices);
+ if (value != null) comboBox.setText(value);
+
+ comboBox.setVisibleItemCount(15);
+ return comboBox;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public void setChocies(String[] choices) {
+ this.choices = choices;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/PersonValue.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/PersonValue.java
new file mode 100644
index 00000000000..327b4318cc0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/PersonValue.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.cellEditor;
+
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class PersonValue extends UniversalCellEditorValue {
+ private String name;
+ private String[] choices;
+
+ /**
+ *
+ */
+ public PersonValue() {
+ super();
+ choices = SkynetAuthentication.getInstance().getUserNames();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.jdk.core.swt.universalCellEditor.UniversalCellEditorValue#selectControl(org.eclipse.swt.widgets.Control[])
+ */
+ @Override
+ public Control prepareControl(UniversalCellEditor universalEditor) {
+ Combo comboBox = universalEditor.getPersonComboControl();
+ comboBox.setItems(choices);
+ comboBox.setText(name);
+ return comboBox;
+ }
+
+ public void setValue(String name) {
+ this.name = name;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/StringValue.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/StringValue.java
new file mode 100644
index 00000000000..d15407a1585
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/StringValue.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.cellEditor;
+
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class StringValue extends UniversalCellEditorValue {
+ private String value;
+
+ /**
+ *
+ */
+ public StringValue() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.jdk.core.swt.universalCellEditor.UniversalCellEditorValue#selectControl(org.eclipse.swt.widgets.Control[])
+ */
+ @Override
+ public Control prepareControl(UniversalCellEditor universalEditor) {
+ Text textBox = universalEditor.getStringControl();
+ textBox.setText(value);
+ return textBox;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditor.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditor.java
new file mode 100644
index 00000000000..fa08e79cc94
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditor.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.cellEditor;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.nebula.widgets.datechooser.DateChooserCombo;
+import org.eclipse.nebula.widgets.formattedtext.DateFormatter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public class UniversalCellEditor extends CellEditor {
+ private Combo comboBox;
+ private Text textBox;
+ private DateChooserCombo datePicker;
+ private static final DateFormatter plainDate = new DateFormatter("MM/dd/yyyy");
+ private Control control;
+ private boolean personCombo = false;
+
+ /**
+ * @param parent
+ */
+ public UniversalCellEditor(Composite parent) {
+ this(parent, SWT.NONE);
+ }
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public UniversalCellEditor(Composite parent, int style) {
+ super(parent, style);
+ this.comboBox = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
+ this.textBox = new Text(parent, SWT.SINGLE);
+ this.datePicker = new DateChooserCombo(parent, SWT.BORDER);
+ datePicker.setFormatter(plainDate);
+
+ setValueValid(true);
+ }
+
+ public Text getStringControl() {
+ return textBox;
+ }
+
+ public Combo getEnumeratedControl() {
+ return comboBox;
+ }
+
+ public Combo getPersonComboControl() {
+ personCombo = true;
+ return comboBox;
+ }
+
+ public DateChooserCombo getDateControl() {
+ return datePicker;
+ }
+
+ /**
+ * Since UniveralCellEditor is managing its own controls and the CellEditor's mechanisms for managing the control
+ * have been completly overridden, return null back to CellEditor when it calls this method
+ */
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.CellEditor#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createControl(Composite parent) {
+ return null;
+ }
+
+ /**
+ * Returns whether this cell editor is activated.
+ *
+ * @return <code>true</code> if this cell editor's control is currently visible, and <code>false</code> if not
+ * visible
+ */
+ @Override
+ public boolean isActivated() {
+ return control != null && control.isVisible();
+ }
+
+ /**
+ * Returns the control used to implement this cell editor.
+ *
+ * @return the control, or <code>null</code> if this cell editor has no control
+ */
+ @Override
+ public Control getControl() {
+ return control;
+ }
+
+ /**
+ * Hides this cell editor's control. Does nothing if this cell editor is not visible.
+ */
+ @Override
+ public void deactivate() {
+ if (control != null && !control.isDisposed()) {
+ control.setVisible(false);
+ }
+ }
+
+ /**
+ * Disposes of this cell editor and frees any associated SWT resources.
+ */
+ @Override
+ public void dispose() {
+ if (control != null && !control.isDisposed()) {
+ control.dispose();
+ }
+ control = null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.CellEditor#doGetValue()
+ */
+ @Override
+ protected Object doGetValue() {
+ if ((control instanceof Combo) && personCombo) {
+ return comboBox.getText();
+ }
+ if (control instanceof Combo) {
+ return comboBox.getText();
+ }
+ if (control instanceof Text) {
+ return textBox.getText();
+ }
+ if (control instanceof DateChooserCombo) {
+ return datePicker.getValue();
+ }
+ throw new IllegalArgumentException("Control was of an unexpected type: " + control.getClass().getName());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.CellEditor#doSetFocus()
+ */
+ @Override
+ protected void doSetFocus() {
+ control.setFocus();
+ }
+
+ /**
+ * called just befor a cell is to be edited
+ */
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.CellEditor#doSetValue(java.lang.Object)
+ */
+ @Override
+ protected void doSetValue(Object value) {
+ if (value instanceof UniversalCellEditorValue) {
+ UniversalCellEditorValue editorValue = (UniversalCellEditorValue) value;
+ control = editorValue.prepareControl(this);
+ } else {
+ throw new IllegalArgumentException("value of unexpected type: " + value.getClass().getName());
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditorValue.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditorValue.java
new file mode 100644
index 00000000000..1a4f703b453
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/cellEditor/UniversalCellEditorValue.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.cellEditor;
+
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Ryan D. Brooks
+ */
+public abstract class UniversalCellEditorValue {
+ /**
+ *
+ */
+ protected UniversalCellEditorValue() {
+ super();
+ }
+
+ public abstract Control prepareControl(UniversalCellEditor universalEditor);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactCheckTreeDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactCheckTreeDialog.java
new file mode 100644
index 00000000000..7cb4f9d72c0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactCheckTreeDialog.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactDescriptiveLabelProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactCheckTreeDialog extends CheckedTreeSelectionDialog {
+
+ public ArtifactCheckTreeDialog(Shell parent, Collection<Artifact> artifacts) {
+ super(parent, new ArtifactDescriptiveLabelProvider(), new ArtifactTreeContentProvider());
+ setInput(artifacts);
+ }
+
+ public ArtifactCheckTreeDialog(Shell parent) {
+ super(parent, new ArtifactDescriptiveLabelProvider(), new ArtifactTreeContentProvider());
+ }
+
+ public Collection<Artifact> getSelection() {
+ ArrayList<Artifact> arts = new ArrayList<Artifact>();
+ for (Object obj : getResult())
+ arts.add((Artifact) obj);
+ return arts;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+ getTreeViewer().setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((Artifact) e1).getDescriptiveName(), ((Artifact) e2).getDescriptiveName());
+ }
+ });
+ return c;
+ }
+
+ public void setArtifacts(Collection<? extends Artifact> artifacts) {
+ setInput(artifacts);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactListDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactListDialog.java
new file mode 100644
index 00000000000..352963e1477
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactListDialog.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactDescriptiveLabelProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ListDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ArtifactListDialog extends ListDialog {
+
+ public ArtifactListDialog(Shell parent) {
+ this(parent, null);
+ }
+
+ public ArtifactListDialog(Shell parent, Collection<Artifact> artifacts) {
+ super(parent);
+ setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new ArtifactDescriptiveLabelProvider());
+ }
+
+ public Artifact getSelection() {
+ return (Artifact) getResult()[0];
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+ getTableViewer().setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((Artifact) e1).getDescriptiveName(), ((Artifact) e2).getDescriptiveName());
+ }
+ });
+ return c;
+ }
+
+ public void setArtifacts(Collection<? extends Artifact> artifacts) {
+ setInput(artifacts);
+ }
+
+ @Override
+ protected void okPressed() {
+ if (getTableViewer().getSelection().isEmpty()) {
+ AWorkbench.popup("ERROR", "Must make selection.");
+ return;
+ }
+ super.okPressed();
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeChildrenContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeChildrenContentProvider.java
new file mode 100644
index 00000000000..075bdffac81
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeChildrenContentProvider.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.util.Artifacts;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+
+/**
+ * Shows artifacts and children of given class
+ *
+ * @author Donald G. Dunne
+ */
+public class ArtifactTreeChildrenContentProvider implements ITreeContentProvider {
+ private static Object[] EMPTY_ARRAY = new Object[0];
+ protected TreeViewer viewer;
+ private final Class<? extends Artifact> clazz;
+
+ public ArtifactTreeChildrenContentProvider(Class<? extends Artifact> clazz) {
+ this.clazz = clazz;
+ }
+
+ /*
+ * @see IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /**
+ * Notifies this content provider that the given viewer's input has been switched to a different element.
+ * <p>
+ * A typical use for this method is registering the content provider as a listener to changes on the new input (using
+ * model-specific means), and deregistering the viewer from the old input. In response to these change notifications,
+ * the content provider propagates the changes to the viewer.
+ * </p>
+ *
+ * @param viewer the viewer
+ * @param oldInput the old input element, or <code>null</code> if the viewer did not previously have an input
+ * @param newInput the new input element, or <code>null</code> if the viewer does not have an input
+ * @see IContentProvider#inputChanged(Viewer, Object, Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = (TreeViewer) viewer;
+ }
+
+ /**
+ * The tree viewer calls its content provider&#8217;s getChildren method when it needs to create or display the child
+ * elements of the domain object, <b>parent </b>. This method should answer an array of domain objects that represent
+ * the unfiltered children of <b>parent </b>
+ *
+ * @see ITreeContentProvider#getChildren(Object)
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Collection) {
+ return ((Collection) parentElement).toArray();
+ }
+ if (parentElement.getClass().equals(clazz)) {
+ try {
+ return Artifacts.getChildrenOfTypeSet((Artifact) parentElement, clazz, true).toArray();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ return EMPTY_ARRAY;
+ }
+
+ /*
+ * @see ITreeContentProvider#getParent(Object)
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ /**
+ * The tree viewer asks its content provider if the domain object represented by <b>element </b> has any children.
+ * This method is used by the tree viewer to determine whether or not a plus or minus should appear on the tree
+ * widget.
+ *
+ * @see ITreeContentProvider#hasChildren(Object)
+ */
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0;
+ }
+
+ /**
+ * This is the method invoked by calling the <b>setInput </b> method on the tree viewer. In fact, the <b>getElements
+ * </b> method is called only in response to the tree viewer's <b>setInput </b> method and should answer with the
+ * appropriate domain objects of the inputElement. The <b>getElements </b> and <b>getChildren </b> methods operate in
+ * a similar way. Depending on your domain objects, you may have the <b>getElements </b> simply return the result of
+ * calling <b>getChildren </b>. The two methods are kept distinct because it provides a clean way to differentiate
+ * between the root domain object and all other domain objects.
+ *
+ * @see IStructuredContentProvider#getElements(Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeContentProvider.java
new file mode 100644
index 00000000000..344dd326a27
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ArtifactTreeContentProvider.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * The basis for the comments in this class can be found at
+ * http://www.eclipse.org/articles/treeviewer-cg/TreeViewerArticle.htm
+ *
+ * @author Ryan D. Brooks
+ */
+public class ArtifactTreeContentProvider implements ITreeContentProvider {
+ private static Object[] EMPTY_ARRAY = new Object[0];
+ protected TreeViewer viewer;
+
+ public ArtifactTreeContentProvider() {
+ }
+
+ /*
+ * @see IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /**
+ * Notifies this content provider that the given viewer's input has been switched to a different element.
+ * <p>
+ * A typical use for this method is registering the content provider as a listener to changes on the new input (using
+ * model-specific means), and deregistering the viewer from the old input. In response to these change notifications,
+ * the content provider propagates the changes to the viewer.
+ * </p>
+ *
+ * @param viewer the viewer
+ * @param oldInput the old input element, or <code>null</code> if the viewer did not previously have an input
+ * @param newInput the new input element, or <code>null</code> if the viewer does not have an input
+ * @see IContentProvider#inputChanged(Viewer, Object, Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = (TreeViewer) viewer;
+ // if (oldInput != null) {
+ // ((Artifact) oldInput).removeListenerRecursively(this);
+ // }
+ // if (newInput != null) { // TODO: must handle fact that only root item has a listener added
+ // ((Artifact) newInput).addListener(this);
+ // }
+ }
+
+ /**
+ * The tree viewer calls its content provider&#8217;s getChildren method when it needs to create or display the child
+ * elements of the domain object, <b>parent </b>. This method should answer an array of domain objects that represent
+ * the unfiltered children of <b>parent </b>
+ *
+ * @see ITreeContentProvider#getChildren(Object)
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Collection) {
+ return ((Collection) parentElement).toArray();
+ }
+ return EMPTY_ARRAY;
+ }
+
+ /*
+ * @see ITreeContentProvider#getParent(Object)
+ */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ /**
+ * The tree viewer asks its content provider if the domain object represented by <b>element </b> has any children.
+ * This method is used by the tree viewer to determine whether or not a plus or minus should appear on the tree
+ * widget.
+ *
+ * @see ITreeContentProvider#hasChildren(Object)
+ */
+ public boolean hasChildren(Object element) {
+ return false;
+ }
+
+ /**
+ * This is the method invoked by calling the <b>setInput </b> method on the tree viewer. In fact, the <b>getElements
+ * </b> method is called only in response to the tree viewer's <b>setInput </b> method and should answer with the
+ * appropriate domain objects of the inputElement. The <b>getElements </b> and <b>getChildren </b> methods operate in
+ * a similar way. Depending on your domain objects, you may have the <b>getElements </b> simply return the result of
+ * calling <b>getChildren </b>. The two methods are kept distinct because it provides a clean way to differentiate
+ * between the root domain object and all other domain objects.
+ *
+ * @see IStructuredContentProvider#getElements(Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ChangeTypeDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ChangeTypeDialog.java
new file mode 100644
index 00000000000..91b57e4749a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ChangeTypeDialog.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.ArrayList;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.util.ChangeType;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ListDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ChangeTypeDialog extends ListDialog {
+
+ ChangeType selected = null;
+
+ public ChangeTypeDialog(Shell parent) {
+ super(parent);
+ setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new ChangeLabelProvider());
+ setInput(ChangeType.values());
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ setTitle("Select Changet Type");
+ }
+
+ public ChangeType getSelection() {
+ return (ChangeType) getResult()[0];
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+
+ (new Label(container, SWT.NONE)).setText(" Select Change Type:");
+
+ Control c = super.createDialogArea(container);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 80;
+ gd.widthHint = 300;
+ getTableViewer().getTable().setLayoutData(gd);
+ GridLayout layout = ALayout.getZeroMarginLayout();
+ layout.marginWidth = 20;
+ getTableViewer().getTable().getParent().setLayout(layout);
+ if (selected != null) {
+ ArrayList<Object> sel = new ArrayList<Object>();
+ sel.add(selected);
+ getTableViewer().setSelection(new StructuredSelection(sel.toArray(new Object[sel.size()])));
+ getTableViewer().getTable().setFocus();
+ }
+ return c;
+ }
+
+ @Override
+ protected void okPressed() {
+ if (getTableViewer().getSelection().isEmpty()) {
+ AWorkbench.popup("ERROR", "Must make selection.");
+ return;
+ }
+ super.okPressed();
+ }
+
+ public class ChangeLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ ChangeType type = (ChangeType) arg0;
+ return type.getImage();
+ }
+
+ public String getText(Object arg0) {
+ ChangeType type = (ChangeType) arg0;
+ return type.name();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+
+ }
+
+ public void setSelected(ChangeType selected) {
+ this.selected = selected;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/CheckBoxDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/CheckBoxDialog.java
new file mode 100644
index 00000000000..d735713fb55
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/CheckBoxDialog.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+public class CheckBoxDialog extends MessageDialog {
+
+ private Button checkButton;
+ boolean fillVertically = false;
+ private String confirmationStatement;
+
+ //Have to save off the value so it is available after the dialog is closed since checkButton will get disposed.
+ private boolean checked = false;
+
+ public CheckBoxDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, String confirmationStatement, int dialogImageType, int defaultIndex) {
+ super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, new String[] {"OK", "Cancel"},
+ defaultIndex);
+
+ this.confirmationStatement = confirmationStatement;
+ setBlockOnOpen(true);
+ }
+
+ protected Control createCustomArea(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(2, false));
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+
+ checkButton = new Button(composite, SWT.CHECK);
+ checkButton.setText(confirmationStatement);
+ checkButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ checked = checkButton.getSelection();
+ getButton(0).setEnabled(checked);
+ }
+ });
+
+ return composite;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+
+ // Start off with OK disabled
+ getButton(0).setEnabled(false);
+ }
+
+ public boolean isChecked() {
+ return checked;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/DateSelectionDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/DateSelectionDialog.java
new file mode 100644
index 00000000000..c3439b5346c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/DateSelectionDialog.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.Date;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.nebula.widgets.datechooser.DateChooser;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class DateSelectionDialog extends MessageDialog {
+
+ private Date selectedDate;
+
+ private final String dialogMessage;
+ private boolean noneSelected = false;
+
+ public DateSelectionDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex, Date selectedDate) {
+ super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels,
+ defaultIndex);
+ this.selectedDate = selectedDate;
+ this.dialogMessage = dialogMessage;
+ }
+
+ public DateSelectionDialog(String dialogTitle, String dialogMessage, Date selectedDate) {
+ this(Display.getCurrent().getActiveShell(), dialogTitle, null, dialogMessage, MessageDialog.NONE, new String[] {
+ "Ok", "Cancel"}, 0, selectedDate);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+
+ Composite filterComp = new Composite(container, SWT.NONE);
+
+ filterComp.setLayout(new GridLayout(1, false));
+ filterComp.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ (new Label(filterComp, SWT.None)).setText(dialogMessage);
+
+ final DateChooser dp = new DateChooser(filterComp, SWT.SINGLE | SWT.FLAT);
+ dp.setFooterVisible(true);
+ dp.addClearListener(new DateChooser.ClearListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.nebula.widgets.datechooser.DateChooser.ClearListener#handleClearEvent()
+ */
+ public void handleClearEvent() {
+ noneSelected = true;
+ }
+ });
+ if (selectedDate != null) dp.setSelectedDate(selectedDate);
+ dp.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ noneSelected = false;
+ selectedDate = dp.getSelectedDate();
+ }
+ });
+
+ // set selected date if != null
+ return filterComp;
+ }
+
+ /**
+ * @return the selectedDate
+ */
+ public Date getSelectedDate() {
+ return selectedDate;
+ }
+
+ /**
+ * @param selectedDate the selectedDate to set
+ */
+ public void setSelectedDate(Date selectedDate) {
+ this.selectedDate = selectedDate;
+ }
+
+ /**
+ * @return the noneSelected
+ */
+ public boolean isNoneSelected() {
+ return noneSelected;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/Dialogs.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/Dialogs.java
new file mode 100644
index 00000000000..45f05e33499
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/Dialogs.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.util.HtmlExportTable;
+import org.eclipse.osee.framework.ui.skynet.util.email.EmailWizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class Dialogs {
+
+ /**
+ * Allows user to save html from a file selection dialog
+ *
+ * @param htmlText
+ * @param openInSystem true if desire to open resulting file in system browser after saving
+ * @return
+ */
+ public static Result saveHtmlDialog(String htmlText, boolean openInSystem) {
+ if (htmlText == null || htmlText.equals("")) {
+ AWorkbench.popup("ERROR", "Save data is empty. Nothing to save.");
+ return Result.FalseResult;
+ }
+ final FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell().getShell(), SWT.SAVE);
+ dialog.setFilterExtensions(new String[] {"*.html"});
+ String filename = dialog.open();
+ if (filename == null || filename.equals("")) return Result.FalseResult;
+ AFile.writeFile(filename, htmlText);
+ if (openInSystem) Program.launch(filename);
+ return Result.TrueResult;
+ }
+
+ public static Result emailDialog(String title, String text) {
+ if (text == null || text.equals("")) {
+ AWorkbench.popup("ERROR", "Save data is empty. Nothing to email.");
+ return Result.FalseResult;
+ }
+ EmailWizard ew = new EmailWizard(text, title, null, null);
+ WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), ew);
+ dialog.create();
+ if (dialog.open() == 0) {
+ return Result.TrueResult;
+ }
+ return Result.FalseResult;
+ }
+
+ public static Result exportHtmlTableDialog(String title, String htmlText, boolean openInSystem) {
+ if (htmlText == null || htmlText.equals("")) {
+ AWorkbench.popup("ERROR", "Save data is empty. Nothing to export.");
+ return Result.FalseResult;
+ }
+ return (new HtmlExportTable((title.equals("") ? "Exported Text" : title), htmlText, openInSystem)).export();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java
new file mode 100644
index 00000000000..d3d5bec1d7d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.ui.plugin.util.IShellCloseEvent;
+import org.eclipse.osee.framework.ui.skynet.widgets.XText;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseMoveListener;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class EntryDialog extends MessageDialog {
+
+ XText text;
+ Composite c;
+ String entryText = "";
+ String validationRegularExpression = null;
+ String validationErrorString = "";
+ Button ok;
+ MouseMoveListener listener;
+ Label errorLabel;
+ boolean fillVertically = false;
+
+ private List<IShellCloseEvent> closeEventListeners = new ArrayList<IShellCloseEvent>();
+
+ public EntryDialog(String dialogTitle, String dialogMessage) {
+ super(Display.getCurrent().getActiveShell(), dialogTitle, null, dialogMessage, MessageDialog.QUESTION,
+ new String[] {"OK", "Cancel"}, 0);
+ }
+
+ public EntryDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex) {
+ super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels,
+ defaultIndex);
+ }
+
+ protected Control createCustomArea(Composite parent) {
+
+ c = new Composite(parent, SWT.NONE);
+ c.setLayout(new GridLayout(2, false));
+ c.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+
+ listener = new MouseMoveListener() {
+
+ public void mouseMove(MouseEvent e) {
+ setInitialButtonState();
+ }
+ };
+ c.addMouseMoveListener(listener);
+
+ // Create error label
+ errorLabel = new Label(c, SWT.NONE);
+ errorLabel.setSize(errorLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ errorLabel.setText("");
+
+ text = new XText();
+ text.setFillHorizontally(true);
+ text.setFocus();
+ text.setDisplayLabel(false);
+ if (!entryText.equals("")) text.set(entryText);
+ if (fillVertically) {
+ text.setFillVertically(true);
+ text.setHeight(200);
+ }
+ text.createWidgets(c, 2);
+
+ ModifyListener modifyListener = new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ handleModified();
+ }
+ };
+ text.addModifyListener(modifyListener);
+
+ c.layout();
+ parent.layout();
+ return c;
+ }
+
+ public void setInitialButtonState() {
+ if (ok == null) {
+ ok = getButton(0);
+ handleModified();
+ }
+ c.removeMouseMoveListener(listener);
+ }
+
+ public void handleModified() {
+ if (text != null) {
+ entryText = text.get();
+ if (text.get().equals("") || !isEntryValid()) {
+ getButton(getDefaultButtonIndex()).setEnabled(false);
+ errorLabel.setText(validationErrorString);
+ errorLabel.update();
+ c.layout();
+ } else {
+ getButton(getDefaultButtonIndex()).setEnabled(true);
+ errorLabel.setText("");
+ errorLabel.update();
+ c.layout();
+ }
+ }
+ }
+
+ public String getEntry() {
+ return entryText;
+ }
+
+ public void setEntry(String entry) {
+ if (text != null) text.set(entry);
+ this.entryText = entry;
+ }
+
+ /**
+ * override this method to make own checks on entry this will be called with every keystroke
+ *
+ * @return true if entry is valid
+ */
+ public boolean isEntryValid() {
+ if (validationRegularExpression == null) {
+ return true;
+ }
+ // verify title is alpha-numeric with spaces and dashes
+ Matcher m = Pattern.compile(validationRegularExpression).matcher(text.get());
+ return m.find();
+ }
+
+ public void setValidationRegularExpression(String regExp) {
+ validationRegularExpression = regExp;
+ }
+
+ public void setValidationErrorString(String errorText) {
+ validationErrorString = errorText;
+ }
+
+ /**
+ * Calling will enable dialog to loose focus
+ */
+ public void setModeless() {
+ setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS);
+ setBlockOnOpen(false);
+ }
+
+ public void setSelectionListener(SelectionListener listener) {
+ for (int i = 0; i < getButtonLabels().length; i++) {
+ Button button = getButton(i);
+ button.addSelectionListener(listener);
+ }
+ }
+
+ public boolean isFillVertically() {
+ return fillVertically;
+ }
+
+ public void setFillVertically(boolean fillVertically) {
+ this.fillVertically = fillVertically;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.MessageDialog#handleShellCloseEvent()
+ */
+ @Override
+ protected void handleShellCloseEvent() {
+ super.handleShellCloseEvent();
+ for (IShellCloseEvent event : closeEventListeners) {
+ event.onClose();
+ }
+ }
+
+ public void addShellCloseEventListeners(IShellCloseEvent event) {
+ closeEventListeners.add(event);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/GroupListDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/GroupListDialog.java
new file mode 100644
index 00000000000..d914ee10361
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/GroupListDialog.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.UniversalGroup;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class GroupListDialog extends ArtifactListDialog {
+
+ public GroupListDialog(Shell parent) {
+ super(parent, null);
+ setTitle("Select group");
+ setMessage("Select group");
+ ArrayList<Artifact> arts = new ArrayList<Artifact>();
+ for (Artifact art : UniversalGroup.getGroups())
+ arts.add(art);
+ setArtifacts(arts);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/HtmlDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/HtmlDialog.java
new file mode 100644
index 00000000000..8d2347f0105
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/HtmlDialog.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.io.File;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.browser.LocationListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+public class HtmlDialog extends MessageDialog {
+ protected Browser b;
+ private LocationListener listener;
+ private final String html;
+
+ public HtmlDialog(String title, String message, String html) {
+ super(Display.getCurrent().getActiveShell(), title, null, message, SWT.NONE, new String[] {"OK", "Cancel"}, 0);
+ this.html = html;
+ }
+
+ /**
+ * Add listener to browser widget.
+ *
+ * @param listener
+ */
+ public void addLocationListener(LocationListener listener) {
+ this.listener = listener;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite c = (Composite) super.createDialogArea(parent);
+ b = new Browser(c, SWT.BORDER);
+ GridData gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
+ b.setLayoutData(gd);
+ b.setText(html);
+ b.setSize(500, 500);
+ if (listener != null) b.addLocationListener(listener);
+ b.setMenu(pageOverviewGetPopup());
+
+ return c;
+ }
+
+ public Menu pageOverviewGetPopup() {
+ Menu menu = new Menu(b.getShell());
+ MenuItem item = new MenuItem(menu, SWT.NONE);
+ item.setText("View Source");
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ String file = System.getProperty("user.home") + File.separator + "out.html";
+ AFile.writeFile(file, html);
+ Program.launch(file);
+ }
+ });
+ return menu;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ImageDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ImageDialog.java
new file mode 100644
index 00000000000..30444524f00
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/ImageDialog.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.io.File;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.plugin.util.OseeData;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageLoader;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public class ImageDialog extends MessageDialog {
+ private String title = "Image Viewer";
+ private static String buttons[] = new String[] {"Export as JPG", "Export as PNG", "Close"};
+ private final Image image;
+
+ public ImageDialog(Image image, Shell parentShell) {
+ this(image, parentShell, buttons, 3);
+ }
+
+ public ImageDialog(Image image, Shell parentShell, String[] buttons, int defaultButton) {
+ super(parentShell, "", null, "", MessageDialog.NONE, buttons, defaultButton);
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ this.image = image;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ getShell().setText(title);
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(ALayout.getZeroMarginLayout());
+ comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ comp.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
+
+ ScrolledComposite sc = new ScrolledComposite(comp, SWT.V_SCROLL | SWT.H_SCROLL);
+ Canvas canvas = new Canvas(sc, SWT.BORDER);
+ sc.setContent(canvas);
+ canvas.setBounds(image.getBounds());
+ canvas.addPaintListener(new PaintListener() {
+ public void paintControl(PaintEvent e) {
+ e.gc.drawImage(image, 0, 0);
+ }
+ });
+ comp.layout();
+ return comp;
+ }
+
+ private enum ImageType {
+ JPG, PNG
+ };
+
+ protected void handleSave(ImageType imageType) {
+ ImageLoader loader = new ImageLoader();
+ ImageData imgData = image.getImageData();
+ loader.data = new ImageData[] {imgData};
+ int format = 0;
+ if (imageType == ImageType.JPG)
+ format = SWT.IMAGE_JPEG;
+ else if (imageType == ImageType.PNG) format = SWT.IMAGE_PNG;
+ File file = OseeData.getFile(GUID.generateGuidStr() + "." + imageType.name());
+ loader.save(file.getAbsolutePath(), format);
+ Program.launch(file.getAbsolutePath());
+ }
+
+ @Override
+ protected void buttonPressed(int buttonId) {
+ if (buttonId == 0)
+ handleSave(ImageType.JPG);
+ else if (buttonId == 1)
+ handleSave(ImageType.PNG);
+ else
+ close();
+ setReturnCode(buttonId);
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserCheckTreeDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserCheckTreeDialog.java
new file mode 100644
index 00000000000..0281ffc5507
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserCheckTreeDialog.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class UserCheckTreeDialog extends ArtifactCheckTreeDialog {
+
+ private Collection<User> initialSel;
+
+ /**
+ * @param parent
+ * @param artifacts
+ */
+ public UserCheckTreeDialog(Shell parent, Collection<User> artifacts) {
+ super(parent);
+ super.setInput(artifacts);
+ }
+
+ public UserCheckTreeDialog(Shell parent) {
+ this(parent, SkynetAuthentication.getInstance().getUsers());
+ }
+
+ public void setInitialSelections(Collection<User> initialSel) {
+ this.initialSel = initialSel;
+ ArrayList<Object> objs = new ArrayList<Object>();
+ for (Artifact sel : initialSel)
+ objs.add(sel);
+ super.setInitialSelections((Object[]) objs.toArray(new Object[objs.size()]));
+ }
+
+ public Collection<User> getUsersSelected() {
+ Set<User> selected = new HashSet<User>();
+ for (Artifact art : getSelection())
+ selected.add((User) art);
+ return selected;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+ getTreeViewer().setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ User user1 = ((User) e1);
+ User user2 = ((User) e2);
+ if (SkynetAuthentication.getInstance().getAuthenticatedUser().equals(user1)) {
+ return -1;
+ }
+ if (SkynetAuthentication.getInstance().getAuthenticatedUser().equals(user2)) {
+ return 1;
+ }
+ if (initialSel != null) {
+ if (initialSel.contains(user1) && initialSel.contains(user2)) {
+ return getComparator().compare(user1.getName(), user2.getName());
+ }
+ if (initialSel.contains(user1)) {
+ return -1;
+ }
+ if (initialSel.contains(user2)) {
+ return 1;
+ }
+ }
+ return getComparator().compare(user1.getName(), user2.getName());
+ }
+ });
+ return c;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserListDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserListDialog.java
new file mode 100644
index 00000000000..e30a1f957ff
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/UserListDialog.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.dialog;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ListDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class UserListDialog extends ListDialog {
+
+ public UserListDialog(Shell parent) {
+ this(parent, "Select User");
+ }
+
+ public UserListDialog(Shell parent, String title) {
+ super(parent);
+ setTitle(title);
+ setMessage(title);
+ setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof User) {
+ return ((User) element).getName();
+ }
+ return "Unknown Object";
+ }
+ });
+ setInput(SkynetAuthentication.getInstance().getUsers());
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control c = super.createDialogArea(container);
+ getTableViewer().setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((User) e1).getName(), ((User) e2).getName());
+ }
+ });
+ return c;
+ }
+
+ public User getSelection() {
+ return (User) getResult()[0];
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DefaultXWidgetOptionResolver.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DefaultXWidgetOptionResolver.java
new file mode 100644
index 00000000000..fbd7d72c669
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DefaultXWidgetOptionResolver.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class DefaultXWidgetOptionResolver implements IXWidgetOptionResolver {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWidgetOptionResolver#getWidgetOptions(java.lang.String)
+ */
+ public String[] getWidgetOptions(DynamicXWidgetLayoutData xWidgetData) {
+ Matcher m = Pattern.compile("\\((.*?)\\)").matcher(xWidgetData.getXWidgetName());
+ if (m.find()) {
+ String data = m.group(1);
+ return data.split(",");
+ }
+ return new String[] {};
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayout.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayout.java
new file mode 100644
index 00000000000..17b91e52d9f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayout.java
@@ -0,0 +1,348 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import javax.xml.parsers.ParserConfigurationException;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.XWidgetParser;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.IDamWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.XLabelDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XText;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class DynamicXWidgetLayout {
+
+ private Set<DynamicXWidgetLayoutData> datas = new LinkedHashSet<DynamicXWidgetLayoutData>();
+ private Map<String, DynamicXWidgetLayoutData> nameToLayoutData = new HashMap<String, DynamicXWidgetLayoutData>();
+ private ArrayList<ArrayList<String>> orRequired = new ArrayList<ArrayList<String>>();
+ private ArrayList<ArrayList<String>> xorRequired = new ArrayList<ArrayList<String>>();
+ public static String OR_REQUIRED = "OrRequired";
+ public static String XOR_REQUIRED = "XOrRequired";
+ public static String XWIDGET = "XWidget";
+ public static String XWIDGETS_LIST = "xWidgets";
+ private final IDynamicWidgetLayoutListener dynamicWidgetLayoutListener;
+ private final IXWidgetOptionResolver optionResolver;
+
+ public DynamicXWidgetLayout() {
+ this(null, new DefaultXWidgetOptionResolver());
+ }
+
+ public DynamicXWidgetLayout(IDynamicWidgetLayoutListener dynamicWidgetLayoutListener, IXWidgetOptionResolver optionResolver) {
+ this.dynamicWidgetLayoutListener = dynamicWidgetLayoutListener;
+ this.optionResolver = optionResolver;
+ }
+
+ public void dispose() {
+ for (DynamicXWidgetLayoutData layoutData : getLayoutDatas()) {
+ layoutData.getXWidget().dispose();
+ }
+ }
+
+ public void createBody(FormToolkit toolkit, Composite parent, Artifact artifact, XModifiedListener xModListener, boolean isEditable) {
+ Composite attrComp = null;
+ if (toolkit != null)
+ attrComp = toolkit.createComposite(parent);
+ else
+ attrComp = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginWidth = layout.marginHeight = 2;
+ attrComp.setLayout(layout);
+ attrComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ if (toolkit != null) toolkit.paintBordersFor(attrComp);
+
+ boolean inChildComposite = false;
+ Composite childComp = null;
+ // Create Attributes
+ for (DynamicXWidgetLayoutData xWidgetLayoutData : getLayoutDatas()) {
+ Composite useComp = attrComp;
+ if (xWidgetLayoutData.getBeginComposite() > 0) {
+ childComp = new Composite(attrComp, SWT.NONE);
+ childComp.setLayout(ALayout.getZeroMarginLayout(xWidgetLayoutData.getBeginComposite(), false));
+ childComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ if (toolkit != null) toolkit.adapt(childComp);
+ inChildComposite = true;
+ }
+ if (inChildComposite) {
+ useComp = childComp;
+ if (xWidgetLayoutData.isEndComposite()) inChildComposite = false;
+ } else if (xWidgetLayoutData.isHorizontalLabel()) {
+ useComp = new Composite(attrComp, SWT.NONE);
+ useComp.setLayout(ALayout.getZeroMarginLayout(2, false));
+ useComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ if (toolkit != null) toolkit.adapt(useComp);
+ }
+
+ XWidget xWidget = xWidgetLayoutData.getXWidget();
+ if (!xWidgetLayoutData.getName().equals("")) xWidget.setLabel(xWidgetLayoutData.getName().replaceFirst(
+ "^.*?\\.", ""));
+ if (xWidgetLayoutData.getToolTip() != null && !xWidgetLayoutData.getToolTip().equals("")) xWidget.setToolTip(xWidgetLayoutData.getToolTip());
+ xWidget.setRequiredEntry(xWidgetLayoutData.isRequired());
+ if (xWidgetLayoutData.getFill() != DynamicXWidgetLayoutData.Fill.None) {
+ if (xWidget instanceof XText) {
+ if (xWidgetLayoutData.getFill() == DynamicXWidgetLayoutData.Fill.Horizontally) ((XText) xWidget).setFillHorizontally(true);
+ if (xWidgetLayoutData.getFill() == DynamicXWidgetLayoutData.Fill.Vertically) {
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ useComp.setLayoutData(gd);
+ ((XText) xWidget).setFillVertically(true);
+ }
+ if (xWidgetLayoutData.isHeightSet()) ((XText) xWidget).setHeight(xWidgetLayoutData.getHeight());
+ }
+ }
+ xWidget.setEditable(isEditable);
+ if (dynamicWidgetLayoutListener != null) dynamicWidgetLayoutListener.widgetCreating(xWidget, toolkit,
+ artifact, this, xModListener, isEditable);
+ if (toolkit != null)
+ xWidget.createWidgets(toolkit, useComp, 2);
+ else
+ xWidget.createWidgets(useComp, 2);
+ if (xWidgetLayoutData.getFill() == DynamicXWidgetLayoutData.Fill.Vertically) {
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.minimumHeight = 60;
+ ((XText) xWidget).getStyledText().setLayoutData(gd);
+ }
+ if (artifact != null && (xWidget instanceof IDamWidget)) {
+ try {
+ ((IDamWidget) xWidget).setArtifact(artifact, xWidgetLayoutData.getLayoutName());
+ } catch (IllegalStateException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ if (artifact != null && (xWidget instanceof XLabelDam)) ((XLabelDam) xWidget).setArtifact(artifact,
+ xWidgetLayoutData.getLayoutName());
+ if (xModListener != null) xWidget.addXModifiedListener(xModListener);
+ xWidget.addXModifiedListener(refreshRequiredModListener);
+
+ if (dynamicWidgetLayoutListener != null) {
+ dynamicWidgetLayoutListener.widgetCreated(xWidget, toolkit, artifact, this, xModListener, isEditable);
+ dynamicWidgetLayoutListener.createXWidgetLayoutData(xWidgetLayoutData, xWidget, toolkit, artifact,
+ xModListener, isEditable);
+ }
+ xWidget.setLabelError();
+ }
+ refreshOrAndXOrRequiredFlags();
+ }
+ private XModifiedListener refreshRequiredModListener = new XModifiedListener() {
+ public void widgetModified(XWidget widget) {
+ refreshOrAndXOrRequiredFlags();
+ }
+ };
+
+ /**
+ * Required flags are set per XWidget and the labels change from Red to Black when the widget has been edited
+ * successfully. When a page is made up of two or more widgets that need to work together, these required flags need
+ * to be set/unset whenever a widget from the group gets modified.
+ */
+ private void refreshOrAndXOrRequiredFlags() {
+ // Handle orRequired
+ for (ArrayList<String> orReq : orRequired) {
+ // If group is complete, change all to black, else all red
+ boolean isComplete = isOrGroupFromAttrNameComplete(orReq.iterator().next());
+ for (String aName : orReq) {
+ DynamicXWidgetLayoutData layoutData = getLayoutData(aName);
+ Label label = layoutData.getXWidget().getLabelWidget();
+ label.setForeground(isComplete ? null : Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+ }
+ }
+ // Handle xorRequired
+ for (ArrayList<String> xorReq : xorRequired) {
+ // If group is complete, change all to black, else all red
+ boolean isComplete = isXOrGroupFromAttrNameComplete(xorReq.iterator().next());
+ for (String aName : xorReq) {
+ DynamicXWidgetLayoutData layoutData = getLayoutData(aName);
+ Label label = layoutData.getXWidget().getLabelWidget();
+ label.setForeground(isComplete ? null : Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+ }
+ }
+ }
+
+ public Result isPageComplete() {
+ for (DynamicXWidgetLayoutData data : datas) {
+ if (!data.getXWidget().isValid()) {
+ // Check to see if widget is part of a completed OR or XOR group
+ if (!isOrGroupFromAttrNameComplete(data.getLayoutName()) && !isXOrGroupFromAttrNameComplete(data.getLayoutName())) return new Result(
+ "Must Enter \"" + data.getName() + "\"");
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public Set<DynamicXWidgetLayoutData> getLayoutDatas() {
+ return datas;
+ }
+
+ public void addWorkLayoutDatas(List<DynamicXWidgetLayoutData> datas) {
+ // remove old datas before adding new ones.
+ this.datas.clear();
+ this.datas.addAll(datas);
+ }
+
+ public DynamicXWidgetLayoutData getLayoutData(String attrName) {
+ for (DynamicXWidgetLayoutData layoutData : datas)
+ if (layoutData.getLayoutName().equals(attrName)) return layoutData;
+ return null;
+ }
+
+ public void processInstructions(Document doc) throws IOException, ParserConfigurationException, SAXException {
+
+ for (String reqStrTag : new String[] {XOR_REQUIRED, OR_REQUIRED}) {
+ NodeList nodes = doc.getElementsByTagName(reqStrTag);
+ if (nodes.getLength() > 0) {
+ for (int y = 0; y < nodes.getLength(); y++) {
+ Element element = (Element) nodes.item(y);
+ for (int x = 0; x < element.getAttributes().getLength(); x++) {
+ Node node = element.getAttributes().item(x);
+ String nodeName = node.getNodeName();
+ if (nodeName.equals(XWIDGETS_LIST))
+ if (reqStrTag.equals(XOR_REQUIRED)) {
+ processXOrRequired(node.getNodeValue());
+ } else {
+ processOrRequired(node.getNodeValue());
+ }
+ else {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE,
+ "Unhandled " + reqStrTag + " attribute \"" + nodeName + "\" for " + this);
+ throw new IllegalArgumentException("Unhandled " + reqStrTag + " attribute (see error log)");
+ }
+ }
+ }
+ }
+ }
+ processLayoutDatas(doc.getDocumentElement());
+ }
+
+ public boolean isOrRequired(String attrName) {
+ return (getOrRequiredGroup(attrName)).size() > 0;
+ }
+
+ public boolean isXOrRequired(String attrName) {
+ return (getXOrRequiredGroup(attrName)).size() > 0;
+ }
+
+ public ArrayList<String> getOrRequiredGroup(String attrName) {
+ return getRequiredGroup(orRequired, attrName);
+ }
+
+ public ArrayList<String> getXOrRequiredGroup(String attrName) {
+ return getRequiredGroup(xorRequired, attrName);
+ }
+
+ private ArrayList<String> getRequiredGroup(ArrayList<ArrayList<String>> requiredList, String attrName) {
+ for (ArrayList<String> list : requiredList)
+ for (String aName : list)
+ if (aName.equals(attrName)) return list;
+ return new ArrayList<String>();
+ }
+
+ /**
+ * @param name
+ * @return true if ANY item in group is entered
+ */
+ public boolean isOrGroupFromAttrNameComplete(String name) {
+ for (String aName : getOrRequiredGroup(name)) {
+ DynamicXWidgetLayoutData layoutData = getLayoutData(aName);
+ if (layoutData.getXWidget() != null && layoutData.getXWidget().isValid()) return true;
+ }
+ return false;
+ }
+
+ /**
+ * @param attrName
+ * @return true if only ONE item in group is entered
+ */
+ public boolean isXOrGroupFromAttrNameComplete(String attrName) {
+ boolean oneFound = false;
+ for (String aName : getXOrRequiredGroup(attrName)) {
+ DynamicXWidgetLayoutData layoutData = getLayoutData(aName);
+ if (layoutData.getXWidget() != null && layoutData.getXWidget().isValid())
+ // If already found one, return false
+ if (oneFound)
+ return false;
+ else
+ oneFound = true;
+ }
+ return oneFound;
+ }
+
+ protected void processOrRequired(String instr) {
+ ArrayList<String> names = new ArrayList<String>();
+ for (String attr : instr.split(";"))
+ if (!attr.contains("[ \\s]*")) names.add(attr);
+ orRequired.add(names);
+ }
+
+ protected void processXOrRequired(String instr) {
+ ArrayList<String> names = new ArrayList<String>();
+ for (String attr : instr.split(";"))
+ if (!attr.contains("[ \\s]*")) names.add(attr);
+ xorRequired.add(names);
+ }
+
+ protected void processlayoutDatas(String xWidgetXml) throws IOException, ParserConfigurationException, SAXException {
+ Document document = Jaxp.readXmlDocument(xWidgetXml);
+ Element rootElement = document.getDocumentElement();
+
+ XWidgetParser parser = new XWidgetParser();
+ List<DynamicXWidgetLayoutData> attrs = parser.extractlayoutDatas(this, rootElement);
+ for (DynamicXWidgetLayoutData attr : attrs) {
+ nameToLayoutData.put(attr.getName(), attr);
+ datas.add(attr);
+ }
+ }
+
+ protected void processLayoutDatas(Element element) throws IOException, ParserConfigurationException, SAXException {
+ XWidgetParser parser = new XWidgetParser();
+ List<DynamicXWidgetLayoutData> layoutDatas = parser.extractlayoutDatas(this, element);
+ for (DynamicXWidgetLayoutData layoutData : layoutDatas) {
+ nameToLayoutData.put(layoutData.getName(), layoutData);
+ datas.add(layoutData);
+ }
+ }
+
+ /**
+ * @return the optionResolver
+ */
+ public IXWidgetOptionResolver getOptionResolver() {
+ return optionResolver;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayoutData.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayoutData.java
new file mode 100644
index 00000000000..4eb8f47e137
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/DynamicXWidgetLayoutData.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class DynamicXWidgetLayoutData {
+ private static final XWidgetFactory xWidgetFactory = XWidgetFactory.getInstance();
+ private static final int DEFAULT_HEIGHT = 9999;
+ private String name = "Unknown";
+ private String layoutName = "";
+ private boolean required = false;
+ private String xWidgetName = UNKNOWN;
+ private static String UNKNOWN = "Unknown";
+ private XWidget xWidget;
+ public static enum Align {
+ Left, Right, Center
+ };
+ private Align align = Align.Left;
+ private boolean horizontalLabel = false;
+ private boolean labelAfter = false;
+ private int beginComposite = 0; // If >0, indicates new child composite with columns == value
+ private boolean endComposite; // indicated end of child composite
+ private int height = DEFAULT_HEIGHT;
+ private String toolTip;
+
+ public static enum Fill {
+ None, Vertically, Horizontally
+ };
+ private Fill fill = Fill.None;
+ private final DynamicXWidgetLayout dynamicXWidgetLayout;
+
+ public DynamicXWidgetLayoutData(DynamicXWidgetLayout dynamicXWidgetLayout) {
+ this.dynamicXWidgetLayout = dynamicXWidgetLayout;
+ }
+
+ public boolean isHeightSet() {
+ return height != DEFAULT_HEIGHT;
+ }
+
+ public String toString() {
+ return getName();
+ }
+
+ public String getName() {
+ return name.replaceFirst("^.*?\\.", "");
+ }
+
+ /**
+ * @return Returns the layoutName.
+ */
+ public String getLayoutName() {
+ return layoutName;
+ }
+
+ /**
+ * @param layoutName The layoutName to set.
+ */
+ public void setlayoutName(String layoutName) {
+ this.layoutName = layoutName;
+ }
+
+ /**
+ * @return Returns the required.
+ */
+ public boolean isRequired() {
+ return required || dynamicXWidgetLayout.isOrRequired(layoutName) || dynamicXWidgetLayout.isXOrRequired(layoutName);
+ }
+
+ /**
+ * @param required The required to set.
+ */
+ public void setRequired(boolean required) {
+ this.required = required;
+ }
+
+ /**
+ * @return Returns the xWidget.
+ */
+ public String getXWidgetName() {
+ return xWidgetName;
+ }
+
+ /**
+ * @param widget The xWidget to set.
+ */
+ public void setXWidgetName(String widget) {
+ xWidgetName = widget;
+ }
+
+ /**
+ * @param name The name to set.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ // TODO This method will need to be removed
+ public XWidget getXWidget() {
+ if (xWidget == null) {
+ xWidget = xWidgetFactory.createXWidget(xWidgetName, name, labelAfter, this);
+ }
+ return xWidget;
+ }
+
+ /**
+ * @return Returns the align.
+ */
+ public Align getAlign() {
+ return align;
+ }
+
+ /**
+ * @param align The align to set.
+ */
+ public void setAlign(Align align) {
+ this.align = align;
+ }
+
+ /**
+ * @return Returns the fill.
+ */
+ public Fill getFill() {
+ return fill;
+ }
+
+ /**
+ * @param fill The fill to set.
+ */
+ public void setFill(Fill fill) {
+ this.fill = fill;
+ }
+
+ /**
+ * @return Returns the horizontalLabel.
+ */
+ public boolean isHorizontalLabel() {
+ return horizontalLabel;
+ }
+
+ /**
+ * @param horizontalLabel The horizontalLabel to set.
+ */
+ public void setHorizontalLabel(boolean horizontalLabel) {
+ this.horizontalLabel = horizontalLabel;
+ }
+
+ /**
+ * @return Returns the height.
+ */
+ public int getHeight() {
+ return height;
+ }
+
+ /**
+ * @param height The height to set.
+ */
+ public void setHeight(int height) {
+ this.height = height;
+ }
+
+ /**
+ * @return Returns the beginComposite.
+ */
+ public int getBeginComposite() {
+ return beginComposite;
+ }
+
+ /**
+ * @param beginComposite The beginComposite to set.
+ */
+ public void setBeginComposite(int beginComposite) {
+ this.beginComposite = beginComposite;
+ }
+
+ /**
+ * @return Returns the endComposite.
+ */
+ public boolean isEndComposite() {
+ return endComposite;
+ }
+
+ /**
+ * @param endComposite The endComposite to set.
+ */
+ public void setEndComposite(boolean endComposite) {
+ this.endComposite = endComposite;
+ }
+
+ /**
+ * @return the toolTip
+ */
+ public String getToolTip() {
+ return toolTip;
+ }
+
+ /**
+ * @param toolTip the toolTip to set
+ */
+ public void setToolTip(String toolTip) {
+ this.toolTip = toolTip;
+ }
+
+ /**
+ * @return the labelAfter
+ */
+ public boolean isLabelAfter() {
+ return labelAfter;
+ }
+
+ /**
+ * @param labelAfter the labelAfter to set
+ */
+ public void setLabelAfter(boolean labelAfter) {
+ this.labelAfter = labelAfter;
+ }
+
+ /**
+ * @return the dynamicXWidgetLayout
+ */
+ public DynamicXWidgetLayout getDynamicXWidgetLayout() {
+ return dynamicXWidgetLayout;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IDynamicWidgetLayoutListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IDynamicWidgetLayoutListener.java
new file mode 100644
index 00000000000..e82bef07623
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IDynamicWidgetLayoutListener.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IDynamicWidgetLayoutListener {
+
+ public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable);
+
+ public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable);
+
+ public void createXWidgetLayoutData(DynamicXWidgetLayoutData layoutData, XWidget xWidget, FormToolkit toolkit, Artifact art, XModifiedListener xModListener, boolean isEditable);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetOptionResolver.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetOptionResolver.java
new file mode 100644
index 00000000000..59947a001ab
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetOptionResolver.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IXWidgetOptionResolver {
+
+ public String[] getWidgetOptions(DynamicXWidgetLayoutData xWidgetData);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetProvider.java
new file mode 100644
index 00000000000..14b904930f3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/IXWidgetProvider.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IXWidgetProvider {
+
+ public XWidget createXWidget(String xWidgetName, String name, boolean labelAfter, DynamicXWidgetLayoutData xWidgetLayoutData);
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/UserCommunity.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/UserCommunity.java
new file mode 100644
index 00000000000..76534db6c15
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/UserCommunity.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class UserCommunity {
+ private static final BranchPersistenceManager branchManager = BranchPersistenceManager.getInstance();
+ private static UserCommunity instance = new UserCommunity();
+
+ private UserCommunity() {
+ super();
+ }
+
+ public static UserCommunity getInstance() {
+ return instance;
+ }
+
+ public Set<String> getUserCommunityNames() {
+ Set<String> communities;
+ try {
+ communities =
+ ConfigurationPersistenceManager.getInstance().getValidEnumerationAttributeValues("ats.User Community",
+ branchManager.getCommonBranch());
+ } catch (SQLException ex) {
+ communities = new HashSet<String>();
+ communities.add(ex.getLocalizedMessage());
+ }
+ return communities;
+ }
+
+ public String getUserCommunityCommaDelim() {
+ StringBuffer sb = new StringBuffer();
+ for (String name : getUserCommunityNames())
+ sb.append(name + ",");
+ return sb.toString().replaceFirst(",$", "");
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkFlow.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkFlow.java
new file mode 100644
index 00000000000..bbae52d9669
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkFlow.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WorkFlow {
+
+ protected List<WorkPage> pages = new ArrayList<WorkPage>();
+ private Set<String> pageNames = new HashSet<String>();
+ private String id;
+
+ public WorkFlow(String id) {
+ super();
+ this.id = id;
+ }
+
+ public Set<String> getPageNames() {
+ if (pageNames.size() == 0) {
+ for (WorkPage page : pages)
+ pageNames.add(page.getName());
+ }
+ return pageNames;
+ }
+
+ public void addPage(WorkPage page) {
+ pages.add(page);
+ }
+
+ public WorkPage getPage(String pageName) {
+ List<WorkPage> pages = getPages(pageName);
+ if (pages.size() > 1) throw new IllegalArgumentException(
+ "Multiple pages of same name found in workflow => " + getId() + " Use getPages.");
+ return pages.iterator().next();
+ }
+
+ public List<WorkPage> getPages(String pageName) {
+ List<WorkPage> foundPages = new ArrayList<WorkPage>();
+ for (WorkPage page : pages)
+ if (page.getName().equals(pageName)) foundPages.add(page);
+ if (foundPages.size() == 0) throw new IllegalArgumentException(
+ "Invalid page Name \"" + pageName + "\" from workflow => " + getId());
+ return foundPages;
+ }
+
+ public WorkPage getPageFromId(String id) {
+ for (WorkPage page : pages)
+ if (page.getId().equals(id)) return page;
+ return null;
+ }
+
+ public Collection<WorkPage> getPages() {
+ return pages;
+ }
+
+ /**
+ * @return the id
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPage.java
new file mode 100644
index 00000000000..81a0c9b85d2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPage.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import javax.xml.parsers.ParserConfigurationException;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WorkPage implements IDynamicWidgetLayoutListener {
+
+ private String id = GUID.generateGuidStr();
+ private String name;
+ private ArrayList<WorkPage> fromPages = new ArrayList<WorkPage>();
+ private ArrayList<WorkPage> toPages = new ArrayList<WorkPage>();
+ private ArrayList<WorkPage> returnPages = new ArrayList<WorkPage>();
+ private WorkPage defaultToPage;
+ protected DynamicXWidgetLayout dynamicXWidgetLayout;
+
+ /**
+ * @param instructionLines input lines of WorkAttribute declarations
+ */
+ public WorkPage(String name, String id, String xWidgetsXml, IXWidgetOptionResolver optionResolver) {
+ super();
+ this.name = name;
+ if (id != null && !id.equals("")) this.id = id;
+ dynamicXWidgetLayout = new DynamicXWidgetLayout(this, optionResolver);
+ try {
+ if (xWidgetsXml != null) processLayoutDatas(xWidgetsXml);
+ } catch (Exception ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, "Error processing attributes", ex);
+ }
+ }
+
+ public WorkPage(String xWidgetsXml, IXWidgetOptionResolver optionResolver) {
+ this("", "", xWidgetsXml, optionResolver);
+ }
+
+ public WorkPage(IXWidgetOptionResolver optionResolver) {
+ this("", "", null, optionResolver);
+ }
+
+ public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, WorkPage page, XModifiedListener xModListener, boolean isEditable) {
+ }
+
+ public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, WorkPage page, XModifiedListener xModListener, boolean isEditable) {
+ }
+
+ public void createXWidgetLayoutData(DynamicXWidgetLayoutData workAttr, XWidget xWidget, FormToolkit toolkit, Artifact art, XModifiedListener xModListener, boolean isEditable) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.workflow.IDynamicWidgetLayoutListener#widgetCreated(org.eclipse.osee.framework.ui.skynet.widgets.XWidget,
+ * org.eclipse.ui.forms.widgets.FormToolkit,
+ * org.eclipse.osee.framework.skynet.core.artifact.Artifact,
+ * org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout,
+ * org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener, boolean)
+ */
+ public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) {
+ widgetCreated(xWidget, toolkit, art, this, xModListener, isEditable);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.workflow.IDynamicWidgetLayoutListener#widgetCreating(org.eclipse.osee.framework.ui.skynet.widgets.XWidget,
+ * org.eclipse.ui.forms.widgets.FormToolkit,
+ * org.eclipse.osee.framework.skynet.core.artifact.Artifact,
+ * org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayout,
+ * org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener, boolean)
+ */
+ public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) {
+ widgetCreating(xWidget, toolkit, art, this, xModListener, isEditable);
+ }
+
+ public void dispose() {
+ for (DynamicXWidgetLayoutData layoutData : getlayoutDatas()) {
+ layoutData.getXWidget().dispose();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof WorkPage) return getId().equals(((WorkPage) obj).getId());
+ return false;
+ }
+
+ public void createBody(FormToolkit toolkit, Composite parent, Artifact artifact, XModifiedListener xModListener, boolean isEditable) {
+ dynamicXWidgetLayout.createBody(toolkit, parent, artifact, xModListener, isEditable);
+ }
+
+ public Result isPageComplete() {
+ for (DynamicXWidgetLayoutData layoutData : dynamicXWidgetLayout.getLayoutDatas()) {
+ if (!layoutData.getXWidget().isValid()) {
+ // Check to see if widget is part of a completed OR or XOR group
+ if (!dynamicXWidgetLayout.isOrGroupFromAttrNameComplete(layoutData.getLayoutName()) && !dynamicXWidgetLayout.isXOrGroupFromAttrNameComplete(layoutData.getLayoutName())) return new Result(
+ "Must Enter \"" + layoutData.getName() + "\"");
+ }
+ }
+ return Result.TrueResult;
+ }
+
+ public String getHtml(String backgroundColor) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(AHTML.startBorderTable(100, backgroundColor, getName()));
+ for (DynamicXWidgetLayoutData layoutData : dynamicXWidgetLayout.getLayoutDatas()) {
+ sb.append(layoutData.getXWidget().toHTML(AHTML.LABEL_FONT) + AHTML.newline());
+ }
+ sb.append(AHTML.endBorderTable());
+ return sb.toString();
+ }
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer(name + (id != null ? " (" + id + ") " : "") + "\n");
+ for (WorkPage page : toPages) {
+ sb.append("-> " + page.name + (returnPages.contains(toPages) ? " (return)" : "") + "\n");
+ }
+ return sb.toString();
+ }
+
+ public void addFromPage(WorkPage page) {
+ fromPages.add(page);
+ }
+
+ public void addToPage(WorkPage page, boolean returnPage) {
+ toPages.add(page);
+ if (returnPage) returnPages.add(page);
+ }
+
+ public Set<DynamicXWidgetLayoutData> getlayoutDatas() {
+ return dynamicXWidgetLayout.getLayoutDatas();
+ }
+
+ public void addLayoutDatas(List<DynamicXWidgetLayoutData> datas) {
+ dynamicXWidgetLayout.addWorkLayoutDatas(datas);
+ }
+
+ public DynamicXWidgetLayoutData getLayoutData(String layoutName) {
+ return dynamicXWidgetLayout.getLayoutData(layoutName);
+ }
+
+ public void processInstructions(Document doc) throws IOException, ParserConfigurationException, SAXException {
+ processLayoutDatas(doc.getDocumentElement());
+ }
+
+ protected void processLayoutDatas(String xWidgetXml) throws IOException, ParserConfigurationException, SAXException {
+ dynamicXWidgetLayout.processlayoutDatas(xWidgetXml);
+ }
+
+ protected void processLayoutDatas(Element element) throws IOException, ParserConfigurationException, SAXException {
+ dynamicXWidgetLayout.processLayoutDatas(element);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @return Returns the fromPages.
+ */
+ public ArrayList<WorkPage> getFromPages() {
+ return fromPages;
+ }
+
+ /**
+ * @return Returns the toPages.
+ */
+ public ArrayList<WorkPage> getToPages() {
+ return toPages;
+ }
+
+ public boolean isReturnPage(WorkPage page) {
+ return returnPages.contains(page);
+ }
+
+ /**
+ * @return Returns the defaultToPage.
+ */
+ public WorkPage getDefaultToPage() {
+ return defaultToPage;
+ }
+
+ /**
+ * @param defaultToPage The defaultToPage to set.
+ */
+ public void setDefaultToPage(WorkPage defaultToPage) {
+ this.defaultToPage = defaultToPage;
+ }
+
+ /**
+ * @param id The id to set.
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * @param name The name to set.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the returnPages
+ */
+ public ArrayList<WorkPage> getReturnPages() {
+ return returnPages;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageButton.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageButton.java
new file mode 100644
index 00000000000..a376512710a
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageButton.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WorkPageButton {
+
+ private String name = "Unknown";
+ private String attrName = "";
+ private boolean required = false;
+ private String xWidget = "Unknown";
+
+ /**
+ * <Name[:Attribute Name]>,<(Required|Optional)>,<XWidget> eg: Title:Name,Required,XText eg:
+ * Description,Optional,XText
+ */
+ public WorkPageButton(String xml) {
+ super();
+ String values[] = xml.split(",");
+ name = values[0];
+ if (name.contains(":")) {
+ String names[] = name.split(":");
+ name = names[0];
+ attrName = names[1];
+ } else
+ attrName = name;
+ required = (values[1].equals("Required") ? true : false);
+ xWidget = values[2];
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return Returns the attrName.
+ */
+ public String getAttrName() {
+ return attrName;
+ }
+
+ /**
+ * @param attrName The attrName to set.
+ */
+ public void setAttrName(String attrName) {
+ this.attrName = attrName;
+ }
+
+ /**
+ * @return Returns the required.
+ */
+ public boolean isRequired() {
+ return required;
+ }
+
+ /**
+ * @param required The required to set.
+ */
+ public void setRequired(boolean required) {
+ this.required = required;
+ }
+
+ /**
+ * @return Returns the xWidget.
+ */
+ public String getXWidget() {
+ return xWidget;
+ }
+
+ /**
+ * @param widget The xWidget to set.
+ */
+ public void setXWidget(String widget) {
+ xWidget = widget;
+ }
+
+ /**
+ * @param name The name to set.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageLabelProvider.java
new file mode 100644
index 00000000000..ff4fab81ef4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageLabelProvider.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WorkPageLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object arg0) {
+ return null;
+ }
+
+ public String getText(Object arg0) {
+ return ((WorkPage) arg0).getName();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageSection.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageSection.java
new file mode 100644
index 00000000000..103282b3bb7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageSection.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WorkPageSection extends SectionPart {
+
+ public WorkPageSection(Composite parent, XFormToolkit toolkit, int style, WorkPage page) {
+ super(parent, toolkit, style);
+ createPage(parent, page, toolkit);
+ }
+
+ private Section createPage(Composite comp, WorkPage page, XFormToolkit toolkit) {
+ Section section = toolkit.createSection(comp, Section.TWISTIE | Section.TITLE_BAR);
+ section.setText(page.getName());
+ section.setExpanded(true);
+ section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Composite mainComp = toolkit.createClientContainer(section, 1);
+ mainComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ createWorkArea(mainComp, page, toolkit);
+ return section;
+ }
+
+ private void createWorkArea(Composite comp, WorkPage page, XFormToolkit toolkit) {
+ Composite workComp = toolkit.createContainer(comp, 1);
+ workComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ page.createBody(toolkit, workComp, null, xModListener, true);
+ }
+
+ final XModifiedListener xModListener = new XModifiedListener() {
+ public void widgetModified(XWidget widget) {
+ System.out.println("Widget changed");
+ }
+ };
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ }
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageViewSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageViewSorter.java
new file mode 100644
index 00000000000..004db5dd237
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/WorkPageViewSorter.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class WorkPageViewSorter extends ViewerSorter {
+
+ public WorkPageViewSorter() {
+ super();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((WorkPage) e1).getName(), ((WorkPage) e2).getName());
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/XWidgetFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/XWidgetFactory.java
new file mode 100644
index 00000000000..51e4de7b9d7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/workflow/XWidgetFactory.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.SkynetSpellModifyDictionary;
+import org.eclipse.osee.framework.ui.skynet.widgets.XArtifactTypeListViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XAttributeTypeListViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XBranchListViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBoxDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCombo;
+import org.eclipse.osee.framework.ui.skynet.widgets.XComboDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDateDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XFloat;
+import org.eclipse.osee.framework.ui.skynet.widgets.XFloatDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlabelMemberSelDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XInteger;
+import org.eclipse.osee.framework.ui.skynet.widgets.XLabel;
+import org.eclipse.osee.framework.ui.skynet.widgets.XLabelDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XList;
+import org.eclipse.osee.framework.ui.skynet.widgets.XListDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XListDropViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XRelationTypeListViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XText;
+import org.eclipse.osee.framework.ui.skynet.widgets.XTextDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XTextResourceDropDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Jeff C. Phillips
+ */
+public class XWidgetFactory {
+
+ private static final XWidgetFactory reference = new XWidgetFactory();
+
+ private XWidgetFactory() {
+
+ }
+
+ public static XWidgetFactory getInstance() {
+ return reference;
+ }
+
+ public XWidget createXWidget(String xWidgetName, String name, boolean labelAfter, DynamicXWidgetLayoutData xWidgetLayoutData) {
+ XWidget xWidget = null;
+
+ // Look for widget provider to create widget
+ for (IXWidgetProvider widgetProviders : getXWidgetProviders()) {
+ xWidget = widgetProviders.createXWidget(xWidgetName, name, labelAfter, xWidgetLayoutData);
+ if (xWidget != null) return xWidget;
+ }
+
+ // Otherwise, use default widget creation
+ if (xWidgetName.equals("XText"))
+ xWidget = new XText(name);
+ else if (xWidgetName.equals("XInteger"))
+ xWidget = new XInteger(name);
+ else if (xWidgetName.equals("XTextDam"))
+ xWidget = new XTextDam(name);
+ else if (xWidgetName.equals("XLabelDam"))
+ xWidget = new XLabelDam(name);
+ else if (xWidgetName.equals("XDate"))
+ xWidget = new XDate(name);
+ else if (xWidgetName.equals("XDateDam"))
+ xWidget = new XDateDam(name);
+ else if (xWidgetName.equals("XTextResourceDropDam"))
+ xWidget = new XTextResourceDropDam(name);
+ else if (xWidgetName.equals("XFloat"))
+ xWidget = new XFloat(name);
+ else if (xWidgetName.equals("XFloatDam"))
+ xWidget = new XFloatDam(name);
+ else if (xWidgetName.equals("XLabel"))
+ xWidget = new XLabel(name);
+ else if (xWidgetName.equals("XCheckBox")) {
+ XCheckBox checkBox = new XCheckBox(name);
+ checkBox.setLabelAfter(labelAfter);
+ xWidget = checkBox;
+ } else if (xWidgetName.equals("XCheckBoxDam")) {
+ XCheckBoxDam checkBox = new XCheckBoxDam(name);
+ checkBox.setLabelAfter(labelAfter);
+ xWidget = checkBox;
+ } else if (xWidgetName.startsWith("XComboDam")) {
+ String values[] =
+ xWidgetLayoutData.getDynamicXWidgetLayout().getOptionResolver().getWidgetOptions(xWidgetLayoutData);
+ if (values.length > 0) {
+ xWidget = new XComboDam(name);
+ XComboDam combo = new XComboDam(name);
+ combo.setDataStrings(values);
+ xWidget = combo;
+ } else
+ throw new IllegalArgumentException(
+ "Invalid XComboDam. " + "Must be \"XComboDam(option1,option2,option3)\"");
+ } else if (xWidgetName.startsWith("XCombo")) {
+ String values[] =
+ xWidgetLayoutData.getDynamicXWidgetLayout().getOptionResolver().getWidgetOptions(xWidgetLayoutData);
+ if (values.length > 0) {
+ XCombo combo = new XCombo(name);
+ combo.setDataStrings(values);
+ xWidget = combo;
+ } else
+ throw new IllegalArgumentException("Invalid XCombo. " + "Must be \"XCombo(option1,option2,option3)\"");
+ } else if (xWidgetName.startsWith("XListDam")) {
+ String values[] =
+ xWidgetLayoutData.getDynamicXWidgetLayout().getOptionResolver().getWidgetOptions(xWidgetLayoutData);
+ if (values.length > 0) {
+ XListDam list = new XListDam(name);
+ list.add(values);
+ xWidget = list;
+ } else
+ throw new IllegalArgumentException("Invalid XList. " + "Must be \"XList(option1,option2,option3)\"");
+ } else if (xWidgetName.equals("XHyperlabelMemberSelDam")) {
+ xWidget = new XHyperlabelMemberSelDam(name);
+ } else if (xWidgetName.startsWith("XListDropViewer")) {
+ xWidget = new XListDropViewer(name);
+ } else if (xWidgetName.equals("XArtifactTypeListViewer")) {
+ xWidget = new XArtifactTypeListViewer();
+ } else if (xWidgetName.equals("XAttributeTypeListViewer")) {
+ xWidget = new XAttributeTypeListViewer();
+ } else if (xWidgetName.equals("XRelationTypeListViewer")) {
+ xWidget = new XRelationTypeListViewer();
+ } else if (xWidgetName.equals("XBranchListViewer")) {
+ xWidget = new XBranchListViewer();
+ } else if (xWidgetName.startsWith("XList")) {
+ String values[] =
+ xWidgetLayoutData.getDynamicXWidgetLayout().getOptionResolver().getWidgetOptions(xWidgetLayoutData);
+ if (values.length > 0) {
+ XList list = new XList(name);
+ list.add(values);
+ xWidget = list;
+ } else
+ throw new IllegalArgumentException("Invalid XList. " + "Must be \"XList(option1,option2,option3)\"");
+ } else {
+ throw new IllegalArgumentException("Unhandled XWidget \"" + xWidgetName);
+ }
+ if (xWidget instanceof XText) {
+ ((XText) xWidget).addXTextSpellModifyDictionary(new SkynetSpellModifyDictionary());
+ }
+ return xWidget;
+ }
+
+ private static Set<IXWidgetProvider> widgetProviders;
+
+ @SuppressWarnings("deprecation")
+ private static Set<IXWidgetProvider> getXWidgetProviders() {
+ widgetProviders = new HashSet<IXWidgetProvider>();
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.framework.ui.skynet.XWidgetProvider");
+ if (point == null) {
+ OSEELog.logSevere(SkynetGuiPlugin.class, "Can't access XWidgetProvider extension point", true);
+ return null;
+ }
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("XWidgetProvider")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> taskClass = bundle.loadClass(classname);
+ Object obj = taskClass.newInstance();
+ widgetProviders.add((IXWidgetProvider) obj);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, "Error loading XWidgetProvider extension", ex, true);
+ }
+ }
+
+ }
+ }
+ }
+ return widgetProviders;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateComposite.java
new file mode 100644
index 00000000000..d87fc77fd63
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateComposite.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.sql.SQLException;
+import java.util.List;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.util.filteredTree.OSEEFilteredTree;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XNavigateComposite extends Composite {
+
+ protected Browser browser;
+ protected OSEEFilteredTree filteredTree;
+ private static PatternFilter patternFilter = new PatternFilter();
+ protected final XNavigateViewItems navigateViewItems;
+ private List<XNavigateItem> items;
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public XNavigateComposite(XNavigateViewItems navigateViewItems, Composite parent, int style) {
+ super(parent, style);
+ this.navigateViewItems = navigateViewItems;
+
+ setLayout(new GridLayout(1, false));
+ setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ /*
+ * Create a grid layout object so the text and treeviewer are layed out the way I want.
+ */
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 0;
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ parent.setLayout(layout);
+ parent.setLayoutData(new GridData(GridData.FILL_BOTH));
+ // parent.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+
+ // if (!ConnectionHandler.isConnected()) {
+ // (new Label(parent, SWT.NONE)).setText("DB Connection Unavailable");
+ // return;
+ // }
+
+ filteredTree = new OSEEFilteredTree(this, SWT.SINGLE | SWT.BORDER, patternFilter);
+ filteredTree.getViewer().setContentProvider(new XNavigateContentProvider());
+ filteredTree.setInitialText("");
+ filteredTree.getViewer().setLabelProvider(new XNavigateLabelProvider());
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ filteredTree.getViewer().getTree().setLayoutData(gd);
+ filteredTree.getViewer().getTree().addListener(SWT.MouseDoubleClick, new Listener() {
+ public void handleEvent(Event event) {
+ if (event.button == 1) handleDoubleClick();
+ }
+ });
+ filteredTree.getViewer().getTree().addKeyListener(new KeyListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.KeyListener#keyPressed(org.eclipse.swt.events.KeyEvent)
+ */
+ public void keyPressed(KeyEvent e) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.KeyListener#keyReleased(org.eclipse.swt.events.KeyEvent)
+ */
+ public void keyReleased(KeyEvent e) {
+ if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) handleDoubleClick();
+ }
+ });
+
+ }
+
+ protected void handleDoubleClick() {
+ IStructuredSelection sel = (IStructuredSelection) filteredTree.getViewer().getSelection();
+ if (!sel.iterator().hasNext()) return;
+ XNavigateItem item = (XNavigateItem) sel.iterator().next();
+ if (item instanceof Runnable) {
+ ((Runnable) item).run();
+ } else if (item instanceof XNavigateItemAction) {
+ try {
+ ((XNavigateItemAction) item).run();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ } else if (item instanceof XNavigateItemSkynetTxJobItem) {
+ try {
+ ((XNavigateItemSkynetTxJobItem) item).run();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ } else {
+ filteredTree.getViewer().setExpandedState(item, true);
+ }
+
+ }
+
+ public void refresh() {
+ items = navigateViewItems.getSearchNavigateItems();
+ filteredTree.getViewer().setInput(items);
+ }
+
+ /**
+ * @return the listViewer
+ */
+ public FilteredTree getFilteredTree() {
+ return filteredTree;
+ }
+
+ /**
+ * @return the patternFilter
+ */
+ public PatternFilter getPatternFilter() {
+ return patternFilter;
+ }
+
+ /**
+ * @return the items
+ */
+ public List<XNavigateItem> getItems() {
+ return items;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateContentProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateContentProvider.java
new file mode 100644
index 00000000000..f8dc4dcbfd5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateContentProvider.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.util.Collection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XNavigateContentProvider implements ITreeContentProvider {
+
+ /**
+ *
+ */
+ public XNavigateContentProvider() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof Object[]) return (Object[]) parentElement;
+ if (parentElement instanceof Collection) return ((Collection) parentElement).toArray();
+ if (parentElement instanceof XNavigateItem) return ((XNavigateItem) parentElement).getChildren().toArray(
+ new Object[((XNavigateItem) parentElement).getChildren().size()]);
+ return new Object[0];
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ if (element instanceof XNavigateItem) return ((XNavigateItem) element).getParent();
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItem.java
new file mode 100644
index 00000000000..41a27d49334
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItem.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XNavigateItem {
+
+ private List<XNavigateItem> children = new ArrayList<XNavigateItem>();
+ private String name;
+ private final XNavigateItem parent;
+ private final Image image;
+
+ public XNavigateItem(XNavigateItem parent, String name) {
+ this(parent, name, null);
+ }
+
+ public XNavigateItem(XNavigateItem parent, String name, Image image) {
+ this.parent = parent;
+ this.name = name;
+ this.image = image;
+ if (parent != null) parent.addChild(this);
+ }
+
+ public void addChild(XNavigateItem item) {
+ children.add(item);
+ }
+
+ public List<XNavigateItem> getChildren() {
+ return children;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public XNavigateItem getParent() {
+ return parent;
+ }
+
+ /**
+ * @return the image
+ */
+ public Image getImage() {
+ return image;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemAction.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemAction.java
new file mode 100644
index 00000000000..ec668b9aabf
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemAction.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.sql.SQLException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Used to perform a specific java action
+ *
+ * @author Donald G. Dunne
+ */
+public class XNavigateItemAction extends XNavigateItem {
+
+ private final Action action;
+ private boolean promptFirst = false;
+
+ public XNavigateItemAction(XNavigateItem parent, String name) {
+ this(parent, name, false);
+ }
+
+ public XNavigateItemAction(XNavigateItem parent, String name, boolean promptFirst) {
+ super(parent, name);
+ this.action = null;
+ this.promptFirst = promptFirst;
+ }
+
+ public XNavigateItemAction(XNavigateItem parent, Action action) {
+ this(parent, action, null, false);
+ }
+
+ public XNavigateItemAction(XNavigateItem parent, Action action, Image image, boolean promptFirst) {
+ super(parent, action.getText(), image);
+ this.action = action;
+ this.promptFirst = promptFirst;
+ }
+
+ public void run() throws SQLException {
+ if (action != null) {
+ if (promptFirst) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), getName(), getName())) action.run();
+ }
+ });
+ } else
+ action.run();
+ }
+ }
+
+ public boolean isPromptFirst() {
+ return promptFirst;
+ }
+
+ public void setPromptFirst(boolean promptFirst) {
+ this.promptFirst = promptFirst;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemSkynetTxJobItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemSkynetTxJobItem.java
new file mode 100644
index 00000000000..eeca8301f36
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateItemSkynetTxJobItem.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.sql.SQLException;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.skynet.core.transaction.AbstractSkynetTxJobTemplate;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Used to perform a specific java action
+ *
+ * @author Donald G. Dunne
+ */
+public class XNavigateItemSkynetTxJobItem extends XNavigateItem {
+
+ private AbstractSkynetTxJobTemplate txJob;
+ private boolean promptFirst = false;
+
+ public XNavigateItemSkynetTxJobItem(XNavigateItem parent, AbstractSkynetTxJobTemplate txJob) {
+ this(parent, txJob, null, true);
+ }
+
+ public XNavigateItemSkynetTxJobItem(XNavigateItem parent, AbstractSkynetTxJobTemplate txJob, Image image, boolean promptFirst) {
+ super(parent, txJob != null ? txJob.getName() : "", image);
+ this.txJob = txJob;
+ this.promptFirst = promptFirst;
+ }
+
+ public void run() throws SQLException {
+ if (txJob != null) {
+ if (promptFirst) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), getName(), getName())) {
+ txJob.run(true, Job.LONG);
+ }
+ }
+ }, true);
+ } else {
+ txJob.setUser(true);
+ txJob.setPriority(Job.LONG);
+ txJob.schedule();
+ }
+ }
+ }
+
+ public boolean isPromptFirst() {
+ return promptFirst;
+ }
+
+ public void setPromptFirst(boolean promptFirst) {
+ this.promptFirst = promptFirst;
+ }
+
+ /**
+ * @param txJob the txJob to set
+ */
+ public void setTxJob(AbstractSkynetTxJobTemplate txJob) {
+ this.txJob = txJob;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateLabelProvider.java
new file mode 100644
index 00000000000..8614ee2eaf1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateLabelProvider.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+
+public class XNavigateLabelProvider implements ILabelProvider {
+
+ /**
+ * ListViewers don't support images
+ *
+ * @param arg0 the element
+ * @return Image
+ */
+ public Image getImage(Object arg0) {
+ return ((XNavigateItem) arg0).getImage();
+ }
+
+ /**
+ * Gets the text for an element
+ *
+ * @param arg0 the element
+ * @return String
+ */
+ public String getText(Object arg0) {
+ return ((XNavigateItem) arg0).getName();
+ }
+
+ /**
+ * Adds a listener
+ *
+ * @param arg0 the listener
+ */
+ public void addListener(ILabelProviderListener arg0) {
+ // Throw it away
+ }
+
+ /**
+ * Disposes any resources
+ */
+ public void dispose() {
+ // Nothing to dispose
+ }
+
+ /**
+ * Returns whether changing the specified property for the specified element affect the label
+ *
+ * @param arg0 the element
+ * @param arg1 the property
+ * @return boolean
+ */
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ /**
+ * Removes a listener
+ *
+ * @param arg0 the listener
+ */
+ public void removeListener(ILabelProviderListener arg0) {
+ // Ignore
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateUrlItem.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateUrlItem.java
new file mode 100644
index 00000000000..3aec2f3f2a4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateUrlItem.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.net.URL;
+import java.sql.SQLException;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.program.Program;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.browser.IWebBrowser;
+import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XNavigateUrlItem extends XNavigateItemAction {
+
+ private final String url;
+ private final boolean external;
+
+ /**
+ * Creates a navigation item that will open the given url either internal or external to Eclipse.
+ *
+ * @param parent
+ * @param name to use as display name
+ * @param url to open
+ * @param external true to open in system browser; false to open inside Eclipse
+ */
+ public XNavigateUrlItem(XNavigateItem parent, String name, String url, boolean external) {
+ super(parent, name);
+ this.url = url;
+ this.external = external;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.ats.navigate.ActionNavigateItem#run()
+ */
+ @Override
+ public void run() throws SQLException {
+ if (external)
+ Program.launch(url);
+ else {
+ IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport();
+ try {
+ IWebBrowser browser = browserSupport.createBrowser("osee.ats.navigator.browser");
+ browser.openURL(new URL(url));
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewFilter.java
new file mode 100644
index 00000000000..feb9dc9326b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewFilter.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.util.regex.Pattern;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+public class XNavigateViewFilter extends ViewerFilter {
+
+ private boolean enabled = false;
+ private String text;
+
+ public XNavigateViewFilter(TreeViewer treeViewer) {
+ }
+
+ public void setFilterText(String text) {
+ this.text = text;
+
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (!enabled) return true;
+ XNavigateItem item = (XNavigateItem) element;
+ return Pattern.compile(text).matcher(item.getName()).find();
+ }
+
+ /**
+ * @return the enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * @param enabled the enabled to set
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewItems.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewItems.java
new file mode 100644
index 00000000000..d6837c7ef95
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xnavigate/XNavigateViewItems.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xnavigate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XNavigateViewItems {
+ private static XNavigateViewItems navigateSearches = new XNavigateViewItems();
+
+ protected XNavigateViewItems() {
+ super();
+ }
+
+ public static XNavigateViewItems getInstance() {
+ return navigateSearches;
+ }
+
+ public List<XNavigateItem> getSearchNavigateItems() {
+ List<XNavigateItem> items = new ArrayList<XNavigateItem>();
+ return items;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserHyperCmd.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserHyperCmd.java
new file mode 100644
index 00000000000..da3da8f2e2d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserHyperCmd.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Donald G. Dunne
+ */
+public enum ResultBrowserHyperCmd {
+ openTransAction,
+ openAction,
+ openArtifctBranch,
+ openArtifactEditor,
+ openArtifactHyperViewer,
+ openBranch,
+ openChangeReport,
+ openPriorityHelp,
+ openTaskResolutionHelp;
+
+ public static String getHyperCmdStr(ResultBrowserHyperCmd resultBrowserHyperCmd, String value) {
+ return String.format("%s=%s", resultBrowserHyperCmd.name(), value);
+ }
+
+ public static ResultBrowserHyperCmd getCmdStrHyperCmd(String hyperCmdStr) {
+ Matcher m = Pattern.compile("(.*?)=(.*)").matcher(hyperCmdStr);
+ if (m.find()) return ResultBrowserHyperCmd.getHyperCmd(m.group(1));
+ return null;
+ }
+
+ public static String getCmdStrValue(String hyperCmdStr) {
+ Matcher m = Pattern.compile("(.*?)=(.*)").matcher(hyperCmdStr);
+ if (m.find()) return (String) m.group(2);
+ return "";
+ }
+
+ public static ResultBrowserHyperCmd getHyperCmd(String str) {
+ for (ResultBrowserHyperCmd resultBrowserHyperCmd : ResultBrowserHyperCmd.values()) {
+ if (resultBrowserHyperCmd.toString().equals(str)) return resultBrowserHyperCmd;
+ }
+ throw new IllegalArgumentException("Invalid ResultBrowserHyperCmd Name");
+ }
+};
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserListener.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserListener.java
new file mode 100644
index 00000000000..0493bf652c5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/ResultBrowserListener.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.branch.BranchView;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.swt.browser.LocationEvent;
+import org.eclipse.swt.browser.LocationListener;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ResultBrowserListener implements LocationListener {
+
+ /**
+ *
+ */
+ public ResultBrowserListener() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.browser.LocationListener#changing(org.eclipse.swt.browser.LocationEvent)
+ */
+ public void changing(LocationEvent event) {
+ try {
+ String location = event.location;
+ if (location.contains("javascript:print")) return;
+ String cmdStr = location.replaceFirst("about:blank", "");
+ cmdStr = cmdStr.replaceFirst("blank", "");
+ ResultBrowserHyperCmd resultBrowserHyperCmd = ResultBrowserHyperCmd.getCmdStrHyperCmd(cmdStr);
+ String value = ResultBrowserHyperCmd.getCmdStrValue(cmdStr);
+ if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openAction) {
+ event.doit = false;
+ OseeAts.getAtsLib().openArtifact(value, OseeAts.OpenView.ActionEditor);
+ }
+ if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openArtifctBranch) {
+ event.doit = false;
+ try {
+ java.util.regex.Matcher m = Pattern.compile("^(.*?)\\((.*?)\\)$").matcher(value);
+ if (m.find()) {
+ String hrid = m.group(1);
+ Integer branchId = Integer.parseInt(m.group(2));
+ OseeAts.getAtsLib().openArtifact(hrid, branchId, OseeAts.OpenView.ActionEditor);
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ } else if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openArtifactEditor) {
+ event.doit = false;
+ OseeAts.getAtsLib().openArtifact(value, OseeAts.OpenView.ArtifactEditor);
+ } else if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openArtifactHyperViewer) {
+ event.doit = false;
+ OseeAts.getAtsLib().openArtifact(value, OseeAts.OpenView.ArtifactHyperViewer);
+ } else if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openTransAction) {
+ event.doit = false;
+ // DON Fix this
+ // Matcher m = Pattern.compile("(.*?),(.*?)$").matcher(value);
+ // if (m.find()) {
+ // String guid = m.group(1);
+ // String transId = m.group(2);
+ // SMAEditor.open(guid, transId);
+ // }
+ // else
+ } else if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openBranch) {
+ event.doit = false;
+ int branchId = new Integer(value);
+ Branch branch = BranchPersistenceManager.getInstance().getBranch(branchId);
+ if (branch == null) {
+ AWorkbench.popup("ERROR", "Can't retrieve branch.");
+ return;
+ }
+ BranchView.revealBranch(branch);
+ } else if (resultBrowserHyperCmd == ResultBrowserHyperCmd.openTaskResolutionHelp) {
+ // DON Fix this
+ event.doit = false;
+ // if (sma != null && sma instanceof TaskArtifact) {
+ // TaskArtifact taskArt = (TaskArtifact) sma;
+ // XTaskTable.handleOpenTaskResolutionOptionHelp(taskArt.getTaskResolutionOptions());
+ // }
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, "Can't process hyperlink.", ex, true);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.browser.LocationListener#changed(org.eclipse.swt.browser.LocationEvent)
+ */
+ public void changed(LocationEvent event) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultData.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultData.java
new file mode 100644
index 00000000000..e3947c741a0
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultData.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultPage.Manipulations;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Used to log Info, Warning and Errors to multiple locations (logger, stderr/out and XResultView). Upon completion, a
+ * call to report(title) will open results in the ResultsView
+ *
+ * @author Donald G. Dunne
+ */
+public class XResultData {
+
+ StringBuffer sb = new StringBuffer();
+ private final Logger logger;
+ private static enum Type {
+ Severe, Warning, Info;
+ }
+
+ public static void runExample() {
+ XResultData rd = new XResultData(SkynetGuiPlugin.getLogger());
+ rd.log("This is just a normal log message");
+ rd.logWarning("This is a warning");
+ rd.logError("This is an error");
+ rd.report("This is my report title");
+
+ rd = new XResultData(SkynetGuiPlugin.getLogger());
+ rd.log("Here is a nice table");
+ StringBuffer sb = new StringBuffer();
+ sb.append(AHTML.beginMultiColumnTable(95, 1));
+ sb.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Type", "Title", "Status"}));
+ for (int x = 0; x < 3; x++)
+ sb.append(AHTML.addRowMultiColumnTable(new String[] {"Type " + x, "Title " + x, x + ""}));
+ sb.append(AHTML.endMultiColumnTable());
+ rd.addRaw(sb.toString().replaceAll("\n", ""));
+ rd.report("This is my report title");
+ }
+
+ public XResultData(Logger logger) {
+ this.logger = logger;
+ }
+
+ public void addRaw(String str) {
+ sb.append(str);
+ }
+
+ public void log(String str) {
+ logStr(Type.Info, str + "\n", null);
+ }
+
+ public void log(String str, IProgressMonitor monitor) {
+ logStr(Type.Info, str + "\n", monitor);
+ }
+
+ public void logError(String str) {
+ logStr(Type.Severe, str + "\n", null);
+ }
+
+ public void logWarning(String str) {
+ logStr(Type.Warning, str + "\n", null);
+ }
+
+ public boolean isEmpty() {
+ return toString().equals("");
+ }
+
+ public void logStr(Type type, final String str, final IProgressMonitor monitor) {
+ String resultStr = "";
+ if (type == Type.Warning)
+ resultStr = "Warning: " + str;
+ else if (type == Type.Severe)
+ resultStr = "Error: " + str;
+ else
+ resultStr = str;
+ sb.append(resultStr);
+ if (logger != null)
+ logger.log(Level.parse(type.name().toUpperCase()), resultStr);
+ else {
+ if (type == Type.Info)
+ System.out.println(resultStr);
+ else
+ System.err.println(resultStr);
+ }
+ if (monitor != null) {
+ Displays.ensureInDisplayThread(new Runnable() {
+ public void run() {
+ monitor.subTask(str);
+ }
+ });
+ }
+ }
+
+ public String toString() {
+ return sb.toString();
+ }
+
+ public void report(final String title) {
+ report(title, Manipulations.ALL);
+ }
+
+ public void report(final String title, final Manipulations manipulation, final Manipulations... manipulations) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ XResultView.getResultView().addResultPage(getReport(title, manipulation, manipulations));
+ AWorkbench.popup("Complete", title + " Complete...Results in Result View");
+ }
+ });
+ }
+
+ public XResultPage getReport(final String title) {
+ return getReport(title, Manipulations.ALL);
+ }
+
+ public XResultPage getReport(final String title, Manipulations manipulation, Manipulations... manipulations) {
+ final Set<Manipulations> manips = new HashSet<Manipulations>();
+ manips.add(manipulation);
+ for (Manipulations manip : manipulations)
+ manips.add(manip);
+ return new XResultPage(title + " - " + XDate.getDateNow(XDate.MMDDYYHHMM),
+ (sb.toString().equals("") ? "Nothing Logged" : sb.toString()),
+ manips.toArray(new Manipulations[manips.size()]));
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultHtml.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultHtml.java
new file mode 100644
index 00000000000..0e4f7e73ab8
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultHtml.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XResultHtml {
+
+ /**
+ *
+ */
+ public XResultHtml() {
+ super();
+ }
+
+ public static String getOpenHyperlinkHtml(Artifact art) {
+ return getOpenHyperlinkHtml(art.getDescriptiveName(), art);
+ }
+
+ public static String getOpenHyperlinkHtml(String name, String hrid) {
+ return AHTML.getHyperlink(ResultBrowserHyperCmd.getHyperCmdStr(ResultBrowserHyperCmd.openAction, hrid), name);
+ }
+
+ public static String getOpenHyperlinkHtml(String name, String hrid, int branchId) {
+ return AHTML.getHyperlink(ResultBrowserHyperCmd.getHyperCmdStr(ResultBrowserHyperCmd.openArtifctBranch,
+ hrid + "(" + branchId + ")"), name);
+ }
+
+ public static String getOpenArtEditHyperlinkHtml(String name, String hrid) {
+ return AHTML.getHyperlink(ResultBrowserHyperCmd.getHyperCmdStr(ResultBrowserHyperCmd.openArtifactEditor, hrid),
+ name);
+ }
+
+ public static String getOpenArtViewHyperlinkHtml(String name, String hrid) {
+ return AHTML.getHyperlink(ResultBrowserHyperCmd.getHyperCmdStr(ResultBrowserHyperCmd.openArtifactHyperViewer,
+ hrid), name);
+ }
+
+ public static String getOpenHyperlinkHtml(Artifact art, int transId) {
+ String str =
+ AHTML.getHyperlink(ResultBrowserHyperCmd.getHyperCmdStr(ResultBrowserHyperCmd.openTransAction,
+ String.format("%s,%s", art.getGuid(), transId + "")), art.getDescriptiveName());
+ return str;
+ }
+
+ public static String getOpenHyperlinkHtml(String name, Artifact art) {
+ return AHTML.getHyperlink(ResultBrowserHyperCmd.getHyperCmdStr(ResultBrowserHyperCmd.openAction, art.getGuid()),
+ name);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultPage.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultPage.java
new file mode 100644
index 00000000000..8679d7f18d7
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultPage.java
@@ -0,0 +1,239 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.Dialogs;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XResultPage {
+
+ private String title;
+ private String html;
+ private String id; // Used to add and remove to menu item
+ private String manipulatedHtml;
+ private Set<Manipulations> manipulations = new HashSet<Manipulations>();
+ private int numWarnings = Integer.MAX_VALUE;
+ private int numErrors = Integer.MAX_VALUE;
+ public static enum Manipulations {
+ NONE, HRID_CMD_HYPER, // Replace all HRID strings with hyperlinks; ATS=<hrid> opens Action
+ // editor
+ // ART=<hrid> opens Artifact editor, BOTH=<hrid> allows either
+ HRID_ATS_HYPER, // Replace all HRID strings with hyperlinks to open ATS; this happens after
+ // the HRID_CMD_HYPER replace
+ ERROR_RED, // Make all "Error" strings red
+ WARNING_YELLOW, // Make all "Warning" strings yellow
+ CONVERT_NEWLINES, // Convert all \n to <br>
+ HTML_MANIPULATIONS, // Do all except converting newlines
+ RAW_HTML, // Just display in simple html page
+ ERROR_WARNING_HEADER, // Shows Errors: 4 Warnings: 23 count at top of page
+ ALL
+ };
+ public enum HyperType {
+ ATS, ART, BOTH
+ };
+
+ /**
+ * Create and display result page with all Manipulations available
+ */
+ public XResultPage(String title, String text) {
+ this(title, text, Manipulations.ALL);
+ }
+
+ /**
+ * Create and display result page with given Manipulations
+ *
+ * @param title title of the page (include date/time due or something unique due to multi-page view of results)
+ * @param html html to display (minus manipulations). this html MUST already handle new lines (eg
+ * text.replaceAll("\n",AHTML.newLine())) or use the CONVERT_NEWLINES manipultion
+ * @param manipulations manipulations desired for the input HTML
+ */
+ public XResultPage(String title, String html, Manipulations... manipulations) {
+ super();
+ this.title = title;
+ this.html = html;
+ id = GUID.generateGuidStr();
+ for (Manipulations man : manipulations) {
+ if (man == Manipulations.ALL) {
+ this.manipulations.add(Manipulations.HRID_ATS_HYPER);
+ this.manipulations.add(Manipulations.HRID_CMD_HYPER);
+ this.manipulations.add(Manipulations.ERROR_RED);
+ this.manipulations.add(Manipulations.CONVERT_NEWLINES);
+ this.manipulations.add(Manipulations.WARNING_YELLOW);
+ } else if (man == Manipulations.HTML_MANIPULATIONS) {
+ this.manipulations.add(Manipulations.HRID_ATS_HYPER);
+ this.manipulations.add(Manipulations.HRID_CMD_HYPER);
+ this.manipulations.add(Manipulations.ERROR_RED);
+ this.manipulations.add(Manipulations.WARNING_YELLOW);
+ } else
+ this.manipulations.add(man);
+ }
+ }
+
+ public int getNumWarnings() {
+ if (numWarnings != Integer.MAX_VALUE) return numWarnings;
+ if (manipulations.contains(Manipulations.WARNING_YELLOW)) numWarnings = Lib.numOccurances(html, "Warning:");
+ if (numWarnings == Integer.MAX_VALUE) return 0;
+ return numWarnings;
+ }
+
+ public int getNumErrors() {
+ if (numErrors != Integer.MAX_VALUE) return numErrors;
+ if (manipulations.contains(Manipulations.ERROR_RED)) numErrors = Lib.numOccurances(html, "Error:");
+ if (numErrors == Integer.MAX_VALUE) return 0;
+ return numErrors;
+ }
+
+ public static String getCmdValue(HyperType type, String hrid) {
+ return String.format("%s=%s", type.name(), hrid);
+ }
+
+ /**
+ * @param type
+ * @param name that will show hyperlinked
+ * @param hrid value that will be returned upon selection of hyperlink
+ * @return cmd value to put in HTML for processing by result page
+ */
+ public static String getCmdValue(HyperType type, String name, String hrid) {
+ return String.format("%s=%s:%s", type.name(), name, hrid);
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getErrorWarningHtml() {
+ return String.format("<b>Errors</b>: %d <b>Warnings</b>: %d<br><br>", getNumErrors(), getNumWarnings());
+ }
+
+ public String getManipulatedHtml() {
+ return getManipulatedHtml(manipulations);
+ }
+
+ public String getManipulatedHtml(Collection<Manipulations> manipulations) {
+ if (manipulatedHtml == null) {
+ String str =
+ (manipulations.contains(Manipulations.ERROR_WARNING_HEADER) ? getErrorWarningHtml() : "") + getText();
+ if (manipulations.contains(Manipulations.RAW_HTML)) {
+ str = AHTML.simplePage(str);
+ } else {
+ if (manipulations.contains(Manipulations.CONVERT_NEWLINES)) str = str.replaceAll("\n", AHTML.newline());
+ if (manipulations.contains(Manipulations.HRID_CMD_HYPER)) {
+ // System.err.println("match " + line);
+ // Match getText so it doesn't mess up replace
+ // Retireve all ATS=WPN_PAGE:HSRID matches
+ Matcher m = Pattern.compile("([A-Z]{3,4})=(.*?):([A-Z0-9]{5})").matcher(str);
+ Set<String> cmdNameHrids = new HashSet<String>();
+ while (m.find())
+ cmdNameHrids.add(m.group());
+ // Retrieve all ATS=Name:HRSID matches and replace with hyperlinking
+ for (String cmdNameHrid : cmdNameHrids) {
+ String value = cmdNameHrid;
+ value = value.replaceAll("^.*?=", "");
+ String name = value;
+ name = name.replaceAll(":.*$", "");
+ String hrid = value;
+ hrid = hrid.replaceAll("^.*:", "");
+ if (cmdNameHrid.startsWith(HyperType.BOTH.name())) {
+ String replaceStr = hrid + " (" + XResultHtml.getOpenHyperlinkHtml("ATS-" + name, hrid);
+ replaceStr += " " + XResultHtml.getOpenArtEditHyperlinkHtml("AE-" + name, hrid);
+ replaceStr += ")";
+ str = str.replaceAll(cmdNameHrid, replaceStr);
+ } else if (cmdNameHrid.startsWith(HyperType.ATS.name())) {
+ str = str.replaceAll(cmdNameHrid, XResultHtml.getOpenHyperlinkHtml(name, hrid));
+ } else if (cmdNameHrid.startsWith(HyperType.ART.name())) {
+ str = str.replaceAll(cmdNameHrid, XResultHtml.getOpenArtEditHyperlinkHtml(name, hrid));
+ }
+ }
+ // Retrieve all ATS=HRSID matches and replace with hyperlinking
+ m = Pattern.compile("([A-Z]{3,4})=([A-Z0-9]{5})").matcher(str);
+ Set<String> cmdHrids = new HashSet<String>();
+ while (m.find())
+ cmdHrids.add(m.group());
+ for (String cmdHrid : cmdHrids) {
+ String hrid = cmdHrid;
+ hrid = hrid.replaceAll("^.*?=", "");
+ if (cmdHrid.startsWith(HyperType.BOTH.name())) {
+ String replaceStr = hrid + " (" + XResultHtml.getOpenHyperlinkHtml("ATS", hrid);
+ replaceStr += " " + XResultHtml.getOpenArtEditHyperlinkHtml("AE", hrid);
+ replaceStr += ")";
+ str = str.replaceAll(cmdHrid, replaceStr);
+ } else if (cmdHrid.startsWith(HyperType.ATS.name())) {
+ str = str.replaceAll(cmdHrid, XResultHtml.getOpenHyperlinkHtml(hrid, hrid));
+ } else if (cmdHrid.startsWith(HyperType.ART.name())) {
+ str = str.replaceAll(cmdHrid, XResultHtml.getOpenArtEditHyperlinkHtml(hrid, hrid));
+ }
+ }
+ }
+ if (manipulations.contains(Manipulations.HRID_ATS_HYPER)) {
+ Matcher m =
+ Pattern.compile("(?<![A-Za-z0-9])([A-Z0-9]{1}[B-DF-HJ-NP-TV-Z0-9]{3}[A-Z0-9]{1})(?![A-Za-z0-9])").matcher(
+ str);
+ Set<String> hrids = new HashSet<String>();
+ while (m.find())
+ hrids.add(m.group(1));
+ for (String hrid : hrids)
+ str = str.replaceAll(hrid, XResultHtml.getOpenHyperlinkHtml(hrid, hrid));
+ }
+ if (manipulations.contains(Manipulations.ERROR_RED)) {
+ str = str.replaceAll("Error:", AHTML.color("red", "Error:"));
+ }
+ if (manipulations.contains(Manipulations.WARNING_YELLOW)) {
+ str = str.replaceAll("Warning:", AHTML.color("orange", "Warning:"));
+ }
+ }
+ manipulatedHtml = str;
+ }
+ return manipulatedHtml;
+ }
+
+ public String getText() {
+ return html;
+ }
+
+ public void setHtml(String html) {
+ this.html = html;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public Set<Manipulations> getManipulations() {
+ return manipulations;
+ }
+
+ public void setManipulations(Set<Manipulations> manipulations) {
+ this.manipulations = manipulations;
+ }
+
+ public void handleExport() {
+ Dialogs.exportHtmlTableDialog(title, html, true);
+ }
+
+ public void handleSave() {
+ Dialogs.saveHtmlDialog(html, true);
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultView.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultView.java
new file mode 100644
index 00000000000..d8ca578949f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultView.java
@@ -0,0 +1,296 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.IActionable;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.Dialogs;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultPage.Manipulations;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @see ViewPart
+ * @author Donald G. Dunne
+ */
+public class XResultView extends ViewPart implements IActionable {
+
+ public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultView";
+ private static String HELP_CONTEXT_ID = "xResultView";
+ private static File errorImageFile = null;
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(XResultView.class);
+ private XResultPage currentPage;
+ private List<XResultPage> pages = new ArrayList<XResultPage>();
+ private Label errorLabel;
+ private XResultsComposite xResultsComp;
+
+ /**
+ * @author Donald G. Dunne
+ */
+ public XResultView() {
+ if (errorImageFile == null) {
+ try {
+ errorImageFile = SkynetGuiPlugin.getInstance().getPluginFile("images/bug.gif");
+ } catch (IOException ex) {
+ logger.log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ }
+
+ /**
+ * There is no way to keep track of the items in an menu to display them correctly. Thus, we need to remove all and
+ * re-add from ordered list we have kept.
+ */
+ public void updateActionList() {
+ IMenuManager manager = getViewSite().getActionBars().getMenuManager();
+ manager.removeAll();
+
+ int x = 1;
+ for (final XResultPage fPage : pages) {
+ // Add to pulldown
+ Action action = new Action(x++ + ") " + fPage.getTitle(), Action.AS_CHECK_BOX) {
+
+ public void run() {
+ displayPage(fPage);
+ // Redisplay so check the current action
+ updateActionList();
+ }
+ };
+ action.setToolTipText(fPage.getTitle());
+ action.setId(fPage.getId());
+ if (fPage == currentPage) action.setChecked(true);
+ manager.add(action);
+ }
+ }
+
+ public void addResultPage(XResultPage page) {
+ currentPage = page;
+
+ XResultView xResultView = getResultView();
+ if (xResultView == null) return;
+
+ pages.add(0, page);
+
+ updateActionList();
+
+ // Display page
+ displayPage(page);
+
+ }
+
+ public void displayPage(XResultPage page) {
+ displayPage(page, false);
+ }
+
+ public void displayPage(XResultPage page, boolean print) {
+
+ currentPage = page;
+
+ // Create report title with errors/warnings if appropriate
+ StringBuffer sb = new StringBuffer();
+ sb.append(" " + page.getTitle());
+ sb.append(String.format("\n Errors: %s Warnings: %s", page.getNumErrors(), page.getNumWarnings()));
+ errorLabel.setText(sb.toString());
+ errorLabel.getParent().layout();
+
+ // Display results in browser
+ xResultsComp.setHtmlText(page.getManipulatedHtml(), page.getTitle());
+
+ }
+
+ public static XResultView getResultView() {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ return (XResultView) page.showView(VIEW_ID);
+ } catch (PartInitException e1) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error",
+ "Couldn't Launch Results View " + e1.getMessage());
+ }
+ return null;
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ }
+
+ public void setFocus() {
+ }
+
+ /*
+ * @see IWorkbenchPart#createPartControl(Composite)
+ */
+ public void createPartControl(Composite parent) {
+ /*
+ * Create a grid layout object so the text and treeviewer are layed out the way I want.
+ */
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 0;
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ parent.setLayout(layout);
+ parent.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ errorLabel = new Label(parent, SWT.NONE);
+
+ xResultsComp = new XResultsComposite(parent, SWT.BORDER);
+
+ SkynetGuiPlugin.getInstance().setHelp(parent, HELP_CONTEXT_ID);
+ SkynetGuiPlugin.getInstance().setHelp(xResultsComp.getBrowser(), HELP_CONTEXT_ID);
+
+ createActions();
+ }
+
+ protected void createActions() {
+
+ IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
+ Action action = new Action("Remove Result") {
+
+ public void run() {
+ if (currentPage == null) {
+ AWorkbench.popup("ERROR", "Nothing to remove");
+ return;
+ }
+ if (MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Remove Result",
+ "Remove Result\n\nAre you sure?")) {
+ if (pages.contains(currentPage)) pages.remove(currentPage);
+ updateActionList();
+ xResultsComp.getBrowser().setText(AHTML.simplePage("Select page to display."));
+ setContentDescription("");
+ if (pages.size() == 0) currentPage = null;
+ }
+ }
+ };
+ action.setToolTipText("Remove the current result");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("remove.gif"));
+ toolbarManager.add(action);
+
+ action = new Action("Remove All Results") {
+
+ public void run() {
+ if (currentPage == null) {
+ AWorkbench.popup("ERROR", "Nothing to remove");
+ return;
+ }
+ if (MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Remove All Results",
+ "Remove All Results\n\nAre you sure?")) {
+ pages.clear();
+ updateActionList();
+ xResultsComp.getBrowser().setText(AHTML.simplePage(""));
+ setContentDescription("");
+ currentPage = null;
+ }
+ }
+ };
+ action.setToolTipText("Remove all the results");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("removeAll.gif"));
+ toolbarManager.add(action);
+
+ action = new Action("Print") {
+
+ public void run() {
+ printContents();
+ }
+ };
+ action.setToolTipText("Print");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("print.gif"));
+ toolbarManager.add(action);
+
+ action = new Action("Email") {
+
+ public void run() {
+ if (currentPage == null) {
+ AWorkbench.popup("ERROR", "Nothing to email");
+ return;
+ }
+ Set<Manipulations> manipulations = new HashSet<Manipulations>();
+ manipulations.add(Manipulations.ALL);
+ manipulations.add(Manipulations.ERROR_WARNING_HEADER);
+ Dialogs.emailDialog(getTitle(), currentPage.getManipulatedHtml(manipulations));
+ }
+ };
+ action.setToolTipText("Email");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("email.gif"));
+ toolbarManager.add(action);
+
+ action = new Action("Export Table") {
+
+ public void run() {
+ if (currentPage == null) {
+ AWorkbench.popup("ERROR", "Nothing to export");
+ return;
+ }
+ currentPage.handleExport();
+ }
+ };
+ action.setToolTipText("Export table into csv file");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("export.gif"));
+ toolbarManager.add(action);
+
+ action = new Action("Save Report") {
+
+ public void run() {
+ if (currentPage == null) {
+ AWorkbench.popup("ERROR", "Nothing to export");
+ return;
+ }
+ currentPage.handleSave();
+ }
+ };
+ action.setToolTipText("Save report to file");
+ action.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("save.gif"));
+ toolbarManager.add(action);
+
+ OseeAts.addBugToViewToolbar(this, this, SkynetGuiPlugin.getInstance(), VIEW_ID, "Result View");
+
+ // IMenuManager manager = getViewSite().getActionBars().getMenuManager();
+
+ }
+
+ public void printContents() {
+ if (currentPage == null) {
+ AWorkbench.popup("ERROR", "Nothing to print");
+ return;
+ }
+ xResultsComp.getBrowser().setUrl("javascript:print()");
+ }
+
+ public String getActionDescription() {
+ return "";
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultsComposite.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultsComposite.java
new file mode 100644
index 00000000000..1064109f34f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xresults/XResultsComposite.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xresults;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.Dialogs;
+import org.eclipse.osee.framework.ui.skynet.widgets.xresults.XResultPage.Manipulations;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XResultsComposite extends Composite {
+
+ protected Browser browser;
+ private String htmlText;
+ private String title = "";
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public XResultsComposite(Composite parent, int style) {
+ super(parent, style);
+
+ setLayout(new GridLayout(1, false));
+ setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 0;
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ parent.setLayout(layout);
+ parent.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ browser = new Browser(this, SWT.BORDER);
+ browser.addLocationListener(new ResultBrowserListener());
+ browser.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+ browser.setMenu(getPopup(parent));
+
+ }
+
+ public Menu getPopup(Composite comp) {
+ Menu menu = new Menu(comp);
+
+ MenuItem item = new MenuItem(menu, SWT.NONE);
+ item.setText("View Source");
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if (htmlText == null || htmlText.equals("")) {
+ AWorkbench.popup("ERROR", "Nothing to view");
+ return;
+ }
+ String fileName = System.getProperty("user.home") + File.separator + "out.html";
+ AFile.writeFile(fileName, htmlText);
+ Program.launch(fileName);
+ }
+ });
+
+ item = new MenuItem(menu, SWT.NONE);
+ item.setText("Print");
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if (htmlText == null || htmlText.equals("")) {
+ AWorkbench.popup("ERROR", "Nothing to print");
+ return;
+ }
+ browser.setUrl("javascript:print()");
+ }
+ });
+
+ item = new MenuItem(menu, SWT.NONE);
+ item.setText("Email");
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if (htmlText == null || htmlText.equals("")) {
+ AWorkbench.popup("ERROR", "Nothing to email");
+ return;
+ }
+ Set<Manipulations> manipulations = new HashSet<Manipulations>();
+ manipulations.add(Manipulations.ALL);
+ manipulations.add(Manipulations.ERROR_WARNING_HEADER);
+ Dialogs.emailDialog(title, htmlText);
+ }
+ });
+ item = new MenuItem(menu, SWT.NONE);
+ item.setText("Export Table");
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ Dialogs.exportHtmlTableDialog(title, htmlText, true);
+ }
+ });
+ item = new MenuItem(menu, SWT.NONE);
+ item.setText("Save to File");
+ item.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ Dialogs.saveHtmlDialog(htmlText, true);
+ }
+ });
+ return menu;
+ }
+
+ /**
+ * @return the browser
+ */
+ public Browser getBrowser() {
+ return browser;
+ }
+
+ /**
+ * @return the htmlText
+ */
+ public String getHtmlText() {
+ return htmlText;
+ }
+
+ /**
+ * @param htmlText the htmlText to set
+ */
+ public void setHtmlText(String htmlText) {
+ this.htmlText = htmlText;
+ }
+
+ /**
+ * @param title
+ * @param htmlText
+ */
+ public void setHtmlText(String htmlText, String title) {
+ this.htmlText = htmlText;
+ this.title = title;
+ if (browser != null && !browser.isDisposed()) browser.setText(htmlText);
+ }
+
+ /**
+ * @return the title
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * @param title the title to set
+ */
+ public void setTitle(String title) {
+ this.title = title;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/IXViewerFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/IXViewerFactory.java
new file mode 100644
index 00000000000..9d3638f6f3c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/IXViewerFactory.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizeDefaults;
+
+/**
+ * @author Andrew M. Finkbeiner
+ */
+public interface IXViewerFactory {
+ XViewerSorter createNewXSorter(XViewer viewer);
+
+ CustomizeData getDefaultTableCustomizeData();
+
+ XViewerColumn getDefaultXViewerColumn(String name);
+
+ IXViewerCustomizeDefaults getXViewerCustomizeDefaults();
+
+ IXViewerCustomizations getXViewerCustomizations(XViewer xViewer);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XPromptChange.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XPromptChange.java
new file mode 100644
index 00000000000..bccd85bf8ee
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XPromptChange.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Date;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.eclipse.osee.framework.ui.skynet.util.EnumStringMultiSelectionDialog;
+import org.eclipse.osee.framework.ui.skynet.util.EnumStringSingleSelectionDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.DateSelectionDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XPromptChange {
+
+ private final static String VALID_FLOAT_REG_EX = "^[0-9\\.]+$";
+ private final static String VALID_INTEGER_REG_EX = "^[0-9]+$";
+ private final static String VALID_PERCENT_REG_EX =
+ "^(0*100{1,1}\\.?((?<=\\.)0*)?%?$)|(^0*\\d{0,2}\\.?((?<=\\.)\\d*)?%?)$";
+
+ public static Date promptChangeDate(String displayName, Date currDate) throws SQLException {
+ // prompt that current release is (get from attribute); want to
+ // change
+ DateSelectionDialog diag =
+ new DateSelectionDialog("Select " + displayName, "Select " + displayName,
+ currDate != null ? currDate : null);
+ if (diag.open() == 0) {
+ return diag.getSelectedDate();
+ }
+ return null;
+ }
+
+ public static EnumStringSingleSelectionDialog promptChangeSingleSelectEnumeration(String displayName, Collection<String> enums, String currSelected) throws SQLException {
+ final EnumStringSingleSelectionDialog diag =
+ new EnumStringSingleSelectionDialog(displayName, displayName, enums, currSelected);
+ if (diag.open() == 0) {
+ return diag;
+ }
+ return null;
+ }
+
+ public static EnumStringMultiSelectionDialog promptChangeMultiSelectEnumeration(String displayName, Collection<String> enums, Collection<String> currEnums) throws SQLException {
+ final EnumStringMultiSelectionDialog diag = new EnumStringMultiSelectionDialog(displayName, enums, currEnums);
+ if (diag.open() == 0) {
+ return diag;
+ }
+ return null;
+ }
+
+ public static String promptChangeInteger(String displayName, int currEntry) throws SQLException {
+ return promptChangeInteger(displayName, currEntry == 0 ? "" : String.valueOf(currEntry));
+ }
+
+ public static String promptChangeInteger(String displayName, String currEntry) throws SQLException {
+ return promptChangeString(displayName, currEntry, VALID_INTEGER_REG_EX);
+ }
+
+ public static String promptChangePercent(String displayName, String currEntry) throws SQLException {
+ return promptChangeString(displayName, currEntry, VALID_PERCENT_REG_EX);
+ }
+
+ public static String promptChangeFloat(String displayName, double currEntry) throws SQLException {
+ return promptChangeFloat(displayName, currEntry == 0 ? "" : String.valueOf(currEntry));
+ }
+
+ public static String promptChangeFloat(String displayName, String currEntry) throws SQLException {
+ return promptChangeString(displayName, currEntry, VALID_FLOAT_REG_EX);
+ }
+
+ public static String promptChangeString(String displayName, String currEntry, String validationRegEx) throws SQLException {
+ EntryDialog ed =
+ new EntryDialog(Display.getCurrent().getActiveShell(), "Enter " + displayName, null,
+ "Enter " + displayName, MessageDialog.QUESTION, new String[] {"OK", "Clear", "Cancel"}, 0);
+ if (currEntry != null && !currEntry.equals("")) ed.setEntry(currEntry);
+ if (validationRegEx != null) ed.setValidationRegularExpression(validationRegEx);
+ int result = ed.open();
+ if (result == 0)
+ return ed.getEntry();
+ else if (result == 1) return "";
+ return null;
+ }
+
+ public static Boolean promptChangeBoolean(String displayName, String toggleMessage, boolean currSelection) throws SQLException {
+ MessageDialogWithToggle md =
+ new MessageDialogWithToggle(Display.getCurrent().getActiveShell(), displayName, null, displayName,
+ MessageDialog.QUESTION, new String[] {"Ok", "Cancel"}, MessageDialog.OK,
+ (toggleMessage != null ? toggleMessage : displayName), currSelection);
+ int result = md.open();
+ if (result == 256) {
+ return md.getToggleState();
+ }
+ return null;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XSubMenuManager.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XSubMenuManager.java
new file mode 100644
index 00000000000..a3b7a6b70b4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XSubMenuManager.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+/**
+ * @author Andrew M. Finkbeiner
+ */
+public class XSubMenuManager extends MenuManager {
+
+ private boolean visible = true;
+
+ /**
+ * @param string
+ */
+ public XSubMenuManager(String string) {
+ super(string);
+ }
+
+ public boolean isEnabled() {
+ return true;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public void setVisible(boolean visible) {
+ this.visible = visible;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.add(new Separator());
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewer.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewer.java
new file mode 100644
index 00000000000..4033471eb70
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewer.java
@@ -0,0 +1,395 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.ui.plugin.util.ALayout;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.FilterDataUI;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.XViewerCustomize;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XViewer extends TreeViewer {
+
+ public static final String MENU_GROUP_PRE = "XVIEWER MENU GROUP PRE";
+ public static final String MENU_GROUP_POST = "XVIEWER MENU GROUP POST";
+ private Label statusLabel;
+ protected XViewerCustomize customize;
+ private String namespace;
+ private MenuManager menuManager;
+ private boolean ctrlKeyDown = false;
+ private final IXViewerFactory xViewerFactory;
+ private final FilterDataUI filterDataUI;
+ private boolean columnMultiEditEnabled = false;
+
+ public XViewer(Composite parent, int style, String namespace, IXViewerFactory xViewerFactory, XViewerCustomize custom) {
+ super(parent, style);
+ this.namespace = namespace;
+ this.xViewerFactory = xViewerFactory;
+ this.menuManager = new MenuManager();
+ this.menuManager.setRemoveAllWhenShown(true);
+ this.menuManager.createContextMenu(parent);
+ this.filterDataUI = new FilterDataUI(this);
+ this.customize = custom;
+ this.customize.init(this);
+ createSupportWidgets(parent);
+ }
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public XViewer(Composite parent, int style, String namespace, IXViewerFactory xViewerFactory) {
+ super(parent, style);
+ this.namespace = namespace;
+ this.xViewerFactory = xViewerFactory;
+ this.menuManager = new MenuManager();
+ this.menuManager.setRemoveAllWhenShown(true);
+ this.menuManager.createContextMenu(parent);
+ this.customize = new XViewerCustomize();
+ this.customize.init(this);
+ this.filterDataUI = new FilterDataUI(this);
+ createSupportWidgets(parent);
+ }
+
+ public void dispose() {
+ filterDataUI.dispose();
+ }
+
+ public void addCustomizeToViewToolbar(final ViewPart viewPart) {
+ Action customizeAction = new Action("Customize Table") {
+
+ public void run() {
+ getCustomize().handleTableCustomization();
+ }
+ };
+ customizeAction.setImageDescriptor(SkynetGuiPlugin.getInstance().getImageDescriptor("customize.gif"));
+ customizeAction.setToolTipText("Customize Table");
+
+ IToolBarManager toolbarManager = viewPart.getViewSite().getActionBars().getToolBarManager();
+ toolbarManager.add(customizeAction);
+ }
+
+ protected void createSupportWidgets(Composite parent) {
+
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(ALayout.getZeroMarginLayout(4, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ statusLabel = new Label(comp, SWT.NONE);
+ statusLabel.setText(" ");
+ statusLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ Display.getCurrent().addFilter(SWT.KeyDown, displayKeysListener);
+ Display.getCurrent().addFilter(SWT.KeyUp, displayKeysListener);
+
+ getTree().addListener(SWT.MouseUp, new Listener() {
+ public void handleEvent(Event event) {
+ if (event.button == 1 && ((event.stateMask & SWT.MODIFIER_MASK) == SWT.ALT)) {
+ Point pt = new Point(event.x, event.y);
+ TreeItem item = getTree().getItem(pt);
+ if (item == null) return;
+ for (int colNum = 0; colNum < getTree().getColumnCount(); colNum++) {
+ Rectangle rect = item.getBounds(colNum);
+ if (rect.contains(pt)) {
+ // System.out.println("Column " + colNum);
+ handleAltLeftClick(getTree().getColumns()[colNum], item);
+ }
+ }
+ }
+ updateStatusLabel();
+ }
+ });
+ getTree().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ updateStatusLabel();
+ }
+ });
+
+ getTree().setMenu(getMenuManager().getMenu());
+ filterDataUI.createWidgets(comp);
+
+ // Load the default customization if already set
+ if (customize != null && customize.getDefaultCustData() != null) customize.setCustomization(customize.getDefaultCustData());
+ }
+
+ public int getCurrentColumnWidth(XViewerColumn xCol) {
+ for (TreeColumn col : getTree().getColumns()) {
+ if (col.getText().equals(xCol.getDisplayName()) || col.getText().equals(xCol.getAlternateName())) {
+ return col.getWidth();
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ protected void inputChanged(Object input, Object oldInput) {
+ super.inputChanged(input, oldInput);
+ updateStatusLabel();
+ }
+
+ public boolean handleAltLeftClick(TreeColumn treeColumn, TreeItem treeItem) {
+ return false;
+ }
+
+ public void handleColumnMultiEdit(TreeColumn treeColumn, Collection<TreeItem> treeItems) {
+ }
+
+ public boolean isColumnMultiEditable(TreeColumn treeColumn, Collection<TreeItem> treeItems) {
+ return false;
+ }
+
+ public XViewerColumn getXTreeColumn(int columnIndex) {
+ // Setting current customize data happens in a job, the currentCustData could be null
+ // depending on order of threads
+ if (customize.getCurrentCustData() != null) {
+ for (XViewerColumn xCol : customize.getCurrentCustData().getColumnData().getColumns()) {
+ if (xCol.getColumnNum() == columnIndex) return xCol;
+ }
+ }
+ return null;
+ }
+ Listener displayKeysListener = new Listener() {
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ if (event.keyCode == SWT.CTRL) {
+ if (event.type == SWT.KeyDown)
+ ctrlKeyDown = true;
+ else if (event.type == SWT.KeyUp) ctrlKeyDown = false;
+ }
+ }
+ };
+
+ public void resetDefaultSorter() {
+ customize.resetDefaultSorter();
+ }
+
+ @Override
+ public void setSorter(ViewerSorter sorter) {
+ super.setSorter(sorter);
+ updateStatusLabel();
+ }
+
+ public MenuManager getMenuManager() {
+ return this.menuManager;
+ }
+
+ public int getVisibleItemCount(TreeItem items[]) {
+ int cnt = items.length;
+ for (TreeItem item : items)
+ if (item.getExpanded()) cnt += getVisibleItemCount(item.getItems());
+ return cnt;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.StructuredViewer#refresh()
+ */
+ @Override
+ public void refresh() {
+ if (getTree() == null || getTree().isDisposed()) return;
+ super.refresh();
+ updateStatusLabel();
+ }
+
+ public boolean isFiltered() {
+ return getFilters().length > 0;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.StructuredViewer#refresh(boolean)
+ */
+ @Override
+ public void refresh(boolean updateLabels) {
+ super.refresh(updateLabels);
+ updateStatusLabel();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.StructuredViewer#refresh(java.lang.Object, boolean)
+ */
+ @Override
+ public void refresh(Object element, boolean updateLabels) {
+ super.refresh(element, updateLabels);
+ updateStatusLabel();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.StructuredViewer#refresh(java.lang.Object)
+ */
+ @Override
+ public void refresh(Object element) {
+ super.refresh(element);
+ updateStatusLabel();
+ }
+
+ /**
+ * Override this to add information to the status string. eg. extra filters etc.
+ *
+ * @return string to add
+ */
+ public String getStatusString() {
+ return "";
+ }
+
+ public String getStatusLine1() {
+ StringBuffer sb = new StringBuffer();
+ int loadedNum = 0;
+ if (getRoot() != null && ((ITreeContentProvider) getContentProvider()) != null) loadedNum =
+ ((ITreeContentProvider) getContentProvider()).getChildren(getRoot()).length;
+ sb.append(" " + loadedNum + " Loaded - " + getVisibleItemCount(getTree().getItems()) + " Shown - " + ((IStructuredSelection) getSelection()).size() + " Selected - ");
+ sb.append(customize.getStatusLabelAddition());
+ sb.append(filterDataUI.getStatusLabelAddition());
+ sb.append(getStatusString());
+ return sb.toString().replaceAll(" - $", "");
+ }
+
+ public String getStatusLine2() {
+ StringBuffer sb = new StringBuffer();
+ if (customize.getCurrentCustData() != null && customize.getCurrentCustData().getSortingData().isSorting()) sb.append(customize.getCurrentCustData().getSortingData().toString());
+ return sb.toString().replaceFirst(", $", "");
+ }
+
+ public void updateStatusLabel() {
+ if (getTree().isDisposed() || statusLabel.isDisposed()) return;
+ String line2 = getStatusLine2();
+ String status = "";
+ if (line2.equals(""))
+ status = getStatusLine1();
+ else
+ status = getStatusLine1() + "\n" + line2;
+ statusLabel.setText(status);
+ statusLabel.getParent().getParent().layout();
+ }
+
+ public void addColumns() {
+ int colNum = 0;
+ for (final XViewerColumn xCol : customize.getCurrentCustData().getColumnData().getColumns()) {
+ TreeColumn column = new TreeColumn(getTree(), xCol.getAlign(), colNum);
+ xCol.setTreeColumn(column);
+ xCol.setColumnNum(colNum++);
+ column.setData(xCol);
+ if (xCol.getToolTip().equals(""))
+ column.setToolTipText(xCol.getDisplayName());
+ else
+ column.setToolTipText(xCol.getToolTip());
+ column.setText(xCol.getDisplayName());
+ if (xCol.isShow()) {
+ int width = xCol.getWidth();
+ if (width == 0) width = xCol.getDefaultWidth();
+ column.setWidth(width);
+ } else
+ column.setWidth(0);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ // Add sorter if doesn't exist
+ if (getSorter() == null) resetDefaultSorter();
+ if (ctrlKeyDown) {
+ List<XViewerColumn> currSortCols = customize.getCurrentCustData().getSortingData().getSortXCols();
+ if (currSortCols == null) {
+ currSortCols = new ArrayList<XViewerColumn>();
+ currSortCols.add(xCol);
+ } else {
+ // If already selected this item, reverse the sort
+ if (currSortCols.contains(xCol)) {
+ for (XViewerColumn currXCol : currSortCols)
+ if (currXCol.equals(xCol)) currXCol.reverseSort();
+ } else
+ currSortCols.add(xCol);
+ }
+ customize.getCurrentCustData().getSortingData().setSortXCols(currSortCols);
+ } else {
+
+ List<XViewerColumn> cols = new ArrayList<XViewerColumn>();
+ cols.add(xCol);
+ // If sorter already has this column sorted, reverse the sort
+ List<XViewerColumn> currSortCols = customize.getCurrentCustData().getSortingData().getSortXCols();
+ if (currSortCols != null && currSortCols.size() == 1 && currSortCols.iterator().next().equals(xCol)) xCol.reverseSort();
+ // Set the newly sorted column
+ customize.getCurrentCustData().getSortingData().setSortXCols(cols);
+ }
+ refresh();
+ updateStatusLabel();
+ }
+ });
+ }
+ }
+
+ /**
+ * @return Returns the customize.
+ */
+ public XViewerCustomize getCustomize() {
+ return customize;
+ }
+
+ public String getViewerNamespace() {
+ return namespace;
+ }
+
+ public IXViewerFactory getXViewerFactory() {
+ return xViewerFactory;
+ }
+
+ public Label getStatusLabel() {
+ return statusLabel;
+ }
+
+ /**
+ * @return the textFilterComp
+ */
+ public FilterDataUI getTextFilterComp() {
+ return filterDataUI;
+ }
+
+ public boolean isColumnMultiEditEnabled() {
+ return columnMultiEditEnabled;
+ }
+
+ public void setColumnMultiEditEnabled(boolean columnMultiEditEnabled) {
+ this.columnMultiEditEnabled = columnMultiEditEnabled;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumn.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumn.java
new file mode 100644
index 00000000000..728d15fffd1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumn.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import java.util.ArrayList;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.TreeColumn;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XViewerColumn {
+
+ private XViewer xViewer;
+ private String systemName;
+ private String alternateName = "";
+ private int width;
+ private int defaultWidth;
+ private int align;
+ private boolean sortForward = true; // if true, sort alphabetically; else reverse
+ private int columnNum = Integer.MAX_VALUE;
+ private boolean show = true;
+ private TreeColumn treeColumn;
+ private int orderNum = Integer.MAX_VALUE;
+ private SortDataType sortDataType = SortDataType.String;
+ private static ArrayList<XViewerColumn> registeredColumns = new ArrayList<XViewerColumn>();
+ private String toolTip = "";
+ public enum SortDataType {
+ Date, Float, Percent, String, Boolean, Integer
+ };
+
+ public XViewerColumn(XViewer xViewer, String name, int width, int defaultWidth, int align, boolean show, SortDataType sortDataType, int orderNum) {
+ super();
+ this.xViewer = xViewer;
+ this.systemName = name;
+ this.defaultWidth = defaultWidth;
+ this.width = defaultWidth;
+ this.align = align;
+ this.show = show;
+ this.orderNum = orderNum;
+ this.sortDataType = sortDataType;
+ }
+
+ public XViewerColumn(String name, int width, int defaultWidth, int align, boolean show, SortDataType sortDataType, int orderNum) {
+ this(null, name, width, defaultWidth, align, show, sortDataType, orderNum);
+ }
+
+ public XViewerColumn(XViewer xViewer, String xml) {
+ this.xViewer = xViewer;
+ setFromXml(xml);
+ }
+
+ public boolean equals(Object obj) {
+ if (obj instanceof XViewerColumn) {
+ return ((XViewerColumn) obj).getSystemName().equals(systemName);
+ }
+ return super.equals(obj);
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ return getSystemName().hashCode();
+ }
+
+ public XViewerColumn(XViewer xViewer, String name, int width, int defaultWidth, int align) {
+ this(xViewer, name, width, defaultWidth, align, true, SortDataType.String, Integer.MAX_VALUE);
+ }
+
+ public static String SYSTEM_NAME = "name";
+ public static String ALTERNATE_NAME = "alt";
+ public static String WIDTH = "wdth";
+ public static String DEFAULT_WIDTH = "defWdth";
+ public static String ALIGN = "algn";
+ public static String SORT_FORWARD = "srtFwd";
+ public static String SHOW = "show";
+ public static String ORDER_NUM = "order";
+ public static String XTREECOLUMN_TAG = "xCol";
+
+ public String toXml() {
+ StringBuffer sb = new StringBuffer("<" + XTREECOLUMN_TAG + ">");
+ sb.append(AXml.addTagData(SYSTEM_NAME, systemName));
+ sb.append(AXml.addTagData(ALTERNATE_NAME, alternateName));
+ sb.append(AXml.addTagData(DEFAULT_WIDTH, defaultWidth + ""));
+ sb.append(AXml.addTagData(WIDTH, (xViewer == null) ? width + "" : xViewer.getCurrentColumnWidth(this) + ""));
+ sb.append(AXml.addTagData(ALIGN, getAlignStoreName(align)));
+ sb.append(AXml.addTagData(SORT_FORWARD, sortForward + ""));
+ sb.append(AXml.addTagData(SHOW, show + ""));
+ sb.append(AXml.addTagData(ORDER_NUM, orderNum + ""));
+ sb.append("</" + XTREECOLUMN_TAG + ">");
+ return sb.toString();
+ }
+
+ public void setFromXml(String xml) {
+ systemName = AXml.getTagData(xml, SYSTEM_NAME);
+ alternateName = AXml.getTagData(xml, ALTERNATE_NAME);
+ width = AXml.getTagIntData(xml, WIDTH);
+ defaultWidth = AXml.getTagIntData(xml, DEFAULT_WIDTH);
+ // Handle old widths stored before defaultWidth addition
+ if (defaultWidth == 0) defaultWidth = width;
+ align = getAlignStoreValue(AXml.getTagData(xml, ALIGN));
+ sortForward = AXml.getTagBooleanData(xml, SORT_FORWARD);
+ show = AXml.getTagBooleanData(xml, SHOW);
+ orderNum = AXml.getTagIntData(xml, ORDER_NUM);
+ }
+
+ public static String getSystemName(String xml) {
+ return AXml.getTagData(xml, SYSTEM_NAME);
+ }
+
+ public String getAlignStoreName(int align) {
+ if (align == SWT.CENTER)
+ return "center";
+ else if (align == SWT.RIGHT)
+ return "right";
+ else
+ return "left";
+ }
+
+ public int getAlignStoreValue(String str) {
+ if (str.equals("center"))
+ return SWT.CENTER;
+ else if (str.equals("right"))
+ return SWT.RIGHT;
+ else
+ return SWT.LEFT;
+ }
+
+ public String toString() {
+ return systemName;
+ }
+
+ public int getAlign() {
+ return align;
+ }
+
+ public String getNameAlternate() {
+ return systemName + (alternateName.equals("") ? "" : " (" + (alternateName + ")"));
+ }
+
+ public void refreshColumn() {
+ if (treeColumn == null) return;
+ treeColumn.setText(systemName);
+ if (show)
+ treeColumn.setWidth(width);
+ else
+ treeColumn.setWidth(0);
+ treeColumn.setAlignment(align);
+ }
+
+ public void setAlign(int align) {
+ this.align = align;
+ }
+
+ public String getSystemName() {
+ return systemName;
+ }
+
+ public void setSystemName(String name) {
+ this.systemName = name;
+ }
+
+ public int getWidth() {
+ return width;
+ }
+
+ public void setWidth(int width) {
+ this.width = width;
+ }
+
+ public XViewer getTreeViewer() {
+ return xViewer;
+ }
+
+ public boolean isSortForward() {
+ return sortForward;
+ }
+
+ public void setSortForward(boolean sortForward) {
+ this.sortForward = sortForward;
+ }
+
+ public void reverseSort() {
+ setSortForward(!sortForward);
+ }
+
+ public int getColumnNum() {
+ return columnNum;
+ }
+
+ public void setColumnNum(int columnNum) {
+ this.columnNum = columnNum;
+ }
+
+ public boolean isShow() {
+ return show;
+ }
+
+ public void setShow(boolean show) {
+ this.show = show;
+ }
+
+ public TreeColumn getTreeColumn() {
+ return treeColumn;
+ }
+
+ public void setTreeColumn(TreeColumn treeColumn) {
+ this.treeColumn = treeColumn;
+ }
+
+ public int getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(int orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getAlternateName() {
+ return alternateName;
+ }
+
+ public void setAlternateName(String showName) {
+ this.alternateName = showName;
+ }
+
+ /**
+ * @return alternateName if exists, otherwise systemName
+ */
+ public String getDisplayName() {
+ if (!alternateName.equals(""))
+ return alternateName;
+ else
+ return systemName;
+ }
+
+ /**
+ * @return the sortDataType
+ */
+ public SortDataType getSortDataType() {
+ return sortDataType;
+ }
+
+ /**
+ * @param sortDataType the sortDataType to set
+ */
+ public void setSortDataType(SortDataType sortDataType) {
+ this.sortDataType = sortDataType;
+ }
+
+ /**
+ * @return the registeredColumns
+ */
+ public static ArrayList<XViewerColumn> getRegisteredColumns() {
+ return registeredColumns;
+ }
+
+ /**
+ * @param treeViewer the treeViewer to set
+ */
+ public void setTreeViewer(XViewer treeViewer) {
+ this.xViewer = treeViewer;
+ }
+
+ /**
+ * @return the toolTip
+ */
+ public String getToolTip() {
+ return toolTip;
+ }
+
+ /**
+ * @param toolTip the toolTip to set
+ */
+ public void setToolTip(String toolTip) {
+ if (toolTip != null) this.toolTip = toolTip;
+ }
+
+ /**
+ * @return the defaultWidth
+ */
+ public int getDefaultWidth() {
+ return defaultWidth;
+ }
+
+ /**
+ * @param defaultWidth the defaultWidth to set
+ */
+ public void setDefaultWidth(int defaultWidth) {
+ this.defaultWidth = defaultWidth;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumnLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumnLabelProvider.java
new file mode 100644
index 00000000000..3717f31f9d6
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerColumnLabelProvider.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XViewerColumnLabelProvider implements ILabelProvider {
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public Image getImage(Object element) {
+ return null;
+ }
+
+ public String getText(Object element) {
+ if (!(element instanceof XViewerColumn)) return "";
+ XViewerColumn xCol = (XViewerColumn) element;
+ return xCol.getNameAlternate() + " (" + xCol.getWidth() + ") " + (OseeAts.isAtsAdmin() ? " - " + xCol.getOrderNum() : "");
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerLabelProvider.java
new file mode 100644
index 00000000000..87249bddcb4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerLabelProvider.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class XViewerLabelProvider implements ITableLabelProvider {
+ private final XViewer viewer;
+
+ /**
+ * @param viewer
+ */
+ public XViewerLabelProvider(final XViewer viewer) {
+ super();
+ this.viewer = viewer;
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (viewer.getXTreeColumn(columnIndex) != null) return getColumnImage(element, viewer.getXTreeColumn(columnIndex));
+ return null;
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ if (viewer.getXTreeColumn(columnIndex) != null) return getColumnText(element, viewer.getXTreeColumn(columnIndex));
+ return "";
+ }
+
+ protected abstract Image getColumnImage(Object element, XViewerColumn column);
+
+ protected abstract String getColumnText(Object element, XViewerColumn column);
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerSorter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerSorter.java
new file mode 100644
index 00000000000..59fa084b849
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerSorter.java
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn.SortDataType;
+
+/**
+ * XTreeSorter is equipped to: 1) Sort columns forward and backward by re-selecting the column 2) Sort by multiple
+ * columns
+ *
+ * @author Donald G. Dunne
+ */
+public class XViewerSorter extends ViewerSorter {
+ private final XViewer treeViewer;
+
+ public XViewerSorter(XViewer treeViewer) {
+ super();
+ this.treeViewer = treeViewer;
+ }
+
+ @SuppressWarnings("unchecked")
+ public int compare(Viewer viewer, Object o1, Object o2, int sortXColIndex) {
+ if (treeViewer.getCustomize().getCurrentCustData() == null) return 0;
+ List<XViewerColumn> sortXCols = treeViewer.getCustomize().getCurrentCustData().getSortingData().getSortXCols();
+ if (sortXCols == null || sortXCols.size() == 0) return 0;
+ XViewerColumn sortXCol = sortXCols.get(sortXColIndex);
+ String o1Str = getTreeColumnText(sortXCol, o1);
+ String o2Str = getTreeColumnText(sortXCol, o2);
+
+ // System.out.println("sortForward.get(columnNum) *" +
+ // sortXCol.isSortForward() + "*");
+ int compareInt = 0;
+ if (o1Str == null)
+ compareInt = -1;
+ else if (o2Str == null)
+ compareInt = 1;
+ else if (sortXCol.getSortDataType() == SortDataType.Date)
+ compareInt = getCompareForDate(o1Str, o2Str);
+ else if (sortXCol.getSortDataType() == SortDataType.Percent)
+ compareInt = getCompareForPercent(o1Str, o2Str);
+ else if (sortXCol.getSortDataType() == SortDataType.Float)
+ compareInt = getCompareForFloat(o1Str, o2Str);
+ else if (sortXCol.getSortDataType() == SortDataType.Integer)
+ compareInt = getCompareForInteger(o1Str, o2Str);
+ else
+ compareInt = getComparator().compare(o1Str, o2Str);
+
+ return getCompareBasedOnDirection(sortXCol, compareInt, viewer, o1, o2, sortXColIndex);
+ }
+
+ public int compare(Viewer viewer, Object o1, Object o2) {
+ return compare(viewer, o1, o2, 0);
+ }
+
+ private String getTreeColumnText(XViewerColumn xCol, Object obj) {
+ ITableLabelProvider labelProv = (ITableLabelProvider) treeViewer.getLabelProvider();
+ return labelProv.getColumnText(obj, xCol.getColumnNum());
+ }
+
+ public int getCompareBasedOnDirection(XViewerColumn sortXCol, int compareInt, Viewer viewer, Object o1, Object o2, int sortXColIndex) {
+ List<XViewerColumn> sortXCols = treeViewer.getCustomize().getCurrentCustData().getSortingData().getSortXCols();
+ int returnInt = (sortXCol.isSortForward() ? 1 : -1) * compareInt;
+ // System.out.println("returnInt *" + returnInt + "*");
+ if (returnInt == 0 && sortXCols.size() > (sortXColIndex + 1)) {
+ returnInt = compare(viewer, o1, o2, (sortXColIndex + 1));
+ }
+ return returnInt;
+ }
+
+ public int getCompareForFloat(String float1, String float2) {
+ double float1Float = 0;
+ try {
+ float1Float = (new Double(float1)).doubleValue();
+ } catch (NumberFormatException ex) {
+ return 0;
+ }
+ double float2Float = 0;
+ try {
+ float2Float = (new Double(float2)).doubleValue();
+ } catch (NumberFormatException ex) {
+ return 0;
+ }
+ return getCompareForFloat(float1Float, float2Float);
+ }
+
+ public int getCompareForInteger(String int1, String int2) {
+ int int1Integer = 0;
+ try {
+ int1Integer = (new Integer(int1)).intValue();
+ } catch (NumberFormatException ex) {
+ return 0;
+ }
+ int int2Integer = 0;
+ try {
+ int2Integer = (new Integer(int2)).intValue();
+ } catch (NumberFormatException ex) {
+ return 0;
+ }
+ return getCompareForInteger(int1Integer, int2Integer);
+ }
+
+ public static int getCompareForFloat(double float1, double float2) {
+ if (float1 == float2)
+ return 0;
+ else if (float1 == 0 || float1 < float2)
+ return -1;
+ else if (float2 == 0 || float2 < float1)
+ return 1;
+ else
+ return 0;
+ }
+
+ public static int getCompareForInteger(int int1, int int2) {
+ if (int1 == int2)
+ return 0;
+ else if (int1 == 0 || int1 < int2)
+ return -1;
+ else if (int2 == 0 || int2 < int1)
+ return 1;
+ else
+ return 0;
+ }
+
+ public int getCompareForDate(String date1, String date2) {
+ if (date1.trim().equals("")) return -1;
+ if (date2.trim().equals("")) return 1;
+ Date date1Date = null;
+ try {
+ date1Date = SimpleDateFormat.getInstance().parse(date1);
+ } catch (ParseException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ return 0;
+ }
+ Date date2Date = null;
+ try {
+ date2Date = SimpleDateFormat.getInstance().parse(date2);
+ } catch (ParseException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ return 0;
+ }
+ return getCompareForDate(date1Date, date2Date);
+ }
+
+ public int getCompareForDate(Date date1, Date date2) {
+ return date1.compareTo(date2);
+ }
+
+ public int getCompareForPercent(String percent1, String percent2) {
+ int percent1Int = 0;
+ try {
+ percent1Int = (new Integer(percent1)).intValue();
+ } catch (NumberFormatException ex) {
+ percent1Int = -1;
+ }
+ int percent2Int = 0;
+ try {
+ percent2Int = (new Integer(percent2)).intValue();
+ } catch (NumberFormatException ex) {
+ percent2Int = 1;
+ }
+ return getCompareForPercent(percent1Int, percent2Int);
+ }
+
+ @SuppressWarnings("unchecked")
+ public int getCompareForPercent(int percent1, int percent2) {
+ int compareInt = 0;
+ if (percent1 == percent2)
+ compareInt = 0;
+ else if (percent1 == 0)
+ compareInt = -1;
+ else if (percent2 == 0)
+ compareInt = 1;
+ else if (percent1 == 100)
+ compareInt = 1;
+ else if (percent2 == 100)
+ compareInt = -1;
+ else
+ compareInt = getComparator().compare(String.valueOf(percent1), String.valueOf(percent2));
+ return compareInt;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerTextFilter.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerTextFilter.java
new file mode 100644
index 00000000000..e48ec4999d4
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/XViewerTextFilter.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+public class XViewerTextFilter extends ViewerFilter {
+
+ private final XViewer xViewer;
+ private ITableLabelProvider labelProv;
+ private Pattern pattern;
+ private Matcher matcher;
+
+ public XViewerTextFilter(XViewer xViewer) {
+ this.xViewer = xViewer;
+ }
+
+ public void setFilterText(String text) {
+ pattern = Pattern.compile(text, Pattern.CASE_INSENSITIVE);
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (pattern == null) return true;
+ if (labelProv == null) labelProv = (ITableLabelProvider) xViewer.getLabelProvider();
+ for (XViewerColumn xCol : xViewer.getCustomize().getCurrentCustData().getColumnData().getColumns()) {
+ if (xCol.isShow()) {
+ String cellStr = labelProv.getColumnText(element, xCol.getColumnNum());
+ if (cellStr != null) {
+ matcher = pattern.matcher(cellStr);
+ if (matcher.find()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/ColumnData.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/ColumnData.java
new file mode 100644
index 00000000000..c59285afdca
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/ColumnData.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ColumnData {
+
+ List<XViewerColumn> columns = new ArrayList<XViewerColumn>();
+ Map<String, XViewerColumn> nameToCol = new HashMap<String, XViewerColumn>();
+
+ public List<XViewerColumn> setFromXml(String xml, IXViewerFactory xViewerFactory) {
+ columns.clear();
+ List<XViewerColumn> xCols = new ArrayList<XViewerColumn>();
+ Matcher columnMatch =
+ Pattern.compile("<" + XViewerColumn.XTREECOLUMN_TAG + ">(.*?)</" + XViewerColumn.XTREECOLUMN_TAG + ">").matcher(
+ xml);
+ while (columnMatch.find()) {
+ String colXml = columnMatch.group(1);
+ String colName = XViewerColumn.getSystemName(colXml);
+ XViewerColumn xCol = xViewerFactory.getDefaultXViewerColumn(colName);
+ if (xCol == null)
+ xCol = new XViewerColumn(null, colXml);
+ else
+ xCol.setFromXml(colXml);
+ xCols.add(xCol);
+ }
+ int x = 0;
+ for (XViewerColumn xCol : XViewerCustomize.getColumnOrder(xCols)) {
+ xCol.setColumnNum(x++);
+ columns.add(xCol);
+ nameToCol.put(xCol.getSystemName(), xCol);
+ }
+ return columns;
+ }
+
+ public XViewerColumn getXColumn(String name) {
+ return nameToCol.get(name);
+ }
+
+ /**
+ * Because a stored set of columns may not have new columns that were added later, this method is called to add such
+ * columns to the set.
+ *
+ * @param colData
+ */
+ public void addMissingColumns(ColumnData colData) {
+ for (XViewerColumn newXCol : colData.columns)
+ if (!columns.contains(newXCol)) columns.add(newXCol);
+ }
+
+ public String getXml() {
+ StringBuffer sb = new StringBuffer();
+ for (XViewerColumn xCol : columns) {
+ sb.append(xCol.toXml());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * @return the columns
+ */
+ public List<XViewerColumn> getColumns() {
+ return columns;
+ }
+
+ /**
+ * @param columns the columns to set
+ */
+ public void setColumns(List<XViewerColumn> columns) {
+ this.columns = columns;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizationDataSelectionDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizationDataSelectionDialog.java
new file mode 100644
index 00000000000..64389705f8b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizationDataSelectionDialog.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox;
+import org.eclipse.osee.framework.ui.skynet.widgets.XText;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.ListDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class CustomizationDataSelectionDialog extends ListDialog {
+
+ private XText custText;
+ private String enteredName;
+ private boolean saveGlobal = false;
+ private XCheckBox saveGlobalCheck;
+
+ public CustomizationDataSelectionDialog(XViewer xViewer, List<CustomizeData> custDatas) {
+ super(Display.getCurrent().getActiveShell());
+ setContentProvider(new ArrayContentProvider());
+ setLabelProvider(new CustomizeDataLabelProvider(xViewer));
+ setInput(custDatas);
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ setTitle("Enter Customization Name");
+ setMessage("Enter new customization name or select current customization.");
+ }
+
+ @Override
+ protected void okPressed() {
+ if (custText.get().equals("")) {
+ AWorkbench.popup("ERROR", "Must enter customization name.");
+ return;
+ }
+ super.okPressed();
+ }
+
+ @Override
+ protected Control createDialogArea(Composite container) {
+
+ Control c = super.createDialogArea(container);
+
+ Composite comp = new Composite(container, SWT.NONE);
+ comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ comp.setLayout(new GridLayout(2, true));
+
+ custText = new XText("Enter Customization Name");
+ custText.createWidgets(comp, 1);
+ custText.setFocus();
+ custText.addModifyListener(new ModifyListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
+ */
+ public void modifyText(ModifyEvent e) {
+ enteredName = custText.get();
+ }
+ });
+
+ if (OseeAts.isAtsAdmin()) {
+ comp = new Composite(container, SWT.NONE);
+ comp.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
+ comp.setLayout(new GridLayout(2, false));
+
+ saveGlobalCheck = new XCheckBox("Save Global");
+ saveGlobalCheck.createWidgets(comp, 1);
+ saveGlobalCheck.addSelectionListener(new SelectionAdapter() {
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e) {
+ saveGlobal = saveGlobalCheck.get();
+ }
+ });
+ }
+
+ getTableViewer().addSelectionChangedListener(new ISelectionChangedListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) getTableViewer().getSelection();
+ if (selection.size() == 0) return;
+ Iterator<?> i = selection.iterator();
+ CustomizeData custData = (CustomizeData) i.next();
+ custText.set(custData.getName());
+ if (saveGlobalCheck != null) {
+ saveGlobalCheck.set(!custData.isPersonal());
+ saveGlobal = !custData.isPersonal();
+ }
+ }
+ });
+ return c;
+ }
+
+ public String getEnteredName() {
+ return enteredName;
+ }
+
+ public boolean isSaveGlobal() {
+ return saveGlobal;
+ }
+
+ public void setSaveGlobal(boolean saveGlobal) {
+ this.saveGlobal = saveGlobal;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeData.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeData.java
new file mode 100644
index 00000000000..0c935ac8be3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeData.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.eclipse.osee.framework.ui.plugin.util.OverlayImage;
+import org.eclipse.osee.framework.ui.plugin.util.OverlayImage.Location;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class CustomizeData {
+
+ private String guid = GUID.generateGuidStr();
+ private String name;
+ private String nameSpace;
+ private boolean personal = false;
+ private SortingData sortingData = new SortingData(this);
+ private FilterData filterData = new FilterData();
+ private ColumnData columnData = new ColumnData();
+ private Map<String, Image> imageMap = new HashMap<String, Image>();
+
+ public CustomizeData() {
+ }
+
+ public CustomizeData(String xml, IXViewerFactory xViewerFactory) {
+ setFromXml(xml, xViewerFactory);
+ }
+
+ public void resetGuid() {
+ guid = GUID.generateGuidStr();
+ }
+
+ public String toString() {
+ return name;
+ }
+
+ public Image getImage(boolean isDefault) {
+ if (name.equals(XViewerCustomize.TABLE_DEFAULT_LABEL) || name.equals(XViewerCustomize.CURRENT_LABEL)) return SkynetGuiPlugin.getInstance().getImage(
+ "customize.gif");
+ String index = "" + personal + isDefault;
+ if (imageMap.containsKey(index)) return imageMap.get(index);
+ Image image = SkynetGuiPlugin.getInstance().getImage("customize.gif");
+ if (!personal) image =
+ new OverlayImage(image, SkynetGuiPlugin.getInstance().getImageDescriptor("customizeG.gif"),
+ Location.BOT_RIGHT).createImage();
+ if (isDefault) image =
+ new OverlayImage(image, SkynetGuiPlugin.getInstance().getImageDescriptor("customizeD.gif"),
+ Location.TOP_RIGHT).createImage();
+ imageMap.put(index, image);
+ return image;
+ }
+
+ public String getXml() {
+ StringBuffer sb =
+ new StringBuffer(
+ "<XTreeProperties name=\"" + name + "\" namespace=\"" + nameSpace + "\" guid=\"" + guid + "\">");
+ sb.append(sortingData.getXml());
+ sb.append(filterData.getXml());
+ sb.append(columnData.getXml());
+ sb.append("</XTreeProperties>");
+ return sb.toString();
+ }
+
+ public void setFromXml(String xml, IXViewerFactory xViewerFactory) {
+ Matcher m = Pattern.compile("name=\"(.*?)\".*?namespace=\"(.*?)\".*?guid=\"(.*?)\"").matcher(xml);
+ if (m.find()) {
+ name = m.group(1);
+ nameSpace = m.group(2);
+ guid = m.group(3);
+ } else {
+ name = "Invalid customize format for " + xml.substring(0, 50);
+ OSEELog.logException(SkynetGuiPlugin.class, new IllegalStateException(name), false);
+ return;
+ }
+ sortingData.setFromXml(xml);
+ filterData.setFromXml(xml);
+ columnData.setFromXml(xml, xViewerFactory);
+ }
+
+ /**
+ * @return the personal
+ */
+ public boolean isPersonal() {
+ return personal;
+ }
+
+ /**
+ * @param personal the personal to set
+ */
+ public void setPersonal(boolean personal) {
+ this.personal = personal;
+ }
+
+ /**
+ * @return the columnData
+ */
+ public ColumnData getColumnData() {
+ return columnData;
+ }
+
+ /**
+ * @return the filterData
+ */
+ public FilterData getFilterData() {
+ return filterData;
+ }
+
+ /**
+ * @return the sortingData
+ */
+ public SortingData getSortingData() {
+ return sortingData;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the nameSpace
+ */
+ public String getNameSpace() {
+ return nameSpace;
+ }
+
+ /**
+ * @param nameSpace the nameSpace to set
+ */
+ public void setNameSpace(String nameSpace) {
+ this.nameSpace = nameSpace;
+ }
+
+ public String getGuid() {
+ return guid;
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeDataLabelProvider.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeDataLabelProvider.java
new file mode 100644
index 00000000000..1d5d0443429
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/CustomizeDataLabelProvider.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Generic Label Provider showing Descriptive Name as text
+ *
+ * @author Donald G. Dunne
+ */
+public class CustomizeDataLabelProvider implements ILabelProvider {
+
+ private final XViewer viewer;
+
+ public CustomizeDataLabelProvider(XViewer xViewer) {
+ viewer = xViewer;
+ }
+
+ public Image getImage(Object arg0) {
+ return ((CustomizeData) arg0).getImage(viewer.getCustomize().getXViewerCustomizations().isCustomizationUserDefault(
+ (CustomizeData) arg0));
+ }
+
+ public String getText(Object arg0) {
+ return " " + (((CustomizeData) arg0)).getName();
+ }
+
+ public void addListener(ILabelProviderListener arg0) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object arg0, String arg1) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener arg0) {
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterData.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterData.java
new file mode 100644
index 00000000000..a378ce74283
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterData.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class FilterData {
+
+ private String filterText = "";
+ private static final String FILTER_TAG = "xFilter";
+
+ /**
+ * @return the filterText
+ */
+ public String getFilterText() {
+ return filterText;
+ }
+
+ /**
+ * @param filterText the filterText to set
+ */
+ public void setFilterText(String filterText) {
+ this.filterText = filterText;
+ }
+
+ public String getXml() {
+ return AXml.addTagData(FILTER_TAG, filterText);
+ }
+
+ public void setFromXml(String xml) {
+ filterText = AXml.getTagData(xml, FILTER_TAG);
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterDataUI.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterDataUI.java
new file mode 100644
index 00000000000..7e19d92f40c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/FilterDataUI.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerTextFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class FilterDataUI {
+
+ private Text filterText;
+ private final XViewerTextFilter xViewerFilter;
+ private Label filterLabel;
+ private CustomizeData custData;
+ private final XViewer xViewer;
+
+ public FilterDataUI(XViewer xViewer) {
+ this.xViewer = xViewer;
+ this.xViewerFilter = new XViewerTextFilter(xViewer);
+ }
+
+ public void createWidgets(Composite comp) {
+ Label label = new Label(comp, SWT.NONE);
+ label.setText("Filter:");
+ label.setToolTipText("Type string and press enter to filter.\nClear field to un-filter.");
+ GridData gd = new GridData(SWT.RIGHT, SWT.NONE, false, false);
+ label.setLayoutData(gd);
+
+ filterText = new Text(comp, SWT.SINGLE | SWT.BORDER);
+ gd = new GridData(SWT.RIGHT, SWT.NONE, false, false);
+ gd.widthHint = 100;
+ filterText.setLayoutData(gd);
+
+ filterText.addKeyListener(new KeyListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.KeyListener#keyPressed(org.eclipse.swt.events.KeyEvent)
+ */
+ public void keyPressed(KeyEvent e) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.KeyListener#keyReleased(org.eclipse.swt.events.KeyEvent)
+ */
+ public void keyReleased(KeyEvent e) {
+ // System.out.println(e.keyCode);
+ custData.getFilterData().setFilterText(filterText.getText());
+ if (filterText.getText().equals("") || e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) refresh();
+ }
+ });
+
+ filterLabel = new Label(comp, SWT.NONE);
+ filterLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.NONE, false, false));
+ filterLabel.addListener(SWT.MouseUp, new Listener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+ */
+ public void handleEvent(Event event) {
+ custData.getFilterData().setFilterText("");
+ refresh();
+ }
+ });
+ }
+
+ public void dispose() {
+ }
+
+ public String getStatusLabelAddition() {
+ if (isXViewerTextFiltered()) return "Text FILTERED - ";
+ return "";
+ }
+
+ private void refresh() {
+ if (xViewer.getTree() == null || xViewer.getTree().isDisposed()) return;
+ if (custData.getFilterData().getFilterText().equals("")) {
+ xViewer.removeFilter(xViewerFilter);
+ if (filterLabel != null) {
+ filterLabel.setImage(null);
+ filterLabel.getParent().layout();
+ }
+ } else {
+ if (!isXViewerTextFiltered()) xViewer.addFilter(xViewerFilter);
+ xViewerFilter.setFilterText(custData.getFilterData().getFilterText());
+ if (filterLabel != null) {
+ filterLabel.setImage(SkynetGuiPlugin.getInstance().getImage("clear.gif"));
+ filterLabel.getParent().layout();
+ }
+ }
+ if (filterText != null) filterText.setText(custData.getFilterData().getFilterText());
+ xViewer.refresh();
+ }
+
+ private boolean isXViewerTextFiltered() {
+ for (ViewerFilter filter : xViewer.getFilters()) {
+ if (filter instanceof XViewerTextFilter) return true;
+ }
+ return false;
+ }
+
+ /**
+ * @return the custData
+ */
+ public CustomizeData getCustData() {
+ return custData;
+ }
+
+ /**
+ * @param custData the custData to set
+ */
+ public void setCustData(CustomizeData custData) {
+ this.custData = custData;
+ refresh();
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizations.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizations.java
new file mode 100644
index 00000000000..5477d2fe21f
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizations.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.List;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IXViewerCustomizations {
+
+ public void saveCustomization(CustomizeData custData) throws Exception;
+
+ public List<CustomizeData> getCustDatas();
+
+ public CustomizeData getUserDefaultCustData();
+
+ public boolean isCustomizationUserDefault(CustomizeData custData);
+
+ public void setUserDefaultCustData(CustomizeData newCustData, boolean set);
+
+ public void deleteCustomization(CustomizeData custData) throws Exception;
+
+ public boolean isCustomizationPersistAvailable();
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizeDefaults.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizeDefaults.java
new file mode 100644
index 00000000000..d982bc1770e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/IXViewerCustomizeDefaults.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IXViewerCustomizeDefaults {
+
+ public void save();
+
+ public void setDefaultCustomization(CustomizeData custData);
+
+ public void removeDefaultCustomization(CustomizeData custData);
+
+ public boolean isDefaultCustomization(CustomizeData custData);
+
+ public boolean isSaveDefaultsEnabled();
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/SortingData.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/SortingData.java
new file mode 100644
index 00000000000..f35815a55b2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/SortingData.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SortingData {
+
+ private static String XTREESORTER_TAG = "xSorter";
+ private static String COL_NAME_TAG = "name";
+ private List<String> sortingNames = new ArrayList<String>();
+ private final CustomizeData custData;
+
+ public SortingData(CustomizeData custData) {
+ this.custData = custData;
+ }
+
+ public void clearSorter() {
+ sortingNames.clear();
+ }
+
+ public boolean isSorting() {
+ return sortingNames.size() > 0;
+ }
+
+ public String toString() {
+ List<XViewerColumn> cols = getSortXCols();
+ if (cols.size() == 0) return "";
+ StringBuffer sb = new StringBuffer("Sort: ");
+ for (XViewerColumn col : getSortXCols()) {
+ if (col != null) {
+ sb.append(col.getSystemName());
+ sb.append(col.isSortForward() ? " (FWD) , " : " (REV) , ");
+ }
+ }
+ return sb.toString().replaceFirst(" , $", "");
+ }
+
+ public List<XViewerColumn> getSortXCols() {
+ List<XViewerColumn> cols = new ArrayList<XViewerColumn>();
+ for (String name : getSortingNames())
+ cols.add(custData.getColumnData().getXColumn(name));
+ return cols;
+ }
+
+ public void setSortXCols(List<XViewerColumn> sortXCols) {
+ sortingNames.clear();
+ for (XViewerColumn xCol : sortXCols) {
+ sortingNames.add(xCol.getSystemName());
+ }
+ }
+
+ public String getXml() {
+ StringBuffer sb = new StringBuffer("<" + XTREESORTER_TAG + ">");
+ for (String item : sortingNames)
+ sb.append(AXml.addTagData(COL_NAME_TAG, item));
+ sb.append("</" + XTREESORTER_TAG + ">");
+ return sb.toString();
+ }
+
+ public void setFromXml(String xml) {
+ sortingNames.clear();
+ String xmlSortStr = AXml.getTagData(xml, XTREESORTER_TAG);
+ Matcher m = Pattern.compile("<" + COL_NAME_TAG + ">(.*?)</" + COL_NAME_TAG + ">").matcher(xmlSortStr);
+ while (m.find()) {
+ sortingNames.add(m.group(1));
+ }
+ }
+
+ /**
+ * @return the sortingNames
+ */
+ public List<String> getSortingNames() {
+ return sortingNames;
+ }
+
+ public void addSortingName(String name) {
+ if (!this.sortingNames.contains(name)) this.sortingNames.add(name);
+ }
+
+ /**
+ * @param sortingNames the sortingNames to set
+ */
+ public void setSortingNames(List<String> sortingNames) {
+ this.sortingNames = sortingNames;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizations.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizations.java
new file mode 100644
index 00000000000..44a587dbcf9
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizations.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XViewerCustomizations implements IXViewerCustomizations {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#deleteCustomization(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData)
+ */
+ public void deleteCustomization(CustomizeData custData) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#getCustDatas()
+ */
+ public List<CustomizeData> getCustDatas() {
+ return new ArrayList<CustomizeData>();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#getUserDefaultCustData()
+ */
+ public CustomizeData getUserDefaultCustData() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#isCustomizationUserDefault(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData)
+ */
+ public boolean isCustomizationUserDefault(CustomizeData custData) {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#saveCustomization(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData)
+ */
+ public void saveCustomization(CustomizeData custData) throws Exception {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#setUserDefaultCustData(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData, boolean)
+ */
+ public void setUserDefaultCustData(CustomizeData newCustData, boolean set) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#isCustomizationPersistAvailable()
+ */
+ public boolean isCustomizationPersistAvailable() {
+ return false;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomize.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomize.java
new file mode 100644
index 00000000000..ac3f40a9523
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomize.java
@@ -0,0 +1,431 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.TreeViewerReport;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerSorter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.dialogs.ListDialog;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XViewerCustomize {
+
+ protected XViewer xViewer;
+ private CustomizeData currentCustData;
+ public static String CURRENT_LABEL = "-- Current Table View --";
+ public static String TABLE_DEFAULT_LABEL = "-- Table Default --";
+ private IXViewerCustomizations xViewerCustomizations;
+ private Clipboard clipboard = new Clipboard(null);
+
+ protected Action clearAllSorting;
+ protected Action tableProperties;
+ protected Action viewTableReport;
+ protected Action columnMultiEdit;
+ protected Action copySelected;
+ protected Action copySelectedCell;
+
+ /**
+ * @param factory
+ */
+ public XViewerCustomize() {
+ this(null);
+ }
+
+ public XViewerCustomize(IXViewerCustomizations xViewerCustomizations) {
+ this.xViewerCustomizations = xViewerCustomizations;
+ }
+
+ public void init(XViewer xviewer) {
+ this.xViewer = xviewer;
+ if (xViewerCustomizations == null) {
+ this.xViewerCustomizations = xViewer.getXViewerFactory().getXViewerCustomizations(xViewer);
+ }
+ setupActions();
+ xViewer.getMenuManager().addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ setupMenu();
+ }
+ });
+ xViewer.getTree().addKeyListener(new KeySelectedListener());
+ xViewer.getTree().addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(org.eclipse.swt.events.DisposeEvent e) {
+ if (clipboard != null) clipboard.dispose();
+ };
+ });
+ }
+
+ /**
+ * @param xTreeCols
+ * @return order of columns based on column number and then system name
+ */
+ public static List<XViewerColumn> getColumnOrder(Collection<XViewerColumn> xTreeCols) {
+ List<XViewerColumn> sortCols = new ArrayList<XViewerColumn>(xTreeCols);
+ Collections.sort(sortCols, new Comparator<XViewerColumn>() {
+ public int compare(XViewerColumn o1, XViewerColumn o2) {
+ if (o1.getOrderNum() == o2.getOrderNum()) {
+ return o1.getSystemName().compareTo(o2.getSystemName());
+ } else {
+ return o1.getOrderNum() - o2.getOrderNum();
+ }
+ }
+ });
+ return sortCols;
+ }
+
+ /**
+ *
+ */
+ protected void setupMenu() {
+ MenuManager mm = xViewer.getMenuManager();
+ mm.add(new GroupMarker(XViewer.MENU_GROUP_PRE));
+ mm.add(new Separator());
+ mm.add(clearAllSorting);
+ mm.add(tableProperties);
+ mm.add(viewTableReport);
+ if (xViewer.isColumnMultiEditEnabled()) mm.add(columnMultiEdit);
+ mm.add(copySelected);
+ mm.add(copySelectedCell);
+ mm.add(new GroupMarker(XViewer.MENU_GROUP_POST));
+ }
+
+ protected void setupActions() {
+ copySelected = new Action("Copy Selected Row(s)- Ctrl-C") {
+ public void run() {
+ performCopy();
+ };
+ };
+ copySelectedCell = new Action("Copy Selected Cell - Ctrl-Shift-C") {
+ public void run() {
+ performCopyCell();
+ };
+ };
+ clearAllSorting = new Action("Clear All Sorting") {
+ public void run() {
+ xViewer.getCustomize().clearSorter();
+ };
+ };
+ tableProperties = new Action("Table Customization") {
+ public void run() {
+ handleTableCustomization();
+ }
+ };
+ viewTableReport = new Action("View Table Report") {
+ public void run() {
+ TreeViewerReport tvr = new TreeViewerReport(xViewer);
+ ArrayList<Integer> ignoreCols = new ArrayList<Integer>();
+ for (XViewerColumn xCol : xViewer.getCustomize().getCurrentCustData().getColumnData().getColumns()) {
+ if (!xCol.isShow()) ignoreCols.add(xCol.getColumnNum());
+ }
+ tvr.setIgnoreColumns(ignoreCols);
+ tvr.open();
+ }
+ };
+ columnMultiEdit = new Action("Column Multi Edit") {
+ public void run() {
+ Set<TreeColumn> editableColumns = new HashSet<TreeColumn>();
+ Collection<TreeItem> selectedTreeItems = Arrays.asList(xViewer.getTree().getSelection());
+ for (TreeColumn treeCol : xViewer.getTree().getColumns())
+ if (xViewer.isColumnMultiEditable(treeCol, selectedTreeItems)) editableColumns.add(treeCol);
+ if (editableColumns.size() == 0) {
+ AWorkbench.popup("ERROR", "No Columns Are Multi-Editable");
+ return;
+ }
+ ListDialog ld = new ListDialog(Display.getCurrent().getActiveShell());
+ ld.setMessage("Select Column to Edit");
+ ld.setInput(editableColumns);
+ ld.setLabelProvider(treeColumnLabelProvider);
+ ld.setContentProvider(new ArrayContentProvider());
+ ld.setTitle("Select Column to Edit");
+ int result = ld.open();
+ if (result != 0) return;
+ xViewer.handleColumnMultiEdit((TreeColumn) ld.getResult()[0], selectedTreeItems);
+ }
+ };
+ }
+
+ private class KeySelectedListener implements KeyListener {
+ public void keyPressed(KeyEvent e) {
+ if (e.keyCode == 'c' && e.stateMask == (SWT.CONTROL | SWT.SHIFT)) {
+ performCopyCell();
+ } else if (e.keyCode == 'c' && e.stateMask == SWT.CONTROL) {
+ performCopy();
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+ }
+
+ private void performCopyCell() {
+ Set<TreeColumn> visibleColumns = new HashSet<TreeColumn>();
+ TreeItem[] items = xViewer.getTree().getSelection();
+ if (items.length == 0) {
+ AWorkbench.popup("ERROR", "No items to copy");
+ return;
+ }
+ ArrayList<String> textTransferData = new ArrayList<String>();
+ ITableLabelProvider labelProv = (ITableLabelProvider) xViewer.getLabelProvider();
+ for (TreeColumn treeCol : xViewer.getTree().getColumns())
+ if (treeCol.getWidth() > 0) visibleColumns.add(treeCol);
+ if (visibleColumns.size() == 0) {
+ AWorkbench.popup("ERROR", "No Columns Are Available");
+ return;
+ }
+ ListDialog ld = new ListDialog(Display.getCurrent().getActiveShell()) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.dialogs.ListDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createDialogArea(Composite container) {
+ Control control = super.createDialogArea(container);
+ getTableViewer().setSorter(treeColumnSorter);
+ return control;
+ }
+ };
+ ld.setMessage("Select Column to Copy");
+ ld.setInput(visibleColumns);
+ ld.setLabelProvider(treeColumnLabelProvider);
+ ld.setContentProvider(new ArrayContentProvider());
+ ld.setTitle("Select Column to Copy");
+ int result = ld.open();
+ if (result != 0) return;
+ TreeColumn treeCol = (TreeColumn) ld.getResult()[0];
+ StringBuffer sb = new StringBuffer();
+ for (TreeItem item : items) {
+ for (int x = 0; x < xViewer.getTree().getColumnCount(); x++) {
+ if (xViewer.getTree().getColumn(x).equals(treeCol)) {
+ sb.append(labelProv.getColumnText(item.getData(), x) + "\n");
+ }
+ }
+ }
+ textTransferData.add(sb.toString());
+
+ if (textTransferData.size() > 0) clipboard.setContents(
+ new Object[] {org.eclipse.osee.framework.jdk.core.util.Collections.toString(textTransferData, null, ", ",
+ null)}, new Transfer[] {TextTransfer.getInstance()});
+ }
+
+ private void performCopy() {
+ TreeItem[] items = xViewer.getTree().getSelection();
+ if (items.length == 0) {
+ AWorkbench.popup("ERROR", "No items to copy");
+ return;
+ }
+ ArrayList<String> textTransferData = new ArrayList<String>();
+ ITableLabelProvider labelProv = (ITableLabelProvider) xViewer.getLabelProvider();
+ if (items != null && items.length > 0) {
+ StringBuffer sb = new StringBuffer();
+ for (TreeItem item : items) {
+ List<String> strs = new ArrayList<String>();
+ for (int x = 0; x < xViewer.getTree().getColumnCount(); x++) {
+ if (xViewer.getTree().getColumn(x).getWidth() > 0) {
+ String data = labelProv.getColumnText(item.getData(), x);
+ if (data != null) strs.add(data);
+ }
+ }
+ sb.append(org.eclipse.osee.framework.jdk.core.util.Collections.toString("\t", strs) + "\n");
+ }
+ textTransferData.add(sb.toString());
+
+ if (textTransferData.size() > 0) clipboard.setContents(
+ new Object[] {org.eclipse.osee.framework.jdk.core.util.Collections.toString(textTransferData, null,
+ ", ", null)}, new Transfer[] {TextTransfer.getInstance()});
+ }
+ }
+
+ static LabelProvider treeColumnLabelProvider = new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof TreeColumn) {
+ return ((TreeColumn) element).getText();
+ }
+ return "Unknown element type";
+ }
+ };
+
+ static ViewerSorter treeColumnSorter = new ViewerSorter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((TreeColumn) e1).getText(), ((TreeColumn) e2).getText());
+ }
+ };
+
+ public void setCustomization(final CustomizeData custData) {
+ SetCustomizationJob job = new SetCustomizationJob(xViewer, custData);
+ if (doCustomizeInCurrentThread()) {
+ job.run(null);
+ } else {
+ job.setUser(true);
+ job.setPriority(Job.SHORT);
+ job.schedule();
+ }
+ }
+
+ public class SetCustomizationJob extends Job {
+
+ private final CustomizeData newCustData;
+ private final XViewer fXViewer;
+
+ public SetCustomizationJob(final XViewer fXViewer, final CustomizeData newCustData) {
+ super("Loading Customization " + newCustData.getName());
+ this.fXViewer = fXViewer;
+ this.newCustData = newCustData;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ if (fXViewer.getTree().isDisposed()) return;
+ CustomizeData custData = new CustomizeData(newCustData.getXml(), fXViewer.getXViewerFactory());
+ // Add any new columns that were added after this customization was saved
+ custData.getColumnData().addMissingColumns(getTableDefaultCustData().getColumnData());
+ fXViewer.getCustomize().currentCustData = custData;
+ if (fXViewer.getCustomize().getCurrentCustData().getName() == null || fXViewer.getCustomize().getCurrentCustData().getName().equals(
+ "")) fXViewer.getCustomize().getCurrentCustData().setName(CURRENT_LABEL);
+ fXViewer.getCustomize().getCurrentCustData().setNameSpace(fXViewer.getViewerNamespace());
+ fXViewer.getTextFilterComp().setCustData(custData);
+ if (fXViewer.getCustomize().getCurrentCustData().getSortingData().isSorting())
+ fXViewer.resetDefaultSorter();
+ else
+ fXViewer.setSorter(null);
+ // Dispose all existing columns
+ for (TreeColumn treeCol : fXViewer.getTree().getColumns())
+ treeCol.dispose();
+ // Create new columns
+ fXViewer.addColumns();
+ fXViewer.updateStatusLabel();
+ fXViewer.refresh();
+ }
+ });
+ if (monitor != null) monitor.done();
+ return Status.OK_STATUS;
+ }
+ };
+
+ public void resetDefaultSorter() {
+ XViewerSorter sorter = xViewer.getXViewerFactory().createNewXSorter(xViewer);
+ xViewer.setSorter(sorter);
+ }
+
+ public void clearSorter() {
+ currentCustData.getSortingData().clearSorter();
+ xViewer.setSorter(null);
+ xViewer.updateStatusLabel();
+ }
+
+ public void handleTableCustomization() {
+ (new XViewerCustomizeDialog(currentCustData, xViewer)).open();
+ }
+
+ /**
+ * @return Returns the selectedCustomization.
+ */
+ public String getStatusLabelAddition() {
+ if (currentCustData != null && !currentCustData.getName().equals(CURRENT_LABEL) && !currentCustData.getName().equals(
+ TABLE_DEFAULT_LABEL) && currentCustData.getName() != null) return ("Custom: " + currentCustData.getName() + " - ");
+ return "";
+ }
+
+ /**
+ * @return the currentCustData
+ */
+ public CustomizeData getCurrentCustData() {
+ return currentCustData;
+ }
+
+ /**
+ * @return the defaultCustData
+ */
+ public CustomizeData getTableDefaultCustData() {
+ CustomizeData custData = xViewer.getXViewerFactory().getDefaultTableCustomizeData();
+ if (custData.getName() == null || this.currentCustData.getName().equals("")) custData.setName(TABLE_DEFAULT_LABEL);
+ custData.setNameSpace(xViewer.getViewerNamespace());
+ return custData;
+ }
+
+ /**
+ * Return the customize data that will be used to customize the table. First, check for a user selected default.
+ * Second, check for a tableDefaultCustData set programatically.
+ *
+ * @return the CustomizeData
+ */
+ public CustomizeData getDefaultCustData() {
+ if (xViewerCustomizations.getUserDefaultCustData() != null) return xViewerCustomizations.getUserDefaultCustData();
+ return this.getTableDefaultCustData();
+ }
+
+ /**
+ * @return the xViewerCustomizations
+ */
+ public IXViewerCustomizations getXViewerCustomizations() {
+ return xViewerCustomizations;
+ }
+
+ public boolean doCustomizeInCurrentThread() {
+ return false;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDefaults.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDefaults.java
new file mode 100644
index 00000000000..bb5cee57ba3
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDefaults.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+/**
+ * Methods used to load and store user selected default customization
+ *
+ * @author Donald G. Dunne
+ */
+public class XViewerCustomizeDefaults implements IXViewerCustomizeDefaults {
+
+ /**
+ *
+ */
+ public XViewerCustomizeDefaults() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.defaults.IXViewerDefaults#isDefaultCustomization(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData)
+ */
+ public boolean isDefaultCustomization(CustomizeData custData) {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.defaults.IXViewerDefaults#removeDefaultCustomization(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData)
+ */
+ public void removeDefaultCustomization(CustomizeData custData) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.defaults.IXViewerDefaults#save()
+ */
+ public void save() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.defaults.IXViewerDefaults#setDefaultCustomization(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer, org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData)
+ */
+ public void setDefaultCustomization(CustomizeData custData) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizeDefaults#isSaveDefaultsEnabled()
+ */
+ public boolean isSaveDefaultsEnabled() {
+ return false;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDialog.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDialog.java
new file mode 100644
index 00000000000..972e649d50d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/customize/XViewerCustomizeDialog.java
@@ -0,0 +1,762 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.skynet.ArrayTreeContentProvider;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumnLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+
+public class XViewerCustomizeDialog extends MessageDialog {
+ private String title = "Customize Table";
+ private static String buttons[] = new String[] {"Ok", "Apply", "Cancel"};
+ private final XViewer xViewer;
+ private TableViewer custTable;
+ private TableViewer hiddenColTable;
+ private TableViewer visibleColTable;
+ private CustomizeData currentCustomizeData;
+ private Text sorterText;
+ private Text filterText;
+ // Select Customization Buttons
+ Button setDefaultButton, deleteButton;
+ // Config Customization Buttons - Moving items
+ Button addItemButton, addAllItemButton, removeItemButton, removeAllItemButton, moveUpButton, moveDownButton;
+ // Config Customization Buttons
+ Button saveButton, renameButton;
+ private static String SET_AS_DEFAULT = " Set as Default ";
+ private static String REMOVE_DEFAULT = "Remove Default";
+ private CustomizeData defaultTableCustData;
+
+ public XViewerCustomizeDialog(CustomizeData currentCustomizeData, XViewer xViewer) {
+ this(currentCustomizeData, xViewer, Display.getCurrent().getActiveShell(), buttons, 0);
+ }
+
+ private XViewerCustomizeDialog(CustomizeData currentCustomizeData, XViewer xViewer, Shell parentShell, String[] buttons, int defaultButton) {
+ super(parentShell, "", null, "", MessageDialog.NONE, buttons, defaultButton);
+ this.currentCustomizeData = currentCustomizeData;
+ this.xViewer = xViewer;
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+
+ getShell().setText(title);
+ parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ SkynetGuiPlugin.getInstance().setHelp(parent, "table_customization");
+
+ final Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ final GridLayout gridLayout_2 = new GridLayout();
+ gridLayout_2.numColumns = 2;
+ comp.setLayout(gridLayout_2);
+
+ final Label selectCustomizationLabel = new Label(comp, SWT.NONE);
+ selectCustomizationLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ selectCustomizationLabel.setText("Select Customization");
+
+ // Column Configuration
+ final Group configureColumnsGroup = new Group(comp, SWT.NONE);
+ configureColumnsGroup.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, true, true, 1, 3));
+ configureColumnsGroup.setText("Configure Customization");
+ final GridLayout gridLayout = new GridLayout();
+ gridLayout.marginWidth = 3;
+ gridLayout.marginHeight = 3;
+ gridLayout.numColumns = 3;
+ configureColumnsGroup.setLayout(gridLayout);
+
+ final Composite hiddenTableComp = new Composite(configureColumnsGroup, SWT.NONE);
+ hiddenTableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ final GridLayout gridLayout_4 = new GridLayout();
+ gridLayout_4.marginWidth = 0;
+ gridLayout_4.marginHeight = 0;
+ hiddenTableComp.setLayout(gridLayout_4);
+
+ final Label hiddenColumnsLabel = new Label(hiddenTableComp, SWT.NONE);
+ hiddenColumnsLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ hiddenColumnsLabel.setText("Hidden Columns");
+
+ // Hidden Column Table
+ hiddenColTable = new TableViewer(hiddenTableComp, SWT.BORDER | SWT.MULTI);
+ final Table table_1 = hiddenColTable.getTable();
+ final GridData gd_table_1 = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2);
+ gd_table_1.widthHint = 150;
+ table_1.setLayoutData(gd_table_1);
+ hiddenColTable.setLabelProvider(new XViewerColumnLabelProvider());
+ hiddenColTable.setContentProvider(new ArrayTreeContentProvider());
+ hiddenColTable.setSorter(new ViewerSorter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return getComparator().compare(((XViewerColumn) e1).getNameAlternate(),
+ ((XViewerColumn) e2).getNameAlternate());
+ }
+ });
+ hiddenColTable.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateButtonEnablements();
+ }
+ });
+
+ final Composite moveButtonComp = new Composite(configureColumnsGroup, SWT.NONE);
+ moveButtonComp.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ final GridLayout gridLayout_5 = new GridLayout();
+ gridLayout_5.marginWidth = 0;
+ gridLayout_5.marginHeight = 0;
+ moveButtonComp.setLayout(gridLayout_5);
+
+ addItemButton = new Button(moveButtonComp, SWT.NONE);
+ addItemButton.setText(">");
+ addItemButton.setToolTipText("Add");
+ addItemButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ addItemButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleAddItemButton();
+ }
+ });
+
+ addAllItemButton = new Button(moveButtonComp, SWT.NONE);
+ addAllItemButton.setText(">>");
+ addAllItemButton.setToolTipText("Add All");
+ addAllItemButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleAddAllItemButton();
+ }
+ });
+
+ removeItemButton = new Button(moveButtonComp, SWT.NONE);
+ removeItemButton.setText("<");
+ removeItemButton.setToolTipText("Remove");
+ removeItemButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ removeItemButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleRemoveItemButton();
+ }
+ });
+
+ removeAllItemButton = new Button(moveButtonComp, SWT.NONE);
+ removeAllItemButton.setText("<<");
+ removeAllItemButton.setToolTipText("Remove All");
+ removeAllItemButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleRemoveAllItemButton();
+ }
+ });
+
+ moveUpButton = new Button(moveButtonComp, SWT.NONE);
+ moveUpButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ moveUpButton.setText("^");
+ moveUpButton.setToolTipText("Move Up");
+ moveUpButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleMoveUpButton();
+ }
+ });
+
+ moveDownButton = new Button(moveButtonComp, SWT.NONE);
+ moveDownButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ moveDownButton.setText("v");
+ moveDownButton.setToolTipText("Move Down");
+ moveDownButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleMoveDownButton();
+ }
+ });
+
+ final Composite visibleTableComp = new Composite(configureColumnsGroup, SWT.NONE);
+ visibleTableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ final GridLayout gridLayout_6 = new GridLayout();
+ gridLayout_6.marginWidth = 0;
+ gridLayout_6.marginHeight = 0;
+ visibleTableComp.setLayout(gridLayout_6);
+
+ final Label visibleColumnsLabel = new Label(visibleTableComp, SWT.NONE);
+ visibleColumnsLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+ visibleColumnsLabel.setText("Visible Columns");
+
+ // Visible Column Table
+ visibleColTable = new TableViewer(visibleTableComp, SWT.BORDER | SWT.MULTI);
+ final Table table = visibleColTable.getTable();
+ final GridData gd_table = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd_table.widthHint = 150;
+ table.setLayoutData(gd_table);
+ visibleColTable.setLabelProvider(new XViewerColumnLabelProvider());
+ visibleColTable.setContentProvider(new ArrayTreeContentProvider());
+ visibleColTable.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateButtonEnablements();
+ }
+ });
+ gridLayout.numColumns = 3;
+ gridLayout.numColumns = 3;
+
+ // Sorter text block
+ final Composite composite_2 = new Composite(configureColumnsGroup, SWT.NONE);
+ composite_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
+ final GridLayout gridLayout_3 = new GridLayout();
+ gridLayout_3.numColumns = 3;
+ composite_2.setLayout(gridLayout_3);
+
+ final Label sorterLabel = new Label(composite_2, SWT.NONE);
+ sorterLabel.setText("Sorter:");
+
+ sorterText = new Text(composite_2, SWT.BORDER);
+ sorterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ final Label clearSorterLabel = new Label(composite_2, SWT.PUSH);
+ clearSorterLabel.setImage(SkynetGuiPlugin.getInstance().getImage("clear.gif"));
+ clearSorterLabel.addMouseListener(new MouseListener() {
+ public void mouseDown(MouseEvent e) {
+ }
+
+ public void mouseDoubleClick(MouseEvent e) {
+
+ }
+
+ public void mouseUp(MouseEvent e) {
+ sorterText.setText("");
+ }
+ });
+
+ // Filter text block
+ final Composite composite_7 = new Composite(composite_2, SWT.NONE);
+ composite_7.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
+ final GridLayout gridLayout_13 = new GridLayout();
+ gridLayout_13.numColumns = 3;
+ composite_7.setLayout(gridLayout_13);
+
+ final Label filterLabel = new Label(composite_7, SWT.NONE);
+ filterLabel.setText("Filter Text:");
+
+ filterText = new Text(composite_7, SWT.BORDER);
+ filterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ final Label clearFilterLabel = new Label(composite_7, SWT.PUSH);
+ clearFilterLabel.setImage(SkynetGuiPlugin.getInstance().getImage("clear.gif"));
+ clearFilterLabel.addMouseListener(new MouseListener() {
+ public void mouseDown(MouseEvent e) {
+ }
+
+ public void mouseDoubleClick(MouseEvent e) {
+
+ }
+
+ public void mouseUp(MouseEvent e) {
+ filterText.setText("");
+ }
+ });
+
+ // Button block
+ final Composite composite_1 = new Composite(composite_2, SWT.NONE);
+ composite_1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
+ final GridLayout gridLayout_10 = new GridLayout();
+ gridLayout_10.numColumns = 5;
+ composite_1.setLayout(gridLayout_10);
+
+ // Customization Buttons
+ renameButton = new Button(composite_1, SWT.NONE);
+ renameButton.setText("Rename");
+ renameButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleRenameButton();
+ }
+ });
+
+ saveButton = new Button(composite_1, SWT.NONE);
+ saveButton.setText("Save");
+ saveButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleSaveButton();
+ }
+ });
+
+ // Customization Table and Buttons
+ final Composite custComp = new Composite(comp, SWT.NONE);
+ final GridData gd_composite_6 = new GridData(SWT.FILL, SWT.FILL, true, true);
+ custComp.setLayoutData(gd_composite_6);
+ final GridLayout gridLayout_1 = new GridLayout();
+ gridLayout_1.marginWidth = 0;
+ gridLayout_1.marginHeight = 0;
+ custComp.setLayout(gridLayout_1);
+
+ // Customization Table
+ custTable = new TableViewer(custComp, SWT.BORDER);
+ final Table table_2 = custTable.getTable();
+ final GridData gd_table_2 = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd_table_2.heightHint = 270;
+ gd_table_2.widthHint = 200;
+ table_2.setLayoutData(gd_table_2);
+ custTable.setLabelProvider(new CustomizeDataLabelProvider(xViewer));
+ custTable.setContentProvider(new ArrayTreeContentProvider());
+ custTable.setSorter(new ViewerSorter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ if (e1.toString().startsWith("-"))
+ return -1;
+ else if (e2.toString().startsWith("-"))
+ return 1;
+ else
+ return getComparator().compare(e1.toString(), e2.toString());
+ }
+ });
+ custTable.addDoubleClickListener(new IDoubleClickListener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
+ */
+ public void doubleClick(DoubleClickEvent event) {
+ handleLoadSelCustButton();
+ close();
+ }
+ });
+ custTable.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ handleCustTableSelectionChanged();
+ updateButtonEnablements();
+ }
+ });
+
+ // Customization Table Buttons
+ final Composite composite = new Composite(comp, SWT.NONE);
+ composite.setLayoutData(new GridData());
+ final GridLayout gridLayout_7 = new GridLayout();
+ gridLayout_7.numColumns = 4;
+ composite.setLayout(gridLayout_7);
+
+ setDefaultButton = new Button(composite, SWT.NONE);
+ setDefaultButton.setLayoutData(new GridData());
+ setDefaultButton.setText(SET_AS_DEFAULT);
+ setDefaultButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleSetDefaultButton();
+ updateButtonEnablements();
+ }
+ });
+
+ deleteButton = new Button(composite, SWT.NONE);
+ deleteButton.setLayoutData(new GridData());
+ deleteButton.setText("Delete");
+ deleteButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ handleDeleteButton();
+ updateButtonEnablements();
+ }
+ });
+
+ loadCustomizeTable();
+ updateButtonEnablements();
+
+ return comp;
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleAddItemButton() {
+ // Remove from hidden
+ List<XViewerColumn> hiddenSelCols = getHiddenTableSelection();
+ if (hiddenSelCols == null) return;
+ List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getInput();
+ hiddenCols.removeAll(hiddenSelCols);
+ hiddenColTable.setInput(hiddenCols);
+
+ // Add to visible
+ List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getInput();
+ visibleCols.addAll(hiddenSelCols);
+ visibleColTable.setInput(visibleCols);
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleRemoveItemButton() {
+ // Remove from visible
+ List<XViewerColumn> visibleSelCols = getVisibleTableSelection();
+ if (visibleSelCols == null) return;
+ List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getInput();
+ visibleCols.removeAll(visibleSelCols);
+ visibleColTable.setInput(visibleCols);
+
+ // Add to hidden
+ List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getInput();
+ hiddenCols.addAll(visibleSelCols);
+ hiddenColTable.setInput(hiddenCols);
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleAddAllItemButton() {
+
+ List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getInput();
+
+ List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getInput();
+
+ visibleCols.addAll(hiddenCols);
+ visibleColTable.setInput(visibleCols);
+
+ hiddenCols.clear();
+ hiddenColTable.setInput(hiddenCols);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleRemoveAllItemButton() {
+
+ List<XViewerColumn> visibleCols = (List<XViewerColumn>) visibleColTable.getInput();
+
+ List<XViewerColumn> hiddenCols = (List<XViewerColumn>) hiddenColTable.getInput();
+ hiddenCols.addAll(visibleCols);
+ hiddenColTable.setInput(hiddenCols);
+
+ // Add to visible
+ visibleCols.clear();
+ visibleColTable.setInput(visibleCols);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleMoveUpButton() {
+ List<XViewerColumn> selCols = getVisibleTableSelection();
+ if (selCols == null) return;
+ List<XViewerColumn> orderCols = (List<XViewerColumn>) visibleColTable.getInput();
+ int index = orderCols.indexOf(selCols.iterator().next());
+ if (index > 0) {
+ orderCols.removeAll(selCols);
+ orderCols.addAll(index - 1, selCols);
+ visibleColTable.setInput(orderCols);
+ } else
+ return;
+ ArrayList<XViewerColumn> selected = new ArrayList<XViewerColumn>();
+ selected.addAll(selCols);
+ visibleColTable.setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
+ visibleColTable.getTable().setFocus();
+ updateButtonEnablements();
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleMoveDownButton() {
+ List<XViewerColumn> selCols = getVisibleTableSelection();
+ if (selCols == null) return;
+ List<XViewerColumn> orderCols = (List<XViewerColumn>) visibleColTable.getInput();
+ int index = orderCols.indexOf(selCols.iterator().next());
+ if (index < (orderCols.size() - selCols.size())) {
+ orderCols.removeAll(selCols);
+ orderCols.addAll(index + 1, selCols);
+ visibleColTable.setInput(orderCols);
+ } else
+ return;
+ ArrayList<XViewerColumn> selected = new ArrayList<XViewerColumn>();
+ selected.addAll(selCols);
+ visibleColTable.setSelection(new StructuredSelection(selected.toArray(new Object[selected.size()])));
+ visibleColTable.getTable().setFocus();
+ updateButtonEnablements();
+ }
+
+ private void handleLoadSelCustButton() {
+ CustomizeData custData = getCustTableSelection();
+ if (custData != null) {
+ xViewer.getCustomize().setCustomization(getCustTableSelection());
+ }
+ }
+
+ /**
+ * @return xColumns from hidden and visible customization lists
+ */
+ private List<XViewerColumn> getConfigCustXViewerColumns() {
+ List<XViewerColumn> xCols = new ArrayList<XViewerColumn>();
+ int x = 0;
+ for (XViewerColumn xCol : getTableXViewerColumns(visibleColTable)) {
+ xCol.setShow(true);
+ xCol.setOrderNum(x);
+ xCol.setColumnNum(x++);
+ xCol.setTreeViewer(xViewer);
+ xCols.add(xCol);
+ }
+ for (XViewerColumn xCol : getTableXViewerColumns(hiddenColTable)) {
+ xCol.setShow(false);
+ xCol.setOrderNum(x++);
+ xCol.setTreeViewer(xViewer);
+ xCols.add(xCol);
+ }
+ return xCols;
+ }
+
+ private void handleSaveButton() {
+ List<CustomizeData> custDatas = new ArrayList<CustomizeData>();
+ for (CustomizeData custData : xViewer.getCustomize().getXViewerCustomizations().getCustDatas()) {
+ if (custData.isPersonal())
+ custDatas.add(custData);
+ else if (OseeAts.isAtsAdmin()) custDatas.add(custData);
+ }
+ CustomizationDataSelectionDialog diag = new CustomizationDataSelectionDialog(xViewer, custDatas);
+ if (diag.open() == 0) {
+ String name = diag.getEnteredName();
+ try {
+ CustomizeData custXml = getConfigCustomizeCustData();
+ custXml.setName(name);
+ custXml.setPersonal(!diag.isSaveGlobal());
+ xViewer.getCustomize().getXViewerCustomizations().saveCustomization(custXml);
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+ loadCustomizeTable();
+ }
+
+ private void handleRenameButton() {
+ XViewerColumn xCol = getVisibleTableSelection().iterator().next();
+ EntryDialog ed =
+ new EntryDialog(Display.getCurrent().getActiveShell(), "Rename Column", null, "Enter new name",
+ MessageDialog.QUESTION, new String[] {"OK", "Use Default", "Cancel"}, 0);
+ int result = ed.open();
+ if (result == 2) return;
+ if (result == 0)
+ xCol.setAlternateName(ed.getEntry());
+ else if (result == 1) xCol.setAlternateName("");
+ visibleColTable.update(xCol, null);
+ }
+
+ /**
+ * @return CustomizeData represented by the configuration area
+ */
+ private CustomizeData getConfigCustomizeCustData() {
+ CustomizeData custData = new CustomizeData(currentCustomizeData.getXml(), xViewer.getXViewerFactory());
+ custData.resetGuid();
+ custData.getColumnData().setColumns(getConfigCustXViewerColumns());
+ custData.getSortingData().setFromXml(sorterText.getText());
+ custData.getFilterData().setFilterText(filterText.getText());
+ return custData;
+ }
+
+ private void handleLoadConfigCustButton() {
+ xViewer.getCustomize().setCustomization(getConfigCustomizeCustData());
+ }
+
+ private void handleSetDefaultButton() {
+ CustomizeData custData = getCustTableSelection();
+ if (custData.getName().equals(XViewerCustomize.TABLE_DEFAULT_LABEL) || custData.getName().equals(
+ XViewerCustomize.CURRENT_LABEL)) {
+ AWorkbench.popup("ERROR", "Can't set table default or current as default");
+ return;
+ }
+ if (xViewer.getCustomize().getXViewerCustomizations().isCustomizationUserDefault(custData)) {
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Remove Default",
+ "Remove \"" + custData + "\" as default for this table?")) {
+ xViewer.getCustomize().getXViewerCustomizations().setUserDefaultCustData(custData, false);
+ }
+ } else if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Set Default",
+ "Set \"" + custData + "\" as default for this table?")) {
+ xViewer.getCustomize().getXViewerCustomizations().setUserDefaultCustData(custData, true);
+ }
+ loadCustomizeTable();
+ }
+
+ private void handleDeleteButton() {
+ try {
+ CustomizeData custSel = getCustTableSelection();
+ if (custSel == null) return;
+ if (!custSel.isPersonal() && !OseeAts.isAtsAdmin()) {
+ AWorkbench.popup("ERROR", "Global Customizations can only be deleted by admin");
+ return;
+ }
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Delete Customization",
+ "Delete \"" + custSel + "\" customization?")) {
+ xViewer.getCustomize().getXViewerCustomizations().deleteCustomization(custSel);
+ loadCustomizeTable();
+ updateButtonEnablements();
+ }
+ } catch (Exception ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ private void updateButtonEnablements() {
+ CustomizeData custData = getCustTableSelection();
+ setDefaultButton.setEnabled(xViewer.getXViewerFactory().getXViewerCustomizeDefaults().isSaveDefaultsEnabled() && custTable.getTable().isFocusControl() && custData != null && !custData.getName().equals(
+ XViewerCustomize.TABLE_DEFAULT_LABEL) && !custData.getName().equals(XViewerCustomize.CURRENT_LABEL));
+ if (custTable.getTable().isFocusControl() && custData != null) {
+ setDefaultButton.setText(xViewer.getCustomize().getXViewerCustomizations().isCustomizationUserDefault(custData) ? REMOVE_DEFAULT : SET_AS_DEFAULT);
+ setDefaultButton.getParent().layout();
+ }
+ deleteButton.setEnabled(xViewer.getXViewerFactory().getXViewerCustomizeDefaults().isSaveDefaultsEnabled() && custTable.getTable().isFocusControl() && custData != null);
+ addItemButton.setEnabled(hiddenColTable.getTable().isFocusControl() && getHiddenTableSelection() != null);
+ removeItemButton.setEnabled(visibleColTable.getTable().isFocusControl() && getVisibleTableSelection() != null);
+ renameButton.setEnabled(visibleColTable.getTable().isFocusControl() && getVisibleTableSelection() != null && getVisibleTableSelection().size() == 1);
+ moveDownButton.setEnabled(visibleColTable.getTable().isFocusControl() && getVisibleTableSelection() != null);
+ moveUpButton.setEnabled(visibleColTable.getTable().isFocusControl() && getVisibleTableSelection() != null);
+ saveButton.setEnabled(xViewer.getXViewerFactory().getXViewerCustomizations(xViewer).isCustomizationPersistAvailable());
+ }
+
+ private void loadCustomizeTable() {
+ // Add stored customization data
+ List<CustomizeData> custDatas = xViewer.getCustomize().getXViewerCustomizations().getCustDatas();
+
+ // Add table default customization data
+ defaultTableCustData = xViewer.getCustomize().getTableDefaultCustData();
+ defaultTableCustData.setName(XViewerCustomize.TABLE_DEFAULT_LABEL);
+ custDatas.add(defaultTableCustData);
+
+ // Add current customization data
+ CustomizeData currentCustData = xViewer.getCustomize().getCurrentCustData();
+ currentCustData.setName(XViewerCustomize.CURRENT_LABEL);
+ custDatas.add(currentCustData);
+
+ custTable.setInput(custDatas);
+
+ ArrayList<Object> sel = new ArrayList<Object>();
+ sel.add(currentCustData);
+ custTable.setSelection(new StructuredSelection(sel.toArray(new Object[sel.size()])));
+ custTable.getTable().setFocus();
+
+ updateButtonEnablements();
+ }
+
+ private CustomizeData getCustTableSelection() {
+ IStructuredSelection selection = (IStructuredSelection) custTable.getSelection();
+ if (selection.size() == 0) return null;
+ Iterator<?> i = selection.iterator();
+ CustomizeData custData = (CustomizeData) i.next();
+ // Add columns that were added after this customization was saved
+ custData.getColumnData().addMissingColumns(defaultTableCustData.getColumnData());
+ return custData;
+ }
+
+ private List<XViewerColumn> getVisibleTableSelection() {
+ return getTableSelection(visibleColTable);
+ }
+
+ private List<XViewerColumn> getHiddenTableSelection() {
+ return getTableSelection(hiddenColTable);
+ }
+
+ private List<XViewerColumn> getTableSelection(TableViewer xColTableViewer) {
+ List<XViewerColumn> xCols = new ArrayList<XViewerColumn>();
+ IStructuredSelection selection = (IStructuredSelection) xColTableViewer.getSelection();
+ if (selection.size() == 0) return null;
+ Iterator<?> i = selection.iterator();
+ while (i.hasNext())
+ xCols.add((XViewerColumn) i.next());
+ return xCols;
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<XViewerColumn> getTableXViewerColumns(TableViewer xColTableViewer) {
+ return (List<XViewerColumn>) xColTableViewer.getInput();
+ }
+
+ private void handleCustTableSelectionChanged() {
+ if (getCustTableSelection() == null) return;
+ CustomizeData custData = getCustTableSelection();
+ if (custData == null) {
+ OSEELog.logException(SkynetGuiPlugin.class, new IllegalStateException("Can't obtain selection Xml"), true);
+ return;
+ }
+ List<XViewerColumn> hideXCols = new ArrayList<XViewerColumn>();
+ List<XViewerColumn> showXCols = new ArrayList<XViewerColumn>();
+ for (XViewerColumn xCol : custData.getColumnData().getColumns()) {
+ if (xCol.isShow())
+ showXCols.add(xCol);
+ else
+ hideXCols.add(xCol);
+ }
+
+ hiddenColTable.setInput(hideXCols);
+ visibleColTable.setInput(showXCols);
+
+ sorterText.setText(custData.getSortingData().getXml());
+ sorterText.setData(custData);
+
+ filterText.setText(custData.getFilterData().getFilterText());
+ filterText.setData(custData);
+ }
+
+ protected void buttonPressed(int buttonId) {
+ // Ok
+ if (buttonId == 0) {
+ handleLoadConfigCustButton();
+ close();
+ }
+ // Apply
+ else if (buttonId == 1) {
+ handleLoadConfigCustButton();
+ }
+ // Cancel
+ else
+ close();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java
new file mode 100644
index 00000000000..679608d904d
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.plugin.core.config.ConfigUtil;
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.attribute.Attribute;
+import org.eclipse.osee.framework.skynet.core.attribute.DynamicAttributeManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizeDefaults;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.XViewerCustomize;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkynetCustomizations implements IXViewerCustomizations {
+
+ private Artifact globalCustomizationsArtifact;
+ private List<CustomizeData> custDatas = new ArrayList<CustomizeData>();
+ private static Logger logger = ConfigUtil.getConfigFactory().getLogger(XViewerCustomize.class);
+ private final IXViewerCustomizeDefaults xViewerDefaults;
+ private static String CUSTOMIZATION_ATTRIBUTE_NAME = "XViewer Customization";
+ private final XViewer xViewer;
+
+ public SkynetCustomizations(XViewer xViewer, IXViewerCustomizeDefaults xViewerDefaults) {
+ this.xViewer = xViewer;
+ this.xViewerDefaults = xViewerDefaults;
+ try {
+ globalCustomizationsArtifact = XViewerCustomizationArtifact.getAtsCustArtifact();
+ } catch (Throwable ex) {
+ logger.log(Level.SEVERE, "Unable to get the ATS Custom Artifact", ex);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#getCustDatas()
+ */
+ public List<CustomizeData> getCustDatas() {
+ loadCustomizationData();
+ return custDatas;
+ }
+
+ private static void saveCustomization(CustomizeData custData, Artifact saveArt) throws SQLException {
+ boolean found = false;
+ DynamicAttributeManager dam = saveArt.getAttributeManager(CUSTOMIZATION_ATTRIBUTE_NAME);
+ for (Attribute attr : dam.getAttributes()) {
+ if (attr.getStringData().contains("namespace=\"" + custData.getNameSpace() + "\"") && attr.getStringData().contains(
+ "name=\"" + custData.getName() + "\"")) {
+ attr.setStringData(custData.getXml());
+ found = true;
+ break;
+ }
+ }
+ if (!found) dam.getNewAttribute().setStringData(custData.getXml());
+ saveArt.persist();
+ }
+
+ public void saveCustomization(CustomizeData custData) throws SQLException {
+ if (custData.isPersonal())
+ saveCustomization(custData, SkynetAuthentication.getInstance().getAuthenticatedUser());
+ else
+ saveCustomization(custData, globalCustomizationsArtifact);
+ }
+
+ public void loadCustomizationData() {
+ custDatas.clear();
+ User user = SkynetAuthentication.getInstance().getAuthenticatedUser();
+ if (user != null) custDatas.addAll(getArtifactCustomizations(user));
+ for (CustomizeData custData : custDatas)
+ custData.setPersonal(true);
+ custDatas.addAll(getArtifactCustomizations(getGlobalCustomizationsArtifact()));
+ }
+
+ /**
+ * @return Returns the defaultCustomizationsArtifact.
+ */
+ public Artifact getGlobalCustomizationsArtifact() {
+ return globalCustomizationsArtifact;
+ }
+
+ /**
+ * Artifact that holds default customizations for this XTreeViewer. These will be selectable to everyone, but only
+ * writable to Developer/AtsAdmin. Users will be able to save their own customizations separately. If no defaults are
+ * necessary, don't set this artifact upon creation.
+ *
+ * @param defaultCustomizationsArtifact The defaultCustomizationsArtifact to set.
+ */
+ public void setGlobalCustomizationsArtifact(Artifact defaultCustomizationsArtifact) {
+ this.globalCustomizationsArtifact = defaultCustomizationsArtifact;
+ }
+
+ public void deleteCustomization(CustomizeData custData) throws SQLException {
+ Artifact deleteArt = null;
+ if (custData.isPersonal())
+ deleteArt = SkynetAuthentication.getInstance().getAuthenticatedUser();
+ else
+ deleteArt = getGlobalCustomizationsArtifact();
+ deleteCustomization(custData, deleteArt);
+ // Remove item as default if set
+ if (xViewerDefaults.isDefaultCustomization(custData)) {
+ xViewerDefaults.removeDefaultCustomization(custData);
+ xViewerDefaults.save();
+ }
+
+ }
+
+ public void deleteCustomization(CustomizeData custData, Artifact deleteArt) throws SQLException {
+ DynamicAttributeManager dam = deleteArt.getAttributeManager(CUSTOMIZATION_ATTRIBUTE_NAME);
+ for (Attribute attr : dam.getAttributes()) {
+ String str = attr.getStringData();
+ Matcher m = Pattern.compile("name=\"(.*?)\".*?namespace=\"" + custData.getNameSpace() + "\"").matcher(str);
+ if (m.find() && m.group(1).equals(custData.getName())) {
+ attr.delete();
+ deleteArt.persist();
+ break;
+ }
+ }
+ }
+
+ public CustomizeData getUserDefaultCustData() {
+ for (CustomizeData custData : getCustDatas()) {
+ if (xViewerDefaults.isDefaultCustomization(custData)) return custData;
+ }
+ return null;
+ }
+
+ public boolean isCustomizationUserDefault(CustomizeData custData) {
+ return (getUserDefaultCustData() != null && getUserDefaultCustData().getGuid().equals(custData.getGuid()));
+ }
+
+ public void setUserDefaultCustData(CustomizeData newCustData, boolean set) {
+ // Remove old defaults
+ for (CustomizeData custData : getCustDatas()) {
+ if (xViewerDefaults.isDefaultCustomization(custData)) {
+ xViewerDefaults.removeDefaultCustomization(custData);
+ }
+ }
+ // Add new default
+ if (set) xViewerDefaults.setDefaultCustomization(newCustData);
+ // persist
+ xViewerDefaults.save();
+ }
+
+ private List<CustomizeData> getArtifactCustomizations(Artifact customizationArtifact) {
+ List<CustomizeData> custDatas = new ArrayList<CustomizeData>();
+ if (customizationArtifact != null) {
+
+ try {
+ DynamicAttributeManager dam = customizationArtifact.getAttributeManager(CUSTOMIZATION_ATTRIBUTE_NAME);
+ for (Attribute attr : dam.getAttributes()) {
+ String str = attr.getStringData();
+ Matcher m =
+ Pattern.compile("name=\"(.*?)\".*?namespace=\"" + xViewer.getViewerNamespace() + "\"").matcher(str);
+ if (m.find()) {
+ CustomizeData custData = new CustomizeData(str, xViewer.getXViewerFactory());
+ custDatas.add(custData);
+ }
+ }
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, false);
+ }
+ }
+ return custDatas;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations#isCustomizationPersistAvailable()
+ */
+ public boolean isCustomizationPersistAvailable() {
+ return true;
+ }
+
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizeDefaults.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizeDefaults.java
new file mode 100644
index 00000000000..23998eb41b1
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizeDefaults.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet;
+
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.util.AXml;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizeDefaults;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkynetCustomizeDefaults implements IXViewerCustomizeDefaults {
+
+ // XViewer.getViewerNamespace, CustomizeData.getName
+ Set<String> defaultGuids = new HashSet<String>();
+ private static String XVIEWER_DEFAULT_ATTRIBUTE = "XViewer Defaults";
+ private static String DEFAULT_CUST_GUID_TAG = "defaultCustGuid";
+ private User user;
+
+ public SkynetCustomizeDefaults(User user) {
+ this.user = user;
+ loadCustomizeDefaults();
+ }
+
+ private void setDefaultCustomizationsFromXml(String xml) {
+ defaultGuids.clear();
+ Matcher m = Pattern.compile("<" + DEFAULT_CUST_GUID_TAG + ">(.*?)</" + DEFAULT_CUST_GUID_TAG + ">").matcher(xml);
+ while (m.find()) {
+ defaultGuids.add(m.group(1));
+ }
+ }
+
+ public void setDefaultCustomization(CustomizeData custData) {
+ defaultGuids.add(custData.getGuid());
+ }
+
+ public void removeDefaultCustomization(CustomizeData custData) {
+ defaultGuids.remove(custData.getGuid());
+ }
+
+ public boolean isDefaultCustomization(CustomizeData custData) {
+ return defaultGuids.contains(custData.getGuid());
+ }
+
+ private void loadCustomizeDefaults() {
+ String xml = "";
+ if (user != null) {
+ xml = user.getSoleAttributeValue(XVIEWER_DEFAULT_ATTRIBUTE);
+ }
+ setDefaultCustomizationsFromXml(xml);
+ }
+
+ public void save() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(getDefaultCustomizationXml());
+
+ try {
+ user.setSoleAttributeValue(XVIEWER_DEFAULT_ATTRIBUTE, sb.toString());
+ user.persist();
+ } catch (SQLException ex) {
+ OSEELog.logException(SkynetGuiPlugin.class, ex, true);
+ }
+ }
+
+ private String getDefaultCustomizationXml() {
+ StringBuffer sb = new StringBuffer();
+ for (String guid : defaultGuids)
+ sb.append(AXml.addTagData(DEFAULT_CUST_GUID_TAG, guid));
+ return sb.toString();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizeDefaults#isSaveDefaultsEnabled()
+ */
+ public boolean isSaveDefaultsEnabled() {
+ return user != null;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetXViewerFactory.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetXViewerFactory.java
new file mode 100644
index 00000000000..f41cceab189
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetXViewerFactory.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet;
+
+import org.eclipse.osee.framework.skynet.core.SkynetAuthentication;
+import org.eclipse.osee.framework.ui.plugin.util.db.ConnectionHandler;
+import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerColumn;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizations;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.IXViewerCustomizeDefaults;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.XViewerCustomizations;
+import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.customize.XViewerCustomizeDefaults;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class SkynetXViewerFactory implements IXViewerFactory {
+
+ private IXViewerCustomizeDefaults xViewerCustDefaults;
+ private IXViewerCustomizations xViewerCustomizations;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#createNewXSorter(org.eclipse.osee.framework.ui.skynet.widgets.xviewer.XViewer)
+ */
+ public XViewerSorter createNewXSorter(XViewer viewer) {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#getDefaultTableCustomizeData()
+ */
+ public CustomizeData getDefaultTableCustomizeData() {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#getDefaultXViewerColumn(java.lang.String)
+ */
+ public XViewerColumn getDefaultXViewerColumn(String name) {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#getXViewerCustomizeDefaults()
+ */
+ public IXViewerCustomizeDefaults getXViewerCustomizeDefaults() {
+ if (ConnectionHandler.isConnected()) {
+ if (xViewerCustDefaults == null) {
+ xViewerCustDefaults =
+ new SkynetCustomizeDefaults(SkynetAuthentication.getInstance().getAuthenticatedUser());
+ }
+ return xViewerCustDefaults;
+ }
+ return new XViewerCustomizeDefaults();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.xviewer.IXViewerFactory#getXViewerCustomizations()
+ */
+ public IXViewerCustomizations getXViewerCustomizations(XViewer xViewer) {
+ try {
+ if (ConnectionHandler.isConnected()) {
+ if (xViewerCustomizations == null) {
+ xViewerCustomizations = new SkynetCustomizations(xViewer, getXViewerCustomizeDefaults());
+ }
+ return xViewerCustomizations;
+ }
+ } catch (IllegalStateException ex) {
+ OSEELog.logException(SkynetXViewerFactory.class,
+ "Failed to retrieve XViewer customizations from the persistence layer.", ex, false);
+ }
+ return new XViewerCustomizations();
+ }
+}
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/XViewerCustomizationArtifact.java b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/XViewerCustomizationArtifact.java
new file mode 100644
index 00000000000..445dcf99522
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/XViewerCustomizationArtifact.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.logging.Level;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.BasicArtifact;
+import org.eclipse.osee.framework.skynet.core.artifact.Branch;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPersistenceManager;
+import org.eclipse.osee.framework.skynet.core.artifact.factory.IArtifactFactory;
+import org.eclipse.osee.framework.skynet.core.attribute.ConfigurationPersistenceManager;
+import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
+
+/**
+ * This singleton artifact stores the default customizations for ATS XViewers
+ *
+ * @author Donald G. Dunne
+ */
+public class XViewerCustomizationArtifact extends BasicArtifact {
+
+ public static String ARTIFACT_TYPE_NAME = "XViewer Global Customization";
+ public static XViewerCustomizationArtifact xViewerCustomizationArtifact;
+
+ /**
+ * @param parentFactory
+ * @param guid
+ * @param humanReadableId
+ * @param branch
+ * @throws SQLException
+ */
+ public XViewerCustomizationArtifact(IArtifactFactory parentFactory, String guid, String humanReadableId, Branch branch) throws SQLException {
+ super(parentFactory, guid, humanReadableId, branch);
+ }
+
+ public static XViewerCustomizationArtifact getAtsCustArtifact() {
+ return getAtsCustArtifactOrCreate(false);
+ }
+
+ public static XViewerCustomizationArtifact getAtsCustArtifactOrCreate(boolean create) {
+ if (xViewerCustomizationArtifact == null) {
+ try {
+ Collection<Artifact> arts =
+ ArtifactPersistenceManager.getInstance().getArtifactsFromSubtypeName(ARTIFACT_TYPE_NAME,
+ BranchPersistenceManager.getInstance().getCommonBranch());
+ if (arts.size() == 1) {
+ xViewerCustomizationArtifact = (XViewerCustomizationArtifact) arts.iterator().next();
+ } else if (arts.size() == 0 && create) {
+ xViewerCustomizationArtifact =
+ (XViewerCustomizationArtifact) ConfigurationPersistenceManager.getInstance().getArtifactSubtypeDescriptor(
+ XViewerCustomizationArtifact.ARTIFACT_TYPE_NAME, branchManager.getCommonBranch()).makeNewArtifact();
+ xViewerCustomizationArtifact.persist();
+ } else if (arts.size() != 1) throw new IllegalArgumentException(
+ "Should only be one " + ARTIFACT_TYPE_NAME + ". Found " + arts.size() + ". ATS not configured in OSEE?.");
+ } catch (SQLException ex) {
+ SkynetGuiPlugin.getLogger().log(Level.SEVERE, ex.toString(), ex);
+ }
+ }
+ return xViewerCustomizationArtifact;
+ }
+
+} \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/compareDocs.vbs b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/compareDocs.vbs
new file mode 100644
index 00000000000..2fa9279f966
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/compareDocs.vbs
@@ -0,0 +1,68 @@
+Option Explicit
+
+Dim oWord
+Dim baseDoc
+Dim authorName
+Dim detectFormatChanges
+Dim namedArguments
+Dim ver1
+Dim ver2
+Dim diffPath
+Dim wdCompareTargetSelected
+Dim wdFormatXML
+
+Public Sub main()
+ wdCompareTargetSelected = 0 ' can you believe I have to define a system enum
+ wdFormatXML = 11 'dude more than once
+
+ Set namedArguments = WScript.Arguments.Named
+
+ If namedArguments.Exists("author") Then
+ authorName = namedArguments.Item("author")
+ Else
+ authorName = "OSEE Doc compare"
+ End If
+
+ If namedArguments.Exists("detectFormatChanges") Then
+ detectFormatChanges = (namedArguments.Item("detectFormatChanges") = "True")
+ Else
+ detectFormatChanges = True
+ End If
+
+ If namedArguments.Exists("ver1") Then
+ ver1 = namedArguments.Item("ver1")
+ Else
+ MsgBox "required argument ver1 is missing"
+ Exit Sub
+ End If
+
+ If namedArguments.Exists("ver2") Then
+ ver2 = namedArguments.Item("ver2")
+ Else
+ MsgBox "required argument ver2 is missing"
+ Exit Sub
+ End If
+
+ If namedArguments.Exists("diffPath") Then
+ diffPath = namedArguments.Item("diffPath")
+ Else
+ diffPath = "c:\UserData\diff.xml"
+ End If
+
+ 'Start Word and open the document.
+ set oWord = WScript.CreateObject("Word.Application")
+ oWord.Visible = False
+
+ set baseDoc = oWord.Documents.Open (ver1)
+
+ oWord.ActiveDocument.Compare ver2, authorName, wdCompareTargetSelected, detectFormatChanges, False, False
+ oWord.ActiveDocument.SaveAs diffPath, wdFormatXML, , , False
+
+ baseDoc.close()
+ oWord.Visible = True
+
+' oWord.Quit()
+' set oWord = Nothing
+End Sub
+
+main \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/notVisiblecompareDocs.vbs b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/notVisiblecompareDocs.vbs
new file mode 100644
index 00000000000..b086e6e9401
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/notVisiblecompareDocs.vbs
@@ -0,0 +1,68 @@
+Option Explicit
+
+Dim oWord
+Dim baseDoc
+Dim authorName
+Dim detectFormatChanges
+Dim namedArguments
+Dim ver1
+Dim ver2
+Dim diffPath
+Dim wdCompareTargetSelected
+Dim wdFormatXML
+
+Public Sub main()
+ wdCompareTargetSelected = 0 ' can you believe I have to define a system enum
+ wdFormatXML = 11 'dude more than once
+
+ Set namedArguments = WScript.Arguments.Named
+
+ If namedArguments.Exists("author") Then
+ authorName = namedArguments.Item("author")
+ Else
+ authorName = "OSEE Doc compare"
+ End If
+
+ If namedArguments.Exists("detectFormatChanges") Then
+ detectFormatChanges = (namedArguments.Item("detectFormatChanges") = "True")
+ Else
+ detectFormatChanges = True
+ End If
+
+ If namedArguments.Exists("ver1") Then
+ ver1 = namedArguments.Item("ver1")
+ Else
+ MsgBox "required argument ver1 is missing"
+ Exit Sub
+ End If
+
+ If namedArguments.Exists("ver2") Then
+ ver2 = namedArguments.Item("ver2")
+ Else
+ MsgBox "required argument ver2 is missing"
+ Exit Sub
+ End If
+
+ If namedArguments.Exists("diffPath") Then
+ diffPath = namedArguments.Item("diffPath")
+ Else
+ diffPath = "c:\UserData\diff.xml"
+ End If
+
+ 'Start Word and open the document.
+ set oWord = WScript.CreateObject("Word.Application")
+ oWord.Visible = False
+
+ set baseDoc = oWord.Documents.Open (ver1)
+
+ oWord.ActiveDocument.Compare ver2, authorName, wdCompareTargetSelected, detectFormatChanges, False, False
+ oWord.ActiveDocument.SaveAs diffPath, wdFormatXML, , , False
+
+ baseDoc.close()
+' oWord.Visible = false
+
+ oWord.Quit()
+ set oWord = Nothing
+End Sub
+
+main \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/AllWords.txt b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/AllWords.txt
new file mode 100644
index 00000000000..87b4062c121
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/AllWords.txt
@@ -0,0 +1,134689 @@
+AAA
+AAAS
+Aachen
+Aalborg
+Aalesund
+aardvark
+aardvark's
+aardvarks
+aardwolf
+Aargau
+Aarhus
+Aaron
+Aaronic
+AAU
+ab
+abac
+abaca
+aback
+abacterial
+abactinal
+abacus
+abacuses
+abadan
+abaddon
+abaft
+abakan
+abalone
+abalone's
+abalones
+abamp
+abampere
+abandon
+abandoned
+abandonee
+abandoner
+abandoning
+abandonment
+abandonments
+abandons
+abase
+abased
+abasement
+abasements
+abaser
+abases
+abash
+abashed
+abashes
+abashing
+abashment
+abasing
+abate
+abated
+abatement
+abatements
+abater
+abates
+abating
+abatis
+abatises
+abator
+abattoir
+abaxial
+Abba
+abbacy
+Abbado
+abbas
+abbasid
+abbatial
+abbe
+abberations
+abbess
+Abbevillian
+abbey
+abbey's
+Abbeydale
+abbeys
+abbot
+abbot's
+abbots
+Abbott
+Abbott's
+abbreviate
+abbreviated
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+abbreviator
+abcoulomb
+abdias
+abdicable
+abdicate
+abdicated
+abdicates
+abdicating
+abdication
+abdicator
+abdomen
+abdomen's
+abdomens
+abdominal
+abdominally
+abdominous
+abduce
+abduced
+abducens
+abducent
+abducentes
+abducing
+abduct
+abducted
+abducting
+abduction
+abduction's
+abductions
+abductor
+abductor's
+abductors
+abducts
+Abe
+Abe's
+abeam
+abecedarian
+abed
+abednego
+Abel
+Abelard
+Abele
+Abelian
+Abelmosk
+Abelson
+Abelson's
+abeokuta
+aberdare
+Aberdeen
+Aberdeen's
+Abernathy
+Abernathy's
+Abernethy
+aberrance
+aberrancy
+aberrant
+aberrantly
+aberrated
+aberration
+aberrational
+aberrations
+Aberystwyth
+abet
+abetment
+abets
+abetted
+abetter
+abetting
+abettor
+abeyance
+abeyant
+abfarad
+abhenry
+abhor
+abhorred
+abhorrence
+abhorrent
+abhorrently
+abhorrer
+abhorring
+abhors
+abib
+abidance
+abide
+abided
+abider
+abides
+abiding
+abidingly
+Abidjan
+abietic
+Abigail
+Abigail's
+Abilene
+abilene
+Abilene's
+abilities
+ability
+ability's
+abingdon
+abiogenesis
+abiogenetic
+abiogenetical
+abiogenetically
+abiogenist
+abiological
+abiologically
+abiotic
+abiotically
+abirritant
+abirritate
+abject
+abjection
+abjections
+abjectly
+abjectness
+abjuration
+abjure
+abjured
+abjurer
+abjures
+abjuring
+abkhaz
+ablactation
+ablate
+ablated
+ablates
+ablating
+ablation
+ablative
+ablatively
+ablator
+ablaut
+ablaze
+able
+abler
+ablest
+abloom
+abluted
+ablution
+ablutionary
+ablutions
+ably
+abnegate
+abnegates
+abnegation
+abnegator
+Abner
+Abner's
+abnormal
+abnormalities
+abnormality
+abnormalize
+abnormalizes
+abnormally
+aboard
+abode
+abode's
+abodes
+abohm
+aboideau
+aboil
+abolish
+abolishable
+abolished
+abolisher
+abolishers
+abolishes
+abolishing
+abolishment
+abolishment's
+abolishments
+abolition
+abolitionary
+abolitionism
+abolitionist
+abolitionists
+abolitionize
+abolitionizes
+abomasal
+abominable
+abominably
+abominate
+abominated
+abominates
+abominating
+abomination
+abominations
+abominator
+abominators
+aboral
+aborally
+aboriginal
+aboriginally
+aborigine
+aborigine's
+aborigines
+aborning
+abort
+aborted
+aborter
+aborticide
+abortifacient
+aborting
+abortion
+abortion's
+abortionist
+abortionists
+abortions
+abortive
+abortively
+abortiveness
+aborts
+Abos
+aboukir
+aboulia
+abound
+abounded
+abounding
+abounds
+about
+above
+aboveboard
+aboveground
+abovementioned
+abracadabra
+abradable
+abradant
+abrade
+abraded
+abrader
+abrades
+abrading
+Abraham
+Abram
+Abram's
+Abrams
+Abramson
+abranchiate
+abrasion
+abrasion's
+abrasions
+abrasive
+abrasively
+abrasiveness
+abrasives
+Abravanel
+Abraxas
+abreact
+abreaction
+abreaction's
+abreactions
+abreast
+abri
+abridge
+abridged
+abridgement
+abridger
+abridges
+abridging
+abridgment
+abrin
+abroach
+abroad
+abrogate
+abrogated
+abrogates
+abrogating
+abrogation
+abrupt
+abruption
+abruptly
+abruptness
+abruzzi
+Absalom
+abscess
+abscessed
+abscesses
+abscise
+abscised
+abscisin
+abscising
+abscissa
+abscissa's
+abscissae
+abscissas
+abscission
+abscond
+absconded
+absconder
+absconding
+absconds
+abseil
+absence
+absence's
+absences
+absent
+absented
+absentee
+absentee's
+absenteeism
+absentees
+absentia
+absenting
+absently
+absentminded
+absentmindedly
+absentmindedness
+absents
+absinth
+absinthe
+absinthism
+absolute
+absolutely
+absoluteness
+absolutes
+absolution
+absolutism
+absolutist
+absolutistic
+absolutization
+absolutization's
+absolutizations
+absolutize
+absolutizes
+absolve
+absolved
+absolver
+absolves
+absolving
+absonant
+absorb
+absorbability
+absorbable
+absorbance
+absorbancy
+absorbant
+absorbed
+absorbefacient
+absorbency
+absorbent
+absorbent's
+absorbents
+absorber
+absorbing
+absorbingly
+absorbs
+absorbtions
+absorptance
+absorption
+absorption's
+absorptional
+absorptions
+absorptive
+absorptivity
+absquatulate
+abstain
+abstained
+abstainer
+abstaining
+abstains
+abstemious
+abstemiously
+abstention
+abstentions
+abstentious
+abstergent
+abstinence
+abstinent
+abstinently
+abstract
+abstractable
+abstracted
+abstractedly
+abstractedness
+abstracter
+abstracting
+abstraction
+abstraction's
+abstractional
+abstractionism
+abstractionist
+abstractionists
+abstractions
+abstractive
+abstractly
+abstractness
+abstractor
+abstractor's
+abstractors
+abstracts
+abstrict
+abstriction
+abstrictions
+abstruse
+abstrusely
+abstruseness
+abstrusenesses
+abstrusity
+absurd
+absurdism
+absurdist
+absurdities
+absurdity
+absurdity's
+absurdly
+absurdness
+absurdum
+Abu
+abubble
+abuilding
+abukir
+abulia
+abundance
+abundances
+abundant
+abundantly
+abusable
+abuse
+abused
+abuser
+abusers
+abuses
+abusing
+abusive
+abusively
+abusiveness
+abut
+abutilon
+abutment
+abutments
+abuts
+abuttals
+abutted
+abutter
+abutter's
+abutters
+abutting
+abuzz
+abvolt
+abwatt
+aby
+abydos
+abysm
+abysmal
+abysmally
+abyss
+abyss's
+abyssal
+abysses
+Abyssinia
+Abyssinian
+Abyssinians
+AC
+acacia
+academe
+academia
+academic
+academical
+academically
+academician
+academicianship
+academicism
+academics
+academies
+academism
+academy
+academy's
+Acadia
+acajou
+acanthaceous
+acanthine
+acanthocephalan
+acanthoid
+acanthopterygian
+acanthous
+acanthus
+acanthuses
+Acapulco
+acariasis
+acarid
+acaroid
+acarology
+acarpellous
+acarpelous
+acarpous
+Acarus
+acas
+acatalectic
+acaudal
+acaulescence
+acaulescent
+accad
+accede
+acceded
+accedes
+acceding
+accelerando
+accelerate
+accelerated
+accelerates
+accelerating
+acceleratingly
+acceleration
+accelerations
+accelerative
+accelerator
+accelerators
+accelerometer
+accelerometer's
+accelerometers
+accent
+accented
+accenting
+accentless
+accentor
+accents
+accentual
+accentually
+accentuate
+accentuated
+accentuates
+accentuating
+accentuation
+accept
+acceptability
+acceptable
+acceptableness
+acceptably
+acceptance
+acceptance's
+acceptances
+acceptant
+acceptation
+accepted
+acceptedly
+accepter
+accepters
+accepting
+acceptingly
+acceptingness
+acceptive
+acceptor
+acceptor's
+acceptors
+accepts
+access
+accessary
+accessed
+accesses
+accessibility
+accessible
+accessibleness
+accessibly
+accessing
+accession
+accession's
+accessional
+accessions
+accessorial
+accessories
+accessorize
+accessors
+accessory
+accessory's
+acciaccatura
+accidence
+accident
+accident's
+accidental
+accidentalism
+accidentalist
+accidentally
+accidentalness
+accidently
+accidents
+accidie
+accipiter
+accipitrine
+acclaim
+acclaimed
+acclaimer
+acclaiming
+acclaims
+acclamation
+acclimate
+acclimated
+acclimates
+acclimating
+acclimation
+acclimatizable
+acclimatizable's
+acclimatizables
+acclimatization
+acclimatization's
+acclimatizations
+acclimatize
+acclimatized
+acclimatizer
+acclimatizers
+acclimatizes
+acclimatizing
+acclivity
+accolade
+accolades
+accommodate
+accommodated
+accommodates
+accommodating
+accommodatingly
+accommodation
+accommodational
+accommodations
+accommodative
+accommodativeness
+accommodator
+accommodators
+accommodatory
+accompanied
+accompanier
+accompanies
+accompaniment
+accompaniment's
+accompaniments
+accompanist
+accompanist's
+accompanists
+accompany
+accompanying
+accompanyist
+accompanyists
+accomplice
+accomplices
+accomplish
+accomplishable
+accomplished
+accomplisher
+accomplishers
+accomplishes
+accomplishing
+accomplishment
+accomplishment's
+accomplishments
+accord
+accordance
+accordances
+accordant
+accordantly
+accorded
+accorder
+accorders
+according
+accordingly
+accordion
+accordion's
+accordionist
+accordionists
+accordions
+accords
+accost
+accostable
+accosted
+accosting
+accosts
+account
+accountabilities
+accountability
+accountable
+accountableness
+accountably
+accountancy
+accountant
+accountant's
+accountants
+accountantship
+accounted
+accounting
+accountings
+accounts
+accouplement
+accouter
+accoutered
+accoutering
+accouterment
+accouterment's
+accouterments
+accouters
+Accra
+accredit
+accreditable
+accreditation
+accreditations
+accredited
+accrescent
+accrete
+accreted
+accreting
+accretion
+accretion's
+accretionary
+accretions
+accretive
+Accrington
+accruable
+accrual
+accruals
+accrue
+accrued
+accruement
+accrues
+accruing
+acculturate
+acculturated
+acculturates
+acculturating
+acculturation
+acculturational
+acculturationist
+acculturative
+acculturize
+accumbency
+accumbent
+accumulable
+accumulate
+accumulated
+accumulates
+accumulating
+accumulation
+accumulations
+accumulative
+accumulatively
+accumulativeness
+accumulator
+accumulator's
+accumulators
+accuracies
+accuracy
+accurate
+accurately
+accurateness
+accursed
+accursedly
+accursedness
+accurses
+accursing
+accurst
+accusal
+accusation
+accusation's
+accusations
+accusative
+accusatory
+accuse
+accused
+accuser
+accusers
+accuses
+accusing
+accusingly
+accusor
+accustom
+accustomation
+accustomed
+accustomedness
+accustoming
+accustoms
+accutron
+ace
+ace's
+aced
+acedia
+Aceldama
+acellular
+acentric
+acephalous
+acer
+acerate
+acerb
+acerbate
+acerbic
+acerbically
+acerbity
+acerose
+acervate
+acervately
+acervation
+aces
+acescent
+acetabulum
+acetal
+acetaldehyde
+acetamide
+acetaminophen
+acetanilide
+acetate
+acetic
+acetification
+acetifier
+acetify
+acetometer
+acetone
+acetonic
+acetonization
+acetonization's
+acetonizations
+acetonize
+acetonizes
+acetophenetidin
+acetous
+acetum
+acetyl
+acetylate
+acetylation
+acetylative
+acetylcholine
+acetylene
+acetylenic
+acetylide
+acetylsalicylic
+achaea
+Achaean
+Achaemenid
+Achates
+ache
+ached
+achelous
+achene
+Achernar
+acheron
+aches
+acheulian
+achier
+achiest
+achievable
+achieve
+achieved
+achievement
+achievement's
+achievements
+achiever
+achievers
+achieves
+achieving
+Achilles
+achiness
+aching
+achingly
+Achitophel
+achlamydeous
+achlorhydria
+achondrite
+achondroplasia
+achromat
+achromatic
+achromatically
+achromaticity
+achromatin
+achromatism
+achromatization
+achromatize
+achromatized
+achromatizes
+achromatizing
+achromatous
+achromic
+achy
+acicula
+aciculate
+aciculum
+acid
+acidhead
+acidic
+acidiferous
+acidifiable
+acidification
+acidifier
+acidify
+acidimeter
+acidimeter's
+acidimeters
+acidimetric
+acidimetry
+acidities
+acidity
+acidize
+acidizes
+acidly
+acidness
+acidometer
+acidophil
+acidophilus
+acidosis
+acids
+acidulant
+acidulate
+acidulation
+acidulent
+acidulous
+acierate
+acinaciform
+acing
+aciniform
+acinus
+Acis
+ackee
+Ackerman
+Ackley
+acknowledge
+acknowledgeable
+acknowledged
+acknowledgedly
+acknowledger
+acknowledgers
+acknowledges
+acknowledging
+acknowledgment
+acknowledgment's
+acknowledgments
+acl
+aclinic
+ACM
+acme
+acne
+acned
+acnode
+acock
+acol
+acold
+acolyte
+acolytes
+aconcagua
+aconite
+acorn
+acorn's
+acorns
+acotyledon
+acouchi
+acoustic
+acoustical
+acoustically
+acoustician
+acoustics
+acquaint
+acquaintance
+acquaintance's
+acquaintances
+acquaintanceship
+acquainted
+acquainting
+acquaints
+acquiesce
+acquiesced
+acquiescence
+acquiescent
+acquiescently
+acquiesces
+acquiescing
+acquirable
+acquire
+acquired
+acquirement
+acquires
+acquiring
+acquisition
+acquisition's
+acquisitional
+acquisitionist
+acquisitions
+acquisititious
+acquisitive
+acquisitively
+acquisitiveness
+acquit
+acquitment
+acquits
+acquittal
+acquittals
+acquittance
+acquitted
+acquitter
+acquitting
+acre
+acre's
+acreage
+acres
+acrid
+acridine
+acridity
+acridly
+acridness
+acriflavine
+acrilan
+acrimonious
+acrimoniously
+acrimony
+acrobacy
+acrobat
+acrobat's
+acrobatic
+acrobatically
+acrobatics
+acrobats
+acrocarpous
+acrocentric
+acrodont
+acrodrome
+acrogen
+acrolein
+acrolith
+acromegaly
+acromion
+acronym
+acronym's
+acronymic
+acronymically
+acronymize
+acronymizes
+acronyms
+acropetal
+acropetally
+acrophobia
+acrophobic
+acropolis
+acrospire
+across
+acrostic
+acrostical
+acrostically
+acroter
+acrylamide
+acrylate
+acrylic
+acrylonitrile
+acrylyl
+ACS
+act
+acta
+Acta
+actability
+actable
+Actaeon
+acted
+actin
+actinal
+acting
+Actinia
+actinic
+actinide
+actinidin
+actiniform
+actinium
+actinochemistry
+actinoid
+actinolite
+actinomere
+actinometer
+actinometer's
+actinometers
+actinomorphic
+actinomycete
+actinomycin
+actinomycosis
+actinon
+actinopod
+actinotherapy
+actinouranium
+actinozoan
+action
+action's
+actionable
+actionably
+actionize
+actionizes
+actionless
+actions
+Actium
+activate
+activated
+activates
+activating
+activation
+activations
+activator
+activator's
+activators
+active
+actively
+activeness
+activism
+activist
+activist's
+activistic
+activists
+activities
+activity
+activity's
+activize
+activizes
+actomyosin
+Acton
+Acton's
+actor
+actor's
+actorish
+actors
+actress
+actress's
+actresses
+acts
+actual
+actualities
+actuality
+actualization
+actualization's
+actualizations
+actualize
+actualized
+actualizes
+actualizing
+actually
+actuals
+actuarial
+actuarially
+actuaries
+actuary
+actuate
+actuated
+actuates
+actuating
+actuation
+actuator
+actuator's
+actuators
+acuity
+aculeate
+aculeus
+acumen
+acuminate
+acumination
+acupuncture
+acutance
+acute
+acutely
+acuteness
+acuter
+acutest
+acyclic
+acyclical
+acyclically
+acyl
+acylate
+acylated
+acylates
+ad
+Ada
+Ada's
+adactylous
+adage
+adages
+adagio
+adagios
+Adair
+Adair's
+Adam
+adamance
+adamancy
+adamant
+adamantine
+adamantly
+adamawa
+Adamite
+Adams
+adamsite
+Adamson
+adana
+adapt
+adaptability
+adaptable
+adaptably
+adaptaplex
+adaptation
+adaptation's
+adaptational
+adaptationally
+adaptations
+adapted
+adaptedness
+adapter
+adapters
+adapting
+adaption
+adaptitude
+adaptive
+adaptively
+adaptiveness
+adaptivity
+adaptor
+adaptors
+adapts
+Adar
+adaxial
+add
+addable
+Addams
+addax
+added
+addend
+addenda
+addendum
+adder
+adders
+addible
+addict
+addicted
+addicting
+addiction
+addiction's
+addictions
+addictive
+addicts
+adding
+Addington
+Addis
+Addison
+addition
+addition's
+additional
+additionally
+additions
+additive
+additive's
+additively
+additives
+additivity
+addle
+addled
+addlepated
+addles
+addling
+address
+addressability
+addressable
+addressed
+addressee
+addressee's
+addressees
+addresser
+addressers
+addresses
+addressing
+Addressograph
+addressor
+adds
+adduce
+adduced
+adducer
+adduces
+adducible
+adducing
+adduct
+adducted
+adducting
+adduction
+adductive
+adductor
+adducts
+Adelaide
+Adelaide's
+Adele
+Adele's
+Adelia
+Adelia's
+ademption
+Aden
+Aden's
+Adenauer
+adenectomy
+adenine
+adenitis
+adenocarcinoma
+adenohypophysis
+adenoid
+adenoidal
+adenoidectomy
+adenoids
+adenoma
+adenomatous
+adenosine
+adenovirus
+adept
+adeptly
+adeptness
+adepts
+adequacies
+adequacy
+adequate
+adequately
+adequateness
+adhere
+adhered
+adherence
+adherences
+adherend
+adherent
+adherent's
+adherently
+adherents
+adherer
+adherers
+adheres
+adhering
+adhesion
+adhesional
+adhesions
+adhesive
+adhesive's
+adhesively
+adhesiveness
+adhesives
+adhibit
+adiabatic
+adiabatically
+adiabaticlly
+adiaphorism
+adiaphorous
+adiathermancy
+adieu
+adieux
+Adige
+adios
+adipic
+adipocere
+adipose
+adiposity
+Adirondack
+Adirondacks
+adit
+adivasi
+adjacency
+adjacent
+adjacently
+adject
+adjectival
+adjectivally
+adjective
+adjective's
+adjectively
+adjectives
+adjoin
+adjoined
+adjoining
+adjoins
+adjoint
+adjourn
+adjourned
+adjourning
+adjournment
+adjourns
+adjudge
+adjudged
+adjudges
+adjudging
+adjudicate
+adjudicated
+adjudicates
+adjudicating
+adjudication
+adjudication's
+adjudications
+adjudicative
+adjudicator
+adjudicatory
+adjunct
+adjunct's
+adjunction
+adjunctive
+adjunctly
+adjuncts
+adjuration
+adjuratory
+adjure
+adjured
+adjures
+adjuring
+adjust
+adjustability
+adjustable
+adjustably
+adjusted
+adjuster
+adjusters
+adjusting
+adjustive
+adjustment
+adjustment's
+adjustmental
+adjustments
+adjustor
+adjustor's
+adjustors
+adjusts
+adjutancy
+adjutant
+adjutants
+adjuvant
+Adkins
+adle
+Adler
+Adler's
+Adlerian
+adman
+admass
+admeasure
+admeasurement
+admetus
+adminicle
+administer
+administered
+administering
+administerings
+administers
+administrable
+administrant
+administrate
+administrated
+administrates
+administrating
+administration
+administration's
+administrational
+administrationist
+administrations
+administrative
+administratively
+administrator
+administrator's
+administrators
+administratrix
+admirability
+admirable
+admirableness
+admirably
+admiral
+admiral's
+admirals
+admiralty
+admiration
+admirations
+admire
+admired
+admirer
+admirers
+admires
+admiring
+admiringly
+admissibility
+admissible
+admission
+admission's
+admissions
+admissive
+admit
+admits
+admittance
+admitted
+admittedly
+admitter
+admitters
+admitting
+admix
+admixed
+admixes
+admixture
+admonish
+admonished
+admonisher
+admonishes
+admonishing
+admonishingly
+admonishment
+admonishment's
+admonishments
+admonition
+admonition's
+admonitions
+admonitorily
+admonitory
+adnate
+adnominal
+adnoun
+ado
+adobe
+adolescence
+adolescent
+adolescent's
+adolescently
+adolescents
+Adolph
+Adolph's
+Adolphus
+Adonai
+Adonic
+Adonis
+adopt
+adoptability
+adoptable
+adopted
+adoptee
+adoptees
+adopter
+adopters
+adoptianism
+adoptianist
+adopting
+adoption
+adoption's
+adoptionism
+adoptionist
+adoptions
+adoptive
+adoptively
+adopts
+adorability
+adorable
+adorableness
+adorably
+adoration
+adore
+adored
+adorer
+adores
+adoring
+adorn
+adorned
+adorning
+adornment
+adornment's
+adornments
+adorns
+adowa
+adoze
+adposition
+adrastus
+adrenal
+adrenalin
+adrenaline
+adrenalize
+adrenalizes
+adrenally
+adrenergic
+adrenocortical
+Adrian
+Adrian's
+Adriatic
+Adrienne
+Adrienne's
+adrift
+adroit
+adroitly
+adroitness
+ads
+adscititious
+adscription
+adsorb
+adsorbability
+adsorbable
+adsorbate
+adsorbed
+adsorbent
+adsorbing
+adsorbs
+adsorbtion
+adsorption
+adsorptive
+adsorptively
+adsuki
+adularia
+adulate
+adulating
+adulation
+adulations
+adulator
+adulatory
+Adullamite
+adult
+adult's
+adulterant
+adulterate
+adulterated
+adulterates
+adulterating
+adulteration
+adulterator
+adulterer
+adulterer's
+adulterers
+adulteress
+adulteresses
+adulterine
+adulterize
+adulterizes
+adulterous
+adulterously
+adultery
+adulthood
+adultlike
+adultly
+adultness
+adults
+adumbral
+adumbrate
+adumbrated
+adumbrates
+adumbrating
+adumbration
+adumbrative
+adumbratively
+adust
+aduwa
+advance
+advanced
+advancement
+advancement's
+advancements
+advancer
+advancers
+advances
+advancing
+advantage
+advantaged
+advantageous
+advantageously
+advantageousness
+advantages
+advantaging
+advection
+advections
+advective
+advent
+adventist
+adventists
+adventitia
+adventitious
+adventitiously
+adventitiousness
+adventive
+adventively
+adventure
+adventured
+adventurer
+adventurers
+adventures
+adventuresome
+adventuresomeness
+adventuress
+adventuresses
+adventuring
+adventurism
+adventurist
+adventuristic
+adventurists
+adventurous
+adventurously
+adventurousness
+adverb
+adverb's
+adverbial
+adverbialize
+adverbializes
+adverbially
+adverbs
+adversarial
+adversaries
+adversary
+adversary's
+adversative
+adversatively
+adverse
+adversed
+adversely
+adverses
+adversing
+adversities
+adversity
+advert
+adverted
+advertence
+advertency
+advertent
+advertently
+adverting
+advertise
+advertised
+advertisement
+advertisement's
+advertisements
+advertiser
+advertisers
+advertises
+advertising
+adverts
+advice
+advisability
+advisable
+advisableness
+advisably
+advise
+advised
+advisedly
+advisee
+advisee's
+advisees
+advisement
+advisements
+adviser
+adviser's
+advisers
+advises
+advising
+advisor
+advisor's
+advisors
+advisory
+advocacy
+advocate
+advocated
+advocates
+advocating
+advocation
+advocative
+advocator
+Advowson
+adygei
+adynamia
+adynamic
+adytum
+adz
+adze
+adzhar
+adzuki
+aeciospore
+aecium
+Aedes
+aedile
+Aegean
+Aegeus
+Aegina
+aegis
+Aegisthus
+aegospotami
+aegrotat
+Aeneas
+Aeneid
+aeneous
+aeolian
+Aeolic
+Aeolipile
+Aeolis
+aeolotropic
+aeolotropy
+Aeolus
+aeonian
+aeonic
+Aepyornis
+aerate
+aerated
+aerates
+aerating
+aeration
+aerator
+aerators
+aerial
+aerial's
+aerialist
+aerially
+aerials
+aerie
+aerier
+aerily
+aero
+aeroacoustic
+Aerobacter
+aeroballistic
+aeroballistics
+aerobatic
+aerobatics
+aerobe
+aerobic
+aerobically
+aerobics
+aerobiological
+aerobiologically
+aerobiology
+aerobiosis
+aerobiotic
+aerobiotically
+aerodynamic
+aerodynamical
+aerodynamically
+aerodynamicist
+aerodynamics
+aerodyne
+aeroembolism
+aerogene
+aerogenes
+aerogram
+aerogram's
+aerograms
+aerographer
+aerography
+aerolite
+aerolith
+aerolitic
+aerological
+aerologist
+aerology
+aeromagnetic
+aeromechanics
+aeromedical
+aeromedicine
+aerometeorograph
+aerometer
+aerometer's
+aerometers
+aeronaut
+aeronautic
+aeronautical
+aeronautically
+aeronautics
+aeroneurosis
+aeronomer
+aeronomic
+aeronomical
+aeronomics
+aeronomist
+aeropause
+aerosol
+aerosolization
+aerosolize
+aerosolized
+aerosols
+aerospace
+aerosphere
+aerostat
+aerostatics
+aerothermodynamics
+aery
+Aeschines
+Aeschylus
+Aesculapian
+Aesculapius
+Aesir
+Aesop
+aesthesiometer
+aesthesiometer's
+aesthesiometers
+aestheticism
+aestheticize
+aestheticizes
+Aetolia
+afar
+afars
+afeard
+afeared
+afebrile
+affability
+affable
+affably
+affair
+affair's
+affaire
+affaires
+affairs
+affect
+affectability
+affectable
+affectate
+affectation
+affectation's
+affectations
+affected
+affectedly
+affectedness
+affecter
+affecting
+affectingly
+affection
+affection's
+affectional
+affectionally
+affectionate
+affectionately
+affectioned
+affectionless
+affections
+affective
+affectively
+affectivity
+affectless
+affectlessness
+affects
+Affenpinscher
+afferent
+afferently
+affettuoso
+affiance
+affianced
+affiant
+afficionado
+affidavit
+affidavit's
+affidavits
+affiliate
+affiliated
+affiliates
+affiliating
+affiliation
+affiliations
+affine
+affined
+affinely
+affinities
+affinity
+affinity's
+affirm
+affirmable
+affirmance
+affirmation
+affirmation's
+affirmations
+affirmative
+affirmatively
+affirmed
+affirming
+affirms
+affix
+affixable
+affixal
+affixation
+affixed
+affixes
+affixial
+affixing
+affixment
+afflatus
+afflict
+afflicted
+afflicting
+affliction
+affliction's
+afflictions
+afflictive
+afflictively
+afflicts
+affluence
+affluency
+affluent
+affluently
+afflux
+afford
+affordable
+afforded
+affording
+affords
+afforest
+afforestation
+affray
+affreightment
+affricate
+affricates
+affrication
+affricative
+affright
+affront
+affronted
+affronting
+affronts
+affusion
+afghan
+afghani
+Afghani
+Afghani's
+Afghanis
+Afghanistan
+Afghanistan's
+afghans
+aficionada
+aficionado
+aficionados
+afield
+afire
+aflame
+aflatoxin
+afloat
+aflutter
+afoot
+afore
+aforemention
+aforementioned
+aforesaid
+aforethought
+aforetime
+afoul
+afraid
+afreet
+afresh
+Africa
+Africa's
+African
+African's
+Africanism
+Africanist
+Africanization
+Africanization's
+Africanizations
+Africanize
+Africanized
+Africanizes
+Africanizing
+Africans
+afrika
+Afrikaans
+afrikaans
+Afrikander
+Afrikaner
+Afrikanerdom
+Afrikanerization
+Afrikanerize
+Afrikanerized
+Afrikanerizes
+Afrikanerizing
+afrit
+afro
+afrormosia
+aft
+after
+afterbirth
+afterbody
+afterbrain
+afterburner
+afterburners
+afterburning
+aftercare
+afterclap
+afterdamp
+afterdeck
+aftereffect
+aftereffects
+afterglow
+afterheat
+afterimage
+afterlife
+aftermath
+aftermost
+afternoon
+afternoon's
+afternoons
+afterpains
+afterpiece
+afters
+aftersensation
+aftershaft
+aftershave
+aftershock
+aftershock's
+aftershocks
+aftertaste
+aftertax
+afterthought
+afterthoughts
+aftertime
+afterward
+afterwards
+afterword
+afterworld
+aga
+agadir
+again
+against
+agalloch
+Agama
+Agamemnon
+agamete
+agamic
+agamically
+agamogenesis
+Agapanthus
+agape
+agapeic
+agapeically
+agar
+agaric
+agartala
+agate
+agates
+agateware
+Agatha
+agatize
+agatizes
+agave
+agaze
+age
+aged
+agedly
+agedness
+Agee
+Agee's
+agegroup
+ageing
+ageless
+agelessly
+agelessness
+agelong
+agencies
+agency
+agency's
+agenda
+agenda's
+agendaless
+agendas
+agendum
+agene
+agenesis
+agenize
+agent
+agent's
+agentive
+agentry
+agents
+ager
+Ageratum
+agers
+ages
+Aggie
+aggie
+aggies
+Aggies
+agglomerate
+agglomerated
+agglomerates
+agglomeration
+agglomerative
+agglutinability
+agglutinate
+agglutinated
+agglutinates
+agglutinating
+agglutination
+agglutinative
+agglutinin
+agglutinins
+agglutinogen
+agglutinogenic
+aggradation
+aggrade
+aggrandizable
+aggrandizable's
+aggrandizables
+aggrandization
+aggrandize
+aggrandized
+aggrandizement
+aggrandizement's
+aggrandizements
+aggrandizer
+aggrandizers
+aggrandizes
+aggrandizing
+aggravate
+aggravated
+aggravates
+aggravating
+aggravation
+aggravations
+aggregate
+aggregated
+aggregately
+aggregateness
+aggregates
+aggregating
+aggregation
+aggregational
+aggregations
+aggregative
+aggregatively
+aggress
+aggression
+aggression's
+aggressions
+aggressive
+aggressively
+aggressiveness
+aggressivity
+aggressor
+aggressors
+aggrieve
+aggrieved
+aggrievedly
+aggrieves
+aggrieving
+aggro
+agha
+aghast
+agile
+agilely
+agility
+Agincourt
+aging
+agio
+agios
+agiotage
+agist
+agitate
+agitated
+agitatedly
+agitates
+agitating
+agitation
+agitational
+agitations
+agitative
+agitato
+agitator
+agitator's
+agitators
+agitprop
+Aglaia
+aglare
+agleam
+aglet
+agley
+aglimmer
+aglitter
+aglow
+agma
+agminate
+agnail
+agnate
+agnatic
+agnatically
+agnation
+Agnes
+Agnew
+Agnew's
+agni
+agnize
+agnized
+agnizes
+agnizing
+agnomen
+agnostic
+agnostic's
+agnosticism
+agnostics
+agnus
+ago
+agog
+agon
+agone
+agonic
+agonies
+agonist
+agonistic
+agonistical
+agonistically
+agonists
+agonize
+agonized
+agonizedlies
+agonizedly
+agonizer
+agonizers
+agonizes
+agonizing
+agonizingly
+agony
+agora
+agoraphobia
+agoraphobic
+Agostini
+agouti
+Agra
+agraffe
+agram
+agranulocytosis
+Agrapha
+agraphia
+agrarian
+agrarianism
+agrarianize
+agrarianizes
+agree
+agreeability
+agreeable
+agreeableness
+agreeably
+agreed
+agreeing
+agreement
+agreement's
+agreements
+agreer
+agreers
+agrees
+agrestal
+agrestic
+agribusiness
+Agricola
+agricultural
+agriculturalist
+agriculturalists
+agriculturally
+agriculture
+agriculturist
+agrigento
+agrimony
+agriology
+Agrippa
+agrippina
+agrobiological
+agrobiologically
+agrobiology
+agrologic
+agrological
+agrologically
+agrologist
+agrology
+agronomic
+agronomical
+agronomically
+agronomics
+agronomist
+agronomy
+agrose
+agrostology
+aground
+agrypnotic
+Aguascalientes
+ague
+agueweed
+aguish
+aguishly
+agulhas
+Agway
+ah
+aha
+ahab
+Ahasuerus
+ahead
+ahem
+ahimsa
+ahistoric
+ahistorical
+ahithophel
+Ahmedabad
+Ahmednagar
+ahold
+ahoy
+Ahriman
+ahura
+Ahvenanmaa
+Ahwaz
+AI
+aid
+Aida
+Aida's
+Aidan
+aide
+aided
+aider
+aides
+Aidin
+aiding
+aidman
+aids
+aiglet
+aigrette
+aiguille
+aiguillette
+Aiken
+Aiken's
+aikido
+aikona
+ail
+ailanthus
+aile
+ailed
+Aileen
+aileron
+ailerons
+ailing
+ailment
+ailment's
+ailments
+ails
+ailurophile
+ailurophobe
+aim
+aimed
+aimer
+aimers
+aiming
+aimless
+aimlessly
+aimlessness
+aims
+ain
+ain't
+aintab
+Ainu
+air
+airbag
+airbag's
+airbags
+airboat
+airborne
+airbrick
+airbrush
+airburst
+airbus
+aircraft
+aircraftman
+aircrafts
+aircrew
+airdrie
+airdrome
+airdrop
+airdrops
+aire
+aired
+Airedale
+Airedale's
+airer
+airers
+Aires
+airfare
+airfield
+airfield's
+airfields
+airflow
+airfoil
+airfoils
+airforce
+airframe
+airframe's
+airframes
+airfreight
+airglow
+airgun
+airhead
+airier
+airiest
+airily
+airiness
+airing
+airings
+airless
+airlessness
+airlift
+airlift's
+airlifts
+airline
+airline's
+airliner
+airliner's
+airliners
+airlines
+airlock
+airlock's
+airlocks
+airmail
+airmails
+airman
+airmanship
+airmass
+airmen
+airmobile
+airpark
+airplane
+airplane's
+airplanes
+airplay
+airport
+airport's
+airports
+airpost
+airs
+airscrew
+airship
+airship's
+airships
+airsick
+airsickness
+airspace
+airspeed
+airspeeds
+airstream
+airstrip
+airstrip's
+airstrips
+airt
+airtight
+airtightness
+airwave
+airwaves
+airway
+airway's
+airways
+airworthiness
+airworthy
+airy
+aisha
+aisle
+aisles
+aisne
+ait
+aitch
+aitchbone
+Aitken
+Aitken's
+ajaccio
+ajar
+Ajax
+ajmer
+AK
+AKA
+Akan
+akbar
+akela
+akene
+Akers
+akhara
+akhenaten
+Akhmatova
+akihito
+akimbo
+akin
+Akkad
+Akkadian
+akkerman
+Akmolinsk
+Akron
+aksum
+Aktyubinsk
+akure
+akvavit
+Al
+AL
+Al's
+ala
+Alabama
+Alabama's
+Alabamans
+Alabamian
+Alabamian's
+alabaster
+alabastrine
+alack
+alacritous
+alacrity
+Aladdin
+alagez
+alagoas
+alai
+Alameda
+Alamein
+Alamo
+alamode
+alamogordo
+Alamos
+Alan
+Alan's
+alanbrooke
+alanine
+alannah
+alap
+alar
+Alaric
+alarm
+alarmed
+alarming
+alarmingly
+alarmism
+alarmist
+alarms
+alary
+alas
+Alaska
+Alaska's
+Alastair
+alate
+alated
+alation
+alb
+alba
+albacete
+albacore
+Albania
+Albania's
+Albanian
+Albanian's
+Albanians
+Albany
+albata
+albatross
+albedo
+albeit
+albemarle
+Alberich
+Albert
+Alberta
+alberti
+albertite
+Alberto
+albertus
+albescent
+Albi
+Albigenses
+albinic
+albinism
+albino
+Albinoni
+albinotic
+albinus
+Albion
+albite
+Alboin
+Albrecht
+Albrecht's
+Albright
+Albright's
+album
+albumen
+albumenization
+albumenize
+albumenized
+albumenizes
+albumenizing
+albumin
+albuminate
+albuminization
+albuminization's
+albuminizations
+albuminize
+albuminizes
+albuminoid
+albuminous
+albuminuria
+albumose
+albums
+Albuquerque
+alburnum
+Albury
+alcaeus
+alcahest
+alcaic
+alcaide
+alcalde
+alcan
+alcatraz
+alcazar
+Alcestis
+alchemic
+alchemical
+alchemically
+alchemist
+alchemistic
+alchemistical
+alchemize
+alchemy
+alcheringa
+Alcibiades
+alcidine
+Alcman
+Alcmena
+alcmene
+Alcoa
+Alcock
+alcohol
+alcohol's
+alcoholic
+alcoholic's
+alcoholically
+alcoholicity
+alcoholics
+alcoholism
+alcoholisms
+alcoholizable
+alcoholizable's
+alcoholizables
+alcoholization
+alcoholization's
+alcoholizations
+alcoholize
+alcoholizes
+alcoholometer
+alcoholometer's
+alcoholometers
+alcoholometry
+alcohols
+Alcoran
+Alcott
+Alcott's
+alcove
+alcove's
+alcoved
+alcoves
+alcuin
+Alcyone
+aldabra
+aldan
+Aldebaran
+aldehyde
+Alden
+Alden's
+alder
+alderman
+alderman's
+aldermanic
+Aldermaston
+aldermen
+Alderney
+aldershot
+Aldine
+aldis
+aldol
+aldosterone
+aldoxime
+Aldrich
+Aldrich's
+aldrin
+Aldus
+ale
+aleatoric
+aleatory
+Alec
+Aleck
+alecost
+alecto
+alee
+alegar
+alehouse
+alekhine
+Aleksandropol
+Aleksandrovsk
+Alemanni
+Alemannic
+alembic
+alembicated
+aleph
+Aleppo
+Aler
+alert
+alerted
+alertedly
+alerter
+alerters
+alerting
+alertly
+alertness
+alerts
+alessandria
+alethic
+aleurone
+Aleut
+Aleutian
+alevin
+alewife
+Alex
+Alexander
+Alexanders
+Alexandra
+Alexandre
+alexandretta
+Alexandria
+Alexandrian
+alexandrine
+alexandrite
+Alexei
+Alexei's
+alexia
+alexipharmic
+Alexis
+Alexius
+Alfa
+alfa
+alfalfa
+alfieri
+alfilaria
+Alfonso
+Alfonso's
+alforja
+Alfred
+Alfred's
+Alfredo
+Alfredo's
+alfresco
+alga
+algae
+algaecide
+algal
+algarroba
+algebra
+algebra's
+algebraic
+algebraical
+algebraically
+algebraist
+algebraization
+algebraization's
+algebraizations
+algebraize
+algebraizes
+algebras
+algeciras
+Algenib
+Alger
+Alger's
+Algeria
+Algeria's
+Algerian
+Algerian's
+Algerine
+algicidal
+algicide
+algid
+algidity
+Algiers
+algin
+alginate
+alginates
+alginic
+algoid
+Algol
+Algol's
+algolagnia
+algology
+algometer
+Algonkian
+Algonquian
+Algonquin
+Algonquin's
+algophobia
+algor
+algorism
+algorithm
+algorithm's
+algorithmic
+algorithmically
+algorithms
+Alhambra
+Ali
+alia
+alias
+aliased
+aliases
+aliasing
+alibi
+alibi's
+alibis
+alible
+alicante
+Alice
+Alicia
+alicyclic
+alidade
+alien
+alien's
+alienability
+alienable
+alienage
+alienate
+alienated
+alienates
+alienating
+alienation
+alienator
+alienee
+alienism
+alienist
+alienize
+alienizes
+alienor
+aliens
+aliform
+aligarh
+alight
+alighted
+alighting
+alightment
+align
+aligned
+aligner
+aligning
+alignment
+alignments
+aligns
+alike
+alikeness
+aliment
+alimentary
+alimentation
+alimentative
+aliments
+alimony
+aline
+alinement
+aliped
+aliphatic
+aliquot
+aliquot's
+aliquots
+Alison
+Alison's
+Alistair
+alit
+aliunde
+alive
+aliveness
+alizarin
+alk
+alkahest
+alkahestic
+alkalescence
+alkalescent
+alkali
+alkali's
+alkalic
+alkalify
+alkalimeter
+alkalimeter's
+alkalimeters
+alkalimetry
+alkaline
+alkalinity
+alkalinization
+alkalinization's
+alkalinizations
+alkalinize
+alkalinizes
+alkalis
+alkalization
+alkalize
+alkalized
+alkalizes
+alkalizing
+alkaloid
+alkaloid's
+alkaloidal
+alkaloids
+alkalosis
+alkane
+alkene
+alkmaar
+Alkoran
+alky
+alkyd
+alkyl
+alkylation
+alkyne
+all
+alla
+Allah
+Allah's
+Allahabad
+Allan
+allan
+allanite
+allantoid
+allantois
+allargando
+allay
+allayed
+allaying
+allays
+allegate
+allegation
+allegation's
+allegations
+allege
+alleged
+allegedly
+alleges
+Alleghenies
+Allegheny
+allegiance
+allegiance's
+allegiances
+allegiant
+alleging
+allegoric
+allegorical
+allegorically
+allegoricalness
+allegories
+allegorist
+allegorization
+allegorize
+allegorized
+allegorizer
+allegorizes
+allegorizing
+allegory
+allegory's
+Allegra
+allegretto
+allegretto's
+allegrettos
+allegro
+allegro's
+allegros
+allele
+alleles
+allelic
+allelism
+allelomorph
+alleluia
+allemand
+allemande
+Allen
+Allenby
+Allendale
+Allende
+Allentown
+alleppey
+allergen
+allergenic
+allergic
+allergies
+allergist
+allergy
+allergy's
+allery
+allethrin
+alleviate
+alleviated
+alleviates
+alleviating
+alleviation
+alleviative
+alleviator
+alleviator's
+alleviators
+alleviatory
+alley
+alley's
+alleys
+alleyway
+alleyway's
+alleyways
+allhallows
+Allhallowtide
+allheal
+alliaceous
+alliance
+alliance's
+alliances
+allied
+allier
+allies
+alligator
+alligator's
+alligatored
+alligators
+Allis
+Allison
+alliterate
+alliterated
+alliterates
+alliterating
+alliteration
+alliteration's
+alliterations
+alliterative
+alliteratively
+allium
+alloa
+allocable
+allocatable
+allocate
+allocated
+allocates
+allocating
+allocation
+allocation's
+allocations
+allocative
+allocator
+allocator's
+allocators
+allocution
+allodial
+allodium
+allogamous
+allogamy
+allogeneic
+allograft
+allograph
+allographic
+allomerism
+allomerous
+allometric
+allometry
+allomorph
+allomorphic
+allomorphism
+allonge
+allons
+allonym
+allopath
+allopathic
+allopathically
+allopathy
+allopatric
+allopatrically
+allopatry
+allophane
+allophone
+allophones
+allophonic
+alloplasm
+allopurinol
+allosteric
+allosterically
+allot
+alloted
+allotee
+allotment
+allotment's
+allotments
+allotransplant
+allotransplantation
+allotrope
+allotropic
+allotropically
+allotropy
+allots
+allotted
+allottee
+allottees
+allotter
+allotting
+allotts
+allotype
+allotypic
+allotypically
+allotypy
+allover
+allow
+allowable
+allowableness
+allowably
+allowance
+allowance's
+allowanced
+allowances
+allowancing
+allowed
+allowedly
+allowing
+allows
+alloy
+alloy's
+alloyed
+alloying
+alloys
+allseed
+allspice
+Allstate
+allude
+alluded
+alludes
+alluding
+allure
+allured
+allurement
+allures
+alluring
+allusion
+allusion's
+allusions
+allusive
+allusively
+allusiveness
+alluvial
+alluvion
+alluvium
+ally
+allying
+allyl
+allylic
+Allyn
+Allyn's
+allyou
+alma
+almada
+Almaden
+Almaden's
+almagest
+almanac
+almanac's
+almanacs
+almandine
+almandite
+Almeida
+almelo
+almemar
+almightiness
+almighty
+Almohade
+almond
+almond's
+almonds
+almoner
+almonry
+Almoravide
+almost
+alms
+almsgiver
+almsgiving
+almshouse
+almshouses
+almsman
+almucantar
+almuce
+alnico
+alodium
+aloe
+aloes
+aloft
+alogical
+alogically
+aloha
+aloin
+alone
+aloneness
+along
+alongshore
+alongside
+aloof
+aloofly
+aloofness
+alopecia
+alost
+aloud
+alow
+alp
+alpaca
+alpenglow
+alpenhorn
+alpenstock
+Alpert
+Alpert's
+alpes
+alpestrine
+alpha
+alphabet
+alphabet's
+alphabetic
+alphabetical
+alphabetically
+alphabetics
+alphabetization
+alphabetization's
+alphabetizations
+alphabetize
+alphabetized
+alphabetizer
+alphabetizers
+alphabetizes
+alphabetizing
+alphabets
+alphameric
+alphamerical
+alphamerics
+alphanumeric
+alphanumerical
+alphanumerically
+alphanumerics
+alphatically
+Alpheratz
+alpheus
+Alphonse
+Alphonse's
+alphonsus
+alphorn
+alphosis
+alpine
+alpinism
+alpinist
+alps
+already
+alright
+alsace
+Alsatia
+Alsatian
+Alsatians
+alsike
+also
+Alsop
+Alsop's
+alt
+Altaic
+Altair
+Altair's
+Altamira
+altar
+altar's
+altarpiece
+altars
+altazimuth
+altdorf
+altdorfer
+alter
+alterability
+alterable
+alterably
+alterate
+alteration
+alteration's
+alterations
+alterative
+altercate
+altercation
+altercation's
+altercations
+altered
+alterer
+alterers
+altering
+alterman
+altern
+alternant
+alternate
+alternated
+alternately
+alternates
+alternating
+alternation
+alternations
+alternative
+alternatively
+alternativeness
+alternatives
+alternator
+alternator's
+alternators
+alternize
+alternizes
+alters
+althea
+althing
+altho
+althorn
+although
+altimeter
+altimeter's
+altimeters
+altimetry
+altiplano
+altissimo
+altitude
+altitudes
+altitudinal
+altitudinous
+alto
+alto's
+altocumulus
+altogether
+altogther
+Alton
+Alton's
+altona
+altos
+altostratus
+altricial
+Altrincham
+altruism
+altruist
+altruistic
+altruistically
+altruists
+ALU
+aludel
+alula
+alum
+alumina
+aluminate
+aluminiferous
+aluminization
+aluminize
+aluminized
+aluminizes
+aluminizing
+aluminosilicate
+aluminothermy
+aluminous
+aluminum
+aluminum's
+aluminums
+alumna
+alumna's
+alumnae
+alumni
+alumnus
+alumroot
+alundum
+alunite
+Alva
+Alva's
+Alvarez
+alveolar
+alveolarly
+alveolate
+alveolation
+alveoli
+alveolus
+alvey
+Alvin
+alvine
+alway
+always
+Alyssa
+Alyssa's
+alyssum
+alytical
+am
+AMA
+amadavat
+Amadeus
+amadou
+amagasaki
+amah
+amain
+amalekite
+amalgam
+amalgam's
+amalgamate
+amalgamated
+amalgamates
+amalgamating
+amalgamation
+amalgamations
+amalgamative
+amalgamatize
+amalgamatizes
+amalgamator
+amalgamization
+amalgamization's
+amalgamizations
+amalgamize
+amalgamizes
+amalgams
+amalthea
+Amanda
+Amanda's
+amanita
+amanuenses
+amanuensis
+amaranth
+amaranthaceous
+amaranthine
+amarelle
+Amarillo
+Amarillo's
+amaryllidaceous
+Amaryllis
+amass
+amassed
+amasser
+amasses
+amassing
+amassment
+amateur
+amateur's
+amateurish
+amateurishly
+amateurishness
+amateurism
+amateurs
+Amati
+amative
+amatively
+amativeness
+amatol
+amatory
+amaurosis
+amaurotic
+amaut
+amaze
+amazed
+amazedly
+amazement
+amazer
+amazers
+amazes
+amazing
+amazingly
+amazon
+amazon's
+amazonas
+amazonite
+amazons
+ambage
+ambages
+ambagious
+ambala
+ambary
+ambassador
+ambassador's
+ambassadorial
+ambassadors
+ambassadorship
+ambassadress
+amber
+ambergris
+amberjack
+amberoid
+ambiance
+ambiances
+ambidexterity
+ambidextrous
+ambidextrously
+ambience
+ambiences
+ambient
+ambiguities
+ambiguity
+ambiguity's
+ambiguous
+ambiguously
+ambiguousness
+ambit
+ambition
+ambition's
+ambitionless
+ambitions
+ambitious
+ambitiously
+ambitiousness
+ambivalence
+ambivalent
+ambivalently
+ambiversion
+ambiversive
+ambivert
+amble
+ambled
+ambler
+ambles
+ambling
+amblygonite
+amblyopia
+ambo
+amboceptor
+Amboina
+amboise
+amboyna
+ambroid
+ambrose
+ambrosia
+ambrosial
+ambrosially
+Ambrosian
+ambrotype
+ambry
+ambsace
+ambulacral
+ambulacrum
+ambulance
+ambulance's
+ambulances
+ambulant
+ambulate
+ambulation
+ambulatorily
+ambulatory
+ambuscade
+ambuscader
+ambush
+ambushed
+ambusher
+ambushes
+ambushment
+Amdahl
+amdahl
+Amdahl's
+ameba
+ameer
+Amelia
+Amelia's
+Ameling
+ameliorate
+ameliorated
+ameliorating
+amelioration
+ameliorative
+ameliorator
+amelioratory
+amen
+amenabilities
+amenability
+amenable
+amenably
+amend
+amendable
+amendatory
+amende
+amended
+amender
+amending
+amendment
+amendment's
+amendments
+amends
+amenhotep
+amenities
+amenity
+amenorrhea
+ament
+amentia
+Amerada
+amerce
+amercement
+amerciable
+amercing
+America
+America's
+American
+American's
+Americana
+Americanism
+Americanist
+Americanization
+Americanization's
+Americanizations
+Americanize
+americanized
+Americanizer
+Americanizers
+Americanizes
+Americanizing
+Americans
+Americas
+americium
+Amerigo
+Amerindian
+Amersfoort
+Ames
+amesace
+Ameslan
+amethyst
+amethystine
+ametropia
+ametropic
+Amfortas
+amhara
+amharic
+Amharic
+Amherst
+Amherst's
+ami
+amiability
+amiable
+amiableness
+amiabler
+amiablest
+amiably
+amianthus
+amicability
+amicable
+amicableness
+amicably
+amice
+amicus
+amid
+amide
+amidol
+amidship
+amidships
+amidst
+amiens
+amigo
+amin
+amine
+amino
+aminobenzoic
+aminophenol
+aminopyridine
+aminopyrine
+amir
+amis
+Amish
+amiss
+amitosis
+amitotic
+amitotically
+amitrole
+amity
+Amman
+ammendment
+ammendments
+Ammerman
+Ammerman's
+ammeter
+ammeter's
+ammeters
+ammine
+ammino
+ammo
+ammocoete
+ammon
+ammonal
+ammonate
+ammonia
+ammoniac
+ammoniacal
+ammonias
+ammoniate
+ammoniation
+ammonic
+ammonification
+ammonifier
+ammonify
+ammonite
+Ammonites
+ammonites
+ammonitic
+ammonium
+ammonoid
+ammunition
+ammunitions
+amnesia
+amnesiac
+amnesic
+amnestic
+amnesty
+amnia
+amniocentesis
+amnion
+amniote
+amniotic
+Amoco
+Amoco's
+amoeba
+amoeba's
+amoebae
+amoebaean
+amoeban
+amoebas
+amoebiasis
+amoebic
+amoebocyte
+amoeboid
+amok
+amon
+among
+amongst
+Amontillado
+amontillado
+amor
+amor's
+amoral
+amoralism
+amorality
+amoralize
+amoralizes
+amorally
+amoretto
+amorism
+amorism's
+amorisms
+amoristic
+amoristics
+amoroso
+amorous
+amorously
+amorousness
+amorphism
+amorphization
+amorphize
+amorphous
+amorphously
+amorphousness
+amors
+amort
+amortizable
+amortizable's
+amortizables
+amortization
+amortization's
+amortizations
+amortize
+amortized
+amortizement
+amortizement's
+amortizements
+amortizes
+amortizing
+Amos
+amount
+amounted
+amounter
+amounters
+amounting
+amounts
+amour
+amour's
+amours
+amowt
+Amoy
+amp
+Ampelopsis
+amperage
+amperages
+ampere
+amperes
+ampersand
+ampersand's
+ampersands
+Ampex
+Ampex's
+amphetamine
+amphetamines
+amphiarthrosis
+amphiaster
+amphibia
+amphibian
+amphibian's
+amphibians
+amphibiotic
+amphibious
+amphibiously
+amphibiousness
+amphiblastula
+amphibole
+amphibolite
+amphibolitic
+amphibology
+amphibrach
+amphichroic
+amphicoelous
+amphictyon
+amphictyony
+amphidiploid
+amphigory
+amphimacer
+amphimixis
+amphioxis
+amphioxus
+amphipathic
+amphiploid
+amphipod
+amphiprostyle
+amphiprotic
+amphisbaena
+amphistylar
+amphitheater
+amphitheater's
+amphitheaters
+amphitheatric
+amphitheatrical
+amphitheatrically
+amphithecium
+amphitricha
+Amphitrite
+amphitropous
+Amphitryon
+amphora
+amphoteric
+ample
+ampleness
+ampler
+amplest
+amplexicaul
+amplexus
+amplidyne
+amplification
+amplifications
+amplified
+amplifier
+amplifiers
+amplifies
+amplify
+amplifying
+amplitude
+amplitude's
+amplitudes
+amply
+ampoule
+ampoule's
+ampoules
+amps
+ampul
+ampule
+ampulla
+amputate
+amputated
+amputates
+amputating
+amputation
+amputator
+amputee
+amra
+amravati
+amrita
+Amritsar
+ams
+Amsterdam
+Amsterdam's
+amstrad
+Amtrak
+Amtrak's
+amuck
+amulet
+amulets
+Amundsen
+amur
+amuse
+amused
+amusedly
+amusement
+amusement's
+amusements
+amuser
+amusers
+amuses
+amusing
+amusingly
+amusingness
+amusive
+Amy
+Amy's
+amygdala
+amygdalate
+amygdale
+amygdalin
+amygdaline
+amygdaloid
+amygdaloidal
+amyl
+amylaceous
+amylase
+amylene
+amyloid
+amylolysis
+amylolytic
+amylopectin
+amylopsin
+amylose
+amyotonia
+Amytal
+an
+ana
+Anabaena
+anabantid
+anabaptism
+Anabaptist
+Anabaptist's
+Anabaptists
+Anabas
+anabasis
+anabatic
+Anabel
+Anabel's
+anabiosis
+anabiotic
+Anableps
+anabolic
+anabolism
+anabolite
+anabranch
+anacardiaceous
+anachorism
+anachronic
+anachronism
+anachronism's
+anachronisms
+anachronistic
+anachronistically
+anachronous
+anachronously
+anaclinal
+anaclitic
+anacoluthia
+anacoluthic
+anacoluthically
+anacoluthon
+anaconda
+anacondas
+anacoustic
+Anacreon
+Anacreontic
+anacrusis
+anaculture
+anadem
+anadex
+anadiplosis
+anadromous
+anadyr
+anaerobe
+anaerobic
+anaerobically
+anaerobiosis
+anaglyph
+anaglyphic
+anaglypta
+anagnorisis
+anagoge
+anagram
+anagram's
+anagrammatic
+anagrammatical
+anagrammatically
+anagrammatization
+anagrammatize
+anagrams
+Anaheim
+Anaheim's
+anak
+anal
+analcite
+Analects
+analects
+analemma
+analemma's
+analemmas
+analeptic
+analgesia
+analgesic
+analgetic
+analog
+analog's
+analogic
+analogical
+analogically
+analogies
+analogism
+analogism's
+analogisms
+analogist
+analogize
+analogizes
+analogous
+analogously
+analogousness
+analogs
+analogy
+analogy's
+analphabet
+analphabetic
+analphabetism
+analysand
+analysis
+analyst
+analyst's
+analysts
+analytic
+analytical
+analytically
+analyticities
+analyticity
+analytics
+analyzable
+analyzation
+analyze
+analyzed
+analyzer
+analyzers
+analyzes
+analyzing
+Anam
+anambra
+anamnesis
+anamorphic
+anamorphism
+anamorphoscope
+anamorphosis
+anandrous
+Ananias
+ananthous
+anapaest
+anaphase
+anaphasic
+anaphora
+anaphoric
+anaphorically
+anaphrodisiac
+anaphylaxis
+anaplasia
+anaplasmosis
+anaplastic
+anaplasty
+anaptyxis
+anapurna
+anarch
+anarchic
+anarchical
+anarchism
+anarchist
+anarchist's
+anarchistic
+anarchists
+anarchize
+anarchizes
+anarcho
+anarchy
+anarthria
+anarthrous
+anasarca
+anastasia
+anastigmat
+anastigmatic
+anastomose
+anastomoses
+anastomosis
+anastomotic
+anastrophe
+anatase
+anathema
+anathematization
+anathematize
+anathematized
+anathematizes
+anathematizing
+Anatole
+Anatole's
+anatolia
+Anatolian
+anatomic
+anatomical
+anatomically
+anatomicals
+anatomist
+anatomize
+anatomy
+anatoxin
+anatropous
+anatto
+anaxagoras
+anaximander
+anaximenes
+anbury
+ancestor
+ancestor's
+ancestors
+ancestral
+ancestrally
+ancestress
+ancestry
+Anchises
+anchor
+anchorage
+anchorage's
+anchorages
+anchored
+anchoress
+anchoret
+anchoring
+anchorite
+anchoritic
+anchoritically
+anchoritism
+anchorless
+anchorman
+anchors
+anchoveta
+anchovies
+anchovy
+anchylose
+ancient
+anciently
+ancientness
+ancientry
+ancients
+ancillaries
+ancillary
+ancipital
+ancohuma
+ancon
+Ancona
+ancy
+ancylostomiasis
+and
+andalusia
+Andalusia
+andalusite
+Andaman
+andante
+andantino
+Andean
+Andean's
+anded
+anderlecht
+anders
+Andersen
+Andersen's
+Anderson
+Anderson's
+Andes
+andesine
+andesite
+andesitic
+Andhra
+anding
+andiron
+andizhan
+Andorra
+Andorra's
+Andover
+Andover's
+andradite
+Andre
+Andre's
+Andrea
+Andrea's
+andreanof
+Andrei
+Andrei's
+andreotti
+Andrew
+Andrew's
+androcles
+androclinium
+androecium
+androgen
+androgenic
+androgenous
+androgyne
+androgynous
+androgyny
+android
+Andromache
+Andromeda
+andros
+androsphinx
+androsterone
+ands
+andvari
+Andy
+Andy's
+ane
+anear
+anecdotage
+anecdotal
+anecdotalist
+anecdotalists
+anecdotally
+anecdote
+anecdote's
+anecdotes
+anecdotic
+anecdotical
+anecdotically
+anecdotist
+anechoic
+anelace
+anele
+anemia
+anemia's
+anemias
+anemic
+anemically
+anemics
+anemochore
+anemograph
+anemographic
+anemography
+anemology
+anemometer
+anemometer's
+anemometers
+anemometric
+anemometrical
+anemometry
+anemone
+anemophilous
+anemoscope
+anent
+anergy
+aneroid
+anesthesia
+anesthesia's
+anesthesias
+anesthesiologist
+anesthesiology
+anesthetic
+anesthetic's
+anesthetically
+anesthetics
+anesthetist
+anesthetization
+anesthetization's
+anesthetizations
+anesthetize
+anesthetized
+anesthetizer
+anesthetizer's
+anesthetizers
+anesthetizes
+anesthetizing
+anestrus
+anethole
+aneto
+aneuploid
+aneurin
+aneurism
+aneurysm
+aneurysmal
+anew
+anfractuosity
+anfractuous
+Angara
+Angarsk
+angary
+angel
+angel's
+Angela
+Angeleno
+Angeleno's
+Angelenos
+Angeles
+angelfish
+angelic
+Angelica
+Angelica's
+angelical
+angelically
+angelicize
+angelicizes
+angelico
+Angelina
+Angeline
+angelize
+angelizes
+angell
+Angelo
+angelology
+angels
+Angelus
+anger
+angered
+angering
+angerless
+angers
+Angevin
+Angie
+angina
+anginal
+anginose
+angiocardiographic
+angiocardiography
+angiography
+angiology
+angioma
+angiosperm
+Angkor
+angle
+angled
+angler
+anglers
+angles
+Anglesey
+anglesite
+angleworm
+Anglia
+anglia
+Anglian
+Anglican
+Anglican's
+Anglicanism
+Anglicanism's
+Anglicanize
+Anglicanizes
+Anglicans
+anglice
+anglicism
+Anglicist
+anglicization
+anglicization's
+anglicizations
+anglicize
+anglicized
+anglicizes
+angling
+Anglo
+Anglomania
+Anglophile
+Anglophilia
+Anglophilia's
+Anglophiliac
+Anglophilic
+Anglophilism
+Anglophily
+Anglophobe
+Anglophobia
+Anglophobia's
+Anglophobic
+Anglophone
+Angola
+Angola's
+angora
+angostura
+angra
+angrier
+angriest
+angrily
+angriness
+angry
+angst
+angstrom
+angstroms
+Anguilla
+anguilliform
+anguine
+anguish
+anguished
+angular
+angularity
+angularization
+angularization's
+angularizations
+angularize
+angularizes
+angularly
+angulation
+Angus
+angwantibo
+anhalt
+Anheuser
+anhinga
+anhwei
+anhydride
+anhydridization
+anhydridization's
+anhydridizations
+anhydridize
+anhydridizes
+anhydrite
+anhydrous
+anhydrously
+ani
+aniakchak
+aniconic
+anil
+anile
+aniline
+anilingus
+anima
+animadversion
+animadvert
+animal
+animal's
+animalcular
+animalcule
+animalculum
+animalism
+animalist
+animalistic
+animality
+animalization
+animalization's
+animalizations
+animalize
+animalized
+animalizes
+animalizing
+animallike
+animally
+animalness
+animals
+animate
+animated
+animatedly
+animately
+animateness
+animates
+animating
+animation
+animations
+animatism
+animato
+animator
+animator's
+animators
+animism
+animist
+animistic
+animized
+animosity
+animus
+anion
+anion's
+anionic
+anionics
+anions
+anise
+aniseed
+aniseikonia
+aniseikonic
+anisette
+anisodactyl
+anisogamy
+anisole
+anisometric
+anisometropia
+anisotropic
+anisotropically
+anisotropies
+anisotropism
+anisotropy
+anisotropy's
+Anita
+Anjou
+Ankara
+ankerite
+ankh
+anking
+ankle
+ankle's
+anklebone
+anklebones
+ankles
+anklet
+ankus
+ankylosaur
+ankylose
+ankylosis
+ankylostomiasis
+anlace
+anlage
+Ann
+Anna
+annaba
+annabergite
+annal
+Annale
+Annalen
+annalen
+Annalist
+Annalistic
+annalize
+annalizes
+annals
+Annam
+Annamese
+Annapolis
+Annapurna
+annates
+annatto
+Anne
+Anne's
+anneal
+annealed
+annealer
+annealers
+annealing
+anneals
+annecy
+annelid
+Annette
+annex
+annexation
+annexational
+annexationist
+annexations
+annexe
+annexed
+annexes
+annexing
+annhilate
+Annie
+annihilate
+annihilated
+annihilates
+annihilating
+annihilation
+annihilative
+annihilator
+annihilatory
+anniversaries
+anniversary
+anniversary's
+anno
+annotate
+annotated
+annotates
+annotating
+annotation
+annotations
+annotative
+annotator
+annotators
+announce
+announced
+announcement
+announcement's
+announcements
+announcer
+announcers
+announces
+announcing
+annoy
+annoyance
+annoyance's
+annoyances
+annoyed
+annoyer
+annoyers
+annoying
+annoyingly
+annoys
+annual
+annualization
+annualize
+annualized
+annualizes
+annualizing
+annually
+annuals
+annuary
+annuitant
+annuities
+annuity
+annul
+annular
+annularity
+annularly
+annulate
+annulated
+annulately
+annulation
+annulet
+annuli
+annulled
+annulling
+annulment
+annulment's
+annulments
+annulose
+annuls
+annulus
+annum
+annunciate
+annunciated
+annunciates
+annunciating
+annunciation
+annunciator
+annunciators
+annunciatory
+annunicates
+anoa
+anodal
+anodally
+anode
+anode's
+anodes
+anodic
+anodically
+anodization
+anodize
+anodized
+anodizes
+anodizing
+anodyne
+anodynic
+anoestrus
+anoint
+anointed
+anointer
+anointing
+anointment
+anoints
+anole
+anomalies
+anomalistic
+anomalistical
+anomalous
+anomalously
+anomalousness
+anomaly
+anomaly's
+anomer
+anomeric
+anomic
+anomie
+anon
+anonym
+anonymity
+anonymous
+anonymously
+anonymousness
+Anopheles
+anorak
+anorectic
+anoretic
+anorexia
+anorexigenic
+anorthic
+anorthite
+anorthitic
+anorthosite
+anorthositic
+anosmia
+anosmic
+another
+another's
+Anouilh
+anovulant
+anovulatory
+anoxaemia
+anoxemia
+anoxemic
+anoxia
+anoxic
+ansate
+anschluss
+Anselm
+Anselm's
+Anselmo
+Anselmo's
+anserine
+Ansermet
+anshan
+ANSI
+ANSI's
+Anson
+answer
+answerable
+answered
+answerer
+answerers
+answering
+answers
+ant
+ant's
+antacid
+Antaeus
+antagonism
+antagonisms
+antagonist
+antagonist's
+antagonistic
+antagonistically
+antagonists
+antagonization
+antagonization's
+antagonizations
+antagonize
+antagonized
+antagonizer
+antagonizers
+antagonizes
+antagonizing
+antarctic
+Antarctic
+Antarctica
+Antarctica's
+Antares
+ante
+anteater
+anteater's
+anteaters
+antebellum
+antecede
+antecedence
+antecedent
+antecedent's
+antecedently
+antecedents
+antecessor
+antechamber
+antechambers
+antechoir
+anted
+antedate
+antedated
+antedates
+antedating
+antediluvian
+antefix
+antefixal
+anteing
+antelope
+antelope's
+antelopes
+antemeridian
+antemortem
+antenatal
+antenna
+antenna's
+antennae
+antennal
+antennas
+antennule
+antependium
+antepenultimate
+anterior
+anteriorly
+anteriors
+anteroom
+anterooms
+antetype
+anteversion
+antevert
+anthelion
+anthelmintic
+anthem
+anthem's
+anthemion
+anthems
+anther
+antheridium
+antherozoid
+anthesis
+anthill
+anthocyanin
+anthologies
+anthologist
+anthologization
+anthologize
+anthologized
+anthologizer
+anthologizes
+anthologizing
+anthology
+Anthony
+anthophore
+anthotaxy
+anthozoan
+anthracene
+anthracite
+anthracitic
+anthracitization
+anthracitization's
+anthracitizations
+anthracnose
+anthracoid
+anthraquinone
+anthrax
+anthrop
+anthropic
+anthropical
+anthropocentric
+anthropocentrically
+anthropocentricity
+anthropogenesis
+anthropogenetic
+anthropogenic
+anthropography
+anthropoid
+anthropological
+anthropologically
+anthropologist
+anthropologist's
+anthropologists
+anthropology
+anthropometric
+anthropometrical
+anthropometrically
+anthropometrics
+anthropometry
+anthropomorphic
+anthropomorphically
+anthropomorphism
+anthropomorphist
+anthropomorphization
+anthropomorphize
+anthropomorphized
+anthropomorphizes
+anthropomorphizing
+anthropomorphosis
+anthropomorphous
+anthropopathism
+anthropopathy
+anthropophagi
+anthropophagite
+anthropophagous
+anthropophagus
+anthropophagy
+anthroposophy
+Anthurium
+anti
+antiaircraft
+antianxiety
+antibacterial
+antibaryon
+antibes
+antibiosis
+antibiotic
+antibiotically
+antibiotics
+antiblack
+antiblackism
+antibodies
+antibody
+antic
+antic's
+antically
+anticancer
+anticancerous
+anticatalyst
+anticatalyzer
+anticatalyzer's
+anticatalyzers
+anticathode
+anticentralization
+anticentralization's
+anticentralizations
+antichlor
+anticholinergic
+anticholinesterase
+antichrist
+anticipant
+anticipants
+anticipatable
+anticipate
+anticipated
+anticipates
+anticipating
+anticipation
+anticipations
+anticipative
+anticipatively
+anticipator
+anticipatory
+anticize
+anticizes
+anticlastic
+anticlerical
+anticlericalism
+anticlimactic
+anticlimactical
+anticlimactically
+anticlimax
+anticlimaxes
+anticlinal
+anticline
+anticlinorium
+anticlockwise
+anticoagulant
+anticoagulate
+anticoagulation
+anticodon
+anticompetitive
+anticonvulsant
+anticonvulsive
+anticosti
+antics
+anticyclone
+anticyclones
+antidepressant
+antiderivative
+antidisestablishmentarianism
+antidiuretic
+antidotal
+antidotally
+antidote
+antidote's
+antidotes
+antidromic
+antiegalitarian
+antienzyme
+antiepicenter
+antiepicenter's
+antiepicenters
+antiestablishment
+Antietam
+antifebrile
+antifederalist
+antiferromagnetism
+antifertility
+antifertilizer
+antifertilizer's
+antifertilizers
+antifluoridation
+antiform
+antiformant
+antifouling
+antifreeze
+antifriction
+antifundamentalist
+antifungal
+antigen
+antigen's
+antigenic
+antigenically
+antigenicity
+antigens
+antiglobulin
+antigone
+Antigonus
+antigorite
+antigravity
+Antigua
+antihalation
+antihelices
+antihelix
+antihemophilic
+antihero
+antiheros
+antihistamine
+antihistaminic
+antihistorical
+antihypertensive
+antiknock
+antilabor
+antilabor's
+antilabors
+antilepton
+antileptons
+antileukemic
+antilitter
+Antilles
+antilog
+antilogarithm
+antilogarithms
+antilogism
+antilogs
+antilogy
+antimacassar
+antimacassars
+antimagnetic
+antimalarial
+antimalarials
+antimasque
+antimatter
+antimatter's
+antimedieval
+antimedieval's
+antimedievals
+antimere
+antimetabolite
+antimicrobial
+antimilitarist
+antimilitarists
+antimissile
+antimissiles
+antimitotic
+antimonial
+antimonic
+antimonious
+antimonous
+antimony
+antimonyl
+antineoplastic
+antineutrino
+antineutron
+anting
+antinodal
+antinode
+antinomian
+antinomy
+antinovel
+antinovelist
+antinucleon
+Antioch
+antiochus
+antioxidant
+antioxidizer
+antioxidizer's
+antioxidizers
+antioxidizing
+antioxidizing's
+antioxidizings
+antiparallel
+antiparasitic
+antiparticle
+antipasto
+antipater
+antipathetic
+antipathetically
+antipathize
+antipathizes
+antipathy
+antiperiodic
+antiperiplanar
+antiperistalsis
+antipersonnel
+antiperspirant
+antiphlogistic
+antiphon
+antiphonal
+antiphonally
+antiphonary
+antiphony
+antiphrasis
+antipodal
+antipode
+antipode's
+antipodean
+antipodes
+antipoetic
+antipollution
+antipope
+antiproton
+antipsychiatry
+antipyretic
+antipyrine
+antiquarian
+antiquarian's
+antiquarianism
+antiquarianize
+antiquarianizes
+antiquarians
+antiquary
+antiquate
+antiquated
+antiquation
+antique
+antique's
+antiques
+antiquities
+antiquity
+antirachitic
+antiredeposition
+antiremonstrant
+antiresonance
+antiresonator
+antirheumatic
+antirrhinum
+antirumor
+antirumor's
+antirumors
+antisana
+antiscorbutic
+antisemite
+antisemite's
+antisemites
+antisemitic
+antisemitism
+antisemitism's
+antisensitize
+antisensitizer
+antisensitizer's
+antisensitizers
+antisensitizes
+antisepsis
+antiseptic
+antiseptically
+antisepticize
+antisepticizes
+antiseptize
+antiseptizes
+antisera
+antiserum
+antisiphon
+antisiphon's
+antisiphons
+antislavery
+antisocial
+antispasmodic
+antistatic
+antisthenes
+antistrophe
+antistrophic
+antistrophically
+antisubmarine
+antisymmetric
+antisymmetry
+antitank
+antithesis
+antithesize
+antithesizes
+antithetic
+antithetical
+antithetically
+antithyroid
+antitoxic
+antitoxin
+antitoxin's
+antitoxins
+antitrades
+antitragus
+antitrust
+antitruster
+antitubercular
+antituberculous
+antitumor
+antitumoral
+antitussive
+antitype
+antivenin
+antiviral
+antivitamin
+antiworld
+antler
+antlered
+antlia
+antlion
+antofagasta
+Antoine
+Antoinette
+Anton
+Anton's
+antoninus
+Antonio
+Antonio's
+antonioni
+antonius
+antonomasia
+Antony
+antonym
+antonymic
+antonymous
+antonyms
+antonymy
+antre
+antrim
+antrorse
+antrorsely
+antrum
+ants
+antung
+Antwerp
+anu
+Anubis
+anuradhapura
+anuran
+anuresis
+anuria
+anurous
+anus
+anvers
+anvil
+anvil's
+anviled
+anviling
+anvils
+anxieties
+anxiety
+anxious
+anxiously
+anxiousness
+any
+anyang
+anybodies
+anybody
+anyhow
+anymore
+anyone
+anyone's
+anyones
+anyplace
+anything
+anythings
+anytime
+anyway
+anyways
+anywhere
+anywheres
+anywise
+Anzac
+anzio
+anzus
+aorangi
+aorta
+aortal
+aortic
+aortographic
+aortography
+aosta
+aoudad
+apace
+apache
+apaches
+apagoge
+apalachicola
+apanage
+aparri
+apart
+apartheid
+apartment
+apartment's
+apartmental
+apartments
+apartness
+apatetic
+apathetic
+apathetically
+apathy
+apatite
+ape
+apeak
+aped
+apeldoorn
+apelike
+apelles
+apeman
+apennines
+aper
+aperient
+aperiodic
+aperiodically
+aperiodicity
+aperitif
+aperture
+apertured
+apery
+apes
+apetalous
+Apetalous
+apex
+apexes
+aphaeresis
+aphaeretic
+aphagia
+aphanite
+aphanitic
+aphasia
+aphasiac
+aphasic
+aphelion
+apheliotropic
+aphesis
+aphetic
+aphetically
+aphid
+aphid's
+aphides
+aphids
+Aphis
+aphonia
+aphonic
+aphorism
+aphorism's
+aphorisms
+aphorist
+aphoristic
+aphoristically
+aphorize
+aphorized
+aphorizer
+aphorizers
+aphorizes
+aphorizing
+aphotic
+aphrodisiac
+aphrodisiacal
+Aphrodite
+Aphrodite's
+aphtha
+aphyllous
+aphylly
+apia
+apian
+apiarian
+apiaries
+apiarist
+apiary
+apical
+apically
+apices
+apiculate
+apicultural
+apiculture
+apiculturist
+apiece
+apiezon
+aping
+Apis
+apish
+apishly
+apishness
+apivorous
+aplacental
+aplanatic
+aplanospore
+aplasia
+aplastic
+aplenty
+aplite
+aplomb
+apnoea
+apo
+apocalypse
+apocalyptic
+apocalyptical
+apocalyptically
+apocalypticism
+apocalyptism
+apocalyptist
+apocarp
+apocarpous
+apocarpy
+apochromat
+apochromatic
+apocopate
+apocope
+apocrine
+apocrypha
+apocryphal
+apocryphally
+apocryphalness
+apocynaceous
+apocynthion
+apodal
+apodeictic
+apodictic
+apodictically
+apodosis
+apodous
+apoenzyme
+apogamic
+apogamous
+apogamy
+apogean
+apogee
+apogees
+apogeotropism
+apolar
+apolitical
+apolitically
+apollinaire
+Apollinaire
+apollinaris
+Apollo
+Apollo's
+Apollonian
+Apollyon
+apologetic
+apologetically
+apologetics
+apologia
+apologie
+apologies
+apologist
+apologist's
+apologists
+apologize
+apologized
+apologizer
+apologizers
+apologizes
+apologizing
+apologue
+apology
+apology's
+apolune
+apomict
+apomixis
+apomorphine
+aponeurosis
+aponeurotic
+apopemptic
+apophasis
+apophthegm
+apophyge
+apophyllite
+apophysis
+apoplectic
+apoplectically
+apoplexy
+apopolectic
+aport
+aposematic
+aposematically
+aposiopesis
+apospory
+apostasy
+apostate
+apostates
+apostatization
+apostatize
+apostatized
+apostatizes
+apostatizing
+apostil
+apostle
+apostle's
+apostles
+apostleship
+apostolate
+apostolic
+apostolicity
+apostrophe
+apostrophes
+apostrophic
+apostrophize
+apostrophized
+apostrophizes
+apostrophizing
+apothecary
+apothecial
+apothecium
+apothegm
+apothegmatic
+apothegmatical
+apothegmatically
+apothem
+apotheoses
+apotheosis
+apotheosize
+apotropaic
+apotropaically
+Appalachia
+Appalachia's
+Appalachian
+Appalachian's
+Appalachians
+appall
+appalled
+appalling
+appallingly
+appalls
+appaloosa
+Appaloosas
+appaloosas
+appanage
+apparatus
+apparatuses
+apparel
+appareled
+appareling
+apparels
+apparency
+apparent
+apparently
+apparentness
+apparition
+apparition's
+apparitional
+apparitions
+apparitor
+appassionato
+appeal
+appealability
+appealable
+appealed
+appealer
+appealers
+appealing
+appealingly
+appeals
+appear
+appearance
+appearances
+appeared
+appearer
+appearers
+appearing
+appears
+appeasable
+appease
+appeased
+appeasement
+appeaser
+appeases
+appeasing
+appel
+appellant
+appellant's
+appellants
+appellate
+appellation
+appellative
+appellatively
+appellee
+append
+appendage
+appendage's
+appendages
+appendant
+appendectomy
+appended
+appender
+appenders
+appendicectomy
+appendices
+appendicitis
+appendicle
+appendicular
+appending
+appendix
+appendix's
+appendixes
+appends
+appenzell
+apperceive
+apperception
+apperceptive
+appertain
+appertained
+appertaining
+appertains
+appestat
+appetence
+appetency
+appetent
+appetite
+appetite's
+appetites
+appetitive
+appetize
+appetized
+appetizement
+appetizement's
+appetizements
+appetizer
+appetizers
+appetizes
+appetizing
+appetizingly
+Appian
+applaud
+applaudable
+applaudably
+applauded
+applauder
+applauding
+applauds
+applause
+apple
+apple's
+Appleby
+Appleby's
+applecart
+applecarts
+applejack
+apples
+applesauce
+applesnits
+Appleton
+appliance
+appliance's
+appliances
+applicability
+applicable
+applicant
+applicant's
+applicants
+applicate
+application
+application's
+applications
+applicative
+applicatively
+applicator
+applicator's
+applicators
+applicatory
+applied
+applier
+appliers
+applies
+applique
+appliques
+apply
+applying
+appoint
+appointe
+appointed
+appointee
+appointee's
+appointees
+appointer
+appointers
+appointing
+appointive
+appointment
+appointment's
+appointments
+appointor
+appointors
+appoints
+appomattox
+Appomattox
+apport
+apportion
+apportioned
+apportioning
+apportionment
+apportionments
+apportions
+appose
+apposed
+apposing
+apposite
+appositely
+appositeness
+apposition
+appositional
+appositionally
+appositive
+appositively
+appraisal
+appraisal's
+appraisals
+appraise
+appraised
+appraisement
+appraiser
+appraisers
+appraises
+appraising
+appraisingly
+appreciable
+appreciably
+appreciate
+appreciated
+appreciates
+appreciating
+appreciation
+appreciations
+appreciative
+appreciatively
+appreciativeness
+appreciator
+appreciatory
+apprehend
+apprehended
+apprehender
+apprehending
+apprehends
+apprehensible
+apprehensibly
+apprehension
+apprehension's
+apprehensions
+apprehensive
+apprehensively
+apprehensiveness
+apprentice
+apprenticed
+apprentices
+apprenticeship
+apprenticeships
+appressed
+apprise
+apprised
+appriser
+apprisers
+apprises
+apprising
+apprisings
+apprize
+apprized
+apprizer
+apprizers
+apprizes
+apprizing
+apprizingly
+apprizings
+approach
+approachability
+approachable
+approached
+approacher
+approachers
+approaches
+approaching
+approbate
+approbation
+approbatory
+appropriable
+appropriate
+appropriated
+appropriately
+appropriateness
+appropriates
+appropriatest
+appropriating
+appropriation
+appropriations
+appropriative
+appropriator
+appropriator's
+appropriators
+approvable
+approvably
+approval
+approval's
+approvals
+approve
+approved
+approver
+approvers
+approves
+approving
+approvingly
+approx
+approximable
+approximal
+approximant
+approximate
+approximated
+approximately
+approximates
+approximating
+approximation
+approximations
+approximative
+approximatively
+approximator
+approximators
+appulse
+appurtenance
+appurtenances
+appurtenant
+Apr
+apractic
+apraxia
+apraxic
+apricot
+apricot's
+apricots
+April
+April's
+Aprils
+apriorism
+apriority
+apron
+apron's
+aprons
+apropos
+APS
+apse
+apses
+apsidal
+apsides
+apsis
+apt
+apteral
+apterous
+apterygial
+apteryx
+aptitude
+aptitudes
+aptitudinal
+aptitudinally
+aptly
+aptness
+apuleius
+apulia
+apure
+apurimac
+Apus
+apyrase
+apyretic
+aqaba
+aqua
+aquacade
+aquaculture
+aquafortis
+aqualung
+aqualunger
+aquamarine
+aquanaut
+aquaplane
+aquaplaner
+aquarelle
+aquarellist
+aquaria
+aquarist
+aquarium
+Aquarius
+aquas
+aquashow
+aquatic
+aquatically
+aquatics
+aquatint
+aquatinter
+aquatintist
+aquavit
+aqueduct
+aqueduct's
+aqueducts
+aqueous
+aqueously
+aquicultural
+aquiculture
+aquidneck
+aquifer
+aquiferous
+aquifers
+Aquila
+Aquila's
+aquilegia
+aquileia
+aquiline
+aquilinity
+Aquinas
+aquire
+aquit
+aquitaine
+aquittal
+aquiver
+AR
+ara
+Arab
+Arab's
+arabesque
+Arabia
+Arabia's
+Arabian
+Arabian's
+Arabianize
+Arabianizes
+Arabians
+Arabic
+Arabic's
+arabica
+Arabicize
+Arabicizes
+arability
+arabinose
+Arabist
+arabization
+arabize
+arabized
+arabizes
+arabizing
+arable
+Arabs
+Araby
+Arachne
+Arachne's
+arachnid
+arachnid's
+arachnids
+arachnoid
+arad
+Arafat
+arafura
+aragats
+aragon
+aragonite
+araguaia
+Araiza
+arak
+arakan
+araks
+araldite
+araliaceous
+aram
+Aramaic
+aran
+araneid
+arany
+Arapaho
+arapaima
+ararat
+araroba
+aras
+araucania
+Araucanian
+Araucaria
+Arawakan
+araxes
+arbalest
+Arbela
+arbil
+arbiter
+arbiter's
+arbiters
+arbitrable
+arbitrage
+arbitrager
+arbitrageur
+arbitral
+arbitrament
+arbitrarily
+arbitrariness
+arbitrary
+arbitrate
+arbitrated
+arbitrates
+arbitrating
+arbitration
+arbitrational
+arbitrative
+arbitrator
+arbitrator's
+arbitrators
+arbitress
+arbor
+arbor's
+arboraceous
+arboreal
+arboreally
+arbored
+arboreous
+arbores
+arborescence
+arborescent
+arborescently
+arboretum
+arboriculture
+arboriculturist
+arborist
+arborist's
+arborists
+arborization
+arborize
+arborized
+arborizes
+arborizing
+arbors
+arborvitae
+arbovirus
+arbritrary
+arbroath
+arbuthnot
+arbutus
+arc
+arcade
+arcade's
+arcaded
+arcades
+Arcadia
+Arcadian
+Arcadic
+arcading
+arcana
+arcane
+arcanum
+arcature
+arccos
+arccosine
+arced
+arch
+archae
+archaean
+archaeological
+archaeologically
+archaeologist
+archaeologist's
+archaeologists
+archaeology
+archaeomagnetism
+Archaeopteryx
+Archaeornis
+archaeozoic
+archaic
+archaically
+archaicness
+archaism
+archaist
+archaistic
+archaize
+archaized
+archaizer
+archaizers
+archaizes
+archaizing
+archangel
+archangel's
+archangelic
+archangels
+archbishop
+archbishopric
+archdeacon
+archdeaconate
+archdeaconry
+archdiocesan
+archdiocese
+archdioceses
+archducal
+archduchess
+archduchy
+archduke
+archdukedom
+Archean
+arched
+archegonial
+archegonium
+archenemy
+archenteron
+archer
+archerfish
+archers
+archery
+arches
+archespore
+archetypal
+archetypally
+archetype
+archetypes
+archetypical
+archetypically
+archfiend
+archfool
+Archibald
+archicarp
+archidiaconal
+archidiaconate
+Archie
+Archie's
+archiepiscopal
+archiepiscopate
+archil
+Archilochian
+archilochus
+archimage
+archimandrite
+Archimedes
+archine
+arching
+archipelagic
+archipelago
+archipelagoes
+archipenko
+archiphoneme
+archiplasm
+architect
+architect's
+architectonic
+architectonically
+architectonics
+architects
+architectural
+architecturally
+architecture
+architecture's
+architectures
+architrave
+archival
+archive
+archived
+archiver
+archivers
+archives
+archiving
+archivist
+archivists
+archivolt
+archly
+archness
+archon
+archoplasm
+archpriest
+archway
+arcing
+arclength
+arclike
+arco
+ARCO
+arcograph
+arcs
+arcsin
+arcsine
+arctan
+arctangent
+arctic
+Arctic
+arctically
+arcticize
+arcticizes
+Arctogaea
+Arcturus
+arcuate
+arcuately
+arcuation
+arcus
+ardeb
+Arden
+Arden's
+ardency
+ardennes
+ardent
+ardently
+ardor
+ardor's
+ardors
+arduous
+arduously
+arduousness
+are
+area
+area's
+areal
+areally
+areas
+areaway
+areawide
+Areca
+areg
+aren't
+arena
+arena's
+arenaceous
+arenas
+arenicolous
+arenite
+areography
+areola
+areolar
+areolate
+areolation
+areole
+Areopagus
+Arequipa
+Ares
+ares
+Arethusa
+aretino
+arezzo
+argal
+argali
+argand
+argent
+argenteuil
+argentic
+argentiferous
+Argentina
+Argentina's
+argentine
+Argentinian
+argentite
+argentous
+argentum
+arger
+Argerich
+argil
+argillaceous
+argilliferous
+argillite
+arginine
+Argive
+Argo
+Argo's
+argol
+argolis
+argon
+argonaut
+argonauts
+Argonne
+argonon
+Argos
+argos
+argosy
+argot
+argovie
+arguable
+arguably
+argue
+argued
+arguer
+arguers
+argues
+argufier
+argufy
+arguing
+argument
+argument's
+argumentation
+argumentative
+argumentatively
+arguments
+argumentum
+Argus
+argyle
+argyll
+Argyrol
+arhat
+aria
+Ariadne
+Arian
+Arianism
+Arianism's
+arianist
+Arianist
+Arianist's
+arianists
+Arianists
+arica
+arid
+aridity
+aridness
+Ariel
+Aries
+arietta
+aright
+aril
+arillode
+arimathea
+ariminum
+ariose
+arioso
+ariosto
+arise
+arisen
+ariser
+arises
+arising
+arisings
+arista
+aristaeus
+aristarchus
+Aristides
+Aristippus
+aristocracy
+aristocrat
+aristocrat's
+aristocratic
+aristocratically
+aristocrats
+aristophanes
+Aristotelean
+Aristotelian
+Aristotelian's
+Aristotle
+Aristotle's
+arithmetic
+arithmetical
+arithmetically
+arithmetician
+arithmetics
+arithmetization
+arithmetization's
+arithmetizations
+arithmetize
+arithmetized
+arithmetizes
+Arius
+Arizona
+Arizona's
+arjuna
+ark
+Arkansan
+Arkansas
+Arkansas's
+Arkhangelsk
+Arkhipova
+arkose
+arkwright
+Arlberg
+Arlen
+Arlene
+arles
+Arlington
+arlon
+arm
+arm's
+armada
+armadillo
+armadillos
+Armageddon
+Armageddon's
+armagh
+armagnac
+armament
+armament's
+armamentarium
+armaments
+Armata
+armature
+armatures
+armband
+armchair
+armchair's
+armchairs
+Armco
+armed
+Armenia
+Armenian
+Armenian's
+armentieres
+armer
+armers
+armes
+armet
+armful
+armfuls
+armhole
+armies
+armiger
+armillaria
+armillary
+arming
+Arminian
+arminius
+armipotent
+armistice
+armless
+armlet
+armlike
+armload
+armoire
+Armonk
+armor
+armor's
+armored
+armorer
+armorer's
+armorers
+armorial
+armorially
+armorica
+armoried
+armories
+armoring
+armorist
+armorist's
+armorists
+armorless
+armors
+armory
+armory's
+Armour
+Armour's
+armpit
+armpit's
+armpits
+armrest
+arms
+armsful
+Armstrong
+Armstrong's
+armure
+army
+army's
+arne
+arnhem
+arnica
+arnim
+arno
+Arnold
+Arnold's
+aroid
+aroint
+aroma
+aromas
+aromatic
+aromatically
+aromaticity
+aromaticness
+aromatization
+aromatize
+aromatized
+aromatizes
+aromatizing
+arose
+around
+arousal
+arouse
+aroused
+arouses
+arousing
+arp
+ARPA
+Arpanet
+arpanet
+arpeggio
+arpeggio's
+arpeggios
+arpent
+arquebus
+arrack
+Arragon
+arraign
+arraigned
+arraigning
+arraignment
+arraignment's
+arraignments
+arraigns
+arran
+arrange
+arrangeable
+arranged
+arrangement
+arrangement's
+arrangements
+arranger
+arrangers
+arranges
+arranging
+arrant
+arrantly
+arras
+Arrau
+array
+arrayed
+arrayer
+arraying
+arrays
+arrear
+arrearage
+arrears
+arrest
+arrestable
+arrestant
+arrested
+arrestee
+arrestee's
+arrestees
+arrester
+arresters
+arresting
+arrestingly
+arrestment
+arrestor
+arrestor's
+arrestors
+arrests
+arretium
+Arrhenius
+arrhythmia
+arrhythmic
+arrhythmical
+arrhythmically
+arris
+arrises
+arrival
+arrival's
+arrivals
+arrive
+arrived
+arriver
+arrives
+arriving
+arrivisme
+arriviste
+arroba
+arrogance
+arrogant
+arrogantly
+arrogate
+arrogated
+arrogates
+arrogating
+arrogation
+arrondissement
+arrow
+arrowed
+arrowhead
+arrowhead's
+arrowheads
+arrowing
+arrowroot
+arrows
+arrowwood
+arrowworm
+arrowy
+Arroyo
+arroyo
+arroyos
+arru
+arse
+arsenal
+arsenal's
+arsenals
+arsenate
+arsenic
+arsenical
+arsenicize
+arsenicizes
+arsenide
+arsenious
+arsenite
+arsenopyrite
+arsine
+arsines
+arsis
+arson
+arsonist
+arsonous
+arsphenamine
+art
+art's
+artaud
+artaxerxes
+arte
+artefact
+artefacts
+Artemia
+Artemis
+artemisia
+arterial
+arterialization
+arterialization's
+arterializations
+arterialize
+arterialized
+arterializes
+arterializing
+arterially
+arteries
+arteriogram
+arteriogram's
+arteriograms
+arteriographic
+arteriography
+arteriolar
+arteriole
+arteriole's
+arterioles
+arteriolosclerosis
+arteriosclerosis
+arteriovenous
+arteritis
+artery
+artery's
+artesian
+artful
+artfully
+artfulness
+arthralgia
+arthritic
+arthritically
+arthritis
+arthrogram
+arthrogram's
+arthrograms
+arthromere
+arthropathy
+arthropod
+arthropod's
+arthropods
+arthrosis
+arthrospore
+arthrosporic
+Arthur
+Arthurian
+artic
+artichoke
+artichoke's
+artichokes
+article
+article's
+articled
+articles
+articling
+articulable
+articular
+articulate
+articulated
+articulately
+articulateness
+articulates
+articulating
+articulation
+articulations
+articulative
+articulator
+articulators
+articulatory
+Artie
+Artie's
+artier
+artifact
+artifact's
+artifacts
+artifical
+artifically
+artifice
+artificer
+artifices
+artificial
+artificialities
+artificiality
+artificialize
+artificializes
+artificially
+artificialness
+artilleries
+artillerist
+artillery
+artilleryman
+artily
+artiness
+artiodactyl
+artisan
+artisan's
+artisans
+artist
+artist's
+artiste
+artistic
+artistical
+artistically
+artistry
+artists
+artless
+artlessly
+artmobile
+artois
+arts
+Arturo
+Arturo's
+artwork
+arty
+Aruba
+arum
+arunachal
+arundel
+arundinaceous
+aruspex
+aruwimi
+arvo
+Aryan
+Aryan's
+Aryanization
+Aryanize
+Aryanized
+Aryanizes
+Aryanizing
+Aryans
+aryl
+arytenoid
+as
+asafetida
+asantehene
+asap
+ASAP
+asarabacca
+Asarum
+asben
+asbestos
+asbestosis
+asbestus
+Ascanius
+ascariasis
+ascarid
+ascend
+ascendable
+ascendance
+ascendancy
+ascendant
+ascendantly
+ascended
+ascendence
+ascendency
+ascendent
+ascender
+ascenders
+ascendible
+ascending
+ascends
+ascension
+ascensional
+ascensions
+Ascensiontide
+ascensive
+ascent
+ascertain
+ascertainable
+ascertained
+ascertaining
+ascertainment
+ascertains
+ascesis
+ascetic
+ascetic's
+ascetical
+ascetically
+asceticism
+ascetics
+asch
+Aschaffenburg
+Ascham
+asci
+ascidian
+ascidium
+ASCII
+ascites
+ascitic
+asclepiadaceous
+Asclepiadean
+Asclepius
+ascocarp
+ascogonium
+ascoli
+ascomycete
+ascomycetes
+ascorbate
+ascorbic
+ascospore
+ascosporic
+ascosporous
+ascot
+ascribable
+ascribe
+ascribed
+ascribes
+ascribing
+ascription
+ascriptive
+ascus
+asdic
+aseity
+asepalous
+asepsis
+aseptic
+aseptically
+asepticize
+asepticizes
+asexual
+asexually
+asgard
+ash
+ashame
+ashamed
+ashamedly
+Ashanti
+ashcan
+ashcans
+ashcroft
+ashe
+ashen
+asher
+ashes
+ashet
+Asheville
+Ashford
+ashier
+Ashkenazi
+Ashkenazy
+ashkey
+Ashkhabad
+Ashland
+ashlar
+ashlared
+ashlaring
+ashlars
+ashless
+Ashley
+ashman
+ashmen
+Ashmolean
+Ashmore
+ashore
+ashplant
+ashram
+Ashton
+ashtoreth
+ashtray
+ashtray's
+ashtrays
+Ashur
+ashurbanipal
+ashy
+Asia
+Asia's
+Asian
+Asian's
+Asians
+Asiatic
+Asiatic's
+Asiaticization
+Asiaticization's
+Asiaticizations
+Asiaticize
+Asiaticizes
+Asiatics
+aside
+asides
+Asilomar
+Asilomar's
+Asimov
+asinine
+asininely
+asininity
+asir
+ask
+askance
+askant
+askari
+asked
+asker
+askers
+askesis
+askew
+askewness
+asking
+askja
+asks
+aslant
+asleep
+aslef
+aslope
+asmara
+asmodeus
+aso
+asocial
+asoka
+asp
+asparagine
+asparagus
+aspartate
+aspartic
+aspartokinase
+Aspasia
+aspect
+aspect's
+aspects
+aspectual
+aspen
+aspencade
+aspencades
+asper
+asperges
+aspergillosis
+aspergillus
+asperity
+asperse
+aspersed
+aspersing
+aspersion
+aspersion's
+aspersions
+asphalt
+asphalted
+asphaltic
+asphaltite
+asphaltum
+aspheric
+aspherical
+asphodel
+asphyxia
+asphyxiant
+asphyxiants
+asphyxiate
+asphyxiation
+asphyxiator
+aspiate
+aspic
+aspidistra
+aspinwall
+aspirant
+aspirant's
+aspirants
+aspirate
+aspirated
+aspirates
+aspirating
+aspiration
+aspiration's
+aspirations
+aspirator
+aspirators
+aspire
+aspired
+aspirer
+aspires
+aspirin
+aspiring
+aspirins
+asplenium
+asquint
+asquith
+ass
+ass's
+assad
+Assad
+assagai
+assai
+assail
+assailable
+assailant
+assailant's
+assailants
+assailed
+assailing
+assails
+Assam
+Assamese
+assassin
+assassin's
+assassinate
+assassinated
+assassinates
+assassinating
+assassination
+assassinations
+assassinator
+assassins
+assault
+assaulted
+assaulter
+assaulting
+assaultive
+assaultively
+assaultiveness
+assaults
+assay
+assayed
+assayer
+assayers
+assaying
+assegai
+assemblage
+assemblage's
+assemblages
+assemblagist
+assemble
+assembled
+assembler
+assemblers
+assembles
+assemblies
+assembling
+assembly
+assembly's
+assemblyman
+assemblywoman
+assen
+assent
+assentation
+assented
+assenter
+assentient
+assenting
+assentor
+assents
+assert
+asserted
+asserter
+asserters
+asserting
+assertion
+assertion's
+assertional
+assertions
+assertive
+assertively
+assertiveness
+asserts
+asses
+assess
+assessable
+assessed
+assesses
+assessing
+assessment
+assessment's
+assessments
+assessor
+assessor's
+assessors
+asset
+asset's
+assets
+asseverate
+asseveration
+asseverative
+asshole
+asshole's
+assholes
+asshur
+assibilate
+assiduity
+assiduous
+assiduously
+assiduousness
+assign
+assignability
+assignable
+assignat
+assignation
+assignational
+assignations
+assigned
+assignee
+assignee's
+assignees
+assigner
+assigners
+assigning
+assignment
+assignment's
+assignments
+assignor
+assigns
+assimilability
+assimilable
+assimilate
+assimilated
+assimilates
+assimilating
+assimilation
+assimilationism
+assimilationist
+assimilations
+assimilative
+assimilator
+assimilatory
+assiniboine
+Assisi
+assist
+assistance
+assistances
+assistant
+assistant's
+assistants
+assistantship
+assistantships
+assisted
+assistents
+assister
+assisting
+assists
+assiut
+assize
+assizer
+assizers
+assizes
+assn
+associable
+associate
+associated
+associates
+associateship
+associating
+association
+association's
+associational
+associationism
+associations
+associative
+associatively
+associativities
+associativity
+associator
+associator's
+associators
+assoil
+assoilment
+assonance
+assonant
+assort
+assortative
+assorted
+assorter
+assorting
+assortment
+assortment's
+assortments
+assorts
+assuage
+assuaged
+assuagement
+assuages
+assuaging
+assuan
+assuasive
+assumability
+assumable
+assumably
+assume
+assumed
+assumer
+assumes
+assuming
+assumpsit
+assumption
+assumption's
+assumptions
+assumptive
+assurance
+assurance's
+assurances
+assurbanipal
+assure
+assured
+assuredly
+assuredness
+assurer
+assurers
+assures
+assurgent
+assuring
+assuringly
+assuror
+Assyria
+Assyrian
+Assyrian's
+Assyrianize
+Assyrianizes
+Assyriology
+Assyriology's
+astable
+astaire
+Astaire
+astaires
+Astaires
+astarboard
+Astarte
+astatic
+astatically
+astaticism
+astatine
+aster
+aster's
+asteria
+asteriated
+asterisk
+asterisk's
+asteriskless
+asterisks
+asterism
+asterisms
+astern
+asternal
+asteroid
+asteroid's
+asteroidal
+asteroids
+asters
+asthenia
+asthenic
+asthenosphere
+asthma
+asthmatic
+asthmatically
+asti
+astigmat
+astigmatic
+astigmatically
+astigmatism
+astigmatizer
+astigmatizer's
+astigmatizers
+Astilbe
+astir
+ASTM
+astolat
+astomatous
+Aston
+Aston's
+astonied
+astonish
+astonished
+astonishes
+astonishing
+astonishingly
+astonishment
+Astor
+Astoria
+astound
+astounded
+astounding
+astoundingly
+astounds
+astrachan
+astraddle
+astragal
+astragalus
+astrakhan
+astral
+astrally
+astraphobia
+astray
+astrict
+astride
+astringency
+astringent
+astringently
+astrobiological
+astrobiologist
+astrobiology
+astrobotany
+astrocompass
+astrocyte
+astrocytic
+astrocytoma
+astrodome
+astrodynamics
+astrogeology
+astroid
+astrol
+astrolabe
+astrologer
+astrologer's
+astrologers
+astrological
+astrologically
+astrology
+astrometry
+astron
+astronaut
+astronaut's
+astronautic
+astronautical
+astronautically
+astronautics
+astronauts
+astronavigation
+astronomer
+astronomer's
+astronomers
+astronomic
+astronomical
+astronomically
+astronomy
+astrophotography
+astrophysical
+astrophysicist
+astrophysicist's
+astrophysicists
+astrophysics
+astrosphere
+asturias
+astute
+astutely
+astuteness
+astyanax
+Asuncion
+asunder
+asur
+aswan
+aswarm
+aswirl
+aswoon
+asyllabic
+asylum
+asylums
+asymmetric
+asymmetrical
+asymmetrically
+asymmetries
+asymmetry
+asymptomatic
+asymptomatically
+asymptote
+asymptote's
+asymptotes
+asymptotic
+asymptotical
+asymptotically
+asymptoticly
+asynapsis
+async
+asynchronism
+asynchronize
+asynchronized
+asynchronizes
+asynchronizing
+asynchronous
+asynchronously
+asynchrony
+asyndetic
+asyndetically
+asyndeton
+asyut
+at
+atacama
+atactic
+ataghan
+atahualpa
+ataman
+ataractic
+ataraxic
+Atari
+atari
+atavism
+atavist
+atavistic
+atavistically
+ataxia
+ataxic
+atbara
+Atchison
+Atchison's
+ate
+atelectasis
+atelier
+atemporal
+Aten
+Athabascan
+athabaska
+athamas
+Athanasian
+athanasius
+atheism
+atheist
+atheist's
+atheistic
+atheistical
+atheistically
+atheists
+athelstan
+athematic
+Athena
+Athena's
+athenaeum
+atheneum
+Athenian
+Athenian's
+Athenians
+Athens
+athermanous
+atheroma
+atherosclerosis
+Atherton
+athirst
+athlete
+athlete's
+athletes
+athletic
+athletically
+athleticism
+athletics
+athodyd
+athos
+athwart
+athwartship
+athwartships
+atilt
+atinate
+atingle
+Atkins
+Atkinson
+Atlanta
+Atlantean
+atlantes
+Atlantic
+Atlantic's
+Atlantica
+Atlantis
+Atlantov
+atlas
+atli
+ATM's
+atman
+atment
+atmolysis
+atmometer
+atmometer's
+atmometers
+atmosphere
+atmosphere's
+atmosphered
+atmospheres
+atmospheric
+atmospherically
+atmospherics
+atmospherium
+atoll
+atoll's
+atolls
+atom
+atom's
+atomic
+atomically
+atomicity
+atomics
+atomism
+atomist
+atomistic
+atomistically
+atomistics
+atomizability
+atomizable
+atomization
+atomization's
+atomizations
+atomize
+atomized
+atomizer
+atomizers
+atomizes
+atomizing
+atoms
+atomy
+atonal
+atonalism
+atonalist
+atonalistic
+atonality
+atonally
+atone
+atoned
+atonement
+atones
+atonic
+atonicity
+atoning
+atony
+atop
+atopic
+atopy
+atrabilious
+atremble
+atresia
+Atreus
+atrial
+atrioventricular
+atrip
+atrium
+atriums
+atrocious
+atrociously
+atrociousness
+atrocities
+atrocity
+atrocity's
+atrophic
+atrophied
+atrophies
+atrophy
+atrophying
+atropine
+Atropos
+attaboy
+attach
+attachable
+attache
+attached
+attacher
+attachers
+attaches
+attaching
+attachment
+attachment's
+attachments
+attack
+attackable
+attacked
+attacker
+attacker's
+attackers
+attacking
+attackman
+attacks
+attain
+attainability
+attainable
+attainableness
+attainably
+attainder
+attained
+attainer
+attainers
+attaining
+attainment
+attainment's
+attainments
+attains
+attaint
+attar
+attedance
+attemper
+attempt
+attemptable
+attempted
+attempter
+attempters
+attempting
+attempts
+Attenborough
+attend
+attendance
+attendance's
+attendances
+attendant
+attendant's
+attendants
+attended
+attendee
+attendee's
+attendees
+attender
+attenders
+attending
+attends
+attention
+attention's
+attentional
+attentionality
+attentions
+attentive
+attentively
+attentiveness
+attenuant
+attenuate
+attenuated
+attenuates
+attenuating
+attenuation
+attenuator
+attenuator's
+attenuators
+attercliffe
+attest
+attestation
+attested
+attester
+attesting
+attests
+attic
+attic's
+Attica
+atticism
+atticize
+atticizes
+attics
+Attila
+attire
+attired
+attires
+attiring
+attis
+attitude
+attitude's
+attitudes
+attitudinal
+attitudinally
+attitudinization
+attitudinize
+attitudinized
+attitudinizes
+attitudinizing
+Attlee
+attlee
+attorn
+attorney
+attorney's
+attorneys
+attorneyship
+attornment
+attract
+attractable
+attractant
+attracted
+attracting
+attraction
+attraction's
+attractions
+attractive
+attractively
+attractiveness
+attractivity
+attractor
+attractor's
+attractors
+attracts
+attributable
+attribute
+attributed
+attributer
+attributes
+attributing
+attribution
+attributional
+attributions
+attributive
+attributively
+attrited
+attrition
+attritional
+attu
+attune
+attuned
+attunement
+attunes
+attuning
+atune
+Atwater
+Atwater's
+atween
+atwitter
+Atwood
+Atwood's
+atypic
+atypical
+atypicality
+atypically
+aubade
+aube
+Auberge
+Auberge's
+Aubergine
+Aubervilliers
+Aubrey
+Aubrey's
+Aubrietia
+auburn
+Aubusson
+Auckland
+Auckland's
+auction
+auctioned
+auctioneer
+auctioneer's
+auctioneers
+auctioning
+auctorial
+aud
+audacious
+audaciously
+audaciousness
+audacity
+aude
+auden
+audibility
+audible
+audibly
+audience
+audience's
+audiences
+audient
+audile
+auding
+audio
+audiofrequencies
+audiofrequency
+audiogenic
+audiogram
+audiogram's
+audiograms
+audiological
+audiologist
+audiologist's
+audiologists
+audiology
+audiometer
+audiometer's
+audiometers
+audiometric
+audiometry
+audiophile
+audiotape
+audiotypist
+audiovisual
+audiovisuals
+audiphone
+audit
+auditable
+audited
+auditing
+audition
+audition's
+auditioned
+auditioning
+auditions
+auditive
+auditor
+auditor's
+auditorium
+auditoriums
+auditors
+auditory
+audits
+audivi
+Audrey
+Audrey's
+Audubon
+Audubon's
+auer
+Auerbach
+Auerbach's
+Aug
+Augean
+augend
+Auger
+auger
+auger's
+augers
+aught
+augite
+augitic
+augment
+augmentable
+augmentation
+augmentations
+augmentative
+augmented
+augmenter
+augmenting
+augmentor
+augments
+Augsburg
+augur
+augurs
+augury
+august
+Augusta
+Augusta's
+Augustan
+Augustine
+Augustinian
+augustly
+augustness
+Augusts
+Augustus
+auk
+auklet
+auld
+aulic
+aulis
+aunt
+aunt's
+aunthood
+auntie
+auntlike
+auntly
+aunts
+aura
+aura's
+aural
+aurally
+aurangzeb
+aurar
+auras
+aureate
+aurelian
+Aurelius
+aureola
+aureole
+aureomycin
+aureus
+auric
+auricle
+auricula
+auricular
+auriculate
+auriferous
+Auriga
+Aurignacian
+auriol
+aurist
+aurochs
+aurora
+aurorae
+auroral
+aurorean
+aurous
+aurum
+Auschwitz
+auscultate
+auscultated
+auscultates
+auscultating
+auscultation
+auscultations
+auscultatory
+ausforming
+auslander
+ausonius
+auspicate
+auspice
+auspices
+auspicious
+auspiciously
+auspiciousness
+Aussie
+austen
+austenite
+austenitic
+Auster
+austere
+austerely
+austereness
+austerity
+Austerlitz
+Austin
+Austin's
+austral
+Australasia
+Australia
+Australia's
+Australian
+Australian's
+Australiana
+Australianism
+Australianize
+Australianizes
+Australians
+Australis
+australite
+australites
+Australoid
+australopithecine
+Australorp
+Austrasia
+Austria
+Austria's
+Austrian
+Austrian's
+Austrianize
+Austrianizes
+Austronesia
+Austronesian
+autacoid
+autarchy
+autarky
+autecious
+autecology
+auteur
+authentic
+authentically
+authenticate
+authenticated
+authenticates
+authenticating
+authentication
+authentications
+authenticator
+authenticators
+authenticity
+author
+author's
+authored
+authoress
+authorial
+authoring
+authoritarian
+authoritarianism
+authoritative
+authoritatively
+authoritativeness
+authorities
+authority
+authority's
+authorization
+authorization's
+authorizations
+authorize
+authorized
+authorizer
+authorizers
+authorizes
+authorizing
+authors
+authorship
+autism
+autistic
+auto
+auto's
+autoantibody
+autobahn
+autobiographer
+autobiographic
+autobiographical
+autobiographically
+autobiographies
+autobiography
+autobiography's
+autobus
+autocade
+autocatalysis
+autocatalytic
+autocephalous
+autochanger
+autochthon
+autochthonous
+autoclave
+autoclaved
+autocode
+autocoder
+autocollimator
+autocorrelate
+autocorrelated
+autocorrelates
+autocorrelating
+autocorrelation
+autocorrelations
+autocracies
+autocracy
+autocrat
+autocrat's
+autocratic
+autocratical
+autocratically
+autocrats
+autocross
+autocue
+autocueing
+autocycle
+autodial
+autodialer
+autodidact
+autodidactic
+autodyne
+autoecious
+autoeciously
+autoecism
+autoerotic
+autoerotically
+autoeroticism
+autoerotism
+autofluorescence
+autogamous
+autogamy
+autogenesis
+autogenetic
+autogenetically
+autogenic
+autogenous
+autogenously
+autogiro
+autograft
+autograph
+autographed
+autographic
+autographically
+autographing
+autographs
+autography
+autogyro
+Autoharp
+autohypnosis
+autohypnotic
+autoicous
+autoimmune
+autoimmunity
+autoimmunization
+autoinfection
+autoinoculation
+autointoxication
+autoionization
+autokinetic
+autoload
+autoloaded
+autoloader
+autoloading
+autoloads
+autologous
+autolycus
+autolysate
+autolyse
+autolysin
+autolysis
+autolytic
+automaker
+automanipulation
+automanipulative
+automat
+automata
+automatable
+automate
+automated
+automates
+automatic
+automatically
+automaticity
+automatics
+automating
+automation
+automatism
+automatist
+automatization
+automatization's
+automatizations
+automatize
+automatizes
+automaton
+automatons
+automobil
+automobile
+automobile's
+automobiles
+automobilist
+automorphic
+automorphism
+automotive
+autonavigator
+autonavigator's
+autonavigators
+autonomic
+autonomically
+autonomist
+autonomous
+autonomously
+autonomy
+autoparagraph
+autophyte
+autophytic
+autophytically
+autopilot
+autopilot's
+autopilots
+autopista
+autoplastic
+autoplastically
+autoplasty
+autopsied
+autopsies
+autopsy
+autoput
+autoradiogram
+autoradiogram's
+autoradiograms
+autoradiograph
+autoradiographic
+autoradiographs
+autoradiography
+autoregressive
+autorepeat
+autorepeating
+autorepeats
+autorotate
+autorotation
+autorotational
+autoroute
+autos
+autosexing
+autosomal
+autosomally
+autosome
+autostability
+autostart
+autostrada
+autosuggest
+autosuggestibility
+autosuggestible
+autosuggestion
+autotable
+autotelic
+autotetraploid
+autotetraploidy
+autotimer
+autotomic
+autotomize
+autotomous
+autotomy
+autotoxaemia
+autotoxin
+autotransformer
+autotransplant
+autotransplantation
+autotroph
+autotrophic
+autotrophically
+autotrophy
+autotype
+autoxidation
+autumn
+autumn's
+autumnal
+autumnally
+autumns
+autunite
+auvergne
+aux
+auxanometer
+auxesis
+auxetic
+auxetically
+auxil
+auxiliaries
+auxiliary
+auxin
+auxinic
+auxinically
+auxochrome
+auxotroph
+auxotrophic
+auxotrophy
+avadavat
+avagadro
+avail
+availabilities
+availability
+available
+availableness
+availably
+availed
+availer
+availers
+availing
+avails
+avalanche
+avalanched
+avalanches
+avalanching
+avaliable
+avalon
+avant
+Avar
+avarice
+avaricious
+avariciously
+avariciousness
+avast
+avatar
+avaunt
+Ave
+avebury
+avec
+aveiro
+avellan
+avellane
+avellaneda
+avenge
+avenged
+avenger
+avenges
+avenging
+avens
+aventail
+aventine
+Aventine
+aventino
+Aventino
+aventurine
+avenue
+avenue's
+avenues
+aver
+average
+averaged
+averagely
+averageness
+averages
+averaging
+averment
+averno
+Avernus
+averred
+averrer
+averring
+Averroism
+avers
+averse
+aversely
+averseness
+aversion
+aversion's
+aversions
+aversive
+avert
+averted
+averting
+averts
+Avery
+Avery's
+avesta
+Avestan
+aveyron
+avian
+avianize
+aviaries
+aviarist
+aviary
+aviate
+aviation
+aviations
+aviator
+aviator's
+aviators
+aviatress
+aviatrix
+avicenna
+aviculture
+aviculturist
+avid
+avidin
+avidity
+avidly
+avidness
+aviemore
+avifauna
+avifaunal
+avifaunally
+avifaunistic
+avigation
+avignon
+Avignon
+avionic
+avionics
+avirulent
+Avis
+avitaminosis
+avitaminotic
+Aviv
+avizandum
+avlona
+avocado
+avocados
+avocate
+avocation
+avocation's
+avocational
+avocationally
+avocations
+avocet
+Avogadro
+avoid
+avoidable
+avoidably
+avoidance
+avoided
+avoider
+avoiders
+avoiding
+avoids
+avoirdupois
+Avon
+avouch
+avouchment
+avow
+avowal
+avowed
+avowedly
+avower
+avows
+avulse
+avulsing
+avulsion
+avuncular
+avunculate
+await
+awaited
+awaiting
+awaits
+awake
+awaked
+awaken
+awakened
+awakener
+awakening
+awakens
+awakes
+awaking
+award
+awardable
+awarded
+awardee
+awarder
+awarders
+awarding
+awards
+aware
+awareness
+awash
+away
+awayness
+awe
+aweary
+aweather
+awed
+aweigh
+aweless
+awesome
+awesomely
+awesomeness
+awestricken
+awestruck
+awful
+awfully
+awfulness
+awheel
+awhile
+awhiles
+awhirl
+awing
+awkward
+awkwardly
+awkwardness
+awl
+awl's
+awless
+awls
+awlwort
+awn
+awning
+awning's
+awninged
+awnings
+awnless
+awoke
+awoken
+awry
+ax
+axal
+axe
+axed
+axel
+axenic
+axenically
+axer
+axers
+axes
+axial
+axiality
+axially
+axil
+axile
+axilla
+axillar
+axillary
+axing
+axiological
+axiologically
+axiology
+axiom
+axiom's
+axiomatic
+axiomatically
+axiomatics
+axiomatization
+axiomatization's
+axiomatizations
+axiomatize
+axiomatized
+axiomatizes
+axiomatizing
+axioms
+axion
+axion's
+axions
+axis
+axisymmetric
+axisymmetrical
+axisymmetrically
+axisymmetry
+axle
+axle's
+axles
+axletree
+axman
+Axminster
+axolotl
+axolotl's
+axolotls
+axon
+axon's
+axons
+axseed
+axum
+ayacucho
+ayah
+ayahuasca
+aycliffe
+aydin
+aye
+ayer
+ayers
+ayes
+ayesha
+ayin
+Aylesbury
+Aymara
+ayr
+Ayrshire
+ayub
+ayurveda
+ayutthaya
+AZ
+azalea
+azalea's
+azaleas
+azan
+azathioprine
+azazel
+azbine
+azeotropic
+Azerbaijan
+Azerbaijan's
+Azerbaijani
+azide
+azido
+azikiwe
+Azilian
+azimuth
+azimuth's
+azimuthal
+azimuthally
+azimuths
+azine
+aznavour
+azo
+azobenzene
+azoic
+azole
+azonal
+Azores
+azote
+azotemia
+azoth
+azotic
+azotization
+azotize
+azotized
+azotizes
+azotizing
+Azotobacter
+Azov
+Azrael
+Aztec
+Aztecan
+azure
+azurite
+azusa
+baa
+Baal
+Baalbek
+baas
+Baaskap
+Bab
+baba
+babar
+babassu
+babbage
+babbitt
+babbitted
+babbitting
+babbitts
+babble
+babbled
+babblement
+babbler
+babbles
+babbling
+Babcock
+babe
+babe's
+Babel
+Babel's
+Babelize
+Babelizes
+babes
+babeuf
+Babi
+babiche
+babied
+babies
+babirusa
+Babism
+baboon
+baboonish
+babu
+babul
+babur
+babushka
+baby
+baby's
+babyhood
+babying
+babyish
+Babylon
+babylonia
+Babylonian
+Babylonians
+Babylonize
+Babylonizes
+babysat
+babysit
+babysits
+babysitter
+babysitters
+babysitting
+baccalaureate
+baccarat
+baccate
+Bacchae
+bacchanal
+bacchanalia
+bacchanalian
+bacchant
+bacchante
+bacchantes
+bacchantic
+bacchic
+bacchius
+Bacchus
+bacciferous
+bacciform
+baccivorous
+baccy
+Bach
+Bach's
+Bacharach
+bachelor
+bachelor's
+bachelorhood
+bachelorize
+bachelorizes
+bachelors
+baci
+bacillar
+bacillary
+bacilli
+bacillus
+bacitracin
+back
+backache
+backache's
+backaches
+backarrow
+backbench
+backbencher
+backbenchers
+backbite
+backbiter
+backblocks
+backboard
+backbone
+backbone's
+backbones
+backbreaker
+backbreaking
+backchaining
+backchat
+backcloth
+backcomb
+backcountry
+backcourt
+backcourtman
+backcross
+backdate
+backdated
+backdates
+backdating
+backdrop
+backdrop's
+backdrops
+backed
+backend
+backends
+backer
+backers
+backfield
+backfill
+backfilled
+backfilling
+backfills
+backfire
+backfired
+backfires
+backfiring
+backgammon
+backgammon's
+background
+background's
+backgrounds
+backhand
+backhanded
+backhandedly
+backhander
+backhaus
+backhoe
+backhouse
+backing
+backlash
+backlasher
+backless
+backlog
+backlog's
+backlogs
+backmost
+backorder
+backpack
+backpack's
+backpacker
+backpackers
+backpacks
+backpedal
+backplane
+backplane's
+backplanes
+backplate
+backplates
+backrest
+backs
+backsaw
+backscatter
+backscattered
+backscattering
+backscatters
+backscratcher
+backseat
+backset
+backsheesh
+backside
+backslap
+backslapper
+backslash
+backslashed
+backslashes
+backslashing
+backslide
+backslider
+backspace
+backspaced
+backspaces
+backspacing
+backspin
+backstabber
+backstabbing
+backstage
+backstairs
+backstay
+backstitch
+backstitched
+backstitches
+backstitching
+backstop
+backstreet
+backstretch
+backstroke
+backswept
+backswing
+backsword
+backtrack
+backtracked
+backtracker
+backtrackers
+backtracking
+backtracks
+backup
+backups
+backus
+backward
+backwardation
+backwardly
+backwardness
+backwards
+backwash
+backwater
+backwater's
+backwaters
+backwood
+backwoods
+backwoodsman
+backyard
+backyard's
+backyards
+baclava
+bacolod
+bacon
+baconer
+baconize
+baconizes
+Bacquier
+bacteraemia
+bacteria
+bacterial
+bacterially
+bactericidal
+bactericidally
+bactericide
+bacterin
+bacteriological
+bacteriology
+bacteriolysis
+bacteriophage
+bacteriostasis
+bacterium
+bacterize
+bacteroid
+bactria
+Bactrian
+baculiform
+baculum
+bad
+badajoz
+badalona
+badderlocks
+baddie
+bade
+baden
+Baden
+Baden's
+badge
+badged
+badger
+badger's
+badgered
+badgering
+badgers
+badges
+badging
+badinage
+badland
+badlands
+badly
+badman
+badmen
+badminton
+badness
+badoglio
+bads
+baeda
+Baedeker
+bael
+baeyer
+baez
+Baffin
+baffle
+baffled
+bafflement
+baffler
+bafflers
+baffles
+baffling
+bafflingly
+bag
+bag's
+Baganda
+bagasse
+bagatelle
+bagatelle's
+bagatelles
+Bagdad
+bagehot
+bagel
+bagel's
+bagels
+bagful
+baggage
+baggageman
+baggagemen
+bagged
+bagger
+bagger's
+baggers
+baggier
+baggies
+baggily
+bagginess
+bagging
+baggy
+bagh
+Baghdad
+baghlan
+bagie
+bagley
+bagman
+bagnio
+bagpipe
+bagpipe's
+bagpiper
+bagpipes
+Bagrodia
+Bagrodia's
+Bagrodias
+bags
+baguette
+baguio
+bagwash
+bagwig
+bagworm
+bah
+bahadur
+Bahai
+Bahaism
+Bahama
+Bahamas
+bahasa
+bahia
+Bahrain
+Bahrein
+Bahrein's
+baht
+bahuvrihi
+baikal
+bail
+bailable
+baile
+bailee
+baileefe
+bailer
+Bailey
+Baileys
+bailie
+bailiff
+bailiff's
+bailiffs
+bailiffship
+bailing
+bailiwick
+bailly
+bailment
+bailor
+bailsman
+baines
+bainite
+Bairam
+Baird
+Baird's
+bairn
+bairnsfather
+bait
+baited
+baiter
+baiting
+baits
+baize
+Baja
+baja
+bajan
+bake
+bakeapple
+baked
+bakehouse
+Bakelite
+Baker
+baker
+bakeries
+bakers
+Bakersfield
+bakery
+bakery's
+bakes
+bakeshop
+bakewell
+Bakhtiari
+baking
+bakings
+baklava
+bakra
+baksheesh
+bakst
+Baku
+bakunin
+Bala
+Balaam
+balaclava
+Balakirev
+Balaklava
+balalaika
+balalaika's
+balalaikas
+balance
+balanced
+balancedness
+balancer
+balancers
+balances
+balanchine
+balancing
+balas
+balata
+Balaton
+balbo
+Balboa
+balbriggan
+balconied
+balconies
+balcony
+balcony's
+bald
+balder
+balderdash
+baldhead
+baldheaded
+balding
+baldish
+baldly
+baldmoney
+baldness
+baldpate
+baldric
+Baldwin
+baldy
+bale
+Balearic
+baled
+baleen
+balefire
+baleful
+balefully
+balefulness
+balenciaga
+baler
+balers
+bales
+Balfour
+Bali
+balibuntal
+balikpapan
+Balinese
+baling
+baliol
+balk
+Balkan
+Balkan's
+balkanization
+Balkanization
+Balkanization's
+Balkanizations
+balkanize
+Balkanize
+balkanized
+Balkanizes
+balkanizing
+Balkans
+balked
+balker
+balkh
+balkhash
+balkier
+balkiness
+balking
+Balkis
+balkline
+balks
+balky
+ball
+ballad
+ballad's
+ballade
+balladeer
+balladic
+balladist
+balladize
+balladizes
+balladmonger
+balladry
+ballads
+ballance
+ballarat
+Ballard
+Ballards
+ballast
+ballast's
+ballasts
+ballcarrier
+balled
+baller
+ballerina
+ballerina's
+ballerinas
+ballers
+ballet
+ballet's
+balletic
+balletomane
+balletomania
+ballets
+ballfield
+ballfield's
+ballfields
+ballflower
+ballgown
+ballgown's
+balling
+balliol
+ballista
+ballistic
+ballistically
+ballistics
+ballocks
+ballonet
+balloon
+ballooned
+ballooner
+ballooners
+ballooning
+balloonist
+balloons
+ballot
+ballot's
+balloted
+balloter
+balloting
+ballots
+ballottement
+ballplayer
+ballplayer's
+ballplayers
+ballroom
+ballroom's
+ballrooms
+balls
+ballyhoo
+ballyhooey
+balm
+balm's
+Balmacaan
+balmain
+balmier
+balmily
+balminess
+Balmoral
+balms
+balmung
+balmy
+balneal
+balneology
+baloney
+balpa
+balsa
+balsam
+balsamic
+balsamiferous
+balsaminaceous
+balsamize
+balsamizes
+balsams
+Balt
+Balthazar
+Baltic
+Baltic's
+Baltimore
+Baltimorean
+Baltsa
+Baluchi
+Baluchistan
+baluster
+balustrade
+balustrade's
+balustrades
+Balzac
+bam
+Bamako
+Bambara
+Bamberg
+Bamberger
+Bambi
+bambino
+bamboo
+bamboos
+bamboozle
+bamboozled
+bamboozlement
+bamboozles
+bamboozling
+ban
+ban's
+Banach
+banal
+banality
+banally
+banana
+banana's
+bananas
+banaras
+banat
+banausic
+Banbury
+Banbury's
+banc
+Bancroft
+bancroft
+band
+Banda
+bandage
+bandaged
+bandager
+bandages
+bandaging
+bandaid
+bandana
+bandanna
+bandaranaike
+bandbox
+bandeau
+bandeaux
+banded
+bander
+banderilla
+banderillero
+bandgap
+bandh
+bandicoot
+bandied
+bandies
+banding
+bandit
+bandit's
+banditry
+bandits
+banditti
+bandjarmasin
+bandleader
+bandmaster
+bandobust
+bandoleer
+bandoleers
+bandolier
+bandoline
+bandore
+bandpass
+bands
+bandsaw
+bandsman
+bandspreading
+bandstand
+bandstand's
+bandstands
+bandstop
+bandung
+bandwagon
+bandwagon's
+bandwagons
+bandwidth
+bandwidths
+bandy
+bandying
+bane
+baneberry
+baneful
+banefully
+Banff
+bang
+bangalore
+banged
+banger
+banging
+bangish
+bangka
+bangkok
+Bangladesh
+Bangladesh's
+bangle
+bangle's
+bangles
+Bangor
+bangs
+bangtail
+Bangui
+bangweulu
+banian
+baning
+banish
+banished
+banisher
+banishes
+banishing
+banishment
+banister
+banister's
+banisters
+banja
+banjermasin
+banjo
+banjo's
+banjoes
+banjoist
+banjos
+banjul
+bank
+Bank
+banka
+bankable
+bankbook
+bankbooks
+banked
+banker
+bankers
+banket
+banking
+banknote
+banknotes
+bankroll
+bankroller
+bankrupt
+bankruptcies
+bankruptcy
+bankruptcy's
+bankrupted
+bankrupting
+bankrupts
+banks
+bankside
+banned
+banner
+banner's
+banneret
+bannerette
+bannerol
+banners
+banning
+bannister
+bannisters
+bannock
+Bannockburn
+banns
+banquet
+banqueted
+banqueter
+banqueting
+banquetings
+banquets
+banquette
+bans
+bansela
+banshee
+banshee's
+banshees
+banstead
+bant
+bantam
+bantamize
+bantamizes
+bantamweight
+banter
+bantered
+banterer
+bantering
+banteringly
+banters
+banting
+bantling
+Bantoid
+Bantu
+Bantu's
+Bantus
+Bantustan
+Banville
+banyan
+banzai
+baobab
+bap
+baptism
+baptism's
+baptismal
+baptismally
+baptisms
+baptist
+baptist's
+Baptiste
+baptistery
+baptistries
+baptistry
+baptistry's
+baptists
+baptizable
+baptizable's
+baptizables
+baptize
+baptized
+baptizement
+baptizement's
+baptizements
+baptizer
+baptizers
+baptizes
+baptizing
+bar
+bar's
+Barabbas
+baranof
+Barathea
+baraza
+barb
+Barbados
+Barbara
+barbarian
+barbarian's
+barbarianism
+barbarianize
+barbarianizes
+barbarians
+barbaric
+barbarically
+barbarism
+barbarities
+barbarity
+barbarization
+barbarize
+barbarized
+barbarizes
+barbarizing
+Barbarossa
+barbarous
+barbarously
+barbarousness
+Barbary
+barbate
+barbe
+barbecue
+barbecued
+barbecuer
+barbecues
+barbecuing
+barbed
+barbedness
+barbel
+barbell
+barbell's
+barbellate
+barbells
+barber
+Barber
+barbered
+barbering
+barberry
+barbers
+barbershop
+barbet
+barbette
+barbican
+barbicel
+Barbirolli
+barbital
+barbitone
+barbiturate
+barbiturates
+barbituric
+barbizon
+Barbour
+Barbour's
+barbs
+Barbuda
+barbudo
+barbudos
+barbule
+barbusse
+barbwire
+barca
+barcarole
+barce
+Barcelona
+barchart
+barcharts
+Barclay
+Barcoo
+bard
+bard's
+Bardolatry
+bardot
+bards
+bare
+bareback
+barebacked
+bared
+barefaced
+barefacedly
+barefacedness
+barefoot
+barefooted
+barehanded
+bareheaded
+bareheadedness
+bareilly
+bareknuckle
+bareknuckled
+barely
+Barenboim
+bareness
+barents
+barer
+bares
+baresark
+barest
+barflies
+barfly
+barfly's
+bargain
+bargained
+bargainer
+bargaining
+bargains
+barge
+bargeboard
+barged
+bargee
+bargeman
+bargepole
+barges
+barging
+Barhop
+Bari
+bariatrician
+bariatrics
+baric
+barilla
+baring
+barite
+baritonal
+baritone
+baritone's
+baritones
+barium
+bark
+barked
+barkeep
+barkeeper
+barkentine
+barker
+barkers
+barkhan
+barkier
+barking
+barkless
+barks
+barky
+barletta
+barley
+barleycorn
+Barlow
+Barlow's
+barm
+barmaid
+barman
+Barmecide
+barmier
+barmy
+barn
+barn's
+Barnabas
+barnacle
+barnacled
+Barnard
+barnardo
+barnaul
+Barnes
+Barnet
+Barnett
+Barnett's
+Barney
+barnful
+Barnhard
+Barnhard's
+barns
+barnsful
+barnsley
+barnstorm
+barnstormed
+barnstormer
+barnstorming
+barnstorms
+barnum
+Barnum
+barny
+barnyard
+barnyard's
+barnyards
+barocchio
+baroda
+barogram
+barogram's
+barograms
+barograph
+barographic
+baroja
+barometer
+barometer's
+barometers
+barometric
+barometrical
+barometrically
+barometry
+baron
+baron's
+baronage
+baroness
+baronet
+baronetage
+baronetcy
+barong
+baronial
+baronies
+baronize
+baronizes
+barons
+barony
+barony's
+baroque
+baroquely
+baroqueness
+baroscope
+barostat
+Barotse
+barouche
+barozzi
+barque
+barquentine
+barquisimeto
+Barr
+Barr's
+barrack
+barracker
+barracks
+barracoon
+barracouta
+barracuda
+barracuda's
+barracudas
+barrage
+barrage's
+barraged
+barrages
+barraging
+barramunda
+barramundi
+barranca
+barranco
+barranquilla
+barrater
+barrator
+barratry
+barrault
+barre
+barred
+barrel
+barrel's
+barreled
+barrelful
+barrelhouse
+barreling
+barrels
+barrelsful
+barren
+barrenness
+barrens
+barrenwort
+barret
+Barrett
+Barrett's
+barrette
+barrette's
+barrettes
+barricade
+barricade's
+barricades
+barrie
+barrier
+barrier's
+barriers
+barring
+barringer
+Barrington
+Barrington's
+barrio
+barrister
+barristers
+barron
+Barron
+barroom
+barrooms
+barros
+barrow
+barrows
+Barry
+Barry's
+Barrymore
+Barrymores
+bars
+Barsac
+barstool
+barstool's
+barstools
+Barstow
+Bart
+bartend
+bartender
+bartender's
+bartenders
+barter
+bartered
+barterer
+bartering
+barters
+Barth
+Bartholomew
+bartizan
+Bartlett
+Bartok
+Bartoletti
+bartolommeo
+Barton
+Barton's
+barware
+barycentre
+barycentric
+barye
+baryon
+baryon's
+baryonic
+baryons
+barysphere
+baryta
+barytes
+barytone
+bas
+basal
+basally
+basalt
+basaltic
+basaltware
+bascinet
+Bascom
+bascom
+bascule
+base
+baseball
+baseball's
+baseballs
+baseband
+baseboard
+baseboard's
+baseboards
+baseborn
+baseburner
+based
+Basel
+baseless
+baselevel
+baseline
+baseline's
+baselines
+basely
+baseman
+basemen
+basement
+basement's
+basementless
+basements
+baseness
+basenji
+baseplate
+basepoint
+baser
+baserunning
+bases
+basest
+bash
+bashan
+bashaw
+bashed
+basher
+bashes
+bashful
+bashfully
+bashfulness
+bashibazouk
+bashing
+Bashkir
+basic
+basically
+basicity
+basics
+basidial
+basidiomycete
+basidiomycetes
+basidiomycetous
+basidiospore
+basidiosporous
+basidium
+basie
+Basie
+basification
+basifixed
+basify
+basil
+basilan
+basilar
+basilary
+basildon
+basileis
+Basilian
+basilica
+basilican
+basilicata
+basilisk
+basin
+basin's
+basinal
+basined
+basinet
+basing
+Basingstoke
+basins
+basipetal
+basipetally
+basis
+bask
+basked
+Baskerville
+basket
+basket's
+basketball
+basketball's
+basketballs
+basketful
+basketlike
+basketry
+baskets
+basketwork
+basking
+basle
+basler
+baslot
+basophil
+basophile
+basophilia
+basophilic
+basotho
+Basque
+Basque's
+bass
+bass's
+Bassas
+bassein
+bassenthwaite
+basses
+basset
+basseterre
+Bassett
+bassi
+bassinet
+bassinet's
+bassinets
+bassis
+bassist
+basso
+bassoon
+bassoon's
+bassoonist
+bassoonist's
+bassoonists
+bassoons
+basswood
+bast
+bastard
+bastard's
+bastardization
+bastardization's
+bastardizations
+bastardize
+bastardized
+bastardizes
+bastardizing
+bastardly
+bastardry
+bastards
+bastardy
+baste
+basted
+baster
+bastes
+bastia
+Bastianini
+bastile
+bastille
+bastinado
+basting
+bastion
+bastion's
+bastioned
+bastions
+bastnaesite
+bastogne
+Basutoland
+bat
+bat's
+Bataan
+batangas
+batata
+Batavia
+batboy
+batch
+batched
+Batchelder
+Batchelder's
+batcher
+batches
+batching
+bate
+bateau
+bated
+bateleur
+Bateman
+Bateman's
+bater
+bates
+batesian
+batfish
+batfowl
+bath
+bathe
+bathed
+bather
+bathers
+bathes
+bathetic
+bathhouse
+bathhouses
+bathing
+batholith
+bathometer
+bathometer's
+bathometers
+Bathonian
+bathos
+bathrobe
+bathrobe's
+bathrobes
+bathroom
+bathroom's
+bathroomed
+bathrooms
+baths
+bathsheba
+bathtub
+bathtub's
+bathtubful
+bathtubs
+Bathurst
+Bathurst's
+bathwater
+bathyal
+bathymetry
+bathyscaph
+bathysphere
+batik
+bating
+batista
+Batista
+batiste
+batley
+batman
+baton
+baton's
+batons
+Bator
+batrachian
+batrachotoxin
+bats
+batsman
+batt
+battailous
+battalia
+battalion
+battalion's
+battalions
+batteau
+batted
+Battelle
+Battelle's
+battels
+battement
+batten
+Battenburg
+battened
+battening
+battens
+batter
+battered
+batteries
+battering
+batters
+battersea
+battery
+battery's
+battier
+battik
+battiness
+batting
+Battle
+battle
+battled
+battledore
+battlefield
+battlefield's
+battlefields
+battlefront
+battlefront's
+battlefronts
+battleground
+battleground's
+battlegrounds
+battlement
+battlement's
+battlemented
+battlements
+battlepiece
+battler
+battlers
+battles
+battleship
+battleship's
+battleships
+battlewagon
+battling
+battu
+battue
+batty
+batum
+batwing
+batwings
+batwoman
+baubee
+bauble
+bauble's
+baubles
+bauchi
+baucis
+baud
+Baudelaire
+Baudo
+baudouin
+baudrons
+bauds
+Bauer
+Bauhaus
+Bauhinia
+baulk
+baulked
+baulking
+baulks
+baum
+Bausch
+bautzen
+bauxite
+bauxitic
+Bavaria
+Bavarian
+bawbee
+bawcock
+bawd
+bawden
+bawdier
+bawdily
+bawdiness
+bawdry
+bawdy
+bawdyhouse
+bawdyhouses
+bawl
+bawled
+bawler
+bawling
+bawls
+Bax
+Baxter
+Baxter's
+bay
+bayadere
+bayaderka
+bayanihan
+Bayard
+bayberries
+bayberry
+Bayda
+bayed
+bayern
+Bayesian
+bayeux
+baying
+bayle
+Baylor
+bayly
+bayonet
+bayonet's
+bayoneted
+bayoneting
+bayonets
+Bayonne
+bayou
+bayou's
+bayous
+Bayport
+Bayport's
+Bayreuth
+bays
+baysian
+baywood
+bazaar
+bazaar's
+bazaars
+bazon
+bazoo
+bazooka
+bazookas
+BBC
+BCD
+BCPL
+bdellium
+be
+bea
+beach
+beachboy
+beachboys
+beachcomb
+beachcomber
+beachcombers
+beached
+beaches
+beachfront
+beachhead
+beachhead's
+beachheads
+beachie
+beaching
+beachside
+beachwear
+beachy
+beacon
+beacon's
+beaconed
+beaconing
+beacons
+Beaconsfield
+bead
+beaded
+beading
+beadle
+beadle's
+beadledom
+beadles
+beadroll
+beads
+beadsman
+beadwork
+beadworker
+beady
+beagle
+beagle's
+beagles
+beak
+beaked
+beaker
+beakers
+beaks
+beale
+beall
+beam
+beame
+beamed
+beamer
+beamers
+beaming
+beamish
+beamishly
+beams
+beamy
+bean
+beanbag
+beanbag's
+beanbags
+beanball
+beaned
+beaner
+beaners
+beanery
+beanfeast
+beanie
+beaning
+beano
+beanpole
+beans
+bear
+bearability
+bearable
+bearably
+bearbaiting
+bearberry
+beard
+bearded
+beardedness
+beardless
+beardown
+beards
+Beardsley
+Beardsley's
+bearer
+bearers
+bearing
+bearings
+bearish
+bearishly
+bearishness
+bears
+bearskin
+beast
+beastie
+beasties
+beastings
+beastlier
+beastliness
+beastly
+beasts
+beasty
+beat
+beatable
+beatably
+beaten
+beater
+beaters
+beatie
+beatific
+beatifically
+beatification
+beatify
+beating
+beatings
+beatitude
+beatitude's
+beatitudes
+beatles
+beatless
+beatnik
+beatnik's
+beatniks
+Beatrice
+beats
+beatty
+beau
+beau's
+beauchamps
+Beauchamps
+beauclerk
+Beaufort
+beauharnais
+Beaujolais
+beaumarchais
+Beaumont
+Beaune
+Beauregard
+beaus
+beaut
+beauteous
+beauteously
+beauteousness
+beautician
+beauticians
+beauties
+beautification
+beautifications
+beautified
+beautifier
+beautifiers
+beautifies
+beautiful
+beautifully
+beautifulness
+beautify
+beautifying
+beauty
+beauty's
+beauvais
+beauvoir
+beaux
+beaver
+beaver's
+beaverboard
+beaverbrook
+beaverize
+beaverizes
+beavers
+Beaverton
+beaverton
+bebeerine
+bebel
+Bebington
+bebop
+bebopper
+becalm
+becalmed
+becalming
+becalms
+became
+because
+beccafico
+bechance
+bechet
+Bechtel
+Bechuana
+Bechuanaland
+beck
+Beckenham
+becket
+beckett
+Beckford
+Beckman
+Beckman's
+Beckmann
+beckon
+beckoned
+beckoning
+beckons
+Becky
+beclamor
+beclamored
+beclamoring
+beclamors
+becloud
+become
+becomes
+becoming
+becomingly
+becquerel
+becudgeled
+becudgeling
+bed
+bed's
+bedabble
+bedaub
+bedaubing
+bedazzle
+bedazzled
+bedazzlement
+bedazzles
+bedazzling
+bedbug
+bedbug's
+bedbugs
+bedchamber
+bedclothes
+beddable
+bedded
+bedder
+bedder's
+bedders
+bedding
+bede
+bedeck
+bedesman
+bedevil
+bedeviled
+bedeviling
+bedevilment
+bedevils
+bedew
+bedfast
+bedfellow
+Bedford
+Bedfordshire
+bedight
+bedim
+bedimmed
+bedimming
+bedivere
+bedizen
+bedlam
+bedlamite
+bedlamize
+bedlamizes
+Bedlington
+bedmate
+bedmate's
+bedmates
+bedouin
+bedpan
+bedpan's
+bedpans
+bedplate
+bedpost
+bedpost's
+bedposts
+bedraggle
+bedraggled
+bedrail
+bedrid
+bedridden
+bedriveled
+bedriveling
+bedrock
+bedrock's
+bedroll
+bedroom
+bedroom's
+bedroomed
+bedrooms
+beds
+bedside
+bedsit
+bedsits
+bedsitter
+bedsore
+bedspaces
+bedspread
+bedspread's
+bedspreads
+bedspring
+bedspring's
+bedsprings
+bedstead
+bedstead's
+bedsteads
+bedstraw
+bedtime
+beduin
+beduins
+bedwarmer
+bedwetting
+bedworth
+bee
+beeb
+Beebe
+Beebe's
+beebread
+beech
+Beecham
+Beecham's
+beechen
+beecher
+beechnut
+beechwood
+beef
+beefburger
+beefcake
+beefeater
+beefed
+beefer
+beefers
+beefier
+beefing
+beefs
+beefsteak
+beefwood
+beefy
+beehive
+beehive's
+beehives
+beekeeper
+beekeeping
+beelike
+beeline
+Beelzebub
+Beelzebub's
+been
+beens
+beento
+beep
+beeped
+beeper
+beeping
+beeps
+beer
+beerbohm
+beerier
+beers
+beersheba
+beery
+bees
+beestings
+beeswax
+beeswing
+beet
+beet's
+beetfly
+Beethoven
+Beethoven's
+beetle
+beetle's
+beetled
+beetles
+beetling
+beetroot
+beetroots
+beets
+beeves
+beezer
+befall
+befallen
+befalling
+befalls
+befell
+befit
+befit's
+befits
+befitted
+befitting
+befittingly
+befog
+befogged
+befogging
+befogs
+befoh
+befool
+before
+beforehand
+beforehandedness
+beforeimage
+beforeimages
+beforetime
+befoul
+befouled
+befouling
+befouls
+befriend
+befriended
+befriending
+befriends
+befuddle
+befuddled
+befuddlement
+befuddles
+befuddling
+beg
+begad
+began
+begat
+beget
+begets
+begetter
+begetting
+beggar
+beggared
+beggaring
+beggarliness
+beggarly
+beggars
+beggarweed
+beggary
+begged
+begging
+Beghard
+begin
+beginner
+beginner's
+beginners
+beginning
+beginning's
+beginnings
+begins
+begird
+begone
+begonia
+begorra
+begot
+begotten
+begrime
+begrimed
+begriming
+begrudge
+begrudged
+begrudger
+begrudges
+begrudging
+begrudgingly
+begs
+beguile
+beguiled
+beguilement
+beguiler
+beguiles
+beguiling
+beguilingly
+Beguin
+beguine
+begum
+begun
+behalf
+behan
+behave
+behaved
+behaver
+behaves
+behaving
+behavior
+behavior's
+behavioral
+behaviorally
+behaviored
+behaviorism
+behaviorism's
+behaviorisms
+behaviorist
+behaviorist's
+behavioristic
+behavioristically
+behavioristics
+behaviorists
+behaviors
+behead
+beheading
+beheld
+behemoth
+behemothic
+behemoths
+behest
+behind
+behindhand
+behistun
+behold
+beholden
+beholder
+beholders
+beholding
+beholds
+behoof
+behoove
+behoove's
+behooved
+behooves
+behooving
+behooving's
+behoovingly
+behoovings
+Behrens
+beiderbecke
+beige
+beigel
+beigy
+Beijing
+being
+beings
+beira
+Beirut
+bejabers
+bejewel
+bejeweled
+bejeweling
+bel
+Bela
+Bela's
+belabor
+belabor's
+belabored
+belaboring
+belabors
+belah
+belate
+belated
+belatedly
+belatedness
+belaud
+belay
+belayed
+belaying
+belays
+belch
+belched
+belches
+belching
+beldam
+beldame
+beleaguer
+belemnite
+Belfast
+belfort
+belfries
+belfry
+belfry's
+belga
+Belgae
+belge
+Belgian
+Belgian's
+Belgians
+Belgium
+Belgium's
+Belgrade
+Belgravia
+Belial
+belie
+belied
+belief
+belief's
+beliefs
+belier
+belies
+believability
+believable
+believably
+believe
+believed
+believer
+believers
+believes
+believing
+belike
+Belisarius
+Belisha
+belittle
+belittled
+belittlement
+belittler
+belittles
+belittling
+belitung
+belive
+Belize
+bell
+bell's
+Bella
+belladonna
+Bellamy
+Bellamy's
+bellarmine
+Bellatrix
+bellay
+bellbird
+bellboy
+bellboy's
+bellboys
+belle
+belle's
+belleau
+Belleek
+Bellerophon
+belles
+belletrist
+Belleville
+bellflower
+bellhop
+bellhop's
+bellhops
+bellicose
+bellicosely
+bellicoseness
+bellicosity
+bellied
+bellies
+belligerence
+belligerency
+belligerent
+belligerent's
+belligerently
+belligerents
+Bellingham
+Bellingham's
+Bellingshausen
+Bellini
+Bellini's
+bellinzona
+bellman
+bellmen
+Bellmouth
+belloc
+Bellona
+Bellovin
+Bellovin's
+bellow
+bellowed
+bellowing
+bellows
+bellpull
+bells
+bellum
+bellwether
+bellwether's
+bellwethers
+Bellwood
+bellwood
+bellwort
+belly
+belly's
+bellyache
+bellyacher
+bellyaching
+bellyband
+bellybutton
+bellyful
+bellyfull
+bellying
+Belmondo
+Belmont
+belmopan
+Beloit
+belong
+belonged
+belonging
+belongingness
+belongings
+belongs
+Belorussia
+Belostok
+belove
+beloved
+belovo
+below
+belowground
+Belsen
+Belshazzar
+Belshazzar's
+belt
+Beltane
+belted
+belting
+beltless
+Belton
+belton
+belts
+Beltsville
+beltway
+beluga
+beluga's
+Belushi
+Belushi's
+belvedere
+bely
+belying
+BEMA
+bemadden
+bemaddening
+beman
+Bemba
+bemean
+bemedaled
+bemire
+bemoan
+bemoaned
+bemoaning
+bemoans
+bemock
+bemuse
+bemused
+bemusedly
+bemusement
+Ben
+Ben's
+Benackova
+benadryl
+Benares
+benares
+bench
+benched
+bencher
+benches
+benching
+benchmar
+benchmark
+benchmark's
+benchmarking
+benchmarks
+bend
+bendable
+benday
+bended
+bendel
+bender
+benders
+bendigo
+bending
+Bendix
+bends
+bendy
+beneath
+benedicite
+Benedict
+Benedict's
+Benedictine
+Benedictine's
+benediction
+benediction's
+benedictions
+benedictory
+Benedictus
+Benedikt
+benefaction
+benefactor
+benefactor's
+benefactors
+benefactress
+benefic
+benefice
+beneficence
+beneficences
+beneficent
+beneficently
+beneficial
+beneficially
+beneficialness
+beneficiaries
+beneficiary
+beneficiate
+beneficiation
+benefit
+benefited
+benefiter
+benefiters
+benefiting
+benefits
+benefitted
+benefitting
+Benelux
+Benelux's
+benempt
+benevento
+benevolence
+benevolent
+benevolently
+benevolentness
+benfleet
+Bengal
+Bengal's
+Bengali
+Bengali's
+bengaline
+benghazi
+benguela
+Beni
+benight
+benighted
+benightedly
+benightedness
+benign
+benignancy
+benignant
+benignantly
+benignity
+benignly
+Benin
+Benison
+Benjamin
+Benne
+Bennet
+Bennett
+Bennington
+Benny
+benoni
+Benson
+bent
+benthal
+Bentham
+benthic
+benthonic
+benthos
+bentinck
+Bentley
+Bentleys
+Benton
+Benton's
+bentonite
+bentonitic
+bents
+bentwood
+benue
+benumb
+Benz
+benzaldehyde
+Benzedrine
+Benzedrine's
+benzene
+benzidine
+benzine
+benzoate
+benzocaine
+benzofuran
+benzoic
+benzoin
+benzol
+benzophenone
+benzoquinone
+benzoyl
+benzyl
+Beograd
+Beowulf
+bepaint
+beplaster
+bequeath
+bequeathal
+bequeathed
+bequeathes
+bequeathing
+bequest
+bequest's
+bequests
+berar
+berate
+berated
+berates
+berating
+Berber
+berbera
+berberidaceous
+berberine
+Berberis
+berbice
+Berbie
+berceuse
+berceuses
+Berchtesgaden
+Berdichev
+Berdyayev
+Berea
+Berea's
+bereave
+bereaved
+bereavement
+bereavements
+bereaves
+bereaving
+bereft
+Berenices
+Berenson
+Beresford
+Beresford's
+beret
+beret's
+berets
+Berezina
+Berezniki
+Berg
+berg
+Bergama
+Bergamo
+bergamot
+Berganza
+bergdama
+Bergen
+bergen
+Bergen's
+Berger
+berger
+bergerac
+bergius
+Bergland
+Bergland's
+Berglund
+Berglund's
+Bergman
+Bergman's
+Bergonzi
+bergs
+Bergson
+Bergsonism
+Bergsten
+Bergsten's
+Bergstrom
+Bergstrom's
+beria
+beribbon
+beribboned
+beriberi
+bering
+Beringer
+beringer
+berio
+beriosova
+berk
+Berkeleian
+Berkeleianism
+Berkeley
+Berkeley's
+berkelium
+Berkowitz
+berks
+Berkshire
+Berkshires
+berley
+berlichingen
+Berlin
+Berlin's
+Berliner
+Berliners
+berlinguer
+Berlinize
+Berlinizes
+Berlioz
+Berlitz
+berm
+Berman
+Berman's
+bermejo
+bermondsey
+Bermuda
+Bermuda's
+Bern
+bernadette
+Bernadine
+bernadotte
+Bernard
+bernardine
+Bernardine
+Bernardino
+Bernardino's
+Bernardo
+Bernardo's
+berne
+Bernese
+Bernet
+Bernet's
+Bernhard
+bernhardt
+Bernice
+bernicle
+Bernie
+Berniece
+bernina
+Bernini
+Bernoulli
+Bernstein
+Berra
+berretta
+berried
+berries
+berry
+berry's
+berrying
+berrylike
+bersagliere
+berseem
+berserk
+berserker
+Bert
+berteros
+berth
+Bertha
+berthed
+berthing
+berthings
+berths
+Bertie
+bertillon
+berto
+bertolucci
+Bertram
+Bertram's
+Bertrand
+Berwick
+Berwick's
+beryl
+beryllium
+berzelius
+bes
+beseech
+beseeches
+beseeching
+beseechingly
+beseem
+beset
+besetment
+besets
+besetting
+beshrew
+beside
+besides
+besiege
+besieged
+besieger
+besiegers
+besieging
+besmear
+besmirch
+besmirched
+besmirches
+besmirching
+besom
+besot
+besotted
+besotter
+besotting
+besought
+bespangle
+bespatter
+bespeak
+bespeaks
+bespectacled
+bespoke
+bespoken
+bespread
+besprent
+besprinkle
+Bess
+Bessarabia
+Bessel
+Bessel's
+Bessemer
+Bessemerize
+Bessemerizes
+Bessie
+best
+bestead
+besteaded
+besteading
+bested
+bester
+bestial
+bestiality
+bestialize
+bestialized
+bestializes
+bestializing
+bestially
+bestiary
+besting
+bestir
+bestirring
+bestow
+bestowal
+bestowed
+bestrew
+bestride
+bestrides
+bestriding
+bestrode
+bests
+bestseller
+bestseller's
+bestsellerdom
+bestsellers
+bestselling
+bestubble
+bestubbled
+bet
+bet's
+beta
+betaine
+betake
+betas
+betatron
+betel
+Betelgeuse
+beth
+Bethany
+bethe
+bethel
+Bethesda
+bethink
+Bethlehem
+Bethmann
+bethought
+bethral
+bethralled
+bethralling
+bethrals
+bethsaida
+betide
+betimes
+betjeman
+betoken
+betokened
+betokening
+betony
+betook
+betray
+betrayal
+betrayed
+betrayer
+betraying
+betrays
+betroth
+betrothal
+betrothals
+betrothed
+bets
+Betsey
+Betsey's
+Betsy
+Betta
+Bette
+Bette's
+betted
+better
+bettered
+bettering
+betterment
+betterments
+betters
+betti
+Betties
+betting
+bettor
+Betty
+betulaceous
+between
+betweenbrain
+betweenness
+betweentimes
+betweenwhiles
+betwixt
+Beulah
+beuthen
+bevan
+bevanite
+bevanites
+bevatron
+bevel
+beveled
+beveler
+bevelers
+beveling
+bevelings
+bevels
+beverage
+beverage's
+beverages
+Beveridge
+Beverly
+Beverly's
+bevies
+bevin
+bevvy
+bevy
+bewail
+bewailed
+bewailing
+bewails
+beware
+bewhisker
+bewhiskered
+Bewick
+bewigged
+bewilder
+bewildered
+bewilderedly
+bewilderedness
+bewildering
+bewilderingly
+bewilderment
+bewilders
+bewitch
+bewitched
+bewitchery
+bewitches
+bewitching
+bewitchingly
+bewitchment
+bewray
+bexley
+bey
+beyond
+beyrouth
+bezel
+bezique
+bezoar
+bezonian
+bezwada
+bhagalpur
+Bhagavadgita
+bhai
+bhakti
+bhang
+bharal
+bharat
+bharatiya
+bhatpara
+bhavan
+bhavnagar
+bhindi
+bhishti
+bhopal
+bhubaneswar
+Bhutan
+bhutto
+biafra
+biak
+Bialystok
+biannual
+biannulate
+biarritz
+bias
+biased
+biases
+biasing
+biasness
+biassed
+biassin
+biassing
+biathlon
+biauriculate
+biaxial
+biaxially
+bib
+bib's
+bibb
+bibbed
+bibber
+bibbery
+bibbing
+bibcock
+bibelot
+bibelots
+bible
+bible's
+bibles
+bibless
+biblical
+biblically
+biblicism
+biblicist
+bibliographer
+bibliographic
+bibliographical
+bibliographically
+bibliographics
+bibliographies
+bibliography
+bibliography's
+bibliolater
+bibliolatrous
+bibliolatry
+bibliology
+bibliomancy
+bibliomania
+bibliomaniac
+bibliomaniacal
+bibliopegic
+bibliopegically
+bibliopegist
+bibliopegistic
+bibliopegy
+bibliophile
+bibliophiles
+bibliophilic
+bibliophilism
+bibliophilist
+bibliophily
+bibliopole
+bibliopolic
+bibliopolist
+bibliotheca
+bibliothecal
+bibliotic
+bibliotics
+bibliotist
+bibs
+bibulous
+bibulously
+bibulousness
+bicameral
+bicameralism
+bicapsular
+bicarb
+bicarbonate
+Bice
+bicentenary
+bicentennial
+bicentric
+bicentricity
+bicep
+bicephalous
+biceps
+bicester
+bichloride
+bichromate
+bichromated
+bichromatize
+bichromatizes
+bichrome
+bicipital
+bicker
+bickered
+bickerer
+bickering
+bickers
+bicollateral
+bicolor
+bicolored
+biconcave
+biconcavity
+biconditional
+biconnected
+biconvex
+biconvexity
+bicorn
+bicorne
+bicornuate
+bicultural
+biculturalism
+bicuspid
+bicuspidate
+bicycle
+bicycled
+bicycler
+bicyclers
+bicycles
+bicyclic
+bicycling
+bicyclist
+bid
+bid's
+bida
+bidarka
+biddability
+biddable
+biddably
+bidden
+bidder
+bidder's
+bidders
+biddies
+bidding
+biddle
+Biddle
+biddy
+bide
+bided
+bidentate
+bider
+bides
+bidet
+bidiagonal
+bidialectal
+bidialectalism
+biding
+bidirectional
+bidistill
+bidistilled
+bidistilling
+bidistills
+bids
+Biedermeier
+biel
+bield
+Bielefeld
+bienne
+biennial
+biennially
+biennium
+Bienville
+bier
+bierce
+Bierce
+bierkeller
+biestings
+bietnar
+bifacial
+bifarious
+biff
+biffin
+bifid
+bifidity
+bifidly
+bifilar
+bifilarly
+biflagellate
+bifocal
+bifocals
+bifoliate
+bifoliolate
+biforate
+biform
+bifrost
+bifurcate
+bifurcated
+bifurcately
+bifurcates
+bifurcating
+bifurcation
+bifurcations
+big
+bigamist
+bigamous
+bigamously
+bigamy
+bigarreau
+Bigelow
+bigeminal
+bigeminy
+bigener
+bigeneric
+bigeye
+bigger
+biggest
+biggety
+biggin
+bigging
+biggish
+biggity
+Biggs
+bighead
+bigheaded
+bighearted
+bigheartedly
+bigheartedness
+bighorn
+bighorn's
+bighorns
+bight
+bight's
+bights
+bigly
+bigmouth
+bigmouthed
+bigness
+bignonia
+bignoniaceous
+bigot
+bigot's
+bigoted
+bigotedly
+bigoting
+bigotry
+bigots
+biguanide
+bigwig
+bihar
+Bihari
+biharmonic
+Biisk
+bijapur
+bijection
+bijection's
+bijections
+bijective
+bijectively
+bijou
+bijouterie
+bijugate
+bikaner
+bike
+bike's
+biked
+biker
+biker's
+bikers
+bikes
+bikeway
+bikie
+bikila
+biking
+bikini
+bikini's
+bikinied
+bikinis
+bilabial
+bilabiate
+bilander
+bilateral
+bilateralism
+bilaterally
+bilateralness
+bilayer
+bilayers
+Bilbao
+bilbao
+bilberry
+bilbo
+Bilbo
+Bilbo's
+bilboa
+bilboes
+bile
+bilection
+bilestone
+bilge
+bilge's
+bilged
+bilges
+bilgier
+bilging
+bilgy
+Bilharzia
+bilharziasis
+biliary
+bilinear
+bilingual
+bilingualism
+bilingually
+bilinguals
+bilious
+biliously
+biliousness
+bilirubin
+biliverdin
+bilk
+bilked
+bilker
+bilking
+bilks
+bill
+billable
+billabong
+billboard
+billboard's
+billboards
+billed
+biller
+billers
+billet
+billeted
+billeting
+billets
+billfish
+billfold
+billfold's
+billfolds
+billhead
+billhook
+billiard
+billiards
+Billie
+billies
+Billiken
+Billikens
+billing
+Billingham
+billings
+Billingsgate
+billion
+billionaire
+billions
+billionth
+Billiton
+billon
+billow
+billowed
+billowing
+billows
+billowy
+billposter
+billposting
+bills
+billy
+billycock
+billyo
+bilobal
+bilobate
+bilobed
+bilocular
+biloculate
+Biltmore
+Biltmore's
+biltong
+Bim
+bimah
+bimanous
+bimanual
+bimanually
+bimbo
+bimester
+bimestrial
+bimetal
+bimetalist
+bimetalistic
+bimetallic
+bimetallism
+bimillenary
+bimillenial
+Bimini
+bimodal
+bimodality
+bimolecular
+bimolecularly
+bimonthlies
+bimonthly
+bimorph
+bimorphemic
+bin
+bin's
+binal
+binaries
+binary
+binate
+binational
+binaural
+binaurally
+bind
+binded
+binder
+binders
+bindery
+binding
+bindingly
+bindingness
+bindings
+bindle
+binds
+bindweed
+bine
+bing
+binge
+bingen
+binges
+bingey
+Bingham
+Binghamton
+binghi
+bingle
+bingo
+bingos
+binh
+Bini
+binnacle
+binned
+binning
+binocular
+binocularity
+binocularly
+binoculars
+binodal
+binomial
+binomially
+binominal
+bins
+bint
+binturong
+binuclear
+binucleate
+binucleated
+bio
+bioactive
+bioassay
+bioastronautical
+bioastronautics
+biocatalyst
+biocatalytic
+biocellate
+biocenology
+biocenosis
+biocenotic
+biochemic
+biochemical
+biochemically
+biochemist
+biochemistry
+biochemists
+Biochimica
+biochip
+biochips
+biocidal
+biocide
+bioclean
+bioclimatic
+bioclimatology
+biocoenosis
+biocoenotic
+biocycle
+biodegradability
+biodegradable
+biodegradation
+biodegrade
+biodynamics
+bioecological
+bioecologist
+bioecology
+bioelectric
+bioelectrical
+bioelectricity
+bioenergetics
+bioengineering
+bioenvironmental
+biofeedback
+bioflavonoid
+biog
+biogen
+biogenesis
+biogenetic
+biogenetically
+biogenic
+biogeochemical
+biogeochemistry
+biogeographic
+biogeographical
+biogeography
+biograph
+biographee
+biographer
+biographer's
+biographers
+biographic
+biographical
+biographically
+biographies
+biographize
+biographizes
+biography
+biography's
+bioherm
+bioinstrumentation
+biologic
+biological
+biologically
+biologicals
+biologism
+biologist
+biologist's
+biologistic
+biologists
+biologize
+biologizes
+biology
+bioluminescence
+bioluminescent
+biolysis
+biomacromolecule
+biomacromolecules
+biomass
+biomaterial
+biome
+biomedical
+biomedicine
+biometric
+biometrical
+biometrically
+biometrics
+Biometrika
+biometry
+biomolecular
+biomolecule
+biomolecules
+bionic
+bionics
+bionomic
+bionomical
+bionomically
+bionomics
+biophysic
+Biophysica
+biophysical
+biophysically
+biophysicist
+biophysicists
+biophysics
+bioplasm
+biopoiesis
+biopolymer
+biopolymers
+biopsies
+biopsy
+biosatellite
+bioscience
+biosciences
+bioscientific
+bioscientist
+bioscope
+bioscopy
+biosis
+biosphere
+biostatics
+biostatistic
+biostatistics
+biostrome
+biosynthesis
+biosynthesized
+biosynthetic
+biosynthetically
+biosystematic
+biosystematist
+biosystematy
+biota
+biotechnological
+biotechnology
+biotelemetric
+biotelemetry
+biotic
+biotin
+biotite
+biotitic
+biotope
+biotransformation
+biotron
+biotype
+biotypic
+biovular
+bipack
+biparental
+biparentally
+biparietal
+biparous
+bipartisan
+bipartisanism
+bipartisanship
+bipartite
+bipartitely
+bipartition
+biped
+bipedal
+bipeds
+bipetalous
+biphenyl
+bipinnate
+bipinnately
+biplane
+biplane's
+biplanes
+bipod
+bipolar
+bipolarity
+bipolarization
+bipolarize
+bipolarizes
+bipropellant
+bipyramidal
+biquadrate
+biquadratic
+biquarterly
+biracial
+biracialism
+biradial
+biramous
+birch
+birchbark
+birchen
+bircher
+birches
+bird
+bird's
+birdbath
+birdbath's
+birdbaths
+birdbrain
+birdbrained
+birdcage
+birdcage's
+birdcages
+birdcall
+birder
+birdhouse
+birdie
+birdieback
+birdied
+birdieing
+birdies
+birdlike
+birdlime
+birdman
+birds
+birdseed
+birdwatch
+birdyback
+birefringence
+birefringent
+bireme
+birendra
+biretta
+Birgit
+birgitta
+biriani
+birk
+Birkenhead
+birkhead
+birkie
+birl
+birler
+Birmingham
+Birminghamize
+Birminghamizes
+biro
+birobidzhan
+biros
+birr
+birse
+birth
+birth's
+birthday
+birthday's
+birthdays
+birthed
+birthmark
+birthplace
+birthplaces
+birthrate
+birthrate's
+birthrates
+birthright
+birthright's
+birthrights
+birthroot
+births
+birthstone
+birthweight
+birthweights
+birthwort
+birtwhistle
+BIS
+bis
+bisayas
+biscay
+biscayne
+Biscayne
+biscuit
+biscuit's
+biscuits
+bise
+bisect
+bisected
+bisecting
+bisection
+bisection's
+bisectional
+bisectionally
+bisections
+bisector
+bisector's
+bisectors
+bisectrix
+bisects
+biserial
+biserrate
+bisexual
+bisexual's
+bisexuality
+bisexually
+bisexuals
+bish
+bishop
+Bishop
+bishop's
+bishopbird
+bishopric
+bishops
+bisitun
+bisk
+biskra
+Bismarck
+Bismark
+Bismark's
+bismuth
+bismuthic
+bismuthinite
+bismuthous
+bison
+bison's
+bisons
+bisque
+bisques
+Bissau
+bissextile
+bist
+bistability
+bistable
+bistate
+bister
+bistered
+bistort
+bistro
+bistroic
+bistros
+bisulcate
+bisulfate
+bisulfide
+bisulfite
+bisulphate
+bisulphide
+bisulphite
+bisutun
+bisyllabic
+bisymmetric
+bit
+bit's
+bitartrate
+bitblt
+bitblts
+bitch
+bitch's
+bitchery
+bitches
+bitchier
+bitchily
+bitchiness
+bitchy
+bite
+biter
+biters
+bites
+bithynia
+biting
+bitingly
+bitmap
+bitmap's
+bitmaps
+BITNET
+bitolj
+bits
+bitser
+bitstock
+bitsy
+bitt
+bitted
+bitten
+bitter
+bitterer
+bitterest
+bitterish
+bitterling
+bitterly
+bittern
+bitterness
+bitternut
+bitterroot
+bitters
+bittersweet
+bittersweetly
+bittersweetness
+bitterweed
+bitterwood
+bitting
+bittock
+bitty
+bitumen
+bituminization
+bituminize
+bituminized
+bituminizes
+bituminizing
+bituminoid
+bituminous
+bitwise
+bivalent
+bivalve
+bivalve's
+bivalved
+bivalves
+bivariate
+bivouac
+bivouacs
+bivvy
+biweekly
+biyearly
+biz
+bizarre
+bizarrely
+bizarreness
+bizerte
+Bizet
+Bizet's
+blab
+blabbed
+blabber
+blabbered
+blabbering
+blabbermouth
+blabbermouths
+blabbing
+blabby
+blabs
+Blachut
+black
+blackamoor
+blackamoors
+blackball
+blackballed
+blackballing
+blackballs
+Blackbeard
+blackberries
+blackberry
+blackberry's
+blackbird
+blackbird's
+blackbirder
+blackbirds
+blackboard
+blackboard's
+blackboards
+blackbodies
+blackbody
+blackbuck
+Blackburn
+blackbutt
+blackcap
+blackcock
+blackcurrant
+blackdamp
+blacked
+blacken
+blackened
+blackener
+blackening
+blackens
+blacker
+blackest
+blackett
+blackface
+Blackfeet
+blackfin
+blackfish
+blackfly
+Blackfoot
+Blackfoot's
+Blackfoots
+blackguard
+blackguard's
+blackguardism
+blackguardly
+blackguards
+blackhander
+blackhead
+blackheart
+blacking
+blackish
+blackjack
+blackjack's
+blackjacks
+blackland
+blackleg
+blacklist
+blacklisted
+blacklister
+blacklisting
+blacklists
+blackly
+blackmail
+blackmailed
+blackmailer
+blackmailers
+blackmailing
+blackmails
+Blackman
+Blackmer
+blackmer
+blackmore
+blackness
+blackout
+blackout's
+blackouts
+blackpoll
+blackpool
+blacks
+blackshirt
+blacksmith
+blacksmith's
+blacksmithing
+blacksmiths
+blacksnake
+Blackstone
+blackstrap
+blacktail
+blackthorn
+blacktop
+blacktop's
+blacktops
+blackwall
+blackwash
+blackwater
+Blackwell
+Blackwells
+blackwood
+bladder
+bladder's
+bladderlike
+bladdernose
+bladdernut
+bladders
+bladderwort
+bladderwrack
+blade
+blade's
+bladed
+blades
+Blagoveshchensk
+blague
+blah
+blain
+Blaine
+Blaine's
+Blair
+Blake
+blakey
+Blakey
+blamable
+blamably
+blame
+blamed
+blameful
+blamefully
+blameless
+blamelessly
+blamelessness
+blamer
+blamers
+blames
+blameworthiness
+blameworthy
+blamey
+blaming
+blanc
+blanch
+Blanchard
+Blanchard's
+Blanche
+blanched
+blancher
+blanches
+blanching
+blancmange
+bland
+blandish
+blandisher
+blandishment
+blandishments
+blandly
+blandness
+blank
+blanked
+blanker
+blankest
+blanket
+blanketed
+blanketer
+blanketers
+blanketflower
+blanketing
+blanketlike
+blankets
+blanking
+blankly
+blankness
+blanks
+blanquette
+blanton
+Blanton
+Blanzat
+blare
+blared
+blares
+blaring
+blarney
+blasco
+blase
+blasingame
+blaspheme
+blasphemed
+blasphemer
+blasphemes
+blasphemies
+blaspheming
+blasphemous
+blasphemously
+blasphemousness
+blasphemy
+blast
+blasted
+blastema
+blastematic
+blastemic
+blaster
+blasters
+blastie
+blasting
+blastment
+blastocoel
+blastocyst
+blastoderm
+blastoff
+blastogenesis
+blastomere
+blastopore
+blasts
+blastula
+blastula's
+blastular
+blastulas
+blastulation
+blat
+blatancy
+blatant
+blatantly
+blatantness
+blate
+blather
+blathered
+blatherer
+blathering
+blatted
+blatter
+blatting
+Blatz
+blaubok
+Blavatsky
+blaydon
+blaze
+blazed
+blazer
+blazers
+blazes
+blazing
+blazingly
+blazon
+blazoned
+blazoner
+blazoning
+blazonry
+bldg
+bleach
+bleachable
+bleached
+bleacher
+bleachers
+bleaches
+bleaching
+bleak
+bleakish
+bleakly
+bleakness
+blear
+blearily
+bleariness
+bleary
+bleat
+bleater
+bleating
+bleats
+bleb
+Blech
+bled
+bleed
+bleeder
+bleeders
+bleeding
+bleedings
+bleeds
+Bleeker
+bleep
+bleeped
+bleeper
+bleeping
+bleeps
+Blegen
+blemish
+blemish's
+blemished
+blemishes
+blemishing
+blench
+blend
+blende
+blended
+blender
+blenders
+blending
+blends
+Blenheim
+blennioid
+blenny
+blent
+blepharitis
+bless
+blessed
+blessedly
+blessedness
+blesses
+blessing
+blessings
+blest
+blet
+blether
+blevins
+blew
+blewits
+Bley
+blida
+bligh
+blight
+blighted
+blighter
+blighty
+blimey
+blimp
+blimp's
+blimpishly
+blimpishness
+blimps
+blind
+blindage
+blinded
+blinder
+blinders
+blindfish
+blindfold
+blindfolded
+blindfolding
+blindfolds
+Blindheim
+blinding
+blindingly
+blindly
+blindness
+blinds
+blindside
+blindsided
+blindsides
+blindsiding
+blindstorey
+blindworm
+Blini
+blink
+blinked
+blinker
+blinkered
+blinkering
+blinkers
+blinking
+blinks
+Blinn
+Blinn's
+blintz
+blintze
+blip
+blip's
+blipping
+blips
+blique
+bliss
+Bliss
+blissful
+blissfully
+blissfulness
+blister
+blistered
+blistering
+blisteringly
+blisters
+blistery
+blithe
+blithely
+blither
+blithesome
+blithesomely
+blithest
+blitz
+blitz's
+blitzes
+blitzkrieg
+blizzard
+blizzard's
+blizzards
+blizzardy
+bloat
+bloated
+bloater
+bloaters
+bloating
+bloats
+blob
+blob's
+blobbing
+blobs
+bloc
+bloc's
+Bloch
+Bloch's
+block
+block's
+blockade
+blockaded
+blockader
+blockades
+blockading
+blockage
+blockage's
+blockages
+blockboard
+blockbuster
+blockbusters
+blockbusting
+blocked
+blocker
+blockers
+blockhead
+blockheads
+blockhouse
+blockhouses
+blockier
+blocking
+blockish
+blockishly
+blocks
+blocky
+blocs
+bloemfontein
+blois
+bloke
+bloke's
+blokes
+Blomberg
+Blomberg's
+Blomquist
+Blomquist's
+Blomstedt
+blond
+blond's
+blonde
+blonde's
+blondes
+blondish
+blonds
+blood
+bloodbath
+bloodbaths
+bloodcurdling
+bloodcurdlingly
+blooded
+bloodfin
+bloodguilt
+bloodguiltiness
+bloodguilty
+bloodhound
+bloodhound's
+bloodhounds
+bloodied
+bloodiest
+bloodily
+bloodiness
+bloodless
+bloodlessly
+bloodlessness
+bloodletting
+bloodline
+bloodline's
+bloodlines
+bloodmobile
+bloodred
+bloodroot
+bloods
+bloodshed
+bloodshot
+bloodsport
+bloodsports
+bloodstain
+bloodstain's
+bloodstained
+bloodstains
+bloodstock
+bloodstone
+bloodstream
+bloodsucker
+bloodsucking
+bloodthirstily
+bloodthirstiness
+bloodthirsty
+bloodworm
+bloodwort
+bloody
+bloodying
+bloom
+bloomed
+bloomer
+bloomers
+bloomery
+Bloomfield
+blooming
+Bloomington
+blooms
+Bloomsbury
+bloomy
+bloop
+blooper
+bloops
+blossom
+blossomed
+blossoms
+blossomy
+blot
+blot's
+blotch
+blotchily
+blotchy
+blots
+blotted
+blotter
+blotting
+blotto
+blotty
+blouse
+blouse's
+blouses
+blousing
+blouson
+blow
+blowback
+blowed
+blower
+blowers
+blowfish
+blowfly
+blowgun
+blowhard
+blowhole
+blowie
+blowing
+blowlamp
+blown
+blowout
+blowpipe
+blows
+blowsy
+blowtorch
+blowtube
+blowup
+blowy
+blowzy
+blub
+blubber
+blubbered
+blubbering
+blubbery
+blucher
+bludge
+bludgeon
+bludgeoned
+bludgeoning
+bludgeons
+blue
+blueback
+bluebeard
+bluebell
+blueberries
+blueberry
+blueberry's
+bluebill
+bluebird
+bluebird's
+bluebirds
+bluebonnet
+bluebonnet's
+bluebonnets
+bluebook
+bluebottle
+bluebush
+bluecoat
+blued
+bluefin
+bluefish
+bluegill
+bluegrass
+blueing
+bluejack
+bluejacket
+bluely
+blueness
+bluenose
+bluepoint
+blueprint
+blueprint's
+blueprinted
+blueprinting
+blueprints
+bluer
+blues
+bluesman
+bluest
+bluestem
+bluestocking
+bluestone
+bluesy
+bluet
+bluethroat
+bluetit
+bluetongue
+blueweed
+bluey
+bluff
+bluffed
+bluffer
+bluffing
+bluffly
+bluffness
+bluffs
+bluing
+bluish
+bluishness
+Blum
+blume
+Blumenthal
+Blumenthal's
+blundell
+blunder
+blunderbuss
+blundered
+blunderer
+blundering
+blunderingly
+blunderings
+blunders
+blunge
+blunger
+blunt
+blunted
+blunter
+bluntest
+blunting
+bluntly
+bluntness
+blunts
+blur
+blur's
+blurb
+blurred
+blurredly
+blurrier
+blurrily
+blurriness
+blurring
+blurringly
+blurry
+blurs
+blurt
+blurted
+blurter
+blurting
+blurts
+blush
+blushed
+blusher
+blushes
+blushful
+blushing
+blushingly
+bluster
+blustered
+blusterer
+blustering
+blusteringly
+blusterous
+blusters
+blustery
+blutwurst
+Blvd
+blyth
+Blythe
+Blythe's
+BMW
+BNF
+boa
+boabdil
+boadicea
+Boanerges
+boar
+board
+boarded
+boarder
+boarders
+boarding
+boardinghouse
+boardinghouse's
+boardinghouses
+boardlike
+boardman
+boardmanship
+boardroom
+boards
+boardsmanship
+boardwalk
+boarfish
+boarhound
+boarish
+Boarsh
+boart
+boas
+boast
+boasted
+boaster
+boasters
+boastful
+boastfully
+boastfulness
+boasting
+boastings
+boasts
+boat
+boatbill
+boated
+boatel
+boatels
+boater
+boaters
+boathook
+boathouse
+boathouse's
+boathouses
+boating
+boatload
+boatload's
+boatloads
+boatman
+boatmanship
+boatmen
+boats
+boatsmanship
+boatswain
+boatswain's
+boatswains
+Boatwright
+boatyard
+boatyard's
+boatyards
+boaz
+bob
+bob's
+bobbed
+bobber
+bobbery
+Bobbie
+bobbies
+bobbin
+bobbin's
+bobbinet
+bobbing
+bobbins
+bobble
+bobbled
+bobbles
+bobbling
+Bobbsey
+bobbsey
+bobby
+bobbysoxer
+bobcat
+bobeche
+bobfloat
+boblet
+bobol
+bobolink
+bobolink's
+bobolinks
+bobotie
+bobowler
+Bobrow
+bobrow
+bobs
+bobsled
+bobsledder
+bobsledding
+bobsleigh
+bobstay
+bobtail
+bobtailed
+bobwhite
+bobwhite's
+bobwhites
+Boca
+Boca's
+bocaccio
+bocage
+boccaccio
+boccherini
+bocci
+boccie
+boccioni
+Boche
+bochum
+bock
+bocklogged
+bockwurst
+bod
+bodacious
+bodaciously
+bode
+boded
+bodega
+bodement
+Bodenheim
+bodenheim
+bodensee
+bodes
+bodge
+bodger
+bodgie
+bodh
+bodhisattva
+bodice
+bodied
+bodies
+bodiless
+bodily
+boding
+bodkin
+Bodleian
+bodmin
+Bodoni
+body
+bodybuild
+bodybuilder
+bodybuilder's
+bodybuilders
+bodybuilding
+bodycheck
+bodyguard
+bodyguard's
+bodyguards
+bodying
+bodysurf
+bodysurfer
+bodyweight
+bodywork
+boehmer
+boehmite
+Boeing
+Boeotia
+Boeotian
+Boer
+boer
+boethius
+boeuf
+boff
+boffin
+boffo
+boffola
+boffos
+bofors
+bog
+bog's
+bogan
+bogarde
+bogart
+Bogart
+Bogartian
+bogartian
+Bogas
+bogbean
+bogey
+bogeyed
+bogeying
+bogeyman
+bogeyman's
+bogeymen
+bogeys
+bogged
+bogging
+boggle
+boggled
+boggles
+boggling
+boggs
+boggy
+bogie
+bogies
+bogle
+bognor
+bogong
+bogor
+Bogota
+bogs
+bogtrotter
+bogus
+bogwood
+bogy
+boh
+bohea
+Boheme
+boheme
+Bohemia
+Bohemian
+Bohemianism
+bohlen
+Bohm
+bohol
+Bohr
+bohunk
+boiardo
+boies
+boil
+Boildieu
+boileau
+boiled
+boiler
+boilermaker
+boilermaker's
+boilermakers
+boilerplate
+boilers
+boiling
+boilover
+boils
+Bois
+Boise
+boisterous
+boisterously
+boisterousness
+boite
+boites
+Boito
+bokassa
+Bokhara
+bokmakierie
+bola
+boland
+bolas
+bolases
+bold
+bolder
+boldest
+boldface
+boldfaced
+boldfaces
+boldfacing
+boldly
+boldness
+bole
+bolection
+bolero
+bolet
+boletus
+boleyn
+bolide
+bolingbroke
+boliou
+bolivar
+Bolivia
+Bolivia's
+boliviano
+boll
+bollard
+bollix
+bollocks
+bollworm
+bolo
+Bologna
+Bologna's
+bolometer
+bolometer's
+bolometers
+bolometric
+bolometrically
+boloney
+bolos
+Bolshevik
+Bolshevik's
+Bolsheviks
+Bolshevism
+Bolshevism's
+Bolshevist
+Bolshevistic
+bolshevize
+Bolshie
+Bolshoi
+Bolson
+bolster
+bolstered
+bolsterer
+bolstering
+bolsters
+bolt
+bolted
+bolter
+bolting
+Bolton
+Boltonia
+boltrope
+bolts
+Boltzmann
+bolus
+bolzano
+boma
+bomb
+bombacaceous
+bombard
+bombarded
+bombardier
+bombardiers
+bombarding
+bombardment
+bombardments
+bombardon
+bombards
+bombast
+bombaster
+bombastic
+bombastically
+Bombay
+Bombay's
+bombazine
+bombe
+bombed
+bomber
+bombers
+bombinate
+bombination
+bombing
+bombings
+bombora
+bombproof
+bombs
+bombshell
+bombsight
+bombus
+bombycid
+bomu
+bon
+bona
+bonaire
+bonanza
+bonanza's
+bonanzas
+Bonaparte
+Bonapartism
+bonaventura
+Bonaventure
+bonbon
+bonce
+bond
+bondable
+bondage
+bonded
+bonder
+bonderize
+bonders
+bondholder
+bonding
+bondmaid
+bondman
+bonds
+bondservant
+bondsman
+bondsmen
+bondstone
+bondwoman
+bone
+boneblack
+boned
+bonefish
+bonehead
+boneheaded
+boneless
+boner
+boners
+bones
+boneset
+bonesetter
+boneshaker
+boney
+boneyard
+bonfiglio
+bonfire
+bonfire's
+bonfires
+bong
+bongo
+bongoes
+bongoist
+Bonham
+bonham
+bonheur
+bonhoeffer
+bonhomie
+bonier
+Boniface
+bonin
+boning
+bonism
+bonito
+bonjour
+bonkers
+Bonn
+bonnard
+bonne
+bonner
+bonnet
+bonneted
+bonnets
+Bonneville
+Bonnie
+bonnier
+bonnily
+bonnor
+bonny
+bonsai
+bonsela
+bonspiel
+bontebok
+Bontempo
+bontempo
+bonus
+bonus's
+bonuses
+bony
+Bonynge
+bonze
+bonzer
+bonzes
+boo
+boob
+boobialla
+boobies
+boobify
+booboo
+boobook
+booby
+boodle
+booger
+boogerman
+boogeyman
+boogie
+boohoo
+book
+bookbind
+bookbinder
+bookbinders
+bookbindery
+bookbinding
+bookcase
+bookcase's
+bookcases
+booked
+bookeeper
+bookend
+bookends
+booker
+bookers
+bookful
+bookie
+bookie's
+bookies
+booking
+bookings
+bookish
+bookishly
+bookishness
+bookkeep
+bookkeeper
+bookkeeper's
+bookkeepers
+bookkeeping
+booklet
+booklet's
+booklets
+booklist
+booklouse
+bookmaker
+bookmakers
+bookmaking
+bookman
+bookmark
+bookmark's
+bookmarker
+bookmarkers
+bookmarks
+bookmobile
+bookmobiles
+bookplate
+bookplates
+books
+bookseller
+bookseller's
+booksellers
+bookselling
+bookshelf
+bookshelf's
+bookshelves
+bookstall
+bookstore
+bookstore's
+bookstores
+bookworm
+bookworm's
+bookworms
+booky
+boole
+boolean
+booleans
+boom
+boomed
+boomer
+boomerang
+boomerang's
+boomerangs
+boomier
+booming
+boomkin
+boomlet
+booms
+boomslang
+boomtown
+boomtowns
+boomy
+boon
+boondocks
+boondoggle
+boondoggler
+boondoggling
+Boone
+boong
+boonies
+Boonton
+boor
+boor's
+boorish
+boorishly
+boorishness
+boors
+boos
+boost
+boosted
+booster
+boosterism
+boosting
+boosts
+boot
+bootblack
+bootblacks
+booted
+bootee
+Bootes
+booth
+boothia
+boothroyd
+booths
+bootie
+booties
+booting
+bootjack
+bootlace
+Bootle
+bootle
+bootleg
+bootlegged
+bootlegger
+bootlegger's
+bootleggers
+bootlegging
+bootlegs
+bootless
+bootlessly
+bootlessness
+bootlick
+bootlicker
+bootloader
+bootprint
+boots
+bootstrap
+bootstrap's
+bootstrapped
+bootstrapping
+bootstraps
+booty
+booze
+boozer
+boozily
+boozing
+boozy
+bop
+bophuthatswana
+bopper
+bopping
+bora
+boracic
+boracite
+borage
+boraginaceous
+borak
+borane
+borate
+borated
+borates
+borax
+borazon
+borborygmus
+Bordeaux
+bordel
+Bordelaise
+bordello
+bordello's
+bordellos
+Borden
+border
+bordereau
+bordered
+borderer
+bordering
+borderings
+borderland
+borderland's
+borderlands
+borderline
+borders
+bordure
+bore
+boreal
+Borealis
+Boreas
+borecole
+bored
+boredom
+boree
+borehole
+boreholes
+borer
+borers
+bores
+boresight
+boresights
+Borg
+borgerhout
+borges
+Borghese
+borgholm
+borgia
+borglum
+boric
+boride
+boring
+boringly
+boringness
+Boris
+borize
+borizes
+borland
+born
+borne
+Borneo
+Borneo's
+borneol
+bornholm
+bornu
+Borodin
+borodino
+boron
+Boronia
+boronic
+borosilicate
+borough
+boroughs
+Borroughs
+borrow
+borrowable
+borrowed
+borrower
+borrowers
+borrowing
+borrowings
+borrows
+bors
+borstal
+bort
+borzoi
+Bosch
+boschbok
+boschvark
+Bose
+bosh
+bosk
+boskop
+Bosky
+Bosnia
+bosom
+bosom's
+bosoms
+bosomy
+boson
+bosonic
+bosphorus
+Bosporus
+bosque
+bosquet
+boss
+bossa
+bossboy
+bossdom
+bossed
+bosses
+bossier
+bossies
+bossiness
+bossism
+bossuet
+bossy
+bostitch
+Bostitch
+Boston
+Boston's
+Bostonian
+Bostonian's
+Bostonians
+bosun
+Boswell
+Boswellize
+Boswellizes
+bosworth
+bot
+botan
+botanic
+botanical
+botanically
+botanist
+botanist's
+botanists
+botanize
+botanized
+botanizes
+botanizing
+botany
+botargo
+botch
+botched
+botcher
+botchers
+botches
+botching
+botchwork
+botchy
+botel
+botfly
+both
+botha
+bother
+botheration
+bothered
+bothering
+bothers
+bothersome
+bothnia
+bothwell
+bothy
+botryoidal
+bots
+Botswana
+Botswana's
+bott
+botticelli
+bottle
+bottlebrush
+bottlecap
+bottlecap's
+bottlecaps
+bottled
+bottleful
+bottleneck
+bottleneck's
+bottlenecks
+bottlenose
+bottler
+bottlers
+bottles
+bottling
+bottom
+bottomed
+bottomer
+bottoming
+bottomland
+bottomless
+bottomlessly
+bottomlessness
+bottommost
+bottomost
+bottomry
+bottoms
+bottrop
+botulin
+botulinal
+botulinum
+botulinus
+botulism
+botvinnik
+Boucher
+boucicault
+boucle
+boudicca
+boudoir
+bouffant
+bouffe
+bougainvillaea
+Bougainville
+bougainvillea
+bough
+bough's
+boughed
+boughs
+bought
+boughten
+Boughton
+bougie
+bouillabaisse
+bouillon
+boulanger
+boulder
+boulder's
+bouldered
+boulders
+bouldery
+boule
+boulevard
+boulevard's
+boulevardier
+boulevardize
+boulevardizes
+boulevards
+bouleversement
+boulez
+Boulez
+boulle
+Boult
+bounce
+bounced
+bouncer
+bouncers
+bounces
+bouncier
+bouncily
+bouncing
+bouncingly
+bouncy
+bound
+boundaries
+boundary
+boundary's
+bounded
+bounden
+bounder
+bounderish
+bounderishly
+bounding
+boundless
+boundlessly
+boundlessness
+bounds
+bounteous
+bounteously
+bounteousness
+bountied
+bounties
+bountiful
+bountifully
+bountifulness
+bounty
+bounty's
+bouquet
+bouquet's
+bouquets
+Bourbaki
+bourbon
+bourbonism
+bourbonize
+bourbonizes
+bourbons
+bourdon
+bourg
+bourgeois
+bourgeoise
+bourgeoisie
+bourgeoisify
+bourgeon
+bourges
+bourgogne
+bourguiba
+bourn
+Bourne
+Bourne's
+Bournemouth
+bourse
+bouse
+bousing
+boustrophedon
+bout
+bout's
+boutique
+boutiques
+bouton
+boutonniere
+bouts
+bouvardier
+Bouvet
+Bouvier
+bouvier
+bouzouki
+bovid
+bovine
+bovinely
+bovines
+bovinity
+bovril
+bovver
+bow
+bowan
+bowden
+Bowditch
+Bowditch's
+bowdlerization
+bowdlerize
+bowdlerized
+bowdlerizer
+bowdlerizes
+bowdlerizing
+Bowdoin
+bowed
+bowel
+bowel's
+boweled
+boweling
+bowelless
+bowels
+bowen
+Bowen
+Bowen's
+bower
+bowerbird
+bowerbird's
+bowerbirds
+bowers
+bowery
+bowes
+Bowes
+bowfin
+bowfront
+bowhead
+bowie
+bowing
+bowknot
+bowl
+bowlder
+bowled
+bowleg
+bowlegged
+bowler
+bowlers
+bowlful
+bowline
+bowline's
+bowlines
+bowling
+bowls
+bowman
+bowmen
+bows
+bowsaw
+bowse
+bowser
+bowshot
+bowsprit
+bowstring
+bowstring's
+bowstrings
+bowwow
+bowyangs
+bowyer
+box
+boxboard
+boxcar
+boxcar's
+boxcars
+boxed
+boxer
+boxers
+boxes
+boxfish
+Boxford
+boxful
+boxhaul
+boxier
+boxiness
+boxing
+boxlike
+boxroom
+boxthorn
+boxwood
+boxy
+boy
+boy's
+boyar
+boyard
+boyars
+Boyce
+boycott
+boycotted
+boycotter
+boycotting
+boycotts
+Boyd
+Boyd's
+boyer
+boyfriend
+boyfriend's
+boyfriends
+boyhood
+boyish
+boyishly
+boyishness
+boyla
+Boyle
+Boyle's
+Boylston
+Boylston's
+boyne
+boyoma
+boys
+boysenberry
+boz
+Bozcaada
+bozen
+bozo
+bozos
+BP
+bpi
+bra
+bra's
+Braata
+brabant
+brabble
+brabbled
+brabbling
+brace
+braced
+bracelet
+bracelet's
+bracelets
+bracer
+braces
+brach
+brachia
+brachial
+brachiate
+brachiopod
+Brachiosaurus
+brachium
+brachycephalic
+brachydactylic
+brachylogy
+brachypterous
+brachyuran
+bracing
+bracken
+bracket
+bracketed
+bracketing
+brackets
+brackish
+brackishness
+bracknell
+bract
+bracteate
+bracteole
+brad
+bradawl
+Bradbury
+bradded
+bradding
+Bradford
+Bradley
+bradman
+Bradshaw
+Brady
+bradycardia
+bradykinin
+brae
+brae's
+braes
+brag
+braga
+Bragg
+braggadocio
+braggart
+bragged
+bragger
+braggest
+bragging
+braggy
+Bragi
+brags
+brahe
+brahma
+Brahman
+Brahmana
+Brahmani
+Brahmanism
+Brahmaputra
+Brahmin
+Brahms
+Brahmsian
+Brahui
+braid
+braided
+braider
+braiding
+braids
+brail
+braille
+Brailler
+Braillers
+braillewriter
+Braillewriters
+braillex
+braillink
+braillo
+brailtel
+brain
+Brainard
+Brainards
+braincase
+brainchild
+brainchild's
+brainchildren
+brained
+brainier
+braininess
+braining
+brainish
+brainless
+brainlessly
+brainlessness
+brainpan
+brainpower
+brains
+brainsick
+brainsickly
+brainstem
+brainstem's
+brainstems
+brainstorm
+brainstorm's
+brainstormer
+brainstorming
+brainstorms
+brainteaser
+brainwash
+brainwashed
+brainwasher
+brainwashes
+brainwashing
+brainy
+braise
+braised
+braiser
+braises
+braising
+brake
+braked
+brakeless
+brakeman
+brakemen
+brakemen's
+brakes
+brakesman
+braking
+brakpan
+braky
+bramante
+bramble
+bramble's
+brambles
+brambling
+brambly
+bramley
+bran
+branch
+branched
+branches
+branchia
+branchial
+branchiate
+branching
+branchings
+branchiopod
+branchless
+branchlet
+Branchville
+branchy
+brancusi
+brand
+branded
+Brandeis
+brandel
+Brandel
+Brandenburg
+brander
+brandied
+brandies
+brandin
+branding
+brandish
+brandishes
+brandishing
+brandling
+brando
+Brandon
+brands
+Brandt
+Brandt's
+brandy
+brandying
+brandywine
+Braniff
+brank
+branks
+branle
+Brannon
+brannon
+brant
+Brantford
+brants
+branum
+braque
+braques
+bras
+brasenose
+brash
+brashly
+brashness
+brashy
+brasier
+brasil
+brasilein
+Brasilia
+brasilin
+brass
+brassard
+brassbound
+brassed
+brasserie
+brasses
+brassica
+brassie
+brassier
+brassiere
+brassily
+brassiness
+Brasstown
+brassy
+brat
+brat's
+bratislava
+brats
+brattice
+brattiness
+brattish
+brattishing
+brattle
+brattled
+brattling
+bratty
+bratwurst
+Braun
+braunite
+braunschweig
+brava
+bravado
+bravais
+brave
+braved
+bravely
+braveness
+braver
+bravery
+braves
+bravest
+braving
+bravissimo
+bravo
+bravoed
+bravoes
+bravoing
+bravos
+bravura
+braw
+braweling
+brawl
+brawle
+brawled
+brawler
+brawlier
+brawling
+brawls
+brawly
+brawn
+brawnier
+brawnily
+brawniness
+brawny
+braxy
+bray
+brayed
+brayer
+braying
+brays
+braze
+brazed
+brazen
+brazened
+brazening
+brazenly
+brazenness
+brazer
+brazes
+brazier
+brazier's
+braziers
+Brazil
+Brazil's
+Brazilian
+Brazilian's
+brazils
+brazing
+brazos
+Brazzaville
+breach
+breached
+breacher
+breachers
+breaches
+breaching
+bread
+breadbasket
+breadbaskets
+breadboard
+breadboard's
+breadboards
+breaded
+breadfruit
+breadfruits
+breading
+breadline
+breadmaking
+breadnut
+breadnuts
+breadroot
+breads
+breadstuff
+breadth
+breadthways
+breadthwise
+breadwinner
+breadwinner's
+breadwinners
+breadwinning
+break
+breakable
+breakables
+breakage
+breakaway
+breakbone
+breakdown
+breakdown's
+breakdowns
+breaker
+breakers
+breakeven
+breakfast
+breakfasted
+breakfaster
+breakfasters
+breakfasting
+breakfasts
+breakfront
+breaking
+breakneck
+breakoff
+breakout
+breakpoint
+breakpoint's
+breakpointed
+breakpointing
+breakpoints
+breaks
+breakthrough
+breakthrough's
+breakthroughes
+breakthroughs
+breakup
+breakups
+breakwater
+breakwater's
+breakwaters
+bream
+breams
+breast
+breastbone
+breasted
+breastfed
+breastfeed
+breastfeeding
+breasting
+breastpin
+breastplate
+breasts
+breaststroke
+breaststroker
+breastwork
+breastwork's
+breastworks
+breath
+breathability
+breathable
+breathalyse
+breathalyzer
+breathe
+breathed
+breather
+breathers
+breathes
+breathier
+breathing
+breathless
+breathlessly
+breathlessness
+breaths
+breathtaking
+breathtakingly
+breathy
+breccia
+breccias
+brecciate
+brecciation
+brecht
+brecon
+Breconshire
+bred
+breda
+brede
+bree
+breech
+breech's
+breechblock
+breechcloth
+breechclout
+breeches
+breeching
+breechloader
+breed
+breeder
+breeding
+breeds
+breeks
+breenger
+breeze
+breeze's
+breezed
+breezeless
+breezes
+breezeway
+breezier
+breezily
+breeziness
+breezing
+breezy
+bregenz
+bregma
+bregmatic
+brekky
+Bremen
+Bremen's
+Bremerhaven
+bremsstrahlung
+Brenda
+Brendan
+Brendan's
+Brendel
+Brennan
+Brennan's
+Brenner
+Brenner's
+Brent
+Brentano
+Brentwood
+Brescia
+Bresenham
+Bresenham's
+Breslau
+Bresson
+Brest
+Brest's
+Bretagne
+brethren
+Breton
+Brett
+Brett's
+Bretton
+Breuer
+Breughel
+breve
+breves
+brevet
+breveted
+breveting
+brevets
+breviaries
+breviary
+brevier
+brevity
+brew
+brewage
+brewed
+brewer
+breweries
+brewers
+brewery
+brewery's
+brewing
+brewis
+brews
+Brewster
+Brewster's
+brey
+brezhnev
+Brian
+briand
+briar
+briar's
+briard
+Briareus
+briarroot
+briars
+bribable
+bribe
+bribed
+briber
+bribers
+bribery
+bribes
+bribing
+bricating
+Brice
+brick
+brickbat
+bricked
+bricker
+bricking
+bricklay
+bricklayer
+bricklayer's
+bricklayers
+bricklaying
+brickle
+brickmason
+brickmasons
+bricks
+bricktop
+brickwork
+brickyard
+bricole
+bridal
+bride
+bride's
+bridegroom
+brides
+bridesmaid
+bridesmaid's
+bridesmaids
+Bridewell
+bridewell
+bridge
+bridgeable
+bridgeboard
+bridged
+Bridgeford
+bridgehead
+bridgehead's
+bridgeheads
+bridgeless
+Bridgeman
+Bridgeport
+bridges
+Bridget
+Bridget's
+Bridgetown
+Bridgewater
+bridgework
+bridgework's
+bridging
+bridie
+bridle
+bridled
+bridles
+bridlewise
+bridling
+bridoon
+Brie
+brie
+brief
+briefcase
+briefcase's
+briefcases
+briefed
+briefer
+briefest
+briefing
+briefing's
+briefings
+briefless
+briefly
+briefness
+briefs
+Brien
+brien
+brier
+brierroot
+briery
+brig
+brig's
+brigade
+brigade's
+brigaded
+brigades
+brigadier
+brigadier's
+brigadiers
+brigading
+brigadoon
+Brigadoon
+brigalow
+brigand
+brigand's
+brigandage
+brigandine
+brigandism
+brigands
+brigantine
+Briggs
+Briggs's
+Brigham
+brighouse
+Bright
+bright
+brighten
+brightened
+brightener
+brighteners
+brightening
+brightens
+brighter
+brightest
+brighting
+brightly
+brightness
+brightnesses
+Brighton
+Brighton's
+brights
+brightside
+brightwork
+Brigid
+brigs
+brill
+brilliance
+brilliancy
+brilliant
+brilliantine
+brilliantly
+brilliantness
+Brillouin
+brim
+brimful
+brimless
+brimmed
+brimmer
+brimming
+brimstone
+brinded
+Brindisi
+brindle
+brindled
+brine
+brinell
+briner
+bring
+bringdown
+bringer
+bringers
+bringing
+brings
+brinier
+brininess
+brining
+brinjal
+brink
+Brinkley
+brinkley
+brinkmanship
+brinksmanship
+brinny
+briny
+brio
+brioche
+briolette
+briony
+briquet
+briquette
+brisance
+brisant
+Brisbane
+Brisbane's
+brisk
+brisker
+brisket
+briskly
+briskness
+brisling
+brist
+bristle
+bristlecone
+bristlecone's
+bristlecones
+bristled
+bristlelike
+bristles
+bristletail
+bristlier
+bristling
+bristly
+bristol
+bristols
+brit
+Britain
+Britain's
+Britannia
+Britannic
+Britannica
+britches
+Briticism
+British
+Britisher
+Britishism
+Britishly
+Briton
+Briton's
+Britons
+Brittany
+Britten
+Britten's
+brittle
+brittled
+brittlely
+brittleness
+brittler
+brittlest
+brittling
+brittonic
+britzka
+brix
+Brixton
+Brno
+broach
+broached
+broacher
+broaches
+broaching
+broad
+broadax
+broadband
+broadbill
+Broadbrim
+broadcast
+broadcasted
+broadcaster
+broadcasters
+broadcasting
+broadcastings
+broadcasts
+broadcloth
+broaden
+broadened
+broadener
+broadeners
+broadening
+broadenings
+broadens
+broader
+broadest
+broadleaf
+broadloom
+broadly
+broadminded
+broadmoor
+broadness
+broads
+broadsheet
+broadside
+broadsword
+broadtail
+Broadway
+broadwife
+broca
+brocade
+brocaded
+brocatelle
+broccoli
+broch
+brochette
+brochure
+brochure's
+brochures
+Brock
+brockage
+brocken
+brocket
+brockle
+brocoli
+broddle
+broderie
+broederbond
+brogan
+Broglie
+Broglie's
+brogue
+broider
+broidery
+broil
+broiled
+broiler
+broilers
+broiling
+broils
+broke
+broken
+brokenhearted
+brokenly
+brokenness
+broker
+brokerage
+brokers
+brolga
+brollies
+brolly
+bromal
+bromate
+bromated
+bromating
+Bromberg
+brome
+bromegrass
+bromeliad
+bromelin
+bromeosin
+Bromfield
+Bromfield's
+bromic
+bromide
+bromide's
+bromides
+bromidic
+brominate
+bromination
+bromine
+bromines
+brominize
+brominizes
+bromism
+Bromley
+Bromley's
+bromo
+bromoform
+bromos
+bromsgrove
+bronc
+bronchi
+bronchia
+bronchial
+bronchialy
+bronchiectasis
+bronchiolar
+bronchiole
+bronchiole's
+bronchioles
+bronchiolitis
+bronchitis
+bronchopneumonia
+bronchoscope
+bronchus
+bronco
+broncobuster
+broncos
+broncs
+brontosaur
+brontosaurus
+Bronx
+bronze
+bronzed
+bronzer
+bronzes
+bronzing
+bronzy
+brooch
+brooch's
+brooches
+brood
+brooder
+broodiness
+brooding
+broodingly
+broods
+broody
+brook
+Brookdale
+Brooke
+brooked
+Brookfield
+Brookhaven
+brookite
+brooklet
+brooklime
+Brookline
+Brookline's
+Brooklyn
+Brookmont
+brooks
+brookside
+brookweed
+broom
+broom's
+broomball
+broomballer
+broomcorn
+broome
+broomed
+broomgrove
+broomhill
+brooming
+broomrape
+brooms
+broomstick
+broomstick's
+broomsticks
+broonzy
+brose
+broth
+brothel
+brothel's
+brothels
+brother
+brother's
+brotherhood
+brotherliness
+brotherly
+brothers
+broths
+brougham
+broughams
+brought
+brouhaha
+broun
+brow
+brow's
+browband
+browbeat
+browbeaten
+browbeating
+browbeats
+brown
+Brown
+Browne
+browned
+Brownell
+browner
+brownest
+Brownian
+brownie
+brownie's
+brownies
+browning
+brownings
+brownish
+brownly
+brownness
+brownnose
+brownnoser
+brownout
+browns
+brownshirt
+brownstone
+brownstones
+browny
+brows
+browsability
+browse
+browsed
+browser
+browsers
+browses
+browsing
+broxodent
+broz
+brubeck
+Bruce
+brucellosis
+Bruch
+brucine
+Bruckner
+Bruckner's
+Bruegel
+Bruegel's
+bruges
+bruin
+bruise
+bruised
+bruiser
+bruisers
+bruises
+bruising
+bruit
+Brule
+brumal
+brumby
+brume
+Brumidi
+Brumidi's
+Brummagem
+brummell
+brummie
+brunch
+brunches
+brundisium
+Brunei
+brunel
+Brunelle
+brunelleschi
+brunet
+brunette
+brunettes
+brunhild
+Brunhilde
+Bruno
+Brunswick
+Brunswick's
+brunt
+brusa
+brush
+brushability
+brushback
+brushcut
+brushed
+brusher
+brushes
+brushfire
+brushfire's
+brushfires
+brushier
+brushing
+brushland
+brushless
+brushlike
+brushstroke
+brushstroke's
+brushstrokes
+brushup
+brushwood
+brushwork
+brushy
+brusk
+Bruson
+brusque
+brusquely
+brusqueness
+brusquerie
+Brussels
+brut
+brutal
+brutalities
+brutality
+brutalization
+brutalization's
+brutalizations
+brutalize
+brutalized
+brutalizes
+brutalizing
+brutally
+brute
+brute's
+brutes
+brutify
+brutish
+brutishly
+brutishness
+Brutus
+bruxelles
+Bruxelles
+bruxism
+Bryan
+Bryansk
+Bryant
+Bryce
+Bryn
+brynhild
+bryology
+bryony
+bryophyta
+bryophyte
+bryozoa
+bryozoan
+Brython
+Brythonic
+BS
+bs
+BSD
+btu
+BTW
+bub
+bubal
+bubaline
+bubble
+bubbled
+bubbler
+bubbles
+bubblier
+bubbling
+bubbly
+bubby
+buber
+Bubo
+bubonic
+bubonocele
+bucaramanga
+buccal
+buccaneer
+buccaneer's
+buccaneerish
+buccaneers
+buccinator
+bucentaur
+Bucephalus
+bucer
+buchan
+Buchanan
+Bucharest
+Buchenwald
+Buchenwald's
+Buchmanism
+buchner
+buchu
+Buchwald
+buck
+buckaroo
+buckaroos
+buckbean
+buckboard
+buckboard's
+buckboards
+bucked
+buckeen
+bucker
+buckeroo
+bucket
+bucket's
+bucketed
+bucketful
+bucketful's
+bucketfuls
+bucketing
+buckets
+bucketsful
+buckeye
+buckhead
+buckhorn
+buckhound
+bucking
+Buckingham
+Buckinghamshire
+buckish
+buckjumper
+buckle
+buckled
+buckler
+buckles
+Buckley
+Buckley's
+buckling
+buckman
+Bucknell
+Bucknell's
+bucko
+buckoes
+buckra
+buckram
+bucks
+bucksaw
+buckshee
+buckshot
+buckskin
+buckskins
+bucktail
+buckthorn
+bucktooth
+buckwheat
+bucky
+Bucky
+bucolic
+bucolically
+bucovina
+bud
+bud's
+Budapest
+Budd
+budded
+budder
+Buddha
+Buddhism
+Buddhist
+Buddhists
+buddies
+budding
+buddle
+Buddleia
+buddy
+buddy's
+budge
+budged
+budgerigar
+budges
+budget
+budgetary
+budgeted
+budgeteer
+budgeter
+budgeters
+budgeting
+budgets
+budgetted
+budgetting
+budgie
+budging
+budlong
+buds
+budweis
+Budweiser
+Budweisers
+Buehring
+Buehring's
+Buena
+Buenaventura
+Bueno
+Buenos
+buff
+buff's
+buffalo
+buffaloes
+buffer
+buffer's
+buffered
+bufferer
+bufferer's
+bufferers
+buffering
+bufferred
+buffers
+buffet
+buffeted
+buffeting
+buffetings
+buffets
+buffi
+buffing
+bufflehead
+buffo
+buffon
+buffoon
+buffoon's
+buffoonery
+buffoonish
+buffoons
+buffos
+buffs
+bug
+bug's
+bugaboo
+buganda
+Bugatti
+bugatti
+bugbane
+bugbear
+bugbears
+bugeye
+bugeyed
+bugged
+bugger
+bugger's
+buggered
+buggering
+buggers
+buggery
+buggies
+bugging
+buggy
+buggy's
+bughouse
+bugle
+bugled
+bugler
+bugles
+bugleweed
+bugling
+bugloss
+bugong
+bugs
+bugseed
+buhl
+buibui
+Buick
+build
+builded
+builder
+builders
+building
+building's
+buildings
+builds
+buildup
+buildup's
+buildups
+built
+builtin
+buitenzorg
+Bujumbura
+bukavu
+bukhara
+bukharin
+bukovina
+bul
+bulawayo
+bulb
+bulb's
+bulba
+Bulba
+bulbaceous
+bulbar
+bulbed
+bulbiferous
+bulbil
+bulblet
+bulbous
+bulbously
+bulbs
+bulbul
+bulganin
+Bulgar
+Bulgaria
+Bulgarian
+bulge
+bulged
+bulges
+bulginess
+bulging
+bulgur
+bulgy
+bulimia
+bulk
+bulked
+bulkhead
+bulkhead's
+bulkheaded
+bulkheads
+bulkier
+bulkily
+bulkiness
+bulks
+bulky
+bull
+bulla
+bullace
+bullae
+bullbaiting
+bullbat
+bulldog
+bulldog's
+bulldogger
+bulldogs
+bulldoze
+bulldozed
+bulldozer
+bulldozers
+bulldozes
+bulldozing
+bulle
+bulled
+bullet
+bullet's
+bulletin
+bulletin's
+bulletins
+bulletproof
+bulletproofed
+bulletproofing
+bulletproofs
+bullets
+bullfight
+bullfighter
+bullfighting
+bullfinch
+bullfrog
+bullhead
+bullheaded
+bullheadedly
+bullheadedness
+bullhide
+bullhorn
+bullied
+bullies
+bulling
+bullion
+bullish
+bullishly
+bullishness
+bullnecked
+bulloch
+bullock
+bullocky
+bullous
+bullpen
+bullpout
+bullring
+bullroarer
+bullrush
+bullrush's
+bullrushes
+bulls
+bullseye
+bullshit
+bullterrier
+bullwhack
+bullwhackers
+bullwhip
+bully
+bullyboy
+bullyboys
+bullying
+bullyrag
+bulnbuln
+bulrush
+bulwark
+bum
+bum's
+bumbailiff
+bumbershoot
+bumble
+bumblebee
+bumblebee's
+bumblebees
+bumbled
+Bumbledom
+bumbler
+bumblers
+bumbles
+bumbling
+bumblingly
+bumboat
+bumbry
+Bumbry
+bumf
+bumkin
+bummaree
+bummed
+bummer
+bummers
+bumming
+bump
+bumped
+bumper
+bumpers
+bumph
+bumpier
+bumpily
+bumpiness
+bumping
+bumpkin
+bumpkin's
+bumpkinish
+bumpkinly
+bumpkins
+bumps
+bumptious
+bumptiously
+bumptiousness
+bumpy
+bums
+bumsucking
+bun
+bun's
+Buna
+bunch
+bunche
+bunched
+bunches
+bunchily
+bunching
+bunchy
+bunco
+buncombe
+bund
+Bundaberg
+bundelkhand
+bundesrat
+Bundestag
+bundh
+bundist
+bundle
+bundled
+bundler
+bundles
+bundling
+bundobust
+Bundoora
+bundoora
+Bundu
+bundy
+Bundy
+bung
+bungalow
+bungalow's
+bungalows
+bunger
+bunghole
+bungle
+bungled
+bungler
+bunglers
+bungles
+bunglesome
+bungling
+bunglingly
+bunin
+bunion
+bunion's
+bunions
+bunk
+bunked
+bunker
+bunker's
+bunkered
+bunkering
+bunkers
+bunkhouse
+bunkhouse's
+bunkhouses
+bunking
+bunkmate
+bunkmate's
+bunkmates
+bunko
+bunkos
+bunks
+bunkum
+bunnies
+bunny
+bunny's
+bunraku
+buns
+Bunsen
+Bunsen's
+Bunsens
+bunt
+buntal
+bunted
+bunter
+bunters
+bunting
+buntline
+bunts
+Bunyan
+Bunyan's
+bunyip
+buonaparte
+buonarroti
+buoy
+buoyage
+buoyance
+buoyancy
+buoyant
+buoyantly
+buoyed
+buoying
+buoys
+buprestid
+bur
+buran
+buraydah
+burbage
+burbank
+Burbank
+Burbank's
+Burberry
+burble
+burbled
+burbler
+burbles
+burbling
+burbly
+burbot
+Burch
+burden
+burden's
+burdened
+burdening
+burdens
+burdensome
+burdensomely
+burdensomeness
+burdock
+bureau
+bureau's
+bureaucracies
+bureaucracy
+bureaucracy's
+bureaucrat
+bureaucrat's
+bureaucratic
+bureaucratically
+bureaucratization
+bureaucratization's
+bureaucratizations
+bureaucratize
+bureaucratized
+bureaucratizes
+bureaucrats
+bureaus
+bureaux
+buret
+burette
+burettes
+burg
+burgage
+burgas
+burgee
+burgeon
+burgeoned
+burgeoning
+burgeons
+burger
+burgers
+burgess
+burgess's
+burgesses
+burgher
+burgher's
+burghers
+burghley
+burglar
+burglar's
+burglaries
+burglarious
+burglariously
+burglarize
+burglarized
+burglarizes
+burglarizing
+burglarproof
+burglarproofed
+burglarproofing
+burglarproofs
+burglars
+burglary
+burglary's
+burgle
+burgled
+burgles
+burgling
+burgomaster
+burgomasters
+burgonet
+burgoo
+burgoos
+Burgos
+Burgoyne
+burgrave
+Burgundian
+Burgundies
+Burgundy
+burhel
+burial
+buried
+burier
+buries
+burin
+burk
+burka
+Burke
+Burkes
+Burkina
+burking
+burl
+burladero
+burlap
+burle
+burled
+burleigh
+burler
+burlesque
+burlesqued
+burlesquely
+burlesquer
+burlesques
+burlesquing
+burley
+burlier
+burlily
+burliness
+burlingame
+Burlingame
+Burlington
+Burlington's
+burly
+Burma
+Burmese
+burn
+burnable
+burne
+Burne
+burned
+burner
+burners
+burnes
+Burnes
+burnet
+Burnett
+burney
+Burnham
+burning
+burningly
+burnings
+burnish
+burnished
+burnisher
+burnishes
+burnishing
+burnley
+burnoose
+burnous
+burnout
+burns
+Burnside
+Burnsides
+burnt
+burntly
+burntness
+buroo
+burp
+burped
+burping
+burps
+burr
+burr's
+burrawang
+burred
+burrer
+burrier
+burro
+burro's
+burros
+Burroughs
+burrow
+burrowed
+burrower
+burrowing
+burrows
+burrs
+burrstone
+burry
+bursa
+bursae
+bursal
+bursar
+bursarial
+bursary
+bursas
+burse
+burseed
+Burseraceous
+bursiform
+bursitis
+burst
+bursted
+burster
+bursting
+burstone
+bursts
+bursty
+Burt
+burthen
+Burton
+Burtt
+Burtt's
+Burundi
+burweed
+bury
+buryat
+burying
+bus
+busbar
+busbies
+busboy
+busboy's
+busboys
+busby
+Busch
+bused
+busera
+buses
+bush
+bushbaby
+bushbuck
+bushbucks
+bushcraft
+bushed
+bushel
+bushel's
+bushelage
+busheled
+busheler
+bushelers
+busheling
+bushelings
+bushelman
+bushels
+bushes
+bushfire
+bushhammer
+bushido
+bushie
+bushier
+bushily
+bushiness
+bushing
+bushings
+Bushire
+bushland
+bushland's
+bushman
+bushmaster
+Bushnell
+bushpig
+bushranger
+bushtit
+bushveld
+bushwhack
+bushwhacked
+bushwhacker
+bushwhacking
+bushwhacks
+bushwheel
+bushy
+busied
+busier
+busies
+busiest
+busily
+business
+business's
+businesses
+businesslike
+businessman
+businessmen
+businesswoman
+businesswoman's
+businesswomen
+busing
+busk
+busker
+buskin
+busload
+busload's
+busloads
+busoni
+busra
+buss
+bussed
+busses
+bussing
+bust
+bustard
+bustard's
+bustards
+busted
+bustee
+buster
+busting
+bustle
+bustled
+bustling
+bustlingly
+busts
+busty
+busuuti
+busy
+busybody
+busying
+busyness
+busywork
+but
+butadiene
+butane
+butanol
+butanone
+butat
+butch
+butcher
+butcher's
+butcherbird
+butchered
+butcherer
+butchering
+butcherly
+butchers
+butchery
+Bute
+butene
+butenedioic
+buteo
+butler
+butler's
+butlers
+butskellism
+butskellite
+butt
+butt's
+butte
+butted
+butter
+butterball
+butterbur
+buttercup
+buttered
+butterer
+butterers
+butterfat
+Butterfield
+butterfingered
+butterfingers
+butterfish
+butterflies
+butterfly
+butterfly's
+butterflyer
+butterine
+buttering
+butterless
+Buttermere
+buttermilk
+butternut
+butters
+butterscotch
+butterweed
+butterwort
+Butterworth
+buttery
+buttes
+butties
+butting
+buttinski
+buttinsky
+buttock
+buttock's
+buttocks
+button
+buttonball
+buttonbush
+buttoned
+buttoner
+buttonhole
+buttonhole's
+buttonholer
+buttonholes
+buttonhook
+buttoning
+buttonless
+buttonmould
+buttons
+buttonweed
+buttonwood
+buttony
+buttress
+buttressed
+buttresses
+buttressing
+Buttrick
+butts
+buttstock
+butty
+butung
+butut
+butyl
+butylate
+butylation
+butylene
+butyraceous
+butyral
+butyraldehyde
+butyrate
+butyric
+butyrin
+buxom
+buxomly
+buxomness
+Buxtehude
+Buxtehude's
+Buxton
+buy
+buyer
+buyer's
+buyers
+buying
+buys
+buzz
+buzzard
+buzzard's
+buzzards
+buzzed
+buzzer
+buzzes
+buzzing
+buzzsaw
+buzzword
+buzzword's
+buzzwords
+buzzy
+bwana
+by
+Bydgoszcz
+bye
+byelaw
+byelaws
+Byelorussian
+Byelostok
+byelovo
+byers
+byes
+bygone
+bygones
+byinge
+bylaw
+bylaw's
+bylaws
+byline
+byline's
+byliner
+bylines
+bylot
+byname
+byng
+bypass
+bypassed
+bypasses
+bypassing
+bypast
+bypath
+byplay
+byproduct
+byproduct's
+byproducts
+Byrd
+byre
+Byrne
+byrnie
+byroad
+Byron
+Byron's
+Byronic
+Byronism
+Byronize
+Byronizes
+byssinosis
+byssus
+bystander
+bystander's
+bystanders
+bystreet
+byte
+byte's
+bytes
+bytom
+byway
+byways
+byword
+byword's
+bywords
+Byzantine
+Byzantinize
+Byzantinizes
+Byzantium
+CA
+cab
+cab's
+cabal
+cabala
+cabalism
+cabalist
+cabalistic
+Caballe
+caballed
+caballero
+caballing
+cabals
+cabana
+cabanas
+cabanatuan
+cabaret
+cabarets
+cabbage
+cabbage's
+cabbaged
+cabbages
+cabbageworm
+cabbaging
+cabbala
+cabbie
+cabbies
+cabby
+cabdriver
+cabdrivers
+caber
+cabezon
+cabimas
+cabin
+cabin's
+Cabinda
+cabinet
+cabinet's
+cabinetmaker
+cabinetmaker's
+cabinetmakers
+cabinetmaking
+cabinetry
+cabinets
+cabinetwork
+cabins
+cable
+cabled
+cablegram
+cablegram's
+cablegrams
+cables
+cablet
+cableway
+cabling
+cabman
+cabob
+cabochon
+caboodle
+caboose
+cabora
+Cabot
+Cabot's
+cabotage
+cabral
+cabretta
+cabrilla
+cabriole
+cabriolet
+cabs
+cabstand
+cacao
+cacciatore
+cachalot
+cache
+cache's
+cachectic
+cached
+cachepot
+cacher
+caches
+cachet
+cachexia
+caching
+cachinnate
+cachou
+cachucha
+cacique
+caciquism
+cackle
+cackled
+cackler
+cackles
+cackling
+cackly
+CACM
+cacodemon
+cacodemonic
+cacodyl
+cacoepy
+cacoethes
+cacogenesis
+cacogenic
+cacogenics
+cacographical
+cacography
+cacology
+cacomistle
+cacophonist
+cacophonous
+cacophonously
+cacophony
+cacti
+cactus
+cactuses
+cacuminal
+cad
+cadaster
+cadastral
+cadastrally
+cadastre
+cadaver
+cadaveric
+cadaverine
+cadaverize
+cadaverizes
+cadaverous
+cadaverously
+caddie
+caddies
+caddis
+caddish
+caddishly
+caddishness
+Caddoan
+caddy
+cade
+cadelle
+cadence
+cadenced
+cadences
+cadencing
+cadency
+cadent
+cadential
+cadenza
+cadet
+cadetship
+cadge
+cadged
+cadger
+cadges
+cadging
+cadi
+Cadillac
+Cadillacs
+Cadmean
+cadmium
+cadmiumize
+cadmiumizes
+Cadmus
+cadre
+caducean
+caduceus
+caducity
+caducous
+Cady
+caecilian
+caecum
+Caelian
+Caelum
+caen
+caenozoic
+caeoma
+caerleon
+caernarfon
+Caernarvonshire
+Caerphilly
+caesalpiniaceous
+Caesar
+caesaraugusta
+caesarea
+Caesarean
+Caesarian
+Caesarian's
+Caesarism
+Caesarize
+Caesarizes
+caesium
+caespitose
+caesura
+caetano
+cafard
+cafe
+cafe's
+cafes
+cafeteria
+cafeteria's
+cafeterias
+caff
+caffeine
+caffeine's
+caffeinic
+caftan
+cage
+caged
+cageling
+cager
+cagers
+cages
+cagey
+cageyness
+cagier
+cagily
+caginess
+caging
+cagliari
+cagliostro
+cagmag
+cagney
+cagoule
+cagoules
+cagy
+cahier
+Cahill
+Cahokia
+cahoot
+cahoots
+caiaphas
+Caicos
+caiman
+Cain
+Caine
+cainogenesis
+cainozoic
+caird
+cairn
+cairned
+cairngorm
+cairns
+Cairo
+caisson
+caithness
+caitiff
+caius
+cajeput
+cajole
+cajoled
+cajolement
+cajoler
+cajolery
+cajoles
+cajoling
+Cajun
+Cajun's
+Cajuns
+cajuput
+cake
+caked
+cakes
+cakewalk
+cakewalker
+caking
+Cal
+Calabar
+calabash
+calaboose
+calabria
+Caladium
+Calais
+calalu
+calamanco
+calamine
+calamint
+calamite
+calamities
+calamitous
+calamitously
+calamitousness
+calamity
+calamity's
+calamondin
+calamus
+calandria
+calash
+calathus
+calaverite
+calcaneal
+calcaneum
+calcaneus
+calcar
+calcareous
+calcareously
+calcareousness
+calcariferous
+calceiform
+calces
+calchas
+calcic
+calcicole
+calciferol
+Calciferous
+calcific
+calcification
+calcified
+calcifuge
+calcifugous
+calcify
+calcimine
+calcination
+calcine
+calcined
+calcining
+calcinosis
+calcite
+calcitic
+calcitonin
+calcium
+CalComp
+calcomp
+calcsinter
+calculability
+calculable
+calculableness
+calculably
+calculate
+calculated
+calculatedly
+calculatedness
+calculates
+calculating
+calculatingly
+calculation
+calculational
+calculations
+calculative
+calculator
+calculator's
+calculators
+calculi
+calculous
+calculus
+Calcutta
+Calcutta's
+caldarium
+Calder
+caldera
+caldron
+Caldwell
+Caldwell's
+Caleb
+Caleb's
+caleche
+Caledonia
+Caledonian
+calefacient
+calefactory
+calendar
+calendar's
+calendared
+calendaring
+calendars
+calender
+calenderer
+calendric
+calendrical
+calends
+calendula
+calenture
+calf
+calflike
+calfs
+calfskin
+Calgary
+Calhoun
+Calhoun's
+cali
+Caliban
+caliber
+calibers
+calibrate
+calibrated
+calibrater
+calibrates
+calibrating
+calibration
+calibrations
+calibrator
+calibrators
+calices
+caliche
+calicle
+calico
+Calicut
+calif
+Calif
+califate
+California
+California's
+Californian
+Californian's
+Californians
+californium
+caliginous
+Caligula
+caligula
+calimere
+calipash
+calipee
+caliper
+calipers
+caliph
+caliphal
+caliphate
+caliphs
+calisaya
+calisthenic
+calisthenics
+calix
+calk
+calker
+Calkins
+call
+calla
+callable
+Callaghan
+Callaghan's
+Callahan
+Callahan's
+callais
+Callan
+Callan's
+callant
+callao
+Callas
+callback
+callboy
+called
+callee
+callee's
+caller
+caller's
+callers
+callicrates
+calligraph
+calligrapher
+calligraphers
+calligraphic
+calligraphically
+calligraphist
+calligraphy
+callimachus
+calling
+calliope
+Calliopsis
+callipash
+callipygian
+callisthenics
+Callisto
+callose
+callosity
+callous
+calloused
+callously
+callousness
+callow
+callowness
+calls
+callus
+calluses
+calm
+calmative
+calmed
+calmer
+calmest
+calming
+calmingly
+calmly
+calmness
+calms
+calomel
+calor
+caloric
+calorically
+calorie
+calorie's
+calories
+calorific
+calorimeter
+calorimeter's
+calorimeters
+calorimetric
+calorimetrically
+calorimetry
+calory
+calotte
+caloyer
+calpe
+calque
+caltanissetta
+Caltech
+caltech
+calthrop
+caltrop
+caltrops
+Calumet
+calumniate
+calumniated
+calumniation
+calumniator
+calumnious
+calumniously
+calumny
+calutron
+Calvados
+calvaria
+calvary
+calve
+Calvert
+Calvert's
+calves
+Calvin
+Calvin's
+calving
+Calvinism
+Calvinist
+Calvinize
+Calvinizes
+calvities
+calx
+calyces
+calycine
+calycle
+Calydonian
+calypso
+calypsonian
+calyptra
+calyptrogen
+calyx
+cam
+camail
+camaraderie
+camarilla
+camass
+cambay
+camber
+cambered
+cambering
+camberwell
+cambial
+cambist
+cambium
+Cambodia
+camboose
+cambrai
+cambrel
+cambria
+Cambrian
+cambric
+Cambridge
+Cambridge's
+Cambridgeshire
+cambyses
+Camden
+Camden's
+came
+camel
+camel's
+camelback
+cameleer
+camelia
+camellia
+camellias
+camelopard
+Camelopardus
+Camelot
+camels
+Camembert
+Camenae
+cameo
+cameos
+camera
+camera's
+cameral
+cameralism
+cameralist
+cameraman
+cameramen
+cameras
+camerlengo
+Cameron
+Cameron's
+Cameroon
+Cameroun
+Cameroun's
+camiknickers
+Camilla
+Camille
+Camino
+camion
+camisado
+camise
+camisole
+caml
+camlet
+camomile
+camoodi
+camorra
+camorrista
+camouflage
+camouflageable
+camouflaged
+camouflages
+camouflagic
+camouflaging
+camp
+campagna
+campaign
+campaigned
+campaigner
+campaigners
+campaigning
+campaigns
+campania
+campanile
+campanologist
+campanology
+campanula
+campanulaceous
+campanulate
+Campbell
+Campbellsport
+campcraft
+campeche
+camped
+camper
+campers
+campership
+campesinos
+campestral
+campfire
+campground
+campgrounds
+camphene
+camphine
+camphor
+camphoraceous
+camphorate
+camphorated
+camphoric
+campily
+campina
+campinas
+campiness
+camping
+campion
+campo
+campobello
+camporee
+campos
+camps
+campsite
+campsites
+campstool
+campus
+campus's
+campuses
+campy
+cams
+camshaft
+camshafts
+camus
+camwood
+can
+can's
+can't
+Cana
+Canaan
+Canaan's
+Canaanite
+Canaanitic
+Canada
+Canada's
+Canadian
+Canadianism
+Canadianization
+Canadianization's
+Canadianizations
+Canadianize
+Canadianizes
+Canadians
+canaigre
+canakin
+canal
+canal's
+canalboat
+canaled
+canaler
+canalers
+canaletto
+canaliculate
+canaliculus
+canaling
+canalization
+canalization's
+canalizations
+canalize
+canalized
+canalizes
+canalizing
+canals
+canara
+canard
+canarese
+canaries
+canary
+canary's
+canasta
+canaster
+Canaveral
+Canberra
+cancan
+cancel
+cancelable
+cancelate
+cancelated
+canceled
+canceler
+canceling
+cancellation
+cancellation's
+cancellations
+cancelous
+cancels
+cancer
+cancer's
+cancerous
+cancerously
+cancers
+cancroid
+Candace
+candela
+candelabra
+candelabrum
+candent
+candescence
+candescent
+candia
+candid
+candida
+candidacy
+candidate
+candidate's
+candidates
+candidature
+Candide
+candidly
+candidness
+candied
+candies
+Candiot
+candle
+candleberry
+candled
+candlefish
+candleholder
+candlelight
+candlelighter
+candlelit
+Candlemas
+candlenut
+candlepin
+candlepins
+candlepower
+candlepowers
+candler
+candles
+candlesnuffer
+candlestick
+candlestick's
+candlesticks
+candlewick
+Candlewick
+candlewood
+candling
+candor
+candor's
+candors
+candy
+candyfloss
+candying
+candytuft
+cane
+canea
+canebrake
+caned
+canella
+caner
+canes
+canescent
+caneware
+Canfield
+Canfield's
+canful
+cangue
+Canicula
+canicular
+canikin
+canine
+canines
+caning
+Canis
+canister
+canisters
+canker
+cankered
+cankering
+cankerous
+cankerworm
+canna
+cannabin
+cannabis
+cannae
+canned
+cannel
+cannelloni
+cannelure
+canner
+canner's
+canneries
+canners
+cannery
+cannes
+cannibal
+cannibal's
+cannibalic
+cannibalism
+cannibalism's
+cannibalistic
+cannibalization
+cannibalization's
+cannibalizations
+cannibalize
+cannibalized
+cannibalizes
+cannibalizing
+cannibals
+cannier
+cannily
+canniness
+canning
+cannister
+cannister's
+cannisters
+cannock
+cannon
+cannon's
+cannonade
+cannonball
+cannoned
+cannoneer
+cannoning
+cannonry
+cannons
+cannot
+cannula
+cannulate
+canny
+canoe
+canoe's
+canoed
+canoeing
+canoeist
+canoeist's
+canoeists
+canoes
+canoewood
+Canoga
+canon
+canon's
+canoness
+canonic
+canonical
+canonicalization
+canonicalize
+canonicalized
+canonicalizes
+canonicalizing
+canonically
+canonicals
+canonicate
+canonicity
+canonist
+canonization
+canonization's
+canonizations
+canonize
+canonized
+canonizer
+canonizers
+canonizes
+canonizing
+canonry
+canons
+canoodle
+Canopic
+Canopus
+canopy
+canorous
+canorously
+canorousness
+Canossa
+canova
+cans
+canso
+canst
+cant
+cantabile
+Cantabrian
+Cantabrigian
+cantal
+cantala
+cantaloupe
+cantaloupe's
+cantaloupes
+cantankerous
+cantankerously
+cantankerousness
+cantata
+cantatas
+cantatrice
+canted
+canteen
+canteens
+canter
+Canterbury
+cantered
+canterelle
+cantharides
+canthi
+canthus
+canticle
+cantilena
+cantilever
+cantilevers
+cantillate
+cantillation
+cantina
+canting
+cantle
+cantles
+canto
+canton
+canton's
+cantonal
+Cantonese
+cantonment
+cantons
+cantor
+cantor's
+cantorial
+cantoris
+cantors
+cantos
+cantrip
+cantus
+canty
+Canuck
+canula
+Canute
+canute
+canvas
+canvas's
+canvasback
+canvaser
+canvases
+canvaslike
+canvass
+canvassed
+canvasser
+canvassers
+canvasses
+canvassing
+canyon
+canyon's
+canyons
+canzona
+canzone
+canzonet
+cap
+cap's
+capabilites
+capabilities
+capability
+capability's
+Capablanca
+capable
+capableness
+capably
+capacious
+capaciously
+capaciousness
+capacitance
+capacitances
+capacitate
+capacitative
+capacities
+capacitive
+capacitively
+capacitor
+capacitor's
+capacitors
+capacity
+caparison
+Cape
+cape
+capelet
+capelin
+capella
+caper
+capercaillie
+capered
+capering
+Capernaum
+capers
+capes
+capeskin
+capet
+Capet
+Capetian
+Capetown
+capework
+capful
+capias
+capillaceous
+capillarity
+capillary
+Capistrano
+capita
+capital
+capitalism
+capitalist
+capitalist's
+capitalistic
+capitalistically
+capitalists
+capitalizable
+capitalizable's
+capitalizables
+capitalization
+capitalization's
+capitalizations
+capitalize
+capitalized
+capitalizer
+capitalizers
+capitalizes
+capitalizing
+capitally
+capitals
+Capitan
+capitan
+capitate
+capitates
+capitation
+capitol
+capitol's
+Capitoline
+capitols
+capitular
+capitulary
+capitulate
+capitulated
+capitulates
+capitulation
+capitulum
+caplin
+capo
+capon
+Capone
+Caponization
+caponize
+caponized
+caponizes
+caponizing
+caporal
+caporetto
+capote
+cappadocia
+capparidaceous
+capped
+capper
+cappers
+cappie
+capping
+Cappuccilli
+cappuccino
+Cappy
+cappy
+capreolate
+Capri
+capric
+capriccio
+capriccioso
+caprice
+capricious
+capriciously
+capriciousness
+Capricorn
+Capricornus
+caprification
+caprifig
+caprifoliaceous
+caprine
+capriole
+caproic
+caps
+capsaicin
+Capsian
+capsid
+capsize
+capsized
+capsizes
+capsizing
+capstan
+capstans
+capstone
+capsular
+capsulate
+capsulated
+capsule
+capsuled
+capsules
+capsuling
+capsulization
+capsulize
+capsulized
+capsulizes
+capsulizing
+Capt
+capt
+captain
+captaincy
+captained
+captaining
+captains
+captainship
+captan
+caption
+caption's
+captioned
+captioner
+captioning
+captionless
+captions
+captious
+captiously
+captiousness
+captivate
+captivated
+captivates
+captivating
+captivation
+captivator
+captive
+captive's
+captives
+captivity
+captor
+captor's
+captors
+capture
+captured
+capturer
+capturers
+captures
+capturing
+capua
+capuche
+capuchin
+caput
+Caputo
+capybara
+car
+car's
+carabao
+carabid
+carabineer
+carabiner
+carabinero
+carabinier
+carabiniere
+caracal
+caracalla
+caracara
+Caracas
+caracole
+caracoled
+caracoling
+caracul
+carafe
+carageen
+caramba
+caramel
+caramelization
+caramelization's
+caramelizations
+caramelize
+caramelized
+caramelizes
+caramelizing
+carangid
+carapace
+carapace's
+carapaces
+carat
+caratacus
+Caravaggio
+caravan
+caravan's
+caravaner
+caravanner
+caravans
+caravansary
+caravanserai
+caravel
+caraway
+carbamate
+carbamic
+carbamidine
+carbanion
+carbarn
+carbaryl
+carbazole
+carbene
+carbide
+carbine
+carbineer
+carbines
+carbohydrate
+carbohydrate's
+carbohydrates
+carbolated
+carbolic
+carboline
+carbolization
+carbolize
+carbolized
+carbolizes
+carbolizing
+Carboloy
+carbon
+carbon's
+carbonaceous
+carbonade
+carbonado
+Carbonari
+carbonate
+carbonated
+carbonates
+carbonation
+carbonatization
+carbonatization's
+carbonatizations
+Carbondale
+Carbone
+Carbones
+carbonic
+carboniferous
+carbonium
+carbonizable
+carbonizable's
+carbonizables
+carbonization
+carbonization's
+carbonizations
+carbonize
+carbonized
+carbonizer
+carbonizers
+carbonizes
+carbonizing
+carbonless
+carbonous
+carbons
+carbonyl
+carbonylic
+carborundum
+carboxy
+carboxyl
+carboxylase
+carboxylate
+carboxylation
+carboxylic
+carboy
+carbuncle
+carbuncled
+carbuncular
+carburation
+carburet
+carburetion
+carburetor
+carburetors
+carburetted
+carburetter
+carburization
+carburize
+carburized
+carburizes
+carburizing
+carby
+carbylamine
+carcajou
+carcanet
+carcase
+carcass
+carcass's
+carcasses
+carcassonne
+carchemish
+carcinogen
+carcinogenesis
+carcinogenic
+carcinogenicity
+carcinogens
+carcinoid
+carcinoma
+carcinomatosis
+card
+card's
+cardamom
+cardboard
+cardboards
+carded
+carder
+cardiac
+cardialgia
+Cardiff
+Cardiff's
+cardigan
+cardigan's
+cardigans
+Cardiganshire
+cardin
+cardinal
+cardinalate
+cardinalities
+cardinality
+cardinality's
+cardinally
+cardinals
+cardinalship
+carding
+cardiod
+cardiogram
+cardiogram's
+cardiograms
+cardiograph
+cardiographer
+cardiographic
+cardiographs
+cardiography
+cardioid
+cardioid's
+cardioids
+cardiological
+cardiologist
+cardiology
+cardiomegaly
+cardiopathy
+cardiopulmonary
+cardiorespiratory
+cardiotonic
+cardiovascular
+cardiovasculatory
+carditis
+cardoon
+cardplayer
+cards
+cardsharp
+cardsharper
+carduaceous
+carducci
+care
+cared
+careen
+careened
+careening
+career
+career's
+careered
+careering
+careerism
+careerist
+careerists
+careers
+carefree
+careful
+carefuller
+carefullest
+carefully
+carefulness
+careless
+carelessly
+carelessness
+carer
+carers
+cares
+caress
+caressed
+caresser
+caresses
+caressing
+caressingly
+caressive
+caressively
+caret
+caretaker
+caretakers
+caretaking
+carets
+carew
+careworn
+Carey
+Carey's
+carfare
+carfax
+carfuffle
+carful
+Cargill
+Cargill's
+cargo
+cargoes
+cargos
+carhop
+caria
+Carib
+Caribbean
+Caribbee
+caribbees
+caribe
+cariboo
+caribou
+caribous
+caricatural
+caricature
+caricatured
+caricatures
+caricaturist
+caries
+carifta
+carillon
+carillonneur
+carina
+carinate
+caring
+carinthia
+carioca
+cariocan
+cariogenic
+cariole
+carious
+Carl
+Carl's
+Carla
+carle
+Carleton
+Carletonian
+Carlin
+Carlin's
+carline
+carling
+Carlisle
+Carlisle's
+Carlist
+Carlo
+carload
+carloading
+carloads
+Carlos
+carlota
+Carlovingian
+carlow
+Carlsbad
+carlsbad
+Carlsbad's
+Carlsbads
+Carlson
+Carlton
+Carlyle
+carmagnole
+carmaker
+Carman
+carmarthen
+Carmarthenshire
+Carmel
+Carmela
+Carmelite
+Carmen
+Carmen's
+Carmichael
+carminative
+carmine
+carnage
+carnal
+carnality
+carnalize
+carnalizes
+carnallite
+carnally
+carnarvon
+carnassial
+carnatic
+carnation
+carnations
+carnauba
+carne
+Carnegie
+carnelian
+carnet
+carney
+carnify
+carniola
+carnival
+carnival's
+carnivals
+carnivore
+carnivorous
+carnivorously
+carnivorousness
+carnot
+carnotite
+carny
+carob
+caroche
+carol
+carol's
+caroled
+caroler
+carolers
+Carolina
+Carolina's
+Carolinas
+Caroline
+Caroline's
+caroling
+Carolingian
+Carolinian
+Carolinians
+carols
+carolus
+Carolyn
+carom
+carotene
+carotenoid
+carotid
+carousal
+carouse
+caroused
+carousel
+carousel's
+carousels
+carouser
+carousing
+carp
+carpal
+Carpathia
+Carpathian
+Carpathians
+carped
+carpel
+carpellary
+carpentaria
+carpenter
+carpenter's
+carpentered
+carpentering
+carpenters
+carpentier
+carpentry
+carper
+carpet
+carpetbag
+carpetbag's
+carpetbagged
+carpetbagger
+carpetbagger's
+carpetbaggers
+carpetbaggery
+carpetbagging
+carpetbags
+carpeted
+carpeting
+carpets
+carpi
+carping
+carpingly
+carpogonium
+carpology
+carpometacarpus
+carpophagous
+carpophore
+carport
+carpospore
+carposporic
+carps
+carpus
+Carr
+Carr's
+carrack
+carrageen
+Carrara
+carrefour
+carrel
+carrels
+Carreras
+carriage
+carriage's
+carriages
+carriageway
+carriageways
+Carrick
+Carrie
+carried
+carrier
+carriers
+carries
+carriole
+carrion
+Carroll
+Carroll's
+carronade
+carrot
+carrot's
+carrots
+carroty
+carrousel
+Carruthers
+carry
+carryall
+carrycot
+carrying
+carryng
+carryon
+carryout
+carryover
+carryovers
+cars
+carse
+carsick
+Carson
+carstensz
+cart
+cartage
+cartagena
+carte
+carted
+cartel
+cartelization
+cartelization's
+cartelizations
+cartelize
+cartelizes
+cartels
+carter
+carteret
+Carteri
+carters
+Cartesian
+cartful
+Carthage
+Carthaginian
+carthorse
+Carthusian
+Cartier
+cartilage
+cartilaginous
+carting
+cartload
+cartloads
+cartogram
+cartogram's
+cartograms
+cartographer
+cartographers
+cartographic
+cartographical
+cartography
+cartomancy
+carton
+carton's
+cartons
+cartoon
+cartoon's
+cartoonist
+cartoonists
+cartoons
+cartop
+cartouche
+cartridge
+cartridge's
+cartridges
+carts
+cartulary
+cartwheel
+cartwheeler
+cartwheels
+cartwright
+Carty
+carty
+caruncle
+caruncular
+carunculate
+carunculated
+Caruso
+carve
+carved
+carvel
+carven
+carver
+carvers
+carves
+carving
+carvings
+cary
+caryatid
+caryophyllaceous
+caryopsis
+carzey
+casa
+casaba
+casaba's
+casabas
+casablanca
+casals
+Casanova
+Casanova's
+casaubon
+casbah
+cascabel
+cascade
+cascaded
+cascades
+cascading
+cascara
+cascarilla
+case
+casease
+caseate
+caseation
+casebearer
+casebook
+casebooks
+casebound
+cased
+casefy
+casein
+caseload
+caseloads
+casemate
+casement
+casement's
+casements
+caseose
+caseous
+casern
+caserne
+caserta
+cases
+casework
+caseworker
+caseworkers
+caseworm
+Casey
+cash
+cashable
+cashbook
+cashed
+casher
+cashers
+cashes
+cashew
+cashews
+cashier
+cashier's
+cashiers
+cashing
+cashless
+cashmere
+casimere
+casing
+casings
+casino
+casinos
+cask
+cask's
+casket
+casket's
+caskets
+casks
+Caslon
+Caspar
+Casparian
+Caspian
+casque
+cassaba
+Cassandra
+cassareep
+cassata
+cassation
+cassatt
+cassava
+Cassegrainian
+cassel
+casserole
+casserole's
+casseroles
+cassette
+cassettes
+Cassia
+cassimere
+cassini
+cassino
+cassiodorus
+Cassiopeia
+cassirer
+Cassite
+cassite
+cassiterite
+Cassius
+cassock
+cassocked
+cassoulet
+cassowary
+cast
+cast's
+Castalia
+castanet
+castanets
+castaway
+caste
+caste's
+casted
+casteism
+castellammare
+castellan
+castellany
+castellated
+caster
+casters
+castes
+casteth
+castigate
+castigated
+castigates
+castigation
+castigator
+castigators
+castiglione
+castile
+Castilian
+Castilla
+Castillo
+Castillo's
+casting
+castings
+castle
+castled
+Castleford
+Castlereagh
+castles
+castling
+castoff
+castoffs
+castor
+castorized
+castorized's
+castorizeds
+castrate
+castrated
+castrater
+castraters
+castrates
+castrating
+castration
+castrato
+castrator
+castrators
+castratory
+castries
+Castro
+Castroism
+casts
+casual
+casually
+casualness
+casuals
+casualties
+casualty
+casualty's
+Casuarina
+casuist
+casuistic
+casuistical
+casuistry
+cat
+cat's
+catabasis
+catabolic
+catabolically
+catabolism
+catabolite
+catabolize
+catacaustic
+catachresis
+catachresti
+catachrestic
+catachrestical
+cataclasis
+cataclinal
+cataclysm
+cataclysmal
+cataclysmic
+catacomb
+catacombic
+catadromous
+catafalque
+Catalan
+catalase
+catalatic
+catalectic
+catalepsy
+cataleptic
+cataleptically
+Catalina
+catalo
+catalog
+catalog's
+cataloged
+cataloger
+cataloging
+catalogs
+cataloguers
+cataloguize
+cataloguizes
+Catalonia
+catalonia
+catalpa
+catalysis
+catalyst
+catalyst's
+catalysts
+catalytic
+catalytically
+catalyze
+catalyzed
+catalyzer
+catalyzer's
+catalyzers
+catalyzes
+catamaran
+catamenia
+catamite
+catamount
+catania
+catanzaro
+cataphoresis
+cataphyll
+cataplasia
+cataplasm
+cataplastic
+cataplexy
+catapult
+catapulted
+catapulting
+catapults
+cataract
+cataractal
+cataracts
+catarrh
+catarrhal
+catarrhally
+catarrhine
+catastasis
+catastrophe
+catastrophe's
+catastrophes
+catastrophic
+catastrophically
+catastrophism
+catatonia
+catatonic
+catawba
+Catawba
+catbird
+catboat
+catcall
+catch
+catchable
+catchall
+catchee
+catcher
+catcher's
+catchers
+catches
+catchfly
+catchier
+catching
+catchment
+catchpenny
+catchpole
+catchpoll
+catchup
+catchweight
+catchword
+catchwords
+catchy
+cate
+catechesis
+catechetical
+catechin
+catechism
+catechismal
+catechist
+catechistic
+catechizable
+catechizable's
+catechizables
+catechization
+catechization's
+catechizations
+catechize
+catechized
+catechizer
+catechizers
+catechizes
+catechizing
+catechol
+catecholamine
+catecholamines
+catechu
+catechumen
+categoric
+categorical
+categorically
+categories
+categorization
+categorization's
+categorizations
+categorize
+categorized
+categorizer
+categorizers
+categorizes
+categorizing
+category
+category's
+catena
+catenane
+catenary
+catenate
+catenation
+catenoid
+catenulate
+cater
+cateran
+catercorner
+catered
+caterer
+cateress
+catering
+caterpillar
+caterpillar's
+caterpillars
+caters
+caterwaul
+cates
+catface
+catfacing
+catfall
+catfish
+catgut
+cathar
+catharses
+catharsis
+cathartic
+Cathay
+cathead
+cathect
+cathectic
+cathedra
+cathedral
+cathedral's
+cathedrals
+cathepsin
+Catherine
+Catherwood
+Catherwood's
+catheter
+catheterization
+catheterization's
+catheterizations
+catheterize
+catheterizes
+catheters
+catheti
+catheti's
+cathetis
+cathexes
+cathexis
+cathode
+cathode's
+cathodes
+cathodic
+cathodically
+catholic
+catholic's
+catholically
+catholicate
+catholicism
+catholicity
+Catholicization
+catholicize
+Catholicized
+catholicizer
+catholicizers
+catholicizes
+Catholicizing
+catholicon
+catholics
+cathouse
+Cathy
+catiline
+cation
+cationic
+cationically
+cations
+catkin
+catlike
+catling
+catmint
+catnap
+catnaps
+catnip
+cato
+catoptric
+catoptrically
+catoptrics
+cats
+Catskill
+Catskills
+catsup
+cattail
+cattalo
+catted
+cattegat
+cattermole
+cattery
+cattier
+catties
+cattily
+cattiness
+catting
+cattle
+cattleman
+cattlemen
+Cattleya
+catty
+catullus
+CATV
+catwalk
+catwalk's
+catwalks
+cauca
+caucasia
+Caucasian
+Caucasians
+Caucasoid
+Caucasus
+Cauchy
+caucus
+caucuses
+caucusing
+caudad
+caudal
+caudally
+caudate
+caudated
+caudation
+caudex
+caudillo
+caudine
+caudle
+caught
+caul
+cauldron
+cauldrons
+caulescent
+caulicle
+caulicles
+cauliflower
+cauliflowers
+cauline
+caulis
+caulk
+caulker
+caulks
+causal
+causalgia
+causality
+causally
+causate
+causation
+causation's
+causations
+causative
+causatively
+cause
+caused
+causeless
+causer
+causerie
+causes
+causeway
+causeway's
+causeways
+causey
+causeys
+causing
+caustic
+caustically
+causticity
+causticization
+causticization's
+causticizations
+causticize
+causticizer
+causticizers
+causticizes
+causticly
+caustics
+cauterant
+cauterization
+cauterization's
+cauterizations
+cauterize
+cauterized
+cauterizes
+cauterizing
+cautery
+caution
+cautionary
+cautioned
+cautioner
+cautioners
+cautioning
+cautionings
+cautions
+cautious
+cautiously
+cautiousness
+cauvery
+cavafy
+cavalcade
+cavalcades
+cavalier
+cavalierism
+cavalierly
+cavalierness
+cavalla
+cavalry
+cavalryman
+cavalrymen
+cavan
+cavatina
+cave
+caveat
+caveat's
+caveator
+caveats
+caved
+cavefish
+Cavell
+caveman
+cavemen
+Cavendish
+caver
+cavern
+cavern's
+cavernicolous
+cavernous
+cavernously
+caverns
+caves
+Cavesson
+Cavetto
+caviar
+caviare
+cavicorn
+cavie
+cavies
+cavil
+cavilation
+caviled
+caviler
+cavilers
+caviling
+cavilings
+Caviness
+caving
+cavitary
+cavitate
+cavitation
+cavite
+cavities
+cavity
+cavity's
+cavort
+cavorted
+cavorting
+Cavour
+cavy
+caw
+Cawdrey
+cawed
+cawing
+Cawley
+Cawnpore
+caws
+Caxton
+cay
+cayenne
+Cayes
+Cayley
+Cayley's
+Cayman
+cayman
+Cayuga
+Cayuga's
+Cayuse
+CB
+CBS
+cc
+CCNY
+CDC
+CDC's
+CDR
+CDT
+Ceanothus
+cease
+ceased
+ceasefire
+ceasefire's
+ceaseless
+ceaselessly
+ceaselessness
+ceases
+ceasing
+Cecil
+Cecilia
+cecity
+Cecropia
+Cecrops
+cecum
+cedar
+cedarn
+cedarwood
+cede
+ceded
+ceder
+cedi
+cedilla
+ceding
+Cedric
+ceefax
+Ceiba
+ceil
+ceilidh
+ceiling
+ceiling's
+ceilinged
+ceilings
+ceilometer
+ceilometer's
+ceilometers
+ceinture
+Celadon
+Celaeno
+celandine
+Celanese
+celaya
+Celebes
+celebrant
+celebrants
+celebrate
+celebrated
+celebratedness
+celebrates
+celebrating
+celebration
+celebrations
+celebrator
+celebrators
+celebratory
+celebrities
+celebrity
+celebrity's
+celeriac
+celerity
+celery
+celesta
+Celeste
+celestial
+celestialize
+celestializes
+celestially
+celestite
+Celia
+Celia's
+celiac
+celibacy
+celibate
+celibates
+cell
+cella
+cellar
+cellar's
+cellarage
+cellarages
+cellared
+cellarer
+cellaret
+cellarets
+cellarette
+cellarettes
+cellaring
+cellars
+celle
+celled
+cellini
+cellist
+cellist's
+cellists
+cello
+cellobiose
+celloidin
+cellophane
+cellos
+cells
+cellular
+cellularity
+cellularly
+cellulase
+cellule
+cellulitis
+celluloid
+celluloid's
+cellulose
+celluloses
+cellulosic
+cellulous
+celom
+Celsius
+Celt
+Celtiberian
+Celtic
+Celticize
+Celticizes
+cembalo
+cement
+cementation
+cemented
+cementer
+cementing
+cementite
+cementitious
+cements
+cementum
+cemeteries
+cemetery
+cemetery's
+cenacle
+cenesthesia
+cenis
+cenobite
+cenobitic
+cenobitical
+cenogenesis
+cenogenetic
+cenogenetically
+cenospecies
+cenotaph
+cenote
+Cenozoic
+cense
+censer
+censing
+censor
+censored
+censorial
+censoring
+censorious
+censoriously
+censoriousness
+censors
+censorship
+censurable
+censure
+censured
+censurer
+censures
+censuring
+census
+census's
+censuses
+cent
+cental
+centare
+centaur
+centaurea
+centaurs
+Centaurus
+centaury
+centavo
+centenarian
+centenary
+centennial
+centennially
+center
+center's
+centerable
+centerable's
+centerables
+centerboard
+centered
+centerer
+centerers
+centering
+centerings
+centerless
+centerline
+centerlines
+centerpiece
+centerpiece's
+centerpieces
+centers
+centesimal
+centesimo
+centiare
+centigrade
+centigrades
+centigram
+centigram's
+centigrams
+centiliter
+centillion
+centime
+centimeter
+centimeter's
+centimeters
+centimetric
+centimo
+centipede
+centipede's
+centipedes
+centipoise
+centisecond
+centiseconds
+centner
+cento
+centones
+centra
+central
+Central
+centrale
+Centralia
+centralism
+centralist
+centralistic
+centralists
+centrality
+centralization
+centralization's
+centralizations
+centralize
+centralized
+centralizer
+centralizers
+centralizes
+centralizing
+centrally
+centrals
+centrefold
+centreing
+Centrex
+centric
+centrically
+centricity
+centrifugal
+centrifugalization
+centrifugalization's
+centrifugalizations
+centrifugalize
+centrifugalizes
+centrifugally
+centrifugals
+centrifugate
+centrifugation
+centrifuge
+centrifuge's
+centrifuged
+centrifuges
+centrifuging
+centriole
+centripetal
+centripetally
+centrism
+centrist
+centrobaric
+centroclinal
+centroid
+centroidal
+centroids
+centromere
+centromeric
+centrosome
+centrosomic
+centrosphere
+centrosymmetric
+centrum
+cents
+centum
+centurial
+centuries
+centurion
+century
+century's
+CEO
+ceorl
+cep
+cephalad
+cephalalgia
+cephalic
+cephalically
+cephalin
+cephalization
+cephalochordate
+cephalometer
+cephalometric
+cephalometry
+cephalonia
+cephalopod
+cephalothorax
+Cepheid
+Cepheus
+cepstrum
+CEQ
+ceraceous
+ceram
+ceramal
+ceramic
+ceramicist
+ceramics
+ceramist
+ceramium
+cerargyrite
+cerastes
+cerate
+cerated
+Ceratodus
+ceratoid
+Cerberus
+cercaria
+Cercis
+cercopithecoid
+cercus
+cere
+cereal
+cereal's
+cereals
+cerebellar
+cerebellum
+cerebral
+cerebralization
+cerebralization's
+cerebralizations
+cerebralize
+cerebralizes
+cerebrally
+cerebrate
+cerebrated
+cerebrates
+cerebrating
+cerebration
+cerebrations
+cerebroside
+cerebrosides
+cerebrospinal
+cerebrovascular
+cerebrum
+cerecloth
+cerement
+ceremonial
+ceremonialism
+ceremonialist
+ceremonialists
+ceremonialize
+ceremonializes
+ceremonially
+ceremonialness
+ceremonies
+ceremonious
+ceremoniously
+ceremoniousness
+ceremony
+ceremony's
+Cerenkov
+ceres
+Ceres
+ceresin
+cereus
+ceria
+ceric
+cering
+cerise
+cerium
+cermet
+CERN
+cernuous
+cero
+cerography
+ceroplastic
+ceroplastics
+cerotic
+cerotype
+cerous
+cerro
+cert
+certain
+certainly
+certainties
+certainty
+certes
+certifiable
+certifiably
+certificate
+certificated
+certificates
+certificating
+certification
+certifications
+certificatory
+certified
+certifier
+certifiers
+certifies
+certify
+certifying
+certiorari
+certitude
+certitudes
+cerulean
+cerumen
+ceruminous
+ceruse
+cerussite
+Cervantes
+cervelat
+cervical
+cervices
+cervicitis
+cervid
+cervin
+cervine
+cervix
+cervixes
+Cesare
+Cesare's
+cesarean
+cesarian
+cesena
+cesium
+cespitose
+cess
+cessation
+cessation's
+cessations
+cesser
+cession
+cessionary
+Cessna
+cesspit
+cesspool
+cesta
+cesti
+cestode
+cestoid
+cestus
+cesura
+cetacean
+cetacean's
+cetaceans
+cetane
+cetatea
+Cete
+cetera
+ceteras
+ceteris
+cetinje
+cetology
+Cetus
+ceuta
+Ceylon
+Cezanne
+Cezannes
+cf
+CGS
+chabazite
+Chablis
+Chablises
+chabrol
+chacma
+Chaco
+chaconne
+Chad
+Chadderton
+chadic
+Chadwick
+Chadwick's
+chaeronea
+chaeta
+chaetognath
+chaetopod
+chafe
+chafer
+chaff
+chaffer
+chaffered
+chafferer
+chaffering
+Chaffey
+chaffey
+chaffinch
+chaffing
+chaffy
+chafing
+chagall
+chagres
+chagrin
+chagrined
+chagrining
+chagrins
+Chailly
+chain
+chained
+chaining
+chainlike
+chainman
+chainomatic
+chainplate
+chains
+chair
+chairborne
+chaired
+chairing
+chairlady
+chairman
+chairmanship
+chairmanships
+chairmen
+chairperson
+chairperson's
+chairpersons
+chairs
+chairwoman
+chairwomen
+chaise
+chalaza
+chalcanthite
+chalcedonic
+chalcedony
+chalcid
+chalcidice
+Chalcis
+chalcocite
+chalcography
+chalcolithic
+chalcopyrite
+chaldea
+Chaldean
+Chaldee
+chaldron
+chalet
+chaliapin
+chalice
+chalice's
+chaliced
+chalices
+chalicothere
+chalk
+chalkboard
+chalked
+chalking
+chalkline
+chalkpit
+chalks
+chalkstone
+chalky
+challah
+challenge
+challenged
+challenger
+challengers
+challenges
+challenging
+challengingly
+challis
+Chalmers
+chalone
+chalybeate
+Cham
+chamade
+Chamaeleon
+chamaephyte
+chamber
+chambered
+chamberer
+chamberers
+chambering
+chamberlain
+chamberlain's
+chamberlains
+chambermaid
+chambermaids
+chambers
+Chambertin
+chambord
+chambray
+chambrays
+chameleon
+chameleonic
+chameleonize
+chameleonizes
+chameleons
+chamfer
+chamfered
+chamfering
+chamfers
+chamfron
+chamfrons
+chammy
+chamois
+chamoix
+chamomile
+chamonix
+champ
+champac
+champagne
+champaign
+champak
+champers
+champertous
+champerty
+champignon
+champion
+championed
+championing
+championize
+championizes
+champions
+championship
+championship's
+championships
+Champlain
+champlainian
+champollion
+champs
+chance
+chanced
+chanceful
+chancel
+chancellery
+chancellor
+chancellors
+chancellorship
+chancellorships
+Chancellorsville
+chancellory
+chancels
+chanceries
+chancery
+chances
+chancier
+chanciness
+chancing
+chancre
+chancres
+chancroid
+chancroidal
+chancrous
+chancy
+chandelier
+chandelier's
+chandeliers
+chandelle
+chandernagore
+chandigarh
+Chandigarh
+chandler
+chandlery
+chandragupta
+Chandy
+Chandy's
+chanel
+Chang
+changan
+changchiakow
+changchow
+changchun
+change
+changeability
+changeable
+changeableness
+changeably
+changed
+changeful
+changefully
+changefulness
+changeless
+changelessly
+changelessness
+changeling
+changeover
+changeover's
+changeovers
+changer
+changers
+changes
+changing
+changsha
+changteh
+channel
+channeled
+channeler
+channeler's
+channelers
+channeling
+channelization
+channelization's
+channelizations
+channelize
+channelizes
+channels
+channing
+Channing
+chanson
+chant
+chanted
+chanter
+chanterelle
+chanteuse
+chanteuses
+chantey
+chanticleer
+chanticleer's
+chanticleers
+chantier
+chanties
+Chantilly
+chanting
+chantries
+chantry
+chants
+chanty
+chanukah
+Chao
+Chao's
+chaoan
+chaochow
+chaos
+chaotic
+chaotically
+chap
+chap's
+chaparejos
+chaparral
+chapati
+chapatti
+chapbook
+chape
+chapeau
+chapeaus
+chapeaux
+chapel
+chapel's
+chapelles
+chapels
+chaperon
+chaperonage
+chaperone
+chaperoned
+chaperones
+chapfallen
+chapiter
+chaplain
+chaplain's
+chaplaincies
+chaplaincy
+chaplains
+chaplet
+chapleted
+chaplets
+Chaplin
+chaplinesque
+Chapman
+chappal
+chappie
+chapping
+chaps
+chapstick
+chapter
+chapter's
+chaptered
+chapterhouse
+chaptering
+chapters
+char
+charabanc
+characin
+character
+character's
+charactered
+characterful
+charactering
+characteristic
+characteristic's
+characteristically
+characteristics
+characterizable
+characterizable's
+characterizables
+characterization
+characterization's
+characterizations
+characterize
+characterized
+characterizer
+characterizers
+characterizes
+characterizing
+characterless
+characterological
+characterologically
+characters
+charactery
+charade
+charades
+charas
+charcoal
+charcoaled
+charcoals
+charcot
+charcuterie
+chard
+chardin
+chare
+charente
+charge
+chargeable
+chargeableness
+charged
+charger
+chargers
+charges
+charging
+charier
+charily
+chariness
+charing
+chariot
+chariot's
+charioteer
+charioteers
+chariots
+charism
+charisma
+charismata
+charismatic
+charisms
+charitable
+charitableness
+charitably
+charities
+charity
+charity's
+charivari
+charkha
+charladies
+charlady
+charlatan
+charlatanism
+charlatanry
+charlatans
+Charlemagne
+Charlemagne's
+Charlemagnes
+charleroi
+Charles
+Charleston
+Charley
+Charlie
+charlock
+Charlotte
+Charlottenburg
+Charlottesville
+Charlottetown
+Charlton
+charm
+charmed
+charmer
+charmers
+Charmeuse
+charminar
+charming
+charmingly
+charmless
+charms
+charnel
+charnock
+charollais
+Charon
+Charon's
+Charpentier
+charpoy
+charqui
+charr
+charred
+charring
+chars
+chart
+Charta
+chartable
+charted
+charter
+charterage
+chartered
+charterer
+charterers
+charterhouse
+chartering
+charters
+charting
+chartings
+Chartism
+chartist
+chartists
+chartless
+chartography
+Chartres
+chartreuse
+chartroom
+chartrooms
+charts
+chartularies
+chartulary
+charwoman
+charwomen
+chary
+Charybdis
+chase
+chased
+chaser
+chasers
+chases
+Chasidim
+chasing
+chasm
+chasm's
+chasms
+chassepot
+chasseur
+chassis
+chaste
+chastely
+chasten
+chastened
+chastener
+chasteness
+chastening
+chaster
+chastest
+chastise
+chastised
+chastisement
+chastisements
+chastiser
+chastisers
+chastises
+chastising
+chastity
+chasuble
+chat
+chateau
+chateau's
+chateaubriand
+chateaus
+chateaux
+chatelain
+chatelaine
+chatelaines
+chatelains
+Chatham
+Chatham's
+chatoyance
+chatoyancy
+chatoyant
+chats
+Chatsworth
+Chatsworth's
+chattahoochee
+Chattahoochee
+Chattanooga
+chatted
+chattel
+chattelization
+chattelization's
+chattelizations
+chattelize
+chattelizes
+chattels
+chatter
+chatterbox
+chatterboxes
+chattered
+chatterer
+chatterers
+chattering
+chatterly
+chatters
+Chatterton
+chattier
+chattily
+chattiness
+chatting
+chatty
+Chaucer
+Chaucerian
+chauffer
+chauffers
+chauffeur
+chauffeured
+chauffeuring
+chauffeurs
+chaulmoogra
+Chauncey
+Chauncey's
+chaunt
+chausses
+chaussure
+chaussures
+Chautauqua
+chauvinism
+chauvinism's
+chauvinist
+chauvinist's
+chauvinistic
+chauvinistically
+chauvinists
+chavannes
+chaw
+chayote
+cheap
+cheapen
+cheapened
+cheapening
+cheapens
+cheaper
+cheapest
+cheapie
+cheapish
+cheapishly
+cheaply
+cheapness
+cheapskate
+cheapskates
+cheat
+cheated
+cheater
+cheaters
+cheating
+cheats
+cheb
+cheboksary
+Chechen
+check
+checkable
+checkbits
+checkbook
+checkbook's
+checkbooks
+checked
+checker
+checkerberry
+checkerbloom
+checkerboard
+checkerboards
+checkered
+checkering
+checkers
+checking
+checkless
+checklist
+checklists
+checkmark
+checkmarks
+checkmate
+checkmated
+checkmates
+checkmating
+checkoff
+checkout
+checkouts
+checkpoint
+checkpoint's
+checkpoints
+checkrein
+checkroom
+checkrooms
+checkrow
+checks
+checksum
+checksum's
+checksummed
+checksumming
+checksums
+checkup
+checkups
+checky
+cheddar
+cheddite
+cheek
+Cheek
+cheek's
+cheekbone
+cheekbones
+cheekful
+cheekier
+cheekily
+cheekiness
+cheekpiece
+cheeks
+cheeky
+cheep
+cheeps
+cheer
+cheered
+cheerer
+cheerers
+cheerful
+cheerfulize
+cheerfulizes
+cheerfully
+cheerfulness
+cheerier
+cheerily
+cheeriness
+cheering
+cheerio
+cheerlead
+cheerleader
+cheerleaders
+cheerless
+cheerlessly
+cheerlessness
+cheerly
+cheers
+cheery
+cheese
+cheese's
+cheeseboard
+cheeseburger
+cheeseburgers
+cheesecake
+cheesecake's
+cheesecakes
+cheesecloth
+cheesecloths
+cheesed
+cheesemaker
+cheesemakers
+cheesemaking
+cheesemonger
+cheeseparer
+cheeseparing
+cheeseparings
+cheeses
+cheesewood
+cheesier
+cheesiness
+cheesing
+cheesy
+cheetah
+cheetahs
+chef
+chef's
+chefdom
+chefoo
+chefs
+cheiron
+cheju
+Chekhov
+chekhov
+chekiang
+chela
+chelatable
+chelate
+chelated
+chelating
+chelation
+chelations
+chelicera
+chelicerate
+cheliform
+Chellean
+Chelmsford
+cheloid
+chelonian
+chelp
+Chelsea
+Chelsea's
+Cheltenham
+Chelyabinsk
+Chelyuskin
+chemic
+chemical
+chemicalization
+chemicalization's
+chemicalizations
+chemicalize
+chemicalizes
+chemically
+chemicals
+chemiluminescence
+chemiluminescent
+chemin
+chemische
+chemise
+chemises
+chemisette
+chemism
+chemisorb
+chemisorption
+chemist
+chemist's
+chemistries
+chemistry
+chemists
+chemmy
+chemnitz
+chemoautotrophic
+chemoautotrophically
+chemoautotrophy
+chemometrics
+chemoprophylaxis
+chemoreception
+chemoreceptive
+chemoreceptivity
+chemoreceptor
+chemoreceptors
+chemosmosis
+chemosphere
+chemostat
+chemosynthesis
+chemotaxis
+chemotherapy
+chemotherapy's
+chemotropism
+chempaduk
+chemulpo
+chemurgy
+Chen
+chenab
+Cheney
+Cheney's
+cheng
+Cheng
+Chengchow
+Chengteh
+Chengtu
+chenille
+chenopod
+Cheongsam
+Cheops
+Cherbourg
+Cheremiss
+Cheremkhovo
+Cherenkov
+cheribon
+cherish
+cherishable
+cherished
+cherisher
+cherishes
+cherishing
+Cheriton
+Cheriton's
+Chernovtsy
+Chernozem
+Cherokee
+Cherokees
+cheroot
+cherries
+cherry
+cherry's
+cherrylike
+cherrystone
+chersonese
+chert
+Chertsey
+cherub
+cherub's
+cherubic
+cherubically
+cherubim
+Cherubini
+cherublike
+cherubs
+chervil
+chervils
+chervonets
+Cheryl
+Cheryl's
+Chesapeake
+Cheshire
+cheshunt
+chess
+chessboard
+chessboards
+Chessel
+chessman
+chessmen
+chest
+chester
+Chesterfield
+Chesterfieldian
+Chesterton
+chestful
+chestier
+chestnut
+chestnut's
+chestnuts
+chests
+chesty
+chetah
+Chetnik
+Cheval
+chevalier
+cheveron
+chevet
+cheviot
+chevrette
+Chevrolet
+chevron
+chevroned
+chevrotain
+Chevy
+chew
+chewa
+chewable
+chewed
+chewer
+chewers
+chewie
+chewing
+chews
+chewy
+Cheyenne
+Cheyennes
+chi
+chiack
+Chian
+Chiang
+Chiang's
+chianti
+chiapas
+chiaroscurist
+chiaroscuro
+chiasma
+chiasmatic
+chiasmus
+chiastic
+chiastolite
+chiat
+chiaus
+chiba
+Chibchan
+chibouk
+chic
+Chicago
+Chicago's
+Chicagoan
+Chicagoans
+chicalote
+Chicana
+Chicana's
+Chicanas
+chicane
+chicanery
+chicaning
+Chicano
+Chicano's
+Chicanos
+chiccory
+chichagof
+chichen
+chichester
+chichewa
+chichi
+chichihaerh
+chick
+chickabiddy
+chickadee
+chickadee's
+chickadees
+Chickasaw
+chickasaws
+Chickasaws
+chicken
+chickened
+chickenhearted
+chickening
+chickenpox
+chickens
+chickpea
+chickpea's
+chickpeas
+chicks
+chickweed
+chickweeds
+chiclayo
+chicle
+chicly
+chicness
+chicory
+chicos
+chidden
+chide
+chided
+chides
+chiding
+chief
+chief's
+chiefdom
+chiefdoms
+chiefly
+chiefs
+chieftain
+chieftain's
+chieftaincies
+chieftaincy
+chieftains
+chieftainship
+chiffchaff
+chiffon
+chiffonier
+chifley
+chigetai
+chigger
+chiggers
+chignon
+chigwell
+chihli
+Chihuahua
+chilblain
+chilblains
+child
+child's
+childbear
+childbearing
+childbed
+childbirth
+childbirths
+childcare
+Childermas
+childhood
+childhoods
+childish
+childishly
+childishness
+childless
+childlessness
+childlike
+childlikeness
+childly
+childminder
+childminders
+childminding
+childrearing
+children
+children's
+Chile
+Chilean
+Chiles
+chili
+chiliad
+chiliasm
+chilies
+chilkoot
+chill
+chilled
+chiller
+chillers
+chilli
+chillier
+chillies
+chillily
+chilliness
+chilling
+chillingly
+chillness
+chillon
+chills
+chillum
+chilly
+chilopod
+chilpancingo
+Chiltern
+Chilton
+chilung
+chimaera
+chimb
+chimborazo
+chimbote
+chime
+chime's
+chimed
+chimer
+chimera
+chimere
+chimeric
+chimerical
+chimerically
+chimerism
+chimes
+chiming
+Chimique
+Chimiques
+chimkent
+chimney
+chimney's
+chimneyed
+chimneypiece
+chimneypot
+chimneys
+chimp
+chimpanzee
+chimpanzees
+chimps
+chin
+chin's
+China
+china
+chinaberry
+chinagraph
+Chinaman
+Chinamen
+chinan
+Chinatown
+Chinatown's
+chinaware
+chinbone
+chincapin
+chinch
+chincherinchee
+chinchilla
+chindit
+chindwin
+chine
+Chinee
+chines
+Chinese
+Chinese's
+Ching
+ching
+chinghai
+chingtao
+chink
+chinkapin
+chinked
+chinkiang
+chinks
+chinless
+chinned
+chinner
+chinners
+chinning
+chino
+chinoiserie
+Chinook
+Chinookan
+chinos
+chinquapin
+chins
+chintz
+chintzier
+chintzy
+chinwag
+Chionodoxa
+chios
+chip
+chip's
+chipboard
+chipmunk
+chipmunk's
+chipmunks
+chipolata
+chipped
+Chippendale
+chipper
+chippewa
+Chippewa
+chipping
+chippy
+chips
+chirac
+chirau
+chirico
+chirm
+chirographer
+chirographic
+chirographical
+chirography
+chiromancer
+chiromancy
+Chiron
+chiropodist
+chiropodists
+chiropody
+chiropractic
+chiropractor
+chiropractors
+chiropter
+chiropteran
+chirp
+chirped
+chirpily
+chirping
+chirps
+chirpy
+chirrup
+chirruped
+chirruping
+chirrups
+chirurgeon
+chisel
+chiseled
+chiseler
+chiselers
+chiseling
+chiselings
+chisels
+chishima
+Chisholm
+chisimaio
+chit
+Chita
+chital
+chitarrone
+chitchat
+chitin
+chitinous
+chitlings
+chiton
+chits
+chittagong
+chitter
+chittered
+chittering
+chitterlings
+chitters
+chiv
+chivalric
+chivalrous
+chivalrously
+chivalrousness
+chivalry
+chivaree
+chive
+chives
+chivied
+chivvied
+chivvy
+chivvying
+chivy
+chivying
+Chkalov
+chlamydate
+chlamydeous
+chlamydospore
+chlodwig
+Chloe
+chloracne
+chloral
+chlorambucil
+chloramine
+chloramphenicol
+chlorate
+chlordane
+Chlorella
+chlorenchyma
+chloric
+chloride
+chlorides
+chloridize
+chloridizes
+chlorinate
+chlorinated
+chlorinates
+chlorination
+chlorine
+chlorinity
+chlorinize
+chlorinizes
+chlorite
+chloritic
+chloroacetic
+chlorobenzene
+chloroform
+chloroformization
+chloroformization's
+chloroformizations
+chloroformize
+chloroformizes
+chlorohydrin
+Chloromycetin
+chlorophyll
+chlorophyllose
+chlorophyllous
+chloropicrin
+chloroplast
+chloroplast's
+chloroplasts
+chloroplatinate
+chloroprene
+chloroquine
+chlorosis
+chlorothiazide
+chlorotic
+chlorous
+chlorpromazine
+chlorpropamide
+chlortetracycline
+choanocyte
+Chocho
+chock
+chock's
+chockablock
+chocked
+chocker
+chocking
+chocks
+Choco
+chocolate
+chocolate's
+chocolates
+chocolaty
+Choctaw
+Choctaws
+chogyal
+choice
+choicely
+choiceness
+choicer
+choices
+choicest
+choir
+choir's
+choirboy
+choirmaster
+choirs
+choiseul
+choke
+chokeberry
+chokebore
+chokecherry
+choked
+chokedamp
+choker
+chokers
+chokes
+choking
+chokingly
+choko
+choky
+cholecalciferol
+cholecyst
+cholecystectomy
+choler
+cholera
+choleraic
+choleric
+cholesterol
+choli
+cholic
+choline
+cholinergic
+cholinesterase
+cholla
+chollers
+cholon
+cholula
+chomp
+Chomsky
+Chomsky's
+chon
+chondrify
+chondriosome
+chondrite
+chondroma
+chondrule
+choof
+chook
+choom
+choose
+chooser
+choosers
+chooses
+choosey
+choosier
+choosing
+choosy
+chop
+chopfallen
+chophouse
+Chopin
+chopine
+choplogic
+chopped
+chopper
+chopper's
+choppers
+choppier
+choppily
+choppiness
+chopping
+choppy
+chops
+chopstick
+chopsticks
+choragus
+choral
+chorale
+chorales
+chorally
+chord
+chord's
+chordal
+chordata
+chordate
+chorded
+chording
+chordophone
+chords
+chore
+chorea
+choreman
+choreodrama
+choreograph
+choreographed
+choreographer
+choreographers
+choreographic
+choreographically
+choreography
+chores
+choriamb
+choric
+chorically
+chorine
+chorines
+choring
+chorion
+chorister
+chorization
+chorization's
+chorizations
+chorizo
+chorley
+chorographic
+chorography
+choroid
+chorology
+chortle
+chortled
+chortles
+chortling
+chorus
+chorused
+choruses
+chorusmaster
+choryza
+chose
+chosen
+chota
+chott
+Chou
+Chou's
+chough
+choux
+chow
+chowder
+chowderhead
+chowderheaded
+chowders
+chowhound
+chowtime
+chrematistic
+chresard
+chrestomathy
+Chris
+chrism
+chrismatory
+chrisom
+chrissake
+Chrissie
+Christ
+Christadelphian
+Christchurch
+christen
+Christendom
+christened
+christening
+christens
+Christensen
+Christensen's
+Christenson
+Christhood
+Christian
+Christian's
+Christiana
+Christiana's
+Christianity
+Christianization
+Christianization's
+Christianizations
+Christianize
+Christianizer
+Christianizers
+Christianizes
+Christianizing
+Christians
+Christiansen
+Christianson
+Christianson's
+Christie
+Christina
+Christina's
+Christine
+Christlike
+Christmas
+Christmastide
+Christmastime
+Christoff
+Christoffel
+Christology
+Christoph
+Christoph's
+Christophe
+Christopher
+Christopher's
+christsake
+Christy
+chromate
+chromatic
+chromatically
+chromaticism
+chromaticity
+chromaticness
+chromatics
+chromatid
+chromatin
+chromatize
+chromatizes
+chromatogram
+chromatogram's
+chromatograms
+chromatograph
+chromatographic
+chromatographically
+chromatography
+chromatology
+chromatolysis
+chromatolytic
+chromatophore
+chrome
+chromed
+chromes
+chromic
+chromicize
+chromicizes
+chromide
+chrominance
+chroming
+chromite
+chromium
+chromize
+chromized
+chromizes
+chromizing
+chromo
+chromogen
+chromogenic
+chromolithograph
+chromolithography
+chromomere
+chromonema
+chromophore
+chromoplast
+chromoprotein
+chromosomal
+chromosome
+chromosome's
+chromosomes
+chromosomic
+chromosphere
+chromospheric
+chromous
+chromyl
+chronaxie
+chronic
+chronical
+chronically
+chronicity
+chronicle
+chronicled
+chronicler
+chroniclers
+chronicles
+chronobiology
+chronogram
+chronogram's
+chronogrammatic
+chronogrammatical
+chronograms
+chronograph
+chronographic
+chronographs
+chronography
+chronologer
+chronologers
+chronologic
+chronological
+chronologically
+chronologies
+chronologist
+chronologists
+chronologize
+chronologizes
+chronology
+chronology's
+chronometer
+chronometer's
+chronometers
+chronometric
+chronometrical
+chronometrically
+chronometry
+chronon
+chronoscope
+chronoscopes
+chrysalid
+chrysalis
+chrysanthemum
+chrysanthemum's
+chrysanthemums
+chrysarobin
+chryselephantine
+Chrysler
+chrysoberyl
+chrysolite
+chrysoprase
+chrysostom
+chrysotile
+chthonian
+chub
+chubb
+chubbier
+chubbiest
+chubbily
+chubbiness
+chubby
+chubbyness
+chubs
+chuck
+chuck's
+chucked
+chuckhole
+chucking
+chuckle
+chuckled
+chucklehead
+chuckleheaded
+chuckleheads
+chuckles
+chucklesome
+chuckling
+chucklingly
+chucks
+chuckwalla
+chudskoye
+chufa
+chuff
+chuffed
+chuffier
+chuffing
+chuffy
+chug
+chugalug
+chugger
+chugging
+chugs
+chukar
+Chukchi
+chukka
+chukker
+chum
+chummier
+chummily
+chumminess
+chumming
+chummy
+chump
+chump's
+chumping
+chumps
+chums
+chumship
+chunder
+chunderous
+Chung
+Chungking
+chunk
+chunk's
+chunkier
+chunkily
+chunks
+chunky
+chunnel
+chunter
+chupatti
+chupattis
+chuppah
+chur
+church
+churched
+churches
+churchgo
+churchgoer
+churchgoers
+churchgoing
+churchianity
+Churchill
+Churchillian
+churching
+churchless
+churchliness
+churchly
+churchman
+churchmanship
+churchmen
+churchwarden
+churchwardens
+churchwoman
+churchwomen
+churchy
+churchyard
+churchyard's
+churchyards
+churidars
+churinga
+churl
+churlish
+churlishly
+churlishness
+churls
+churn
+churned
+churner
+churners
+churning
+churns
+churr
+Churrigueresque
+chute
+chute's
+chuted
+chutes
+chuting
+chutist
+chutists
+chutney
+chutneys
+chuttie
+chutzpa
+chutzpah
+Chuvash
+chyack
+chyle
+chyme
+chymosin
+chymotrypsin
+chymotrypsinogen
+CIA
+ciao
+cibber
+ciborium
+cic
+cicada
+cicadas
+cicala
+cicatricle
+cicatrix
+Ciccolini
+Cicely
+Cicero
+cicerone
+Ciceronian
+Ciceronianize
+Ciceronianizes
+cichlid
+cichlids
+Cid
+cider
+ciders
+cienfuegos
+cig
+cigar
+cigar's
+cigarette
+cigarette's
+cigarettes
+cigarillo
+cigarillos
+cigars
+cii
+cil
+cilia
+ciliary
+ciliate
+ciliated
+ciliately
+ciliates
+cilice
+cilicia
+Cilician
+ciliolate
+cilium
+cimabue
+Cimbri
+cimex
+Cimmerian
+cimon
+cinch
+cinches
+Cinchona
+cinchonidine
+cinchonine
+cinchonism
+cinchonize
+Cincinnati
+Cincinnatus
+cincture
+cinder
+cinder's
+Cinderella
+cinders
+cindery
+Cindy
+Cindy's
+cine
+cineaste
+cinema
+cinemagoer
+cinemagoers
+cinemas
+Cinemascope
+cinematheque
+cinematic
+cinematically
+cinematize
+cinematograph
+cinematographer
+cinematographic
+cinematographical
+cinematographically
+cinematographs
+cinematography
+cineol
+Cinerama
+Cineraria
+cinerarium
+cinereous
+cinerin
+cingulum
+cinna
+cinnabar
+cinnamic
+cinnamon
+cinquain
+cinque
+cinquecento
+cinquefoil
+cinzano
+Cipango
+cipher
+cipher's
+ciphered
+ciphering
+ciphers
+ciphertext
+ciphony
+cipolin
+circa
+circadian
+circassia
+Circassian
+Circe
+circinate
+circinately
+Circinus
+circle
+circled
+circler
+circles
+circlet
+circling
+circlorama
+circuit
+circuit's
+circuital
+circuited
+circuiting
+circuitous
+circuitously
+circuitousness
+circuitry
+circuits
+circuity
+circulant
+circular
+circular's
+circularities
+circularity
+circularization
+circularization's
+circularizations
+circularize
+circularized
+circularizer
+circularizers
+circularizes
+circularizing
+circularly
+circularness
+circulars
+circulatable
+circulate
+circulated
+circulates
+circulating
+circulation
+circulations
+circulative
+circulator
+circulators
+circulatory
+circumambient
+circumambiently
+circumambulate
+circumambulates
+circumbendibus
+circumcircle
+circumcise
+circumcised
+circumciser
+circumcises
+circumcising
+circumcision
+circumcisions
+circumference
+circumferences
+circumferential
+circumferentially
+circumflex
+circumflexes
+circumfluent
+circumfluous
+circumfuse
+circumfused
+circumfuses
+circumfusing
+circumfusion
+circumfusions
+circumjacent
+circumlocution
+circumlocution's
+circumlocutions
+circumlocutory
+circumlunar
+circummartian
+circumnavigate
+circumnavigated
+circumnavigates
+circumnavigating
+circumnavigation
+circumnavigations
+circumnavigator
+circumnavigators
+circumnutate
+circumpolar
+circumscissile
+circumscribe
+circumscribed
+circumscribes
+circumscribing
+circumscription
+circumscriptions
+circumsolar
+circumspect
+circumspection
+circumspections
+circumspectly
+circumsphere
+circumstance
+circumstance's
+circumstanced
+circumstances
+circumstancing
+circumstantial
+circumstantiality
+circumstantially
+circumstantiate
+circumstantiated
+circumstantiates
+circumstantiating
+circumvallate
+circumvallated
+circumvallates
+circumvallating
+circumvallation
+circumvallations
+circumvent
+circumventable
+circumvented
+circumventing
+circumvention
+circumventions
+circumvents
+circumvolution
+circumvolutions
+circus
+circus's
+circuses
+circusy
+cirenaica
+cirencester
+cirque
+cirques
+cirrate
+cirrhoses
+cirrhosis
+cirrhotic
+cirri
+cirripede
+cirrocumulus
+cirrose
+cirrostratus
+cirrous
+cirrus
+cirsoid
+Cisalpine
+ciscaucasia
+cisco
+ciskei
+cislunar
+cispadane
+cissoid
+cist
+cistaceous
+Cistercian
+cistern
+cistern's
+cisterna
+cisterns
+cistron
+Cistus
+cit
+citable
+citadel
+citadel's
+citadels
+citation
+citation's
+citational
+citations
+cite
+cited
+cites
+cithara
+cither
+citied
+cities
+citified
+citify
+citing
+citizen
+citizen's
+citizeness
+citizenize
+citizenizes
+citizenly
+citizenry
+citizens
+citizenship
+citole
+citral
+citrate
+citrated
+citreous
+citric
+citriculture
+citrin
+citrine
+Citroen
+citron
+citronella
+citrulline
+citrus
+citruses
+cittern
+citterns
+City
+city
+city's
+cityscape
+cityscapes
+citywide
+ciudad
+civ
+civet
+civic
+civically
+civics
+civie
+civies
+civil
+civilian
+civilian's
+civilianization
+civilianizations
+civilianize
+civilianized
+civilianizes
+civilianizing
+civilians
+civilists
+civilities
+civility
+civilizable
+civilizable's
+civilizables
+civilization
+civilization's
+civilizational
+civilizational's
+civilizationals
+civilizations
+civilize
+civilized
+civilizedness
+civilizer
+civilizers
+civilizes
+civilizing
+civilly
+civism
+civvy
+clabber
+clachan
+clack
+clacker
+clackers
+clackmannan
+clacks
+Clacton
+clactonian
+clad
+cladded
+cladding
+cladoceran
+cladode
+cladophora
+cladophyll
+clads
+claim
+claimable
+claimant
+claimant's
+claimants
+claimed
+claimer
+claiming
+claims
+clairaudience
+Claire
+clairvoyance
+clairvoyant
+clairvoyantly
+clairvoyants
+clam
+clam's
+clamant
+clamantly
+clambake
+clambakes
+clamber
+clambered
+clamberer
+clambering
+clambers
+clammier
+clammily
+clamminess
+clamming
+clammy
+clamor
+clamored
+clamorer
+clamorer's
+clamorers
+clamoring
+clamorist
+clamorist's
+clamorists
+clamorous
+clamorously
+clamorousness
+clamors
+clamp
+clampdown
+clamped
+clamper
+clamping
+clamps
+clams
+clamshell
+clamshells
+clamworm
+clamworms
+clan
+clandestine
+clandestinely
+clandestineness
+clang
+clanged
+clanger
+clangers
+clanging
+clangor
+clangor's
+clangored
+clangoring
+clangorous
+clangorously
+clangors
+clangs
+clank
+clanked
+clanking
+clankingly
+clannish
+clannishly
+clannishness
+clans
+clansman
+clansmen
+clap
+clapboard
+clapboards
+Clapeyron
+Clapham
+clapped
+clapper
+clapperboard
+clapperboards
+clapperclaw
+clappers
+clapping
+claps
+Clapton
+claptrap
+claque
+claques
+Clara
+Clarabella
+Clare
+Claremont
+Clarence
+Clarenceux
+Clarendon
+Clarendon's
+claret
+clarets
+clarification
+clarifications
+clarified
+clarifier
+clarifies
+clarify
+clarifying
+clarinet
+clarinetist
+clarinets
+clarinettist
+clarino
+clarion
+clarity
+Clark
+Clarke
+Clarkia
+claro
+clarridge
+Clarridge
+clarts
+clary
+clash
+clashed
+clasher
+clashes
+clashing
+clasp
+clasped
+clasper
+clasping
+clasps
+class
+classed
+classer
+classes
+classic
+classical
+classicalism
+classicalist
+classicality
+classicalize
+classicalizes
+classically
+classicism
+classicist
+classicistic
+classicization
+classicize
+classicized
+classicizes
+classicizing
+classics
+classier
+classiest
+classifiable
+classification
+classifications
+classificatorily
+classificatory
+classified
+classifieds
+classifier
+classifiers
+classifies
+classify
+classifying
+classiness
+classing
+classis
+classless
+classlessness
+classmate
+classmate's
+classmates
+classroom
+classroom's
+classrooms
+classwork
+classy
+clastic
+clathrate
+clatter
+clattered
+clatterer
+clattering
+clatteringly
+clatters
+clattery
+Claude
+Claudel
+Claudia
+claudication
+Claudio
+Claudius
+Claus
+clausal
+clause
+clause's
+Clausen
+clauses
+Clausewitz
+Clausius
+claustral
+claustrophobia
+claustrophobic
+clavate
+clave
+claver
+clavicembalo
+clavichord
+clavichordist
+clavicle
+clavicle's
+clavicles
+clavicorn
+clavicular
+clavier
+clavierist
+clavieristic
+claviform
+clavius
+claw
+clawed
+clawer
+clawing
+claws
+clay
+clay's
+claybank
+clayed
+clayey
+claying
+clayish
+claymore
+claypan
+clays
+claystone
+Clayton
+Clayton's
+Claytonia
+clayware
+clean
+cleanable
+cleaned
+cleaner
+cleaner's
+cleaners
+cleanest
+cleanhanded
+cleaning
+cleanlier
+cleanliness
+cleanly
+cleanness
+cleans
+cleanse
+cleansed
+cleanser
+cleansers
+cleanses
+cleansing
+cleanskin
+cleanthes
+cleanup
+cleanup's
+cleanups
+clear
+clearable
+clearance
+clearance's
+clearances
+clearcole
+clearcut
+cleared
+clearer
+clearest
+clearheaded
+clearheadedly
+clearheadedness
+clearing
+clearing's
+clearinghouse
+clearings
+clearly
+clearness
+clears
+clearstory
+Clearwater
+clearway
+clearways
+clearwing
+cleat
+cleated
+cleating
+cleats
+cleavage
+cleavages
+cleave
+cleaved
+cleaver
+cleavers
+cleaves
+cleaving
+cleck
+cleek
+cleethorpes
+clef
+clef's
+clefs
+cleft
+cleft's
+clefts
+cleg
+cleidoic
+cleisthenes
+cleistogamy
+clem
+Clematis
+clemence
+clemenceau
+clemency
+clemens
+Clemens
+clement
+clemente
+Clemente
+Clementine
+clemently
+clements
+Clemmons
+Clemson
+clench
+clenched
+clenches
+clenching
+Cleome
+cleon
+Cleopatra
+clepe
+cleped
+clepes
+cleping
+clepsydra
+cleptomania
+clerestory
+clergy
+clergyman
+clergymen
+cleric
+clerical
+clericalism
+clericalist
+clericalize
+clericalizes
+clerically
+clericals
+clerics
+clerihew
+clerk
+clerk's
+clerked
+clerkess
+clerking
+clerkly
+clerks
+clerkship
+cleruchy
+Cleve
+cleveite
+Cleveland
+Clevenger
+clever
+cleverer
+cleverest
+cleverish
+cleverly
+cleverness
+clevis
+clianthus
+Cliburn
+cliche
+cliche's
+cliches
+clichy
+click
+clicked
+clicker
+clickers
+clicking
+clicks
+client
+client's
+clientage
+cliental
+clientele
+clients
+cliff
+cliff's
+cliffhang
+cliffhanger
+cliffhanging
+Clifford
+cliffs
+cliffy
+Clifton
+Clifton's
+clii
+climacteric
+climactic
+climactically
+climate
+climate's
+climates
+climatic
+climatically
+climatize
+climatizes
+climatological
+climatologically
+climatologist
+climatologists
+climatology
+climax
+climaxed
+climaxes
+climaxing
+climb
+climbable
+climbed
+climber
+climbers
+climbing
+climbs
+clime
+clime's
+climes
+clinandrium
+clinch
+clinched
+clincher
+clinches
+clinching
+clinchingly
+cline
+clines
+cling
+clingfish
+clinging
+clings
+clingy
+clinic
+clinic's
+clinical
+clinically
+clinician
+clinicians
+clinics
+clink
+clinked
+clinker
+clinkered
+clinkering
+clinkers
+clinkstone
+clinometer
+clinometer's
+clinometers
+clinometric
+clinometry
+clinostat
+clinquant
+Clint
+Clinton
+Clinton's
+Clintonia
+Clio
+clip
+clip's
+clipboard
+clipboards
+clipped
+clipper
+clipper's
+clippers
+Clipperton
+clippie
+clipping
+clipping's
+clippings
+clips
+clipsheet
+clique
+clique's
+cliques
+cliquey
+cliquish
+cliquishly
+cliquishness
+clishmaclaver
+clisthenes
+clitellum
+clitic
+clitoral
+clitoric
+clitoris
+cliv
+Clive
+clix
+cloaca
+cloacal
+cloak
+cloak's
+cloaked
+cloaking
+cloakroom
+cloakrooms
+cloaks
+clobber
+clobbered
+clobbering
+clobbers
+cloche
+clock
+clocked
+clocker
+clockers
+clocking
+clockings
+clocklike
+clockmaker
+clocks
+clockwatcher
+clockwise
+clockwork
+clod
+clod's
+cloddish
+cloddishness
+cloddy
+clodhopper
+clodhopper's
+clodhoppers
+clodhopping
+clods
+clog
+clog's
+clogged
+clogging
+clogs
+cloister
+cloister's
+cloistered
+cloistering
+cloisters
+cloistral
+cloistress
+clomb
+clomp
+clomped
+clomping
+clomps
+clonal
+clonally
+clone
+cloned
+cloner
+cloners
+clones
+clonic
+clonicity
+cloning
+clonk
+clonked
+clonking
+clonks
+clonus
+clop
+clopped
+clopping
+clops
+closable
+close
+closeable
+closed
+closedown
+closefisted
+closely
+closemouthed
+closeness
+closenesses
+closeout
+closer
+closers
+closes
+closest
+closet
+closeted
+closetful
+closets
+closeup
+closeups
+closing
+closings
+Clostridium
+closure
+closure's
+closured
+closures
+closuring
+clot
+cloth
+clothbound
+clothe
+clothed
+clothes
+clothesbrush
+clotheshorse
+clothesline
+clotheslines
+clothesman
+clothesmen
+clothespin
+clothespress
+clothier
+clothing
+Clotho
+cloths
+clotted
+clotting
+cloture
+clotured
+clotures
+cloturing
+cloud
+cloudberry
+cloudburst
+cloudbursts
+clouded
+cloudier
+cloudiest
+cloudily
+cloudiness
+clouding
+cloudland
+cloudless
+cloudlessly
+cloudlessness
+cloudlet
+cloudlets
+clouds
+cloudscape
+cloudy
+clouet
+clough
+clout
+clove
+cloven
+clover
+cloverleaf
+cloverleaves
+cloves
+clovis
+clown
+clownery
+clowning
+clownish
+clownishly
+clownishness
+clowns
+cloy
+cloying
+cloyingly
+club
+club's
+clubable
+clubbable
+clubbed
+clubber
+clubbier
+clubbiness
+clubbing
+clubby
+clubfoot
+clubfooted
+clubhaul
+clubhouse
+clubland
+clubman
+clubroom
+clubrooms
+clubs
+cluck
+clucked
+clucking
+clucks
+clucky
+clue
+clue's
+clueing
+clueless
+clues
+cluing
+Cluj
+clumber
+clump
+clumped
+clumping
+clumps
+clumpy
+clumsier
+clumsiest
+clumsily
+clumsiness
+clumsy
+clung
+clunk
+clunked
+clunker
+clunkiness
+clunking
+clunks
+clunky
+clunkyly
+cluny
+clupeid
+clupeoid
+clustan
+cluster
+clusterability
+clusterable
+clustered
+clustering
+clusterings
+clusters
+clustery
+clutch
+clutched
+clutches
+clutching
+clutchy
+clutter
+cluttered
+cluttering
+clutters
+Cluytens
+clvi
+clvii
+clwyd
+clxi
+clxii
+clxiv
+clxix
+clxvi
+clxvii
+Clyde
+clydebank
+Clydesdale
+clype
+clypeus
+clyster
+Clytemnestra
+cm
+CMOS
+cnidarian
+cnidoblast
+cnidus
+cnossus
+cnut
+Co
+CO
+coacervate
+coach
+coach's
+coached
+coacher
+coaches
+coaching
+coachman
+coachmen
+coachwood
+coachwork
+coact
+coaction
+coactive
+coadapted
+coadjutant
+coadjutor
+coadjutrices
+coadjutrix
+coadunate
+coadunated
+coadunates
+coadunating
+coadunation
+coagulability
+coagulable
+coagulant
+coagulants
+coagulase
+coagulate
+coagulated
+coagulates
+coagulating
+coagulation
+coagulum
+coahuila
+coal
+coaled
+coaler
+coalesce
+coalesced
+coalescence
+coalescent
+coalesces
+coalescing
+coalface
+coalfield
+coalfields
+coalfish
+coalification
+coalify
+coaling
+coalition
+coalitionist
+coalize
+coalizer
+coalizers
+coalizes
+coalmine
+coalmines
+coalport
+coals
+coaming
+coapt
+coaptation
+coaptation's
+coapted
+coapting
+coapts
+coarctate
+coarctation
+coarse
+coarsely
+coarsen
+coarsened
+coarseness
+coarsening
+coarser
+coarsest
+coarticulation
+coarticulatory
+coast
+Coast
+coastal
+coasted
+coaster
+coasters
+coastguard
+coastguardman
+coastguardsman
+coasting
+coastland
+coastline
+coasts
+coastward
+coastwards
+coastwise
+coat
+Coatbridge
+coated
+coatee
+coater
+coaters
+Coates
+coati
+coating
+coatings
+coatrack
+coatroom
+coats
+coattail
+coattails
+coauthor
+coax
+coaxed
+coaxer
+coaxes
+coaxial
+coaxially
+coaxing
+cob
+cob's
+cobalt
+cobaltic
+cobaltite
+cobaltous
+Cobb
+Cobb's
+cobber
+Cobbett
+cobble
+cobbled
+cobbler
+cobbler's
+cobblers
+cobbles
+cobblestone
+cobblestoned
+cobblestones
+cobbling
+cobby
+cobden
+cobelligerent
+Cobham
+cobia
+coble
+cobnut
+Cobol
+Cobol's
+cobra
+cobs
+coburg
+cobweb
+cobweb's
+cobwebbed
+cobwebby
+cobwebs
+coca
+cocaine
+cocainism
+cocainization
+cocainization's
+cocainizations
+cocainize
+cocainizes
+cocci
+coccid
+coccidioidomycosis
+coccidiosis
+cocciferous
+coccolith
+coccyx
+cochabamba
+cochairman
+cochairmen
+Cochin
+cochineal
+cochise
+Cochise
+cochlea
+cochleate
+Cochran
+Cochran's
+Cochrane
+Cochrane's
+cock
+cockade
+cockaded
+Cockaigne
+cockalorum
+cockamamie
+cockatiel
+cockatoo
+cockatrice
+cockayne
+cockboat
+cockchafer
+cockcroft
+cockcrow
+cocked
+cocker
+cockerel
+cockeye
+cockeyed
+cockeyedly
+cockeyedness
+cockfight
+cockfight's
+cockfighting
+cockfights
+cockhorse
+cockier
+cockily
+cockiness
+cocking
+cockle
+cockleboat
+cocklebur
+cockleshell
+cockloft
+cockney
+cockneyfy
+cockneyish
+cockneyism
+cockneys
+cockpit
+cockpits
+cockroach
+cockroaches
+cocks
+cockscomb
+cocksfoot
+cockshy
+cockspur
+cocksure
+cockswain
+cocktail
+cocktail's
+cocktails
+cockup
+cocky
+coco
+cocoa
+coconscious
+coconsciousness
+coconspirator
+coconspirators
+coconut
+coconut's
+coconuts
+cocoon
+cocoon's
+cocoons
+cocopan
+cocos
+Cocos
+cocotte
+cocoyam
+cocteau
+cocurricular
+cod
+coda
+codable
+codasyl
+codder
+Coddington
+Coddington's
+coddle
+coddled
+coddler
+coddles
+coddling
+code
+codebook
+codebooks
+codebreak
+codeclination
+coded
+codefendant
+codeine
+codeless
+codeposit
+coder
+coder's
+coders
+codes
+codetermination
+codetermine
+codetermines
+codeword
+codeword's
+codewords
+codex
+codfish
+codger
+codices
+codicil
+codicillary
+codicology
+codifiability
+codification
+codification's
+codifications
+codified
+codifier
+codifier's
+codifiers
+codifies
+codify
+codifying
+coding
+codings
+codling
+codomain
+codominant
+codominate
+codominated
+codominates
+codominating
+codon
+codpiece
+codpieces
+cods
+codswallop
+Cody
+Cody's
+coed
+coedit
+coedited
+coediting
+coeditor
+coeditor's
+coeditors
+coedits
+coeds
+coeducation
+coeducational
+coeducationalize
+coeducationalizes
+coeducationally
+coefficient
+coefficient's
+coefficiently
+coefficients
+coelacanth
+coelenterate
+coelenteron
+coeliac
+coelom
+coelostat
+coenacle
+coenamor
+coenamored
+coenamoring
+coenamors
+coenobite
+coenocyte
+coenurus
+coenzyme
+coequal
+coequality
+coequalize
+coequalizes
+coequally
+coerce
+coerced
+coerces
+coercibility
+coercible
+coercing
+coercion
+coercions
+coercive
+coercively
+coerciveness
+coercivity
+coessential
+coetaneous
+coeternal
+coeternally
+coeternity
+coeur
+coeval
+coevality
+coevolution
+coexecutor
+coexist
+coexisted
+coexistence
+coexistent
+coexisting
+coexists
+coextend
+coextensive
+coextensively
+cofactor
+cofactors
+cofeature
+coff
+coffee
+coffee's
+coffeecup
+coffeehouse
+coffeepot
+coffees
+coffer
+coffer's
+cofferdam
+coffers
+Coffey
+Coffey's
+coffin
+coffin's
+coffins
+coffle
+coffles
+Coffman
+cofunction
+cog
+cogency
+cogent
+cogently
+coggan
+cogged
+cogging
+cogitable
+cogitate
+cogitated
+cogitates
+cogitating
+cogitation
+cogitative
+cogito
+coglike
+cognac
+cognate
+cognately
+cognates
+cognation
+cognations
+cognition
+cognitional
+cognitions
+cognitive
+cognitively
+cognitives
+cognitivity
+cognizable
+cognizably
+cognizance
+cognizant
+cognize
+cognized
+cognizer
+cognizers
+cognizes
+cognizing
+cognomen
+cognoscenti
+cogon
+cogs
+cogwheel
+cogwheels
+cohabit
+cohabitant
+cohabitants
+cohabitation
+cohabitational
+cohabitations
+cohabited
+cohabitee
+cohabitees
+cohabiting
+cohabits
+coheir
+coheiress
+Cohen
+cohere
+cohered
+coherence
+coherency
+coherent
+coherently
+coherer
+coheres
+cohering
+cohesion
+cohesional
+cohesionless
+cohesive
+cohesively
+cohesiveness
+Cohn
+coho
+cohobate
+cohomology
+cohort
+cohort's
+cohorts
+cohosh
+cohune
+coidentity
+coif
+coiffeur
+coiffeuse
+coiffing
+coiffure
+coiffured
+coign
+coil
+coilability
+coiled
+coiling
+coils
+coimbatore
+coimbra
+coin
+coinage
+coincide
+coincided
+coincidence
+coincidence's
+coincidences
+coincident
+coincidental
+coincidentally
+coincidently
+coincides
+coinciding
+coined
+coiner
+coining
+coins
+coinsurance
+coinsure
+coinsurer
+Cointreau
+coir
+coire
+coit
+coital
+coitally
+coition
+coitional
+coitus
+coke
+cokes
+coking
+cokuloris
+col
+cola
+colander
+colanders
+colasanto
+colatitude
+colatitudes
+colbert
+Colby
+colcannon
+colchester
+colchicine
+Colchicum
+Colchis
+colcothar
+cold
+coldblood
+colder
+coldest
+coldhearted
+coldheartedly
+coldheartedness
+coldish
+coldly
+coldness
+colds
+Cole
+Cole's
+colectomy
+Coleman
+Coleman's
+colemanite
+coleopteran
+coleoptile
+coleorhiza
+Coleridge
+coles
+coleslaw
+colet
+Colette
+Colette's
+coleus
+colewort
+coley
+Colgate
+coli
+colic
+colicky
+colicroot
+colicweed
+coliform
+coligny
+Colima
+coliseum
+colitis
+coll
+collaborate
+collaborated
+collaborates
+collaborating
+collaboration
+collaborationism
+collaborationist
+collaborationists
+collaborations
+collaborative
+collaboratively
+collaborator
+collaborator's
+collaborators
+collage
+collagen
+collages
+collagist
+collagists
+collapsar
+collapse
+collapsed
+collapses
+collapsibility
+collapsible
+collapsing
+collar
+collarbone
+collard
+collared
+collarette
+collaring
+collarless
+collars
+collate
+collated
+collateral
+collaterality
+collateralize
+collaterally
+collates
+collating
+collation
+collations
+collative
+collator
+collators
+colleague
+colleague's
+colleagues
+colleagueship
+colleaguesmanship
+collect
+collectable
+collectanea
+collected
+collectedly
+collectedness
+collectible
+collecting
+collection
+collection's
+collections
+collective
+collectively
+collectives
+collectivism
+collectivist
+collectivistic
+collectivistically
+collectivists
+collectivities
+collectivity
+collectivization
+collectivization's
+collectivizations
+collectivize
+collectivized
+collectivizes
+collector
+collector's
+collectorate
+collectorates
+collectors
+collectorship
+collects
+Colleen
+college
+college's
+colleges
+collegial
+collegiality
+collegially
+collegian
+collegians
+collegiate
+collegiately
+collegium
+collembolan
+collenchyma
+collet
+collide
+collided
+collides
+colliding
+collie
+collied
+collier
+Collier
+collieries
+colliery
+collies
+colligate
+colligation
+colligative
+collimate
+collimated
+collimates
+collimating
+collimation
+collimator
+collinear
+collinearity
+Collins
+Collinsia
+collision
+collision's
+collisional
+collisionally
+collisionless
+collisions
+collocate
+collocates
+collocation
+collocational
+collocutor
+collodion
+collogue
+collogued
+colloguing
+colloid
+colloidal
+colloidally
+collop
+colloq
+Colloq
+colloquia
+colloquial
+colloquialism
+colloquialism's
+colloquialisms
+colloquiality
+colloquialize
+colloquializes
+colloquially
+colloquist
+colloquium
+colloquoy
+colloquy
+collotype
+collude
+colluded
+colludes
+colluding
+collusion
+collusions
+collusive
+collusively
+colluvial
+colluvium
+colly
+collywobbles
+colmar
+Colobus
+colocynth
+colog
+cologarithm
+Cologne
+cologne
+cologned
+colombes
+Colombia
+Colombian
+Colombians
+Colombo
+Colombo's
+colon
+colon's
+colonel
+colonel's
+colonelcy
+colonels
+colonial
+colonialism
+colonialist
+colonialistic
+colonialize
+colonializes
+colonially
+colonialness
+colonials
+colonic
+colonies
+colonist
+colonist's
+colonists
+colonitis
+colonizabilities
+colonizability
+colonizability's
+colonizable
+colonizable's
+colonizables
+colonization
+colonization's
+colonizationist
+colonizationist's
+colonizationists
+colonizations
+colonize
+colonized
+colonizer
+colonizers
+colonizes
+colonizing
+colonnade
+colonnaded
+colonnades
+colons
+colonsay
+colony
+colony's
+colophon
+colophony
+coloquintida
+color
+color's
+colorabilities
+colorability
+colorability's
+colorable
+colorable's
+colorableness
+colorables
+colorablies
+colorably
+Colorado
+Colorado's
+colorama
+colorant
+colorants
+colorate
+coloration
+coloratura
+colorcast
+colorcaster
+colorcasters
+colored
+coloreds
+colorer
+colorer's
+colorers
+colorfast
+colorfastness
+colorful
+colorfully
+colorfulness
+colorific
+colorimeter
+colorimeter's
+colorimeters
+colorimetric
+colorimetrically
+colorimetry
+coloring
+colorings
+colorism
+colorisms
+colorist
+colorist's
+coloristic
+coloristically
+coloristics
+colorists
+colorization
+colorization's
+colorizations
+colorize
+colorizes
+colorless
+colorlessly
+colorlessness
+colorman
+colormap
+colormap's
+colormaps
+colormen
+colors
+colossae
+colossal
+colossally
+Colosseum
+colossi
+Colossian
+colossians
+colossus
+colossuses
+colostomy
+colostral
+colostrum
+colotomy
+colpitis
+colporteur
+colquhoun
+colt
+colt's
+colter
+coltish
+coltishly
+coltishness
+Coltrane
+colts
+coltsfoot
+colubrid
+colubrine
+colugo
+colum
+Columba
+columbarium
+Columbia
+Columbian
+columbic
+columbine
+columbines
+columbite
+columbium
+columbous
+Columbus
+columella
+column
+column's
+columnar
+columned
+columniation
+columnist
+columnistic
+columnists
+columnization
+columnization's
+columnizations
+columnize
+columnized
+columnizes
+columnizing
+columns
+columnwise
+colure
+Colwyn
+coly
+colza
+com
+coma
+comae
+comaker
+Comanche
+Comanchean
+comaneci
+comas
+comate
+comatose
+comatulid
+comb
+combat
+combatant
+combatant's
+combatants
+combated
+combating
+combative
+combatively
+combativeness
+combats
+combatted
+combe
+combed
+comber
+combers
+combinability
+combinable
+combinate
+combination
+combination's
+combinational
+combinations
+combinative
+combinator
+combinator's
+combinatorial
+combinatorially
+combinatoric
+combinatorics
+combinators
+combinatory
+combine
+combined
+combiner
+combiners
+combines
+combing
+combings
+combining
+comblike
+combo
+combos
+combs
+combust
+combuster
+combustibility
+combustible
+combustibles
+combustibly
+combusting
+combustion
+combustions
+combustive
+combustor
+combustors
+Comdex
+Comdex's
+come
+comeback
+comecon
+comedian
+comedian's
+comedians
+comedic
+comedie
+comedienne
+comediennes
+comedies
+comedo
+comedown
+comedy
+comedy's
+comelier
+comeliness
+comely
+comenius
+comer
+comers
+comes
+comest
+comestible
+comestibles
+comet
+comet's
+cometary
+cometh
+cometic
+comets
+comeuppance
+comfier
+comfit
+comfits
+comfort
+comfortabilities
+comfortability
+comfortable
+comfortableness
+comfortably
+comforted
+comforter
+comforters
+comforting
+comfortingly
+comfortless
+comforts
+comfrey
+comfy
+comic
+comic's
+comical
+comicality
+comically
+comics
+comines
+Cominform
+coming
+comings
+Comintern
+comique
+comitia
+comity
+comma
+comma's
+Command
+command
+command's
+commandable
+commandant
+commandant's
+commandants
+commanded
+commandeer
+commandeered
+commandeering
+commandeers
+commander
+commanders
+commandership
+commandery
+commanding
+commandingly
+commandment
+commandment's
+commandments
+commando
+commandos
+commands
+commas
+commeasure
+commedia
+commemorate
+commemorated
+commemorates
+commemorating
+commemoration
+commemorations
+commemorative
+commemoratively
+commemoratives
+commemorator
+commemorators
+commence
+commenced
+commencement
+commencement's
+commencements
+commencer
+commences
+commencing
+commend
+commendable
+commendably
+commendam
+commendation
+commendation's
+commendations
+commendatory
+commended
+commender
+commending
+commends
+commensal
+commensalism
+commensally
+commensurability
+commensurable
+commensurably
+commensurate
+commensurately
+commensurates
+commensuration
+commensurations
+comment
+comment's
+commentaries
+commentary
+commentary's
+commentate
+commentates
+commentator
+commentator's
+commentators
+commented
+commenter
+commenting
+comments
+commerce
+commerced
+commercial
+commercialism
+commercialist
+commercialistic
+commercialization
+commercialization's
+commercializations
+commercialize
+commercialized
+commercializes
+commercializing
+commercially
+commercialness
+commercials
+commercing
+Commie
+commie
+commies
+commination
+comminatory
+commines
+commingle
+commingled
+comminute
+comminuted
+comminution
+commis
+commiserate
+commiserated
+commiserates
+commiserating
+commiseration
+commiserative
+commissar
+commissariat
+commissary
+commission
+commissionaire
+commissioned
+commissioner
+commissioners
+commissionership
+commissioning
+commissions
+commissural
+commissure
+commit
+commitment
+commitment's
+commitments
+commits
+committable
+committal
+committed
+committee
+committee's
+committeeman
+committeemen
+committees
+committeewoman
+committeewomen
+committing
+commix
+commixture
+commo
+commode
+commodes
+commodious
+commodiously
+commodiousness
+commodities
+commodity
+commodity's
+commodore
+commodore's
+commodores
+commodus
+common
+commonable
+commonage
+commonalities
+commonality
+commonalty
+commoner
+commoner's
+commoners
+commonest
+commonize
+commonizes
+commonly
+commonness
+commonplace
+commonplaceness
+commonplaces
+commons
+commonsense
+commonsensible
+commonsensibly
+commonsensical
+commonweal
+commonwealth
+commonwealths
+commotion
+commotions
+commove
+commoved
+commoves
+commoving
+communal
+communalism
+communalist
+communalists
+communalities
+communality
+communalization
+communalization's
+communalizations
+communalize
+communalized
+communalizer
+communalizers
+communalizes
+communalizing
+communally
+communard
+communards
+commune
+communed
+communes
+communese
+communicability
+communicable
+communicableness
+communicably
+communicant
+communicant's
+communicants
+communicate
+communicated
+communicatee
+communicates
+communicatie
+communicating
+communication
+communicational
+communications
+communicative
+communicatively
+communicativeness
+communicator
+communicator's
+communicators
+communicatory
+communing
+communion
+communique
+communiques
+communism
+communist
+communist's
+communistic
+communistically
+communists
+communitarian
+communitarianism
+communities
+community
+community's
+communization
+communization's
+communizations
+communize
+communized
+communizes
+communizing
+commutable
+commutate
+commutated
+commutates
+commutating
+commutation
+commutations
+commutative
+commutatively
+commutativity
+commutator
+commutators
+commute
+commuted
+commuter
+commuters
+commutes
+commuting
+comnenus
+como
+comorin
+comoro
+Comoros
+comoving
+comp
+compact
+compacted
+compacter
+compacters
+compactest
+compactible
+compactify
+compacting
+compaction
+compactly
+compactness
+compactor
+compactor's
+compactors
+compacts
+compadre
+Compagnie
+compander
+companders
+companies
+companion
+companion's
+companionable
+companionableness
+companionably
+companionate
+companionize
+companionizes
+companions
+companionship
+companionway
+companionways
+company
+company's
+comparability
+comparable
+comparableness
+comparably
+comparatist
+comparative
+comparatively
+comparativeness
+comparatives
+comparativist
+comparator
+comparator's
+comparators
+compare
+compared
+comparer
+compares
+comparing
+comparison
+comparison's
+comparisons
+compart
+compartment
+compartmental
+compartmentalization
+compartmentalization's
+compartmentalizations
+compartmentalize
+compartmentalized
+compartmentalizes
+compartmentalizing
+compartmentation
+compartmentations
+compartmented
+compartmenting
+compartmentize
+compartmentizes
+compartments
+compass
+compassable
+compassed
+compasses
+compassing
+compassion
+compassionate
+compassionately
+compassionateness
+compassionless
+compatability
+compatibilities
+compatibility
+compatibility's
+compatible
+compatibleness
+compatibles
+compatibly
+compatriot
+compatriotic
+compatriots
+compeer
+compel
+compellable
+compellation
+compelled
+compeller
+compelling
+compellingly
+compels
+compend
+compendia
+compendious
+compendiously
+compendiousness
+compendium
+compensability
+compensable
+compensate
+compensated
+compensates
+compensating
+compensation
+compensational
+compensations
+compensative
+compensator
+compensators
+compensatory
+compere
+compered
+compering
+compete
+competed
+competence
+competences
+competencies
+competency
+competent
+competently
+competes
+competing
+competition
+competition's
+competitions
+competitive
+competitively
+competitiveness
+competitor
+competitor's
+competitors
+competitory
+compilability
+compilable
+compilation
+compilation's
+compilations
+compile
+compiled
+compiler
+compiler's
+compilers
+compiles
+compiling
+complacence
+complacency
+complacent
+complain
+complainant
+complainants
+complained
+complainer
+complainers
+complaining
+complainingly
+complains
+complaint
+complaint's
+complaints
+complaisance
+complaisant
+complaisantly
+compleat
+complect
+complected
+complement
+complemental
+complementarily
+complementariness
+complementarity
+complementary
+complementation
+complemented
+complementer
+complementers
+complementing
+complementizer
+complements
+comples
+complete
+completed
+completely
+completeness
+completer
+completes
+completing
+completion
+completions
+completive
+complex
+complexation
+complexes
+complexion
+complexional
+complexioned
+complexities
+complexity
+complexly
+complexness
+complexometric
+complexometry
+compliance
+compliances
+compliancy
+compliant
+compliantly
+complicacy
+complicate
+complicated
+complicatedly
+complicatedness
+complicates
+complicating
+complication
+complications
+complicator
+complicator's
+complicators
+complice
+complicity
+complied
+complier
+compliers
+complies
+compliment
+complimentarily
+complimentary
+complimented
+complimenter
+complimenters
+complimenting
+compliments
+compline
+complot
+comply
+complying
+compo
+component
+component's
+componential
+componentry
+components
+compony
+comport
+comported
+comportment
+compos
+compose
+composed
+composedly
+composedness
+composer
+composer's
+composers
+composes
+composing
+Compositae
+composite
+compositely
+composites
+composition
+compositional
+compositionally
+compositions
+compositor
+compositors
+compossible
+compost
+compostela
+composure
+compotation
+compote
+compound
+compoundable
+compounded
+compounder
+compounding
+compounds
+comprador
+comprehend
+comprehended
+comprehendible
+comprehending
+comprehends
+comprehensibility
+comprehensible
+comprehensibleness
+comprehensibly
+comprehension
+comprehensive
+comprehensively
+comprehensiveness
+compress
+compressed
+compressedly
+compresses
+compressibility
+compressible
+compressing
+compression
+compressional
+compressions
+compressive
+compressively
+compressor
+compressors
+comprisable
+comprisal
+comprisals
+comprise
+comprised
+comprises
+comprising
+compromise
+compromised
+compromiser
+compromisers
+compromises
+compromising
+compromisingly
+Comptometer
+Compton
+Compton's
+comptroller
+comptroller's
+comptrollers
+comptrollership
+compulsion
+compulsion's
+compulsions
+compulsive
+compulsively
+compulsiveness
+compulsives
+compulsivity
+compulsorily
+compulsory
+compunction
+compunctions
+compunctious
+compurgation
+compurgations
+compurgator
+Compuserve
+Compuserve's
+computability
+computable
+computation
+computation's
+computational
+computationally
+computations
+compute
+computed
+computer
+computer's
+computerese
+computerite
+computerizable
+computerization
+computerize
+computerized
+computerizes
+computerizing
+computerlike
+computernik
+computers
+computes
+computing
+comrade
+comradeliness
+comradely
+comradery
+comrades
+comradeship
+comsat
+comstockery
+comsummatively
+comte
+Comus
+con
+Conakry
+conan
+Conant
+Conant's
+conation
+conative
+conatus
+concatenate
+concatenated
+concatenates
+concatenating
+concatenation
+concatenations
+concave
+concavity
+conceal
+concealable
+concealed
+concealer
+concealers
+concealing
+concealingly
+concealment
+conceals
+concede
+conceded
+concededly
+conceder
+concedes
+conceding
+conceit
+conceited
+conceitedly
+conceitedness
+conceits
+conceivability
+conceivable
+conceivableness
+conceivably
+conceive
+conceived
+conceiver
+conceives
+conceiving
+concelebrate
+concensus
+concent
+concenter
+concentrate
+concentrated
+concentrates
+concentrating
+concentration
+concentrations
+concentrative
+concentrator
+concentrators
+concentric
+concentrically
+concentricity
+concept
+concept's
+conceptacle
+conception
+conception's
+conceptional
+conceptions
+conceptive
+concepts
+conceptual
+conceptualism
+conceptualist
+conceptualistic
+conceptualistically
+conceptuality
+conceptualization
+conceptualization's
+conceptualizations
+conceptualize
+conceptualized
+conceptualizer
+conceptualizes
+conceptualizing
+conceptually
+conceptus
+concern
+concerned
+concernedly
+concerning
+concernment
+concerns
+concert
+concertante
+concerted
+concertedly
+concertedness
+concertgoer
+concerti
+concertina
+concertino
+concertize
+concertizer
+concertizers
+concertizes
+concertmaster
+concertmeister
+concerto
+concertos
+concerts
+concession
+concession's
+concessionaire
+concessionaires
+concessional
+concessionary
+concessioner
+concessions
+concessive
+concessively
+conch
+concha
+conches
+conchie
+conchiferous
+conchiolin
+conchobar
+conchoid
+conchoidal
+conchology
+concierge
+concierges
+conciliar
+conciliarly
+conciliate
+conciliated
+conciliates
+conciliation
+conciliations
+conciliative
+conciliator
+conciliatory
+concinnity
+concise
+concisely
+conciseness
+concision
+concisions
+conclave
+conclaves
+conclude
+concluded
+concluder
+concludes
+concluding
+conclusion
+conclusion's
+conclusions
+conclusive
+conclusively
+conclusiveness
+concoct
+concocted
+concocter
+concoction
+concoctive
+concocts
+concomitance
+concomitant
+concomitantly
+concomitants
+concord
+concordance
+concordant
+concordantly
+concordat
+Concorde
+concorde
+Concordia
+concourse
+concourses
+concrescence
+concrescences
+concrescent
+concrete
+concreted
+concretely
+concreteness
+concretes
+concreting
+concretion
+concretionary
+concretism
+concretist
+concretistic
+concretization
+concretizations
+concretize
+concretized
+concretizes
+concretizing
+concubinage
+concubine
+concubines
+concupiscence
+concupiscent
+concupiscible
+concur
+concurred
+concurrence
+concurrencies
+concurrency
+concurrent
+concurrently
+concurring
+concurs
+concuss
+concussed
+concusses
+concussing
+concussion
+concussions
+concussive
+concussively
+condemn
+condemnable
+condemnate
+condemnation
+condemnations
+condemnatory
+condemned
+condemner
+condemners
+condemning
+condemnor
+condemns
+condensable
+condensate
+condensates
+condensation
+condensational
+condensations
+condense
+condensed
+condenser
+condensers
+condenses
+condensible
+condensing
+condescend
+condescendence
+condescending
+condescendingly
+condescends
+condescension
+condign
+condignly
+condillac
+condiment
+condimental
+condiments
+condition
+conditionable
+conditional
+conditionality
+conditionalize
+conditionalizes
+conditionally
+conditionals
+conditioned
+conditioner
+conditioners
+conditioning
+conditions
+condo
+condo's
+condolatory
+condole
+condoled
+condolence
+condolences
+condoling
+condom
+condominial
+condominium
+condominium's
+condominiums
+condoms
+condonable
+condonation
+condone
+condoned
+condoner
+condones
+condoning
+condor
+condos
+condottiere
+conduce
+conduced
+conduces
+conducing
+conducive
+conduciveness
+conduct
+conductance
+conductances
+conducted
+conductibility
+conductible
+conductimetric
+conducting
+conduction
+conductive
+conductively
+conductivities
+conductivity
+conductometric
+conductor
+conductor's
+conductorial
+conductors
+conductress
+conducts
+conduit
+conduits
+conduplicate
+conduplication
+condyle
+condyloid
+condyloma
+cone
+cone's
+coned
+coneflower
+cones
+Conestoga
+coney
+confab
+confabbed
+confabbing
+confabulate
+confabulated
+confabulates
+confabulation
+confabulations
+confabulator
+confabulatory
+confect
+confection
+confectionary
+confectioner
+confectioners
+confectionery
+confections
+confects
+confederacy
+confederal
+confederalist
+confederalists
+confederate
+confederates
+confederation
+confederations
+confederative
+confederatize
+confederatizes
+confer
+conferee
+conferees
+conference
+conference's
+conferences
+conferencing
+conferential
+conferment
+conferments
+conferrable
+conferral
+conferrals
+conferred
+conferrer
+conferrer's
+conferrers
+conferring
+confers
+Conferva
+confess
+confessable
+confessant
+confessed
+confessedly
+confesses
+confessing
+confession
+confession's
+confessional
+confessionalism
+confessionalist
+confessionally
+confessionals
+confessions
+confessor
+confessor's
+confessors
+confetti
+confidant
+confidant's
+confidante
+confidantes
+confidants
+confide
+confided
+confidence
+confidences
+confident
+confidential
+confidentiality
+confidentially
+confidentialness
+confidently
+confider
+confides
+confiding
+confidingly
+confidingness
+configurable
+configural
+configurate
+configurated
+configurates
+configurating
+configuration
+configuration's
+configurational
+configurationally
+configurationism
+configurations
+configurative
+configure
+configured
+configures
+configuring
+confine
+confined
+confinement
+confinement's
+confinements
+confiner
+confines
+confining
+confirm
+confirmability
+confirmable
+confirmand
+confirmation
+confirmation's
+confirmational
+confirmations
+confirmatory
+confirmed
+confirmedly
+confirmedness
+confirming
+confirms
+confiscable
+confiscatable
+confiscate
+confiscated
+confiscates
+confiscating
+confiscation
+confiscations
+confiscator
+confiscators
+confiscatory
+confiteor
+confiture
+conflagrant
+conflagrate
+conflagrated
+conflagrates
+conflagration
+conflagrations
+conflagrator
+conflagrators
+conflagratory
+conflate
+conflated
+conflates
+conflating
+conflation
+conflations
+conflatrate
+conflatrating
+conflict
+conflicted
+conflictful
+conflicting
+conflictingly
+confliction
+conflictions
+conflictive
+conflictless
+conflicts
+conflictual
+confluence
+confluences
+confluent
+confluents
+conflux
+confluxes
+confocal
+conform
+conformability
+conformable
+conformably
+conformal
+conformance
+conformation
+conformation's
+conformational
+conformationally
+conformations
+conformed
+conformer
+conformers
+conforming
+conformism
+conformist
+conformists
+conformity
+conforms
+confound
+confounded
+confoundedly
+confounder
+confounding
+confounds
+confraternities
+confraternity
+confrere
+confreres
+confront
+confrontal
+confrontation
+confrontation's
+confrontational
+confrontationism
+confrontationist
+confrontations
+confronted
+confronter
+confronters
+confronting
+confronts
+Confucian
+Confucianism
+Confucius
+confuse
+confused
+confusedly
+confusedness
+confuser
+confusers
+confuses
+confusing
+confusingly
+confusion
+confusional
+confusions
+confutation
+confutations
+confutative
+confutator
+confutators
+confute
+confuted
+confuter
+confutes
+confuting
+cong
+conga
+congeal
+congealed
+congealing
+congealment
+congeals
+congelation
+congelations
+congener
+congeneric
+congenial
+congeniality
+congenialize
+congenializes
+congenially
+congenital
+congenitally
+conger
+congeries
+congest
+congested
+congesting
+congestion
+congestive
+congests
+congius
+conglobate
+conglomerate
+conglomerated
+conglomerates
+conglomeratic
+conglomeration
+conglomerations
+conglomerative
+conglomerator
+conglutinant
+conglutinate
+conglutinated
+conglutinates
+conglutinating
+conglutination
+Congo
+Congolese
+congou
+congrats
+congratulate
+congratulated
+congratulates
+congratulation
+congratulations
+congratulator
+congratulatory
+congregant
+congregate
+congregated
+congregates
+congregating
+congregation
+congregational
+congregationalism
+congregationalist
+congregationalists
+congregationalize
+congregationalizes
+congregations
+congregator
+congress
+congress's
+congressed
+congresses
+congressing
+congressional
+congressionally
+congressman
+congressmen
+congresswoman
+congresswomen
+congretants
+Congreve
+congruence
+congruency
+congruent
+congruential
+congruentially
+congruently
+congruity
+congruous
+congruously
+congruousness
+conic
+conical
+conically
+conicalness
+conicity
+conics
+conidiophore
+conidium
+conifer
+coniferous
+conifers
+coniine
+coning
+coniology
+Coniston
+Conium
+conjectural
+conjecturally
+conjecture
+conjectured
+conjecturer
+conjectures
+conjecturing
+conjoin
+conjoined
+conjoining
+conjoins
+conjoint
+conjointly
+conjuction
+conjugacy
+conjugal
+conjugality
+conjugally
+conjugant
+conjugants
+conjugate
+conjugated
+conjugately
+conjugateness
+conjugates
+conjugating
+conjugation
+conjugational
+conjugationally
+conjugations
+conjugative
+conjunct
+conjuncted
+conjunction
+conjunction's
+conjunctional
+conjunctionally
+conjunctions
+conjunctiva
+conjunctival
+conjunctive
+conjunctively
+conjunctivitis
+conjuncts
+conjuncture
+conjunctures
+conjuration
+conjurations
+conjure
+conjured
+conjurer
+conjurers
+conjures
+conjuring
+conjuror
+conk
+conked
+conker
+conkers
+conking
+Conklin
+Conklin's
+conks
+Conley
+Conley's
+conn
+connacht
+Connally
+Connally's
+connate
+connately
+connatural
+connaturality
+connaturally
+connaught
+connect
+connectable
+connected
+connectedly
+connectedness
+connecter
+connecters
+connectible
+Connecticut
+connecting
+connection
+connection's
+connectional
+connections
+connective
+connective's
+connectively
+connectives
+connectivities
+connectivity
+connector
+connector's
+connectors
+connects
+conned
+connelly
+Connelly
+connemara
+conner
+connexions
+Connie
+conning
+conniption
+connivance
+connive
+connived
+connivent
+conniver
+connivery
+connives
+conniving
+connoisseur
+connoisseur's
+connoisseurs
+connoisseurship
+Connors
+connotation
+connotational
+connotations
+connotative
+connotatively
+connote
+connoted
+connotes
+connoting
+connubial
+connubialism
+connubiality
+connubially
+conodont
+conoid
+conoscenti
+conquer
+conquerable
+conquered
+conquerer
+conquerers
+conquering
+conqueror
+conqueror's
+conquerors
+conquers
+conquest
+conquest's
+conquests
+conquian
+conquistador
+conquistadores
+conquistadors
+Conrad
+Conrad's
+Conrail
+Conrail's
+cons
+consanguine
+consanguineous
+consanguineously
+consanguinity
+conscience
+conscience's
+conscienceless
+consciences
+conscientious
+conscientiously
+conscientiousness
+conscionable
+conscionably
+conscious
+consciouses
+consciously
+consciousness
+conscribe
+conscribed
+conscribes
+conscribing
+conscript
+conscripted
+conscripting
+conscription
+conscriptions
+conscripts
+consecrate
+consecrated
+consecrates
+consecrating
+consecration
+consecrations
+consecrative
+consecrator
+consecratory
+consecution
+consecutive
+consecutively
+consecutiveness
+consensual
+consensually
+consensus
+consent
+consentaneous
+consentaneously
+consented
+consenter
+consenters
+consentient
+consenting
+consentingly
+consents
+consequence
+consequence's
+consequences
+consequent
+consequential
+consequentialities
+consequentiality
+consequentially
+consequentialness
+consequently
+consequentness
+consequents
+conservancy
+conservation
+conservation's
+conservational
+conservationist
+conservationist's
+conservationists
+conservations
+conservatism
+conservative
+conservatively
+conservativeness
+conservatives
+conservatize
+conservatized
+conservatizes
+conservatizing
+conservatoire
+conservator
+conservatorial
+conservatorium
+conservatory
+conserve
+conserved
+conserver
+conserves
+conserving
+consett
+consider
+considerable
+considerably
+considerate
+considerately
+considerateness
+consideration
+considerations
+considered
+considerer
+considering
+considers
+consign
+consignable
+consignation
+consigned
+consignee
+consigning
+consignment
+consignor
+consigns
+consist
+consisted
+consistence
+consistencies
+consistency
+consistent
+consistently
+consisting
+consistorial
+consistory
+consists
+consociate
+consociation
+consociational
+consocies
+consol
+consolable
+consolation
+consolation's
+consolations
+consolatory
+console
+consoled
+consoler
+consolers
+consoles
+consolette
+consolidate
+consolidated
+consolidates
+consolidating
+consolidation
+consolidations
+consolidator
+consolidators
+consoling
+consolingly
+consols
+consolute
+consonance
+consonancy
+consonant
+consonant's
+consonantal
+consonantize
+consonantizes
+consonantly
+consonants
+consort
+consorted
+consorting
+consortium
+consorts
+conspecific
+conspectus
+conspectuses
+conspicuity
+conspicuous
+conspicuously
+conspicuousness
+conspiracies
+conspiracy
+conspiracy's
+conspiration
+conspirational
+conspirations
+conspirator
+conspirator's
+conspiratorial
+conspiratorially
+conspirators
+conspire
+conspired
+conspires
+conspiring
+constable
+constable's
+constables
+constabulary
+constance
+constancy
+constant
+constantan
+Constantine
+Constantine's
+Constantinople
+constantly
+constants
+constatation
+constellate
+constellation
+constellation's
+constellations
+constellatory
+consternate
+consternated
+consternates
+consternating
+consternation
+constipate
+constipated
+constipates
+constipating
+constipation
+constituencies
+constituency
+constituency's
+constituent
+constituent's
+constituently
+constituents
+constitute
+constituted
+constitutes
+constituting
+constitution
+constitutional
+constitutionalism
+constitutionalist
+constitutionality
+constitutionalization
+constitutionalization's
+constitutionalizations
+constitutionalize
+constitutionalizes
+constitutionally
+constitutionless
+constitutions
+constitutive
+constitutively
+constrain
+constrained
+constrainedly
+constraining
+constrains
+constraint
+constraint's
+constraints
+constrict
+constricted
+constricting
+constriction
+constrictions
+constrictive
+constrictor
+constrictors
+constricts
+constringe
+constringed
+constringent
+constringes
+constringing
+construable
+construal
+construct
+constructed
+constructibility
+constructible
+constructing
+construction
+construction's
+constructional
+constructionally
+constructionist
+constructions
+constructive
+constructively
+constructiveness
+constructivism
+constructivist
+constructor
+constructor's
+constructors
+constructs
+construe
+construed
+construes
+construing
+consubstantial
+consubstantiate
+consubstantiation
+consuetude
+consuetudinary
+consul
+consul's
+consular
+consulate
+consulate's
+consulates
+consuls
+consulship
+consult
+consultancies
+consultancy
+consultant
+consultant's
+consultants
+consultantship
+consultation
+consultation's
+consultations
+consultative
+consulted
+consulter
+consulting
+consultive
+consultor
+consults
+consumable
+consumables
+consume
+consumed
+consumedly
+consumer
+consumer's
+consumerism
+consumerist
+consumers
+consumership
+consumes
+consuming
+consumingly
+consummate
+consummated
+consummately
+consummates
+consummating
+consummation
+consummations
+consummative
+consummator
+consummatory
+consumption
+consumption's
+consumptions
+consumptive
+consumptively
+cont'd
+contact
+contacted
+contacting
+contactor
+contacts
+contagion
+contagious
+contagiously
+contagiousness
+contagium
+contain
+containable
+contained
+container
+containerboard
+containerization
+containerize
+containerized
+containerizes
+containerizing
+containers
+containing
+containment
+containment's
+containments
+contains
+contaminant
+contaminants
+contaminate
+contaminated
+contaminates
+contaminating
+contamination
+contaminations
+contaminative
+contaminator
+contango
+contemn
+contemplate
+contemplated
+contemplates
+contemplating
+contemplation
+contemplations
+contemplative
+contemplatively
+contemplativeness
+contemplator
+contemporaneity
+contemporaneous
+contemporaneously
+contemporaneousness
+contemporaries
+contemporarily
+contemporariness
+contemporary
+contemporization
+contemporize
+contemporized
+contemporizes
+contemporizing
+contempt
+contemptible
+contemptibleness
+contemptibly
+contemptuous
+contemptuously
+contemptuousness
+contend
+contended
+contender
+contendere
+contenders
+contending
+contends
+content
+contented
+contentedly
+contentedness
+contenting
+contention
+contention's
+contentions
+contentious
+contentiously
+contentiousness
+contently
+contentment
+contents
+conterminous
+conterminously
+contest
+contestable
+contestant
+contestants
+contestation
+contested
+contester
+contesters
+contesting
+contests
+context
+context's
+contexts
+contextual
+contextually
+contexture
+contiguity
+contiguous
+contiguously
+contiguousness
+continence
+continent
+continent's
+continental
+Continentalize
+Continentalizes
+continentally
+continently
+continents
+contingence
+contingencies
+contingency
+contingency's
+contingent
+contingent's
+contingently
+contingents
+continously
+continua
+continual
+continually
+continuance
+continuance's
+continuances
+continuant
+continuate
+continuated
+continuates
+continuating
+continuation
+continuation's
+continuations
+continuative
+continuatively
+continuator
+continue
+continued
+continuer
+continues
+continuing
+continuities
+continuity
+continuo
+continuous
+continuously
+continuousness
+continuum
+conto
+contort
+contorted
+contorting
+contortion
+contortionist
+contortionistic
+contortionists
+contortions
+contortive
+contorts
+contour
+contour's
+contoured
+contouring
+contours
+contraband
+contrabandist
+contrabass
+contrabassist
+contrabassoon
+contraception
+contraceptive
+contraceptives
+contract
+contracted
+contractibility
+contractible
+contractile
+contractility
+contracting
+contraction
+contraction's
+contractional
+contractions
+contractive
+contractor
+contractor's
+contractors
+contracts
+contractual
+contractually
+contracture
+contradance
+contradict
+contradictable
+contradicted
+contradicting
+contradiction
+contradiction's
+contradictions
+contradictious
+contradictor
+contradictorily
+contradictoriness
+contradictory
+contradicts
+contradistinct
+contradistinction
+contradistinctions
+contradistinctive
+contradistinctively
+contradistinguish
+contrail
+contraindicate
+contraindicated
+contraindicates
+contraindicating
+contraindication
+contraindication's
+contraindications
+contraindicative
+contralateral
+contralto
+contraoctave
+contraposition
+contrapositive
+contrapositives
+contraption
+contraption's
+contraptions
+contrapuntal
+contrapuntally
+contrapuntist
+contrarieties
+contrariety
+contrarily
+contrariness
+contrarious
+contrariwise
+contrary
+contrast
+contrastable
+contrasted
+contraster
+contrasters
+contrasting
+contrastingly
+contrastive
+contrastively
+contrasts
+contrasty
+contrasuggestible
+contrate
+contravallation
+contravariant
+contravene
+contravened
+contravener
+contravenes
+contravening
+contravention
+contrayerva
+contredanse
+contretemps
+contribute
+contributed
+contributer
+contributers
+contributes
+contributing
+contribution
+contributions
+contributive
+contributively
+contributor
+contributor's
+contributorily
+contributors
+contributory
+contrite
+contritely
+contriteness
+contrition
+contrivance
+contrivance's
+contrivances
+contrive
+contrived
+contriver
+contrives
+contriving
+control
+control's
+controllability
+controllable
+controllably
+controlled
+controllee
+controllees
+controller
+controller's
+controllers
+controllership
+controllerships
+controlling
+controlment
+controlments
+controls
+controversial
+controversialism
+controversialist
+controversialists
+controversialize
+controversializes
+controversially
+controversies
+controversy
+controversy's
+controvert
+controverted
+controverter
+controvertible
+controverting
+controverts
+contumacious
+contumaciously
+contumacy
+contumelious
+contumeliously
+contumely
+contuse
+contused
+contuses
+contusing
+contusion
+contusions
+conundrum
+conundrum's
+conundrumize
+conundrumizes
+conundrums
+conurbation
+conurbations
+conure
+Convair
+Convair's
+convalesce
+convalescence
+convalescent
+convalescing
+convect
+convected
+convecting
+convection
+convectional
+convections
+convective
+convector
+convectors
+convects
+convene
+convened
+convener
+conveners
+convenes
+convenience
+convenience's
+conveniences
+conveniency
+convenient
+conveniently
+convening
+convent
+convent's
+conventicle
+conventicler
+convention
+convention's
+conventional
+conventionalism
+conventionalist
+conventionality
+conventionalization
+conventionalization's
+conventionalizations
+conventionalize
+conventionalized
+conventionalizes
+conventionalizing
+conventionally
+conventioneer
+conventionize
+conventionizes
+conventions
+convents
+conventual
+conventually
+converge
+converged
+convergence
+convergences
+convergency
+convergent
+converges
+converging
+conversable
+conversance
+conversancy
+conversant
+conversantly
+conversation
+conversation's
+conversational
+conversationalist
+conversationally
+conversationize
+conversationizes
+conversations
+converse
+conversed
+conversely
+converses
+conversing
+conversion
+conversional
+conversioning
+conversions
+convert
+converted
+converter
+converters
+convertibility
+convertible
+convertibleness
+convertibly
+converting
+convertiplane
+convertite
+convertor
+converts
+convex
+convexity
+convey
+conveyance
+conveyance's
+conveyanced
+conveyancer
+conveyancers
+conveyances
+conveyancing
+conveyed
+conveyer
+conveyers
+conveying
+conveyor
+conveyorize
+conveyorized
+conveyorizes
+conveyorizing
+conveyors
+conveys
+convict
+convicted
+convicting
+conviction
+conviction's
+convictions
+convictive
+convicts
+convince
+convinced
+convincer
+convincers
+convinces
+convincing
+convincingly
+convincingness
+convivial
+conviviality
+convivialize
+convivializes
+convivially
+convocate
+convocation
+convocational
+convocations
+convoke
+convoked
+convokes
+convoking
+convolute
+convoluted
+convolutely
+convolution
+convolutional
+convolutions
+convolve
+convolved
+convolves
+convolving
+convolvulaceous
+Convolvulus
+convoy
+convoyed
+convoying
+convoys
+convulsant
+convulse
+convulsed
+convulses
+convulsing
+convulsion
+convulsion's
+convulsionary
+convulsions
+convulsive
+convulsively
+convulsiveness
+Conway
+Conway's
+cony
+coo
+cooch
+cooee
+cooing
+Cook
+cook
+cook's
+cookbook
+cookbooks
+Cooke
+Cooke's
+cooked
+cooker
+cookers
+cookery
+cookhouse
+cookie
+cookie's
+cookies
+cooking
+cookout
+cookouts
+cooks
+cookshack
+cookshop
+cookware
+cooky
+cool
+coolabah
+coolant
+coolants
+cooled
+cooler
+cooler's
+coolers
+coolest
+Cooley
+Cooley's
+coolgardie
+coolheaded
+Coolidge
+coolie
+coolie's
+coolies
+cooling
+coolings
+coolish
+coolly
+coolness
+coolnesses
+cools
+coom
+coomb
+coombs
+coon
+coon's
+cooncan
+coons
+coonskin
+coontie
+coop
+cooped
+cooper
+cooperage
+cooperate
+cooperated
+cooperates
+cooperating
+cooperation
+cooperationist
+cooperations
+cooperative
+cooperatively
+cooperativeness
+cooperatives
+cooperativity
+cooperator
+cooperator's
+cooperators
+coopered
+coopering
+coopers
+coops
+coopt
+coordinal
+coordinate
+coordinated
+coordinately
+coordinateness
+coordinates
+coordinating
+coordination
+coordinations
+coordinative
+coordinator
+coordinator's
+coordinators
+Coors
+coot
+cootch
+cootie
+cop
+cop's
+copacetic
+copaiba
+copal
+copalm
+coparcenary
+coparcener
+copartner
+copartnership
+cope
+copeck
+coped
+Copeland
+copemate
+Copenhagen
+copepod
+coper
+Copernican
+Copernicus
+copes
+copesetic
+copesmate
+copestone
+copied
+copier
+copiers
+copies
+copilot
+coping
+copings
+copious
+copiously
+copiousness
+copita
+coplanar
+coplanarity
+Copland
+copley
+copliots
+copolymer
+copolymerization
+copolymerization's
+copolymerizations
+copolymerize
+copolymerized
+copolymerizes
+copolymerizing
+copolymers
+copper
+copper's
+copperas
+coppered
+Copperfield
+copperhead
+coppering
+copperization
+copperization's
+copperizations
+copperize
+copperizes
+copperplate
+coppers
+coppersmith
+coppersmiths
+coppery
+coppice
+copping
+copra
+coprinus
+coprocessor
+coprocessor's
+coprocessors
+coproduct
+coproduct's
+coproducts
+coprolalia
+coprolite
+coprolitic
+coprology
+coprophagous
+coprophilia
+coprophilous
+Coprosma
+cops
+copse
+copses
+Copt
+copter
+copters
+Coptic
+copula
+copulas
+copulate
+copulated
+copulates
+copulating
+copulation
+copulative
+copulatively
+copulatory
+copy
+copybook
+copybooks
+copyboy
+copycat
+copycats
+copycatted
+copycatting
+copydesk
+copygraph
+copyhold
+copyholder
+copying
+copyist
+copyread
+copyreader
+copyright
+copyright's
+copyrighted
+copyrighter
+copyrighters
+copyrighting
+copyrights
+copywriter
+coquelicot
+coquet
+coquetry
+coquette
+coquetted
+coquetting
+coquettish
+coquettishly
+coquettishness
+coquilla
+Coquille
+coquina
+coquito
+coraciiform
+coracle
+coracoid
+coral
+Coral
+coralberry
+coraled
+coralline
+corallite
+coralloid
+coralroot
+Corantijn
+coranto
+corban
+corbeil
+corbel
+corbeled
+corbeling
+corbelings
+Corbett
+Corbett's
+corbicula
+corbie
+corbusier
+corby
+Corcoran
+Corcoran's
+corcyra
+cord
+cordage
+cordate
+cordately
+corday
+corded
+Cordelier
+cordeliers
+corder
+cordial
+cordiality
+cordialize
+cordializes
+cordially
+cordialness
+cordierite
+cordiform
+cordillera
+cordilleras
+cording
+cordite
+cordless
+cordoba
+cordon
+cordova
+Cordovan
+cords
+corduroy
+corduroys
+cordwain
+cordwainer
+cordwainery
+cordwood
+core
+corecipient
+cored
+corelate
+corelation
+coreligionist
+corella
+corelli
+Coreopsis
+corequisite
+corer
+corers
+cores
+corespondent
+Corey
+Corey's
+corf
+corfam
+corfu
+corgi
+coriaceous
+coriander
+coring
+Corinth
+Corinthian
+Corinthianize
+Corinthianizes
+corinthians
+Corinthians
+Coriolanus
+coriolis
+corium
+cork
+corkage
+corkboard
+corkboards
+corked
+corker
+corkers
+corkier
+corking
+corks
+corkscrew
+corkscrews
+corkwood
+corky
+cormel
+cormophyte
+cormorant
+cormorants
+corn
+cornball
+cornbread
+corncob
+corncockle
+corncrake
+corncrib
+cornea
+corneal
+corned
+corneille
+cornel
+Cornelia
+Cornelia's
+cornelian
+Cornelian
+Cornelius
+Cornell
+Cornell's
+corneous
+corner
+cornered
+cornering
+cornerman
+corners
+cornerstone
+cornerstone's
+cornerstones
+cornerways
+cornerwise
+cornet
+cornetcy
+cornetist
+cornett
+cornettist
+cornfield
+cornfield's
+cornfields
+cornflakes
+cornflour
+cornflower
+cornhusk
+cornhusking
+cornice
+corniced
+cornices
+corniche
+cornicing
+corniculate
+cornier
+corniest
+cornification
+cornily
+corniness
+corning
+Cornish
+cornmeal
+cornmonger
+corno
+corns
+cornstalk
+cornstarch
+cornstone
+cornu
+cornucopia
+cornucopian
+cornute
+Cornwall
+cornwallis
+Cornwallis
+corny
+corody
+corolla
+corollaceous
+corollaries
+corollary
+corollary's
+corollate
+coromandel
+corona
+coronach
+Coronado
+coronagraph
+coronal
+coronaries
+coronary
+coronate
+coronation
+coroner
+coroners
+coronet
+coronet's
+coroneted
+coronets
+coronograph
+corot
+coroutine
+coroutine's
+coroutines
+corozo
+Corp
+corpocracies
+corpocracy
+corpora
+corporal
+corporal's
+corporality
+corporally
+corporals
+corporate
+corporately
+corporation
+corporation's
+corporations
+corporatism
+corporatist
+corporative
+corporativism
+corporator
+corporeal
+corporeality
+corporealization
+corporealization's
+corporealizations
+corporealize
+corporealizes
+corporeally
+corporealness
+corporeity
+corporis
+corposant
+corps
+corpse
+corpse's
+corpses
+corpsman
+corpsmen
+corpulence
+corpulences
+corpulencies
+corpulency
+corpulent
+corpulently
+corpulentness
+corpulentnesses
+corpus
+corpuscle
+corpuscle's
+corpuscles
+corpuscular
+corpusculated
+corpuscule
+corpuscules
+corrade
+corraded
+corrading
+corral
+corralled
+corralling
+corrals
+corrasion
+corrasions
+corrasive
+correct
+correctable
+corrected
+correcting
+correction
+correctional
+corrections
+correctitude
+corrective
+correctively
+correctiveness
+correctives
+correctly
+correctness
+corrector
+corrects
+correggio
+corregidor
+correlatable
+correlate
+correlated
+correlates
+correlating
+correlation
+correlational
+correlations
+correlative
+correlatively
+correlator
+correspond
+corresponded
+correspondence
+correspondence's
+correspondences
+correspondency
+correspondent
+correspondent's
+correspondents
+corresponding
+correspondingly
+corresponds
+corresponsive
+corrida
+corridor
+corridor's
+corridors
+Corriedale
+corrientes
+corrigenda
+corrigendum
+corrigibility
+corrigible
+corrigibly
+corrival
+corroborant
+corroborate
+corroborated
+corroborates
+corroborating
+corroboration
+corroborations
+corroborative
+corroboratively
+corroborator
+corroborators
+corroboratory
+corroboree
+corrode
+corroded
+corrodent
+corrodes
+corrodible
+corroding
+corrody
+corrosion
+corrosions
+corrosive
+corrosively
+corrosiveness
+corrosives
+corrugate
+corrugated
+corrugates
+corrugating
+corrugation
+corrugations
+corrugator
+corrupt
+corrupted
+corrupter
+corruptibility
+corruptible
+corruptibly
+corrupting
+corruption
+corruptionist
+corruptive
+corruptively
+corruptly
+corrupts
+corsac
+corsage
+corsages
+corsair
+corse
+corselet
+corset
+corsetry
+corsets
+corsica
+Corsica
+Corsica's
+Corsican
+corsican
+cortege
+corteges
+Cortes
+cortex
+cortexes
+Cortez
+cortical
+cortically
+corticate
+corticated
+cortices
+corticoid
+corticosteroid
+corticosteroids
+corticosterone
+corticotrophin
+cortisol
+cortisone
+Cortland
+cortot
+corundum
+corunna
+coruscate
+coruscated
+coruscates
+coruscating
+coruscation
+coruscations
+Corvallis
+corvallis
+corves
+corvette
+corvine
+Corvus
+Corybant
+Corydalis
+Corydon
+Corydoras
+corymb
+coryphaeus
+coryza
+cos
+cosa
+cosec
+cosecant
+cosech
+coseismal
+cosenza
+coset
+cosgrave
+Cosgrove
+Cosgrove's
+cosh
+cosher
+cosignatory
+cosigner
+cosily
+cosine
+cosines
+cosmetic
+cosmetician
+cosmeticians
+cosmetics
+cosmetologist
+cosmetologists
+cosmetology
+cosmic
+cosmical
+cosmically
+cosmine
+cosmo
+cosmochemical
+cosmochemistry
+cosmodrome
+cosmogenic
+cosmogonic
+cosmogonical
+cosmogonist
+cosmogony
+cosmographer
+cosmographic
+cosmographical
+cosmographically
+cosmography
+cosmoid
+cosmologic
+cosmological
+cosmologically
+cosmologist
+cosmologist's
+cosmologists
+cosmology
+cosmonaut
+cosmopolis
+cosmopolitan
+cosmopolitanism
+cosmopolitanization
+cosmopolitanization's
+cosmopolitanizations
+cosmopolitanize
+cosmopolitanizes
+cosmopolite
+cosmopolitism
+cosmos
+cosmoses
+cosmotron
+cospar
+cosponsor
+cosponsored
+cosponsors
+cosponsorship
+coss
+cossack
+cossacks
+cosset
+cosseted
+cosseting
+cossets
+cossie
+cost
+Costa
+costa
+costal
+costard
+costate
+costed
+Costello
+Costermansville
+costermonger
+costing
+costive
+costively
+costiveness
+costless
+costlessly
+costlier
+costliness
+costly
+costmary
+costotomy
+costrel
+costs
+costume
+costumed
+costumer
+costumers
+costumery
+costumes
+costumey
+costumier
+costuming
+cosy
+cot
+cot's
+cotan
+cotangent
+cote
+cotemporary
+cotenant
+coterie
+coteries
+coterminosity
+coterminous
+coterminously
+coth
+cothurnus
+cotidal
+cotillion
+cotillon
+Cotinga
+cotman
+cotoneaster
+cotonou
+cotopaxi
+cotquean
+Cotrubas
+cots
+cotswold
+cotswolds
+cotta
+cottage
+cottager
+cottagers
+cottages
+cottagey
+cottbus
+cotter
+cotters
+cottian
+cotton
+cottonade
+cottoned
+cottoning
+cottonization
+cottonization's
+cottonizations
+cottonize
+cottonizes
+cottonmouth
+cottons
+cottonseed
+cottontail
+cottontail's
+cottontails
+cottonweed
+cottonwood
+cottony
+Cottrell
+Cottrell's
+cotty
+cotyledon
+cotyledon's
+cotyledons
+cotyloid
+coucal
+couch
+couchant
+couched
+couches
+couchette
+couching
+cougar
+cougars
+cough
+coughed
+cougher
+coughing
+coughs
+could
+could've
+couldest
+couldn't
+couldst
+coulee
+coulibiaca
+couloir
+coulomb
+coulometer
+coulometers
+Coulter
+Coulter's
+coumarin
+coumarone
+council
+council's
+councillor
+councillor's
+councillors
+councilman
+councilmanic
+councilmen
+councilorship
+councils
+councilwoman
+councilwomen
+counsel
+counsel's
+counseled
+counselee
+counseling
+counselor
+counselor's
+counselors
+counselorship
+counsels
+count
+countability
+countable
+countably
+countdown
+countdown's
+countdowns
+counted
+countenance
+countenancer
+counter
+counteract
+counteracted
+counteracting
+counteraction
+counteractive
+counteracts
+counterargument
+counterarguments
+counterattack
+counterattacker
+counterattraction
+counterbalance
+counterbalanced
+counterbalances
+counterbalancing
+counterblast
+counterblow
+counterchallenge
+counterchange
+countercharge
+countercheck
+counterclaim
+counterclockwise
+counterculture
+countercurrent
+countercurrently
+countercyclical
+countered
+counterespionage
+counterexample
+counterexamples
+counterfactual
+counterfeit
+counterfeited
+counterfeiter
+counterfeiting
+counterfeits
+counterflow
+counterfoil
+counterforce
+counterglow
+countering
+counterinsurgency
+counterintelligence
+counterintuitive
+counterirritant
+counterman
+countermand
+countermanded
+countermanding
+countermands
+countermarch
+countermeasure
+countermeasure's
+countermeasures
+countermen
+countermove
+countermovement
+counteroffensive
+counteroffer
+counterpane
+counterpart
+counterpart's
+counterparts
+counterplan
+counterplea
+counterplot
+counterpoint
+counterpointing
+counterpoise
+counterpose
+counterposed
+counterposes
+counterposing
+counterposition
+counterproductive
+counterproof
+counterproposal
+counterpunch
+counterpuncher
+counterreformation
+counterrevolution
+counterrevolutionaries
+counterrevolutionary
+counterrevolutionary's
+counterrevolutionist
+counters
+countershade
+countershaded
+countershades
+countershading
+countershaft
+countershafts
+countersign
+countersignature
+countersink
+countersinking
+countersinks
+counterspy
+counterstatement
+countersubject
+countersunk
+countertenor
+countertenors
+counterterrorism
+counterterrorist
+counterthreat
+counterthreat's
+counterthreats
+countertrend
+countertype
+countervail
+countervailed
+countervailing
+countervails
+counterview
+counterweigh
+counterweight
+counterweight's
+counterweighted
+counterweighting
+counterweights
+counterword
+counterwork
+countess
+counties
+counting
+countless
+countlessly
+countries
+countrified
+countrify
+country
+country's
+countryfied
+countryish
+countryman
+countrymen
+countryseat
+countryside
+countrywide
+countrywoman
+counts
+county
+county's
+countywide
+coup
+coupal
+coupe
+Couperin
+couple
+couple's
+coupled
+couplement
+coupler
+couplers
+couples
+couplet
+couplet's
+couplets
+coupling
+couplings
+coupon
+coupon's
+coupons
+coups
+courage
+courageous
+courageously
+courageousness
+courante
+courantyne
+courbet
+courbevoie
+coureur
+courgette
+courier
+courier's
+couriers
+courlan
+Courland
+course
+coursed
+courser
+courses
+coursework
+coursing
+court
+courted
+courtelle
+courteous
+courteously
+courteousness
+courter
+courters
+courtesan
+courtesies
+courtesy
+courtesy's
+courthouse
+courthouse's
+courthouses
+courtier
+courtier's
+courtiers
+courting
+courtliness
+courtly
+courtmartial
+Courtney
+Courtney's
+courtrai
+courtroom
+courtroom's
+courtrooms
+courts
+courtship
+courtyard
+courtyard's
+courtyards
+couscous
+cousin
+cousin's
+cousinage
+cousinhood
+cousins
+cousinship
+Cousteau
+couth
+couthie
+couture
+couturier
+couturiere
+couvade
+covalence
+covalency
+covalent
+covalently
+covariance
+covariances
+covariant
+covariants
+covariate
+covariates
+covariation
+covary
+cove
+coven
+covenant
+covenant's
+covenantal
+covenanted
+covenantee
+covenanter
+covenanting
+covenantor
+covenants
+Covent
+covent
+coventry
+Coventry
+cover
+coverable
+coverage
+coverall
+coveralled
+coveralls
+coverdale
+covered
+coverer
+covering
+coverings
+coverless
+coverlet
+coverlet's
+coverlets
+coverley
+covers
+coversed
+covert
+covertly
+covertness
+coverture
+covertures
+coves
+covet
+covetable
+coveted
+coveter
+coveting
+covetingly
+covetous
+covetously
+covetousness
+covets
+covey
+coveys
+covin
+coving
+covington
+cow
+cowage
+Cowan
+Cowan's
+coward
+cowardice
+cowardliness
+cowardly
+cowards
+cowbane
+cowbell
+cowberry
+cowbind
+cowbird
+cowbirds
+cowboy
+cowboy's
+cowboys
+cowcatcher
+cowed
+cowedly
+Cowell
+cower
+cowered
+cowerer
+cowerers
+cowering
+coweringly
+cowers
+cowes
+cowfish
+cowgirl
+cowgirl's
+cowgirls
+cowhand
+cowhands
+cowherb
+cowherd
+cowhide
+cowhided
+cowhiding
+Cowichan
+cowing
+cowitch
+cowk
+cowl
+cowled
+cowley
+cowlick
+cowling
+cowls
+cowman
+cowmen
+coworker
+coworker's
+coworkers
+cowpat
+cowpea
+cowper
+cowpoke
+cowpony
+cowpox
+cowpunch
+cowpuncher
+cowry
+cows
+cowskin
+cowslip
+cowslip's
+cowslips
+cox
+coxa
+coxalgia
+coxcomb
+coxcombry
+coxcombs
+coxsackie
+coxswain
+coy
+coyly
+coyness
+coyote
+coyote's
+coyotes
+coyotillo
+coypu
+coz
+cozen
+cozier
+cozies
+cozily
+coziness
+cozy
+CPA
+CPR
+cpr
+CPU
+CPU's
+CPUs
+Craal
+crab
+crab's
+crabapple
+crabbe
+crabbed
+crabbedly
+crabbedness
+crabber
+crabbier
+crabbing
+crabby
+crabmeat
+crabs
+crabstick
+crabwise
+crack
+crackajack
+crackbrain
+crackbrained
+crackdown
+cracked
+cracker
+crackerjack
+crackers
+cracket
+cracking
+crackjaw
+crackle
+crackled
+crackles
+crackling
+crackly
+cracknel
+crackpot
+crackpots
+cracks
+cracksman
+cracow
+craddock
+cradle
+cradled
+cradler
+cradles
+cradlesong
+cradling
+craft
+crafted
+crafter
+craftier
+craftily
+craftiness
+crafting
+crafts
+craftsman
+craftsmanlike
+craftsmanship
+craftsmen
+craftspeople
+craftsperson
+craftswoman
+craftswomen
+crafty
+crag
+crag's
+cragged
+craggier
+craggily
+cragginess
+craggy
+crags
+cragsman
+Craig
+craigie
+craiova
+crake
+cram
+crambo
+Cramer
+crammed
+crammer
+cramming
+cramoisy
+cramp
+cramp's
+cramped
+cramper
+crampon
+crampon's
+crampons
+cramps
+crams
+cran
+cranach
+cranage
+cranberries
+cranberry
+cranberry's
+Crandall
+crane
+crane's
+craned
+cranelike
+craneman
+cranemen
+cranes
+cranesbill
+Cranfield
+Cranford
+crania
+cranial
+cranially
+craniate
+craning
+craniology
+craniometer
+craniometry
+craniotomy
+cranium
+crank
+crankcase
+cranked
+crankier
+crankiest
+crankily
+crankiness
+cranking
+cranko
+crankpin
+cranks
+crankshaft
+cranky
+cranmer
+crannied
+crannies
+crannog
+cranny
+Cranston
+cranwell
+crap
+crapaud
+crape
+craping
+crapper
+crappie
+crappier
+crapping
+crappy
+craps
+crapshooter
+crapulent
+crapulous
+craquelure
+crash
+crashable
+crashaw
+crashed
+crasher
+crashers
+crashes
+crashing
+crashworthiness
+crashworthy
+crasis
+crass
+crassest
+crassitude
+crassly
+crassness
+crassulaceous
+crassus
+cratch
+crate
+crater
+cratered
+craterlet
+craters
+crates
+crating
+craunch
+cravat
+cravat's
+cravats
+crave
+craved
+craven
+cravenly
+cravenness
+craver
+craves
+craving
+craw
+Crawford
+crawl
+crawled
+crawler
+crawlerize
+crawlerizes
+crawlers
+crawley
+crawling
+crawls
+crawlspace
+crawlway
+crawly
+Cray
+cray
+Cray's
+crayfish
+crayon
+crayonist
+crayons
+Crays
+craze
+crazed
+crazes
+crazier
+craziest
+crazily
+craziness
+crazing
+crazy
+creak
+creaked
+creakier
+creakily
+creaking
+creaks
+creaky
+cream
+creamcups
+creamed
+creamer
+creamers
+creamery
+creamily
+creaminess
+creaming
+creamlaid
+creams
+creamy
+crease
+creased
+creaseless
+creaser
+creases
+creasing
+create
+created
+creates
+creatine
+creating
+creatinine
+creation
+creationism
+creationism's
+creations
+creative
+creatively
+creativeness
+creativity
+creator
+creator's
+creators
+creatural
+creature
+creature's
+creaturehood
+creatureliness
+creaturely
+creatures
+creaturize
+creaturizes
+creche
+creches
+credence
+credendum
+credent
+credential
+credentials
+credenza
+credibility
+credible
+credibly
+credit
+creditability
+creditable
+creditableness
+creditably
+credited
+crediting
+creditor
+creditor's
+creditors
+credits
+credo
+credos
+credulity
+credulous
+credulously
+credulousness
+Cree
+cree
+creed
+creed's
+creedal
+creeds
+creek
+creek's
+creeks
+creekside
+creel
+creels
+creep
+creepage
+creeper
+creepers
+creepie
+creepier
+creepiness
+creeping
+creeps
+creepy
+creese
+Creighton
+creighton
+cremate
+cremated
+cremates
+cremating
+cremation
+cremations
+cremator
+crematorium
+crematory
+cremona
+crenate
+crenated
+crenately
+crenation
+crenel
+crenelate
+crenelated
+crenelates
+crenelation
+creneled
+creneling
+crenelle
+crenulate
+crenulated
+crenulation
+creodont
+Creole
+Creolization
+Creolize
+Creolized
+Creolizes
+Creolizing
+Creon
+creophagous
+creosol
+creosote
+crepe
+crepey
+crepitant
+crepitate
+crepitation
+crepitus
+crept
+crepuscle
+crepuscular
+crepuscule
+crepy
+crescendo
+crescent
+crescent's
+crescentic
+crescents
+crescive
+crescively
+cresol
+cress
+cresset
+Cressida
+cressy
+crest
+crestal
+crested
+crestfallen
+crestfallenly
+crestfallenness
+cresting
+crestless
+Creston
+crests
+Crestview
+cresylic
+Cretaceous
+Cretaceously
+Cretan
+Crete
+Cretic
+cretin
+cretinism
+cretinization
+cretinization's
+cretinizations
+cretinize
+cretinizes
+cretinous
+cretins
+cretonne
+creuse
+crevasse
+crevice
+crevice's
+crevices
+crew
+crewcut
+crewe
+crewed
+crewel
+crewelwork
+crewing
+crewless
+crewman
+crewmember
+crewmembers
+crewmen
+crews
+crib
+crib's
+cribbage
+cribbage's
+cribber
+cribbing
+cribellum
+cribriform
+cribs
+Crichton
+crick
+cricket
+cricket's
+cricketer
+cricketing
+crickets
+cricoid
+cried
+crier
+criers
+cries
+crikey
+crim
+crime
+crime's
+Crimea
+Crimean
+crimes
+criminal
+criminality
+criminalization
+criminalization's
+criminalize
+criminally
+criminals
+criminate
+criminating
+crimination
+criminological
+criminologically
+criminologist
+criminology
+criminous
+crimmer
+crimp
+crimped
+crimper
+crimpier
+crimping
+crimple
+crimplene
+crimps
+crimpy
+crimson
+crimsoning
+cringe
+cringed
+cringer
+cringes
+cringing
+cringle
+crinite
+crinkle
+crinkled
+crinkleroot
+crinkles
+crinkling
+crinkly
+crinoid
+crinoline
+Crinum
+criollo
+cripes
+crippen
+cripple
+crippled
+crippler
+cripples
+crippling
+cripps
+crises
+criseyde
+crisis
+crisp
+crispate
+crispation
+crispbread
+crisper
+crispi
+crispier
+Crispin
+Crispin's
+crispiness
+crisply
+crispness
+crisps
+crispy
+criss
+crisscross
+crisscrossed
+crisscrosses
+crissum
+crista
+cristate
+cristobalite
+criteria
+criterion
+critic
+critic's
+critical
+criticality
+critically
+criticalness
+criticaster
+criticism
+criticism's
+criticisms
+criticizable
+criticizable's
+criticizables
+criticize
+criticized
+criticizer
+criticizers
+criticizes
+criticizing
+criticizinglies
+criticizingly
+critics
+critique
+critiqued
+critiques
+critiquing
+critter
+critter's
+critters
+croak
+croaked
+croaker
+croakers
+croaking
+croaks
+croaky
+Croat
+Croatia
+croatian
+Croatian
+croce
+crocein
+crochet
+crocheted
+crocheter
+crocheting
+crochets
+crocidolite
+crock
+crocked
+crocker
+crockery
+crocket
+crocketed
+Crockett
+Crockford
+crocks
+crocodile
+crocodiles
+crocodilian
+crocoite
+crocus
+crocuses
+croesus
+croft
+crofter
+crofterization
+crofterization's
+crofterizations
+crofterize
+crofterizes
+crofters
+croissant
+croissants
+Croix
+crombec
+cromlech
+Crompton
+Cromwell
+Cromwellian
+crone
+crones
+cronies
+Cronin
+cronk
+cronus
+crony
+cronyism
+crook
+crookback
+crookbacked
+crooked
+crookedly
+crookedness
+Crookes
+Crookesmoor
+crooks
+croon
+crooned
+crooner
+crooners
+crooning
+croons
+crop
+crop's
+cropland
+cropland's
+croplands
+cropped
+cropper
+cropper's
+croppers
+cropping
+crops
+croquet
+croquette
+crore
+Crosby
+crosier
+cross
+crossability
+crossable
+crossarm
+crossbar
+crossbar's
+crossbars
+crossbeam
+crossbearer
+crossbill
+crossbones
+crossbow
+crossbowman
+crossbred
+crossbreed
+crosscheck
+crosscurrent
+crosscurrents
+crosscut
+crosse
+crossed
+crosser
+crossers
+crosses
+crossfire
+crosshatch
+crosshatched
+crosshatches
+crosshatching
+crosshead
+crossing
+crossings
+crossjack
+crosslet
+Crossley
+crosslink
+crosslink's
+crosslinks
+crossly
+crossopterygian
+crossover
+crossover's
+crossovers
+crosspatch
+crosspiece
+crosspoint
+crosspool
+crossproduct
+crossproducts
+crossroad
+crossroading
+crossroads
+crossruff
+crosstabulate
+crosstabulation
+crosstalk
+crosstie
+crossties
+crosstown
+crosstree
+crosswalk
+crossway
+crossways
+crosswind
+crosswise
+crossword
+crossword's
+crosswords
+crotch
+crotched
+crotches
+crotchet
+crotcheted
+crotchetiness
+crotcheting
+crotchets
+crotchety
+croton
+crotone
+crotonic
+crouch
+crouched
+crouches
+crouching
+croup
+croupier
+croupous
+croupy
+crouse
+croute
+crouton
+croutons
+crow
+crowbait
+crowbar
+crowbar's
+crowbars
+crowberry
+crowboot
+crowd
+crowded
+crowdedness
+crowder
+crowding
+crowds
+crowed
+crowfeet
+crowfoot
+crowfoots
+crowing
+crowkeeper
+Crowley
+crown
+crowned
+crowner
+crownet
+crowning
+Crownland
+crownpiece
+crowns
+crownwork
+crows
+Croydon
+Croydon's
+croze
+crozier
+CRT
+cru
+cruces
+crucial
+crucially
+crucian
+cruciate
+cruciately
+crucible
+crucifer
+cruciferous
+crucification
+crucified
+crucifies
+crucifix
+crucifixion
+cruciform
+cruciformly
+crucify
+crucifying
+cruck
+crud
+crudded
+crudding
+cruddy
+crude
+crudely
+crudeness
+cruder
+crudest
+crudities
+crudity
+cruel
+crueler
+cruelest
+cruelize
+cruelizes
+crueller
+cruellest
+cruelly
+cruelness
+cruelty
+cruet
+cruft
+crufty
+Cruickshank
+Cruickshank's
+cruise
+cruised
+cruiser
+cruisers
+cruiserweight
+cruises
+cruiseway
+cruising
+cruller
+crumb
+crumbier
+crumble
+crumbled
+crumbles
+crumblier
+crumbliness
+crumbling
+crumblings
+crumbly
+crumbs
+crumby
+crumhorn
+crummier
+crummies
+crummock
+crummy
+crump
+crumpet
+crumple
+crumpled
+crumples
+crumpling
+crunch
+crunched
+cruncher
+crunchers
+crunches
+crunchier
+crunchiest
+crunchiness
+crunching
+crunchy
+crunode
+crupper
+crura
+crural
+crus
+crusade
+crusaded
+crusader
+crusaders
+crusades
+crusading
+crusado
+cruse
+crush
+crushable
+crushed
+crusher
+crushers
+crushes
+crushing
+crushingly
+crushproof
+Crusoe
+crust
+crust's
+crustacea
+crustacean
+crustacean's
+crustaceans
+crustaceous
+crustal
+crusted
+crustier
+crustification
+crustily
+crustiness
+crusting
+crustose
+crusts
+crusty
+crutch
+crutch's
+crutched
+crutches
+crux
+crux's
+cruxes
+cruyff
+Cruz
+cruzado
+cruzeiro
+crwth
+cry
+crybaby
+cryer
+crying
+crymotherapy
+cryobiological
+cryobiologically
+cryobiologist
+cryobiologists
+cryobiology
+cryocable
+cryogen
+cryogenic
+cryogenically
+cryogenics
+cryogeny
+cryohydrate
+cryolite
+cryometer
+cryonic
+cryonics
+cryophilic
+cryophyte
+cryoplankton
+cryoscope
+cryoscopic
+cryoscopy
+cryostat
+cryosurgery
+cryotherapy
+cryotron
+crypt
+cryptaesthesia
+cryptal
+cryptanalysis
+cryptanalyst
+cryptanalytic
+cryptanalyze
+cryptic
+cryptical
+cryptically
+crypto
+cryptoclastic
+cryptocrystalline
+cryptogam
+cryptogenic
+cryptogram
+cryptogram's
+cryptogrammic
+cryptograms
+cryptograph
+cryptographer
+cryptographic
+cryptographically
+cryptography
+cryptologic
+cryptological
+cryptologist
+cryptology
+Cryptomeria
+cryptos
+cryptozoic
+cryptozoite
+crypts
+cryst
+crystal
+crystal's
+crystalline
+crystallite
+crystallites
+crystallizabilities
+crystallizability
+crystallizability's
+crystallizable
+crystallizable's
+crystallizables
+crystallization
+crystallization's
+crystallizations
+crystallize
+crystallized
+crystallizer
+crystallizers
+crystallizes
+crystallizing
+crystallographer
+crystallographers
+crystallographic
+crystallographica
+crystallography
+crystals
+CSNET
+CST
+CT
+ctenidium
+ctenoid
+ctenophore
+ctesiphon
+cub
+cub's
+Cuba
+cubage
+Cuban
+cubane
+Cubanize
+Cubanizes
+Cubans
+cubature
+cubbies
+cubby
+cubbyhole
+cube
+cubeb
+cubed
+cuber
+Cuberli
+cubes
+cubic
+cubical
+cubically
+cubicle
+cubicles
+cubicly
+cubics
+cubiculum
+cubiform
+cubing
+cubism
+cubist
+cubistic
+cubists
+cubit
+cubital
+cuboid
+cuboidal
+cubs
+cucking
+cuckold
+cuckoldry
+cuckoo
+cuckoo's
+cuckooflower
+cuckoopint
+cuckoos
+cuculiform
+cucullate
+cucullated
+cucullates
+cucumber
+cucumber's
+cucumbers
+cucurbit
+cud
+cudbear
+cuddle
+cuddleback
+cuddled
+cuddles
+cuddlesome
+cuddlier
+cuddling
+cuddly
+cuddy
+cudgel
+cudgel's
+cudgeled
+cudgeler
+cudgelers
+cudgeling
+cudgelings
+cudgels
+cudgerie
+cudweed
+cue
+cued
+cueing
+cuenca
+cuernavaca
+cues
+cuesta
+cuff
+cuff's
+cuffed
+cuffing
+cuffless
+cufflink
+cufflinks
+cuffs
+cufic
+cuing
+cuirass
+cuirassier
+cuisine
+cuisse
+cuke
+culation
+Culbertson
+Culbertson's
+culch
+culebra
+culet
+Culex
+culicid
+culinary
+cull
+culled
+cullender
+culler
+cullet
+culling
+cullis
+culloden
+culls
+cully
+culm
+culmiferous
+culminant
+culminate
+culminated
+culminates
+culminating
+culmination
+culotte
+culottes
+culpa
+culpability
+culpable
+culpableness
+culpably
+culpas
+culprit
+culprit's
+culprits
+cult
+cult's
+cultch
+cultic
+cultigen
+cultism
+cultist
+cultists
+cultivability
+cultivable
+cultivar
+cultivars
+cultivatable
+cultivate
+cultivated
+cultivates
+cultivating
+cultivation
+cultivations
+cultivator
+cultivator's
+cultivators
+cultrate
+cults
+cultural
+culturally
+culture
+cultured
+cultures
+culturing
+culturization
+culturization's
+culturizations
+culturize
+culturizes
+Culver
+culverin
+Culvers
+culvert
+cum
+cumae
+cumber
+Cumberland
+cumbernauld
+cumbersome
+cumbersomely
+cumbersomeness
+cumbria
+Cumbrian
+cumbrous
+cumbrously
+cumbrousness
+cumin
+cummerbund
+Cummings
+Cummins
+cumquat
+cumshaw
+cumulate
+cumulated
+cumulates
+cumulating
+cumulation
+cumulations
+cumulative
+cumulatively
+cumulet
+cumuliform
+cumulonimbus
+cumulostratus
+cumulous
+cumulus
+Cunard
+cunaxa
+cunctation
+cunctative
+Cundick
+cuneal
+cuneate
+cuneately
+cuneiform
+cuneo
+cunjevoi
+cunner
+cunnilinctus
+cunnilingus
+cunning
+Cunningham
+cunningly
+cunningness
+cunt
+CUNY
+cup
+cup's
+cupbearer
+cupboard
+cupboard's
+cupboards
+cupcake
+cupcakes
+cupel
+cupelation
+cupeled
+cupeler
+cupelers
+cupeling
+Cupertino
+Cupertino's
+cupful
+cupfuls
+Cupid
+cupidity
+cuplike
+cupola
+cuppa
+cupped
+cuppier
+cupping
+cuppy
+cupreous
+cupric
+cupriferous
+cuprite
+cuprous
+cuprum
+cups
+cupsful
+cupular
+cupulate
+cupule
+cur
+curability
+curable
+curableness
+curably
+curacy
+curare
+curarine
+curarize
+curarized
+curarizes
+curarizing
+curassow
+curate
+curative
+curatively
+curatize
+curatizes
+curator
+curatorial
+curators
+curatorship
+curb
+curbed
+curbing
+curbs
+curbside
+curbstone
+curch
+Curculio
+Curcuma
+curd
+curdle
+curdled
+curdles
+curdling
+curds
+cure
+cured
+cureless
+curer
+cures
+curet
+curettage
+curette
+curetted
+curettement
+curetting
+curfew
+curfew's
+curfews
+curia
+curiae
+curie
+curing
+curio
+curios
+curiosa
+curiosities
+curiosity
+curiosity's
+curious
+curiouser
+curiousest
+curiously
+curiousness
+curite
+curitiba
+curium
+curl
+curled
+curler
+curlers
+curlew
+curlicue
+curlier
+curliness
+curling
+curlpaper
+curls
+curly
+curmudgeon
+curmudgeonly
+currajong
+Curran
+Curran's
+currant
+currant's
+currants
+currawong
+currencies
+currency
+currency's
+current
+currently
+currentness
+currents
+curricle
+curricula
+curricular
+curricularization
+curricularization's
+curricularizations
+curricularize
+curricularizes
+curriculum
+curriculum's
+curriculums
+currie
+curried
+currier
+curriery
+curries
+currish
+currishly
+curry
+currycomb
+currying
+curs
+curse
+cursed
+cursedly
+cursedness
+curses
+cursing
+cursive
+cursively
+cursiveness
+cursor
+cursor's
+cursorial
+cursorily
+cursoriness
+cursors
+cursory
+curst
+curt
+curtail
+curtailed
+curtailer
+curtailing
+curtailment
+curtails
+curtain
+curtained
+curtaining
+curtains
+curtal
+Curtana
+curtesy
+curtilage
+curtin
+Curtis
+curtly
+curtness
+curtsey
+curtseyed
+curtseying
+curtseys
+curtsied
+curtsies
+curtsy
+curtsy's
+curtsying
+curule
+curvaceous
+curvaceously
+curvacious
+curvature
+curvatures
+curve
+curveball
+curved
+curves
+CURVET
+Curvet
+curvilineal
+curvilinear
+curvilinearity
+curvilinearly
+curving
+curvy
+curzon
+cusco
+Cuscus
+cusec
+cush
+cushat
+cushiest
+cushily
+Cushing
+Cushing's
+cushion
+cushioned
+cushioning
+cushionless
+cushions
+cushiony
+Cushitic
+Cushman
+cushy
+cusk
+cuso
+cusp
+cusp's
+cuspate
+cuspated
+cuspid
+cuspidate
+cuspidated
+cuspidation
+cuspidor
+cusps
+cuss
+cussed
+cussedly
+cussedness
+cusser
+cusses
+cussword
+cusswords
+custard
+Custer
+Custer's
+custodial
+custodian
+custodian's
+custodians
+custodianship
+custodianships
+custodies
+custody
+custom
+customable
+customarily
+customariness
+customary
+customer
+customer's
+customers
+customhouse
+customhouses
+customizable
+customization
+customization's
+customizations
+customize
+customized
+customizer
+customizers
+customizes
+customizing
+customs
+customshouse
+custos
+custumal
+cut
+cut's
+cutability
+cutaneous
+cutaneously
+cutaround
+cutaway
+cutback
+cutbacks
+cutch
+cutcherry
+cute
+cutely
+cuteness
+cuter
+cutes
+cutest
+cutesy
+cutey
+cuteys
+Cuthbert
+cuticle
+cuticles
+cuticula
+cuticular
+cutie
+cutin
+cutinize
+cutinized
+cutinizes
+cutinizing
+cutis
+cutization
+cutization's
+cutizations
+cutlass
+cutler
+cutlery
+cutlet
+cutlets
+cutline
+cutoff
+cutoffs
+cutout
+cutouts
+cutover
+cutpurse
+cuts
+cutset
+cuttable
+cuttack
+cutter
+cutter's
+cutters
+cutthroat
+cutting
+cuttingly
+cuttings
+cuttle
+cuttlebone
+cuttlebones
+cuttlefish
+cuttlefishes
+cutty
+cutup
+cutups
+cutwater
+cutwork
+cutworm
+cuvette
+Cuvier
+cuxhaven
+cuyp
+cuzco
+Cuzco
+cwmbran
+cyan
+Cyanamid
+cyanamide
+cyanate
+cyanic
+cyanide
+cyanine
+cyanite
+cyanocobalamin
+cyanogen
+cyanohydrin
+cyanosis
+cyanotype
+cybele
+cyber
+cybernate
+cybernated
+cybernation
+cybernetic
+cybernetical
+cybernetically
+cybernetician
+cyberneticist
+cybernetics
+cyborg
+cycad
+Cyclades
+cyclamate
+cyclamen
+cycle
+cycled
+cycler
+cycles
+cyclic
+cyclical
+cyclically
+cyclicity
+cyclicly
+cycling
+cyclist
+cyclists
+cyclitol
+cyclization
+cyclization's
+cyclizations
+cyclize
+cyclized
+cyclizes
+cyclizing
+cyclo
+cycloaddition
+cycloalkane
+cyclograph
+cycloheptatrienyl
+cyclohexane
+cyclohexanol
+cyclohexyl
+cycloid
+cycloid's
+cycloidal
+cycloids
+cyclometer
+cyclometer's
+cyclometers
+cyclone
+cyclone's
+cyclones
+cyclonic
+cyclonically
+cyclonite
+cycloparaffin
+cyclopean
+cyclopedia
+cyclopentadienyl
+cyclopentane
+cycloplegia
+cyclopropane
+cyclops
+cyclorama
+cyclos
+cyclosis
+cyclostome
+cyclostyle
+cyclothymia
+cyclotomic
+cyclotomy
+cyclotron
+cyder
+cydnus
+cygnet
+cygnet's
+cygnets
+Cygnus
+cylinder
+cylinder's
+cylindered
+cylindering
+cylinders
+cylindric
+cylindrical
+cylindrically
+cylindroid
+cylix
+cyma
+cymar
+cymatium
+cymbal
+cymbal's
+cymbalist
+cymbalists
+cymbalo
+cymbals
+cyme
+cymene
+cymogene
+cymograph
+cymoid
+cymophane
+cymose
+Cymric
+cymru
+cynghanedd
+cynic
+cynical
+cynically
+cynicism
+cynics
+cynosure
+Cynthia
+cyperaceous
+cypher
+cyphers
+cypress
+Cyprian
+cyprinid
+cyprinodont
+cyprinoid
+Cypriot
+Cypripedium
+Cyprus
+cypsela
+Cyrano
+Cyrenaic
+cyrenaica
+cyrene
+Cyril
+Cyrillic
+Cyrus
+cyst
+cystamine
+cystectomy
+cysteine
+cystic
+cysticercoid
+cystine
+cystitis
+cystocarp
+cystocele
+cystoid
+cystolith
+cystoscope
+cystotomy
+cysts
+cytaster
+cythera
+Cytherea
+cytidine
+cytochemical
+cytochemically
+cytochemistry
+cytochrome
+cytogenesis
+cytogenetics
+cytokinesis
+cytokinin
+cytologic
+cytological
+cytologically
+cytologist
+cytology
+cytolysin
+cytolysis
+cytolytic
+cyton
+cytopathogenicity
+cytophilic
+cytoplasm
+cytoplasmic
+cytoplasmically
+cytoplast
+cytosine
+cytostatic
+cytostatically
+cytotaxonomy
+cytotoxicity
+cytotoxin
+cytotropic
+cyzicus
+CZ
+czar
+czardas
+czarevitch
+czarevna
+czarina
+czarism
+czarist
+czarship
+Czech
+Czechization
+Czechization's
+Czechizations
+Czechoslovak
+Czechoslovakia
+Czechoslovakian
+Czerniak
+Czerniak's
+Czernowitz
+Czerny
+d'art
+d'etat
+d'etre
+d'oeuvre
+d's
+DA's
+dab
+dabbed
+dabber
+dabbers
+dabbing
+dabble
+dabbled
+dabbler
+dabblers
+dabbles
+dabbling
+dabchick
+dabs
+dabster
+Dacca
+Dacca's
+dace
+dacha
+dachau
+dachshund
+dachshunde
+dachsund
+dacia
+dacoit
+dacoity
+dacron
+Dacron
+dactyl
+dactylic
+dactylogram
+dactylography
+dactylology
+dactyls
+dactylus
+dad
+dad's
+Dada
+Dadaism
+Dadaist
+Dadaistic
+daddies
+daddy
+Dade
+dado
+dadra
+dads
+daedal
+Daedalus
+daemon
+daemon's
+daemons
+daff
+daffier
+daffodil
+daffodil's
+daffodils
+daffy
+daft
+dafter
+daftest
+daftly
+daftness
+DAG
+dagan
+Dagenham
+Dagestan
+dagga
+dagger
+daggerboard
+daggerman
+daggers
+Dago
+dagoba
+dagon
+daguerre
+daguerreotype
+daguerreotype's
+daguerreotypes
+daguerreotypic
+daguerreotypy
+Dahl
+Dahl's
+dahlia
+dahlias
+dahna
+Dahomey
+Dahomey's
+Dailey
+Dailey's
+dailies
+daily
+Daimler
+daimon
+daimones
+daimonic
+daimons
+daimyo
+daintier
+dainties
+daintily
+daintiness
+dainty
+daiquiri
+daiquiris
+dairen
+dairies
+dairy
+dairying
+dairyland
+Dairylea
+dairymaid
+dairyman
+dairymen
+dais
+daises
+daishiki
+daisies
+daisy
+daisy's
+daisycutter
+dak
+Dakar
+Dakota
+dal
+daladier
+dalai
+dalasi
+dale
+dale's
+dales
+dalesman
+daleth
+Daley
+Daley's
+Dalhousie
+dalhousie
+dali
+Dali
+dallapiccola
+Dallas
+dalliance
+dallied
+dallier
+dalloway
+dally
+dallyes
+dallying
+dalmatia
+dalmatian
+dalmatians
+dalmatic
+Dalton
+Daltonism
+Daly
+Dalzell
+Dalzell's
+dam
+dam's
+damage
+damaged
+damager
+damagers
+damages
+damaging
+damagingly
+Damara
+Damaraland
+Damascene
+Damascus
+damask
+dame
+damed
+Damien
+damietta
+dammed
+damming
+dammit
+damn
+damnable
+damnableness
+damnably
+damnation
+damnatory
+damndest
+damned
+damneder
+damnedest
+damnify
+damning
+damningly
+damns
+Damocles
+damodar
+Damon
+Damon's
+damp
+dampcourse
+damped
+dampen
+dampened
+dampener
+dampening
+dampens
+damper
+dampers
+dampier
+damping
+dampish
+damply
+dampness
+damps
+dams
+damsel
+damsel's
+damselfish
+damselflies
+damselfly
+damsels
+Damson
+Dan
+Dan's
+Dana
+Dana's
+Danaides
+Danbury
+dance
+danceability
+danceable
+danced
+dancelike
+dancer
+dancers
+dances
+dancing
+dandelion
+dandelion's
+dandelions
+dander
+dandiacal
+dandiacally
+dandie
+dandier
+dandies
+dandification
+dandify
+dandily
+dandiprat
+dandle
+dandled
+dandling
+dandruff
+dandruffy
+dandy
+dandyish
+dandyishly
+dandyism
+dandyize
+dandyizes
+dandys
+Dane
+Danegeld
+Danelaw
+Danes
+dang
+danged
+danger
+danger's
+dangerous
+dangerously
+dangerousness
+dangers
+dangle
+dangled
+dangler
+dangler's
+danglers
+dangles
+dangling
+danglingly
+Daniel
+Daniels
+Danielson
+Danio
+Danish
+Danization
+Danization's
+Danizations
+Danize
+Danizes
+dank
+dankly
+dankness
+Danny
+Danny's
+danseur
+Dante
+Danton
+Danube
+Danubian
+Danville
+Danzig
+Daphne
+daphnia
+Daphnis
+dapper
+dapperly
+dapperness
+dapple
+dappled
+dapples
+dappling
+Dapsang
+daraf
+darbies
+Darby
+Darcy
+Darcy's
+Dard
+Dardan
+dardanelles
+dardanus
+Dardic
+dare
+dared
+daredevil
+daredevilry
+daredevils
+daredeviltry
+dareful
+darer
+darers
+dares
+daresay
+daresbury
+darfur
+darg
+dargah
+daric
+Darien
+daring
+daringly
+daringness
+dario
+dariole
+Darius
+Darjeeling
+dark
+darken
+darkend
+darkened
+darkener
+darkeners
+darkening
+darker
+darkest
+darkish
+darkle
+darkly
+darkness
+darkroom
+darkrooms
+darks
+darksome
+darlan
+Darlene
+darling
+darling's
+darlingly
+darlingness
+darlings
+Darlington
+darlington
+darmstadt
+darn
+darned
+darnel
+darner
+darning
+darnley
+darns
+darogha
+DARPA
+DARPA's
+Darrell
+Darrow
+darrow
+Darry
+darry
+dart
+dartboard
+darted
+darter
+Dartford
+darting
+Dartmoor
+Dartmouth
+darts
+Darwin
+Darwinian
+Darwinism
+Darwinistic
+Darwinize
+Darwinizes
+Daryl
+Daryl's
+dash
+dashboard
+dashboards
+dashed
+dasheen
+dasher
+dashers
+dashes
+dashiki
+dashing
+dashingly
+dashpot
+dassie
+dastard
+dastardize
+dastardizes
+dastardliness
+dastardly
+dasyure
+data
+databank
+databanks
+database
+database's
+databases
+datable
+datafile
+datagram
+datagram's
+datagrams
+Datamation
+Datamedia
+datamedia
+datary
+dataset
+datasets
+dataswitch
+dataswitches
+datatype
+datcap
+datcha
+date
+dateable
+dated
+datedly
+datedness
+dateless
+dateline
+datelined
+datelines
+dater
+dates
+datetime
+dating
+dative
+dato
+datolite
+Datsun
+datuk
+datum
+datums
+datura
+daub
+daube
+daubed
+dauber
+daubery
+daubigny
+daubs
+daudet
+daugava
+daugavpils
+Daugherty
+Daugherty's
+daughter
+daughter's
+daughterless
+daughterly
+daughters
+daumier
+daunt
+daunted
+daunting
+dauntless
+dauntlessly
+dauntlessness
+daunts
+dauphin
+dauphine
+davao
+Dave
+Dave's
+davenport
+David
+David's
+Davidovich
+Davidson
+Davie
+Davies
+Davinich
+Davis
+Davison
+Davison's
+davit
+davits
+Davy
+daw
+dawdle
+dawdled
+dawdler
+dawdlers
+dawdles
+dawdling
+dawes
+dawn
+dawned
+dawning
+dawns
+Dawson
+day
+day's
+dayak
+dayan
+daybed
+daybook
+dayboy
+daybreak
+daybreaks
+daydream
+daydreamed
+daydreamer
+daydreamers
+daydreaming
+daydreamlike
+daydreams
+dayfile
+dayflower
+dayfly
+daylight
+daylight's
+daylights
+daylong
+daymare
+dayroom
+dayrooms
+days
+dayspring
+daystar
+daytime
+daytimes
+Dayton
+Daytona
+Daytona's
+daze
+dazed
+dazedness
+dazes
+dazing
+dazzle
+dazzled
+dazzler
+dazzlers
+dazzles
+dazzling
+dazzlingly
+db
+DB
+DC
+de
+deacidification
+deacidify
+deacon
+deacon's
+deaconess
+deaconize
+deaconizes
+deaconry
+deacons
+deactivate
+deactivated
+deactivates
+deactivating
+deactivation
+deactivator
+dead
+deadbeat
+deaden
+deadened
+deadener
+deadening
+deadeningly
+deadens
+deadeye
+deadfall
+deadhead
+deadheads
+deadlier
+deadliest
+deadlight
+deadline
+deadline's
+deadlines
+deadliness
+deadlock
+deadlocked
+deadlocking
+deadlocks
+deadly
+deadness
+deadpan
+deadpanner
+deadstarting
+deadweight
+deadwood
+deaerate
+deaerates
+deaeration
+deaf
+deafen
+deafened
+deafening
+deafeningly
+deafens
+deafer
+deafest
+deafly
+deafness
+deakin
+deal
+dealate
+dealated
+dealates
+dealation
+dealer
+dealers
+dealership
+dealerships
+dealfish
+dealing
+dealings
+deallocate
+deallocated
+deallocates
+deallocating
+deallocation
+deallocation's
+deallocations
+deallocator
+deals
+dealt
+deaminate
+deamination
+deaminize
+dean
+dean's
+Deane
+Deane's
+deanery
+Deanna
+Deanna's
+deans
+deanship
+dear
+Dearborn
+dearchive
+dearchived
+dearchives
+dearchiving
+dearer
+dearest
+dearie
+dearly
+dearness
+dears
+dearth
+dearths
+deary
+deassign
+deassignment
+deassigns
+death
+deathbed
+deathblow
+deathless
+deathlessly
+deathlessness
+deathly
+deaths
+deathsman
+deathtrap
+deathward
+deathwatch
+Deauville
+Deb
+debacle
+debacles
+debag
+debar
+debark
+debarkation
+debarks
+debarment
+debarred
+debarring
+debars
+debase
+debased
+debasement
+debaser
+debases
+debasing
+debatable
+debate
+debated
+debatement
+debater
+debaters
+debates
+debating
+debator
+debators
+debauch
+debauched
+debauchedly
+debauchedness
+debauchee
+debaucher
+debauchery
+debauches
+Debbie
+Debbie's
+Debby
+debe
+debenture
+debentures
+debilitate
+debilitated
+debilitates
+debilitating
+debilitation
+debility
+debit
+debited
+debiting
+debits
+debonair
+debonairly
+debonairness
+debone
+deboner
+debones
+deboning
+Deborah
+debouch
+debouchment
+debouchure
+Debra
+debrecen
+debrief
+debriefed
+debriefing
+debriefs
+debris
+debs
+debt
+debt's
+debtless
+debtor
+debtors
+debts
+debug
+debugged
+debugger
+debugger's
+debuggers
+debugging
+debugs
+debunk
+debunker
+debunking
+debunks
+debus
+Debussy
+debut
+debutant
+debutante
+debutante's
+debutantes
+debuting
+debuts
+debye
+Dec
+decade
+decade's
+decadence
+decadency
+decadent
+decadently
+decades
+decaffeinate
+decaffeinated
+decaffeinates
+decaffeinating
+decagon
+decagram
+decahedron
+decal
+decalcification
+decalcify
+decalcomania
+decalescence
+decaliter
+decaliters
+decalogue
+decalogues
+decameter
+decameter's
+decameters
+decametric
+decamp
+decampment
+decamps
+decanal
+decane
+decanedioic
+decani
+decanoic
+decanol
+decant
+decantation
+decanted
+decanter
+decanters
+decanting
+decants
+decapitate
+decapitated
+decapitates
+decapitating
+decapitation
+decapitator
+decapod
+decapod's
+decapods
+decapolis
+decarbonate
+decarbonated
+decarbonates
+decarbonating
+decarbonation
+decarbonator
+decarbonization
+decarbonize
+decarbonized
+decarbonizer
+decarbonizes
+decarbonizing
+decarboxylation
+decarburization
+decarburize
+decarburized
+decarburizes
+decarburizing
+decastyle
+decasualization
+decasyllabic
+decasyllable
+decathlon
+decathlons
+Decatur
+Decatur's
+decay
+decayed
+decayer
+decaying
+decays
+Decca
+deccan
+decease
+deceased
+deceases
+deceasing
+decedent
+deceit
+deceitful
+deceitfully
+deceitfulness
+deceivable
+deceivableness
+deceive
+deceived
+deceiver
+deceivers
+deceives
+deceiving
+deceivingly
+decelerate
+decelerated
+decelerates
+decelerating
+deceleration
+decelerations
+decelerator
+decelerometer
+December
+December's
+Decembers
+Decembrist
+decemvirate
+decenary
+decencies
+decency
+decency's
+decennial
+decennially
+decennium
+decent
+decently
+decentralist
+decentralization
+decentralization's
+decentralizationist
+decentralizations
+decentralize
+decentralized
+decentralizes
+decentralizing
+deception
+deception's
+deceptional
+deceptions
+deceptive
+deceptively
+deceptiveness
+decerebrate
+decerebrated
+decerebrates
+decerebrating
+decerebration
+decern
+decertification
+decertify
+dechlorinate
+dechlorinated
+dechlorinates
+dechlorination
+deciare
+decibel
+decibels
+decidability
+decidable
+decide
+decided
+decidedly
+decidedness
+decider
+decides
+deciding
+decidua
+decidual
+deciduate
+deciduous
+deciduously
+deciduousness
+decigram
+decigram's
+decigrams
+decile
+deciliter
+deciliters
+decillion
+decimal
+decimalization
+decimalization's
+decimalizations
+decimalize
+decimalized
+decimalizes
+decimalizing
+decimally
+decimals
+decimate
+decimated
+decimates
+decimating
+decimation
+decimeter
+decimeter's
+decimeters
+decimetric
+decipher
+decipherable
+deciphered
+decipherer
+decipherers
+deciphering
+decipherment
+deciphers
+decision
+decision's
+decisional
+decisionmaker
+decisions
+decisive
+decisively
+decisiveness
+decistere
+deck
+decked
+decker
+deckhand
+deckhouse
+decking
+deckings
+deckle
+decks
+declaim
+declaimed
+declaimer
+declaiming
+declaims
+declamation
+declamations
+declamatory
+declarable
+declarant
+declaration
+declaration's
+declarations
+declarative
+declaratively
+declaratives
+declarator
+declarators
+declaratory
+declare
+declared
+declarer
+declarers
+declares
+declaring
+declass
+declasse
+declassification
+declassifications
+declassify
+declension
+declensional
+declensionally
+declensions
+declinable
+declinate
+declination
+declination's
+declinational
+declinations
+decline
+declined
+decliner
+decliners
+declines
+declining
+declinometer
+declivitous
+declivity
+declog
+declogged
+declogging
+declogs
+decluster
+declustered
+declustering
+declusters
+declutch
+declutched
+declutches
+declutching
+DECNET
+decoct
+decocted
+decocting
+decoction
+decoctions
+decocts
+decode
+decoded
+decoder
+decoders
+decodes
+decoding
+decodings
+decoke
+decollate
+decollated
+decollates
+decollating
+decollation
+decollations
+decolletage
+decolletages
+decollimate
+decolonise
+decolonization
+decolonize
+decolonized
+decolonizes
+decolonizing
+decolor
+decolorant
+decolorants
+decolorate
+decolorated
+decolorates
+decolored
+decoloring
+decolorise
+decolorised
+decolorises
+decolorization
+decolorize
+decolorized
+decolorizer
+decolorizes
+decolors
+decommission
+decompensate
+decompensation
+decompensatory
+decompile
+decompiled
+decompiler
+decompilers
+decompiles
+decompiling
+decomposability
+decomposable
+decompose
+decomposed
+decomposer
+decomposes
+decomposing
+decomposition
+decomposition's
+decompositions
+decompound
+decompress
+decompressed
+decompresser
+decompresses
+decompressing
+decompression
+deconcentrate
+deconcentrator
+decondition
+decongest
+decongestant
+decongestion
+decongestive
+deconsecrate
+deconsecration
+deconstruct
+decontaminate
+decontaminated
+decontaminates
+decontaminating
+decontamination
+decontaminations
+decontrol
+decontrolled
+decontrolling
+deconvolution
+deconvolve
+decor
+decorate
+decorated
+decorates
+decorating
+decoration
+decorations
+decorative
+decoratively
+decorativeness
+decorator
+decorators
+decorous
+decorously
+decorousness
+decorticate
+decorticated
+decorticates
+decorticating
+decortication
+decorticator
+decorticators
+decorum
+decorums
+decoupage
+decoupages
+decouple
+decoupled
+decoupler
+decouples
+decoupling
+decoy
+decoy's
+decoys
+decrease
+decreased
+decreases
+decreasing
+decreasingly
+decree
+decreed
+decreeing
+decreer
+decrees
+decreet
+decrement
+decremental
+decremented
+decrementing
+decrements
+decrepid
+decrepit
+decrepitate
+decrepitation
+decrepitly
+decrepitude
+decrescendo
+decrescent
+decretal
+decretals
+decretive
+decretory
+decrial
+decrials
+decried
+decrier
+decries
+decriminalization
+decriminalization's
+decriminalize
+decry
+decrying
+decrypt
+decrypted
+decrypting
+decryption
+decryptograph
+decrypts
+DECsystem
+decsystem
+dectape
+DECtape
+decubitus
+decumbent
+decuple
+decurion
+decurrent
+decurved
+decury
+decussate
+decussately
+decussation
+decwriter
+dedal
+dedicate
+dedicated
+dedicatedly
+dedicates
+dedicating
+dedication
+dedications
+dedicative
+dedicator
+dedicatory
+dedifferentiate
+dedifferentiated
+dedifferentiation
+deduce
+deduced
+deducer
+deduces
+deducible
+deducing
+deduct
+deducted
+deductibility
+deductible
+deductibles
+deducting
+deduction
+deduction's
+deductions
+deductive
+deductively
+deducts
+Dee
+Dee's
+deed
+deeded
+deeding
+deedless
+deeds
+deejay
+deek
+deem
+deemed
+deeming
+deemphasis
+deemphasization
+deemphasization's
+deemphasize
+deemphasized
+deemphasizer
+deemphasizers
+deemphasizes
+deemphasizing
+deems
+deemster
+deenergize
+deenergized
+deenergizer
+deenergizes
+deenergizing
+deep
+deepen
+deepened
+deepening
+deepens
+deeper
+deepest
+Deepfreeze
+deeply
+deepness
+deeps
+deer
+Deere
+deergrass
+deerhound
+deers
+deerskin
+deerskins
+deerstalker
+deface
+defacement
+defacer
+defaces
+defacing
+defalcate
+defalcation
+defalcator
+defamation
+defamatory
+defame
+defamed
+defamer
+defames
+defaming
+defat
+default
+defaulted
+defaulter
+defaulting
+defaults
+defeasance
+defeasibility
+defeasible
+defeat
+defeated
+defeating
+defeatism
+defeatist
+defeatists
+defeats
+defeature
+defeatured
+defeatures
+defeaturing
+defecate
+defecated
+defecates
+defecating
+defecation
+defecations
+defect
+defected
+defecting
+defection
+defection's
+defections
+defective
+defectively
+defectiveness
+defectives
+defector
+defector's
+defectors
+defects
+defeminize
+defeminized
+defeminizes
+defeminizing
+defend
+defendable
+defendant
+defendant's
+defendants
+defended
+defender
+defenders
+defending
+defends
+defenestrate
+defenestrated
+defenestrates
+defenestrating
+defenestration
+defenestrations
+defense
+defense's
+defensed
+defenseless
+defenselessly
+defenselessness
+defenseman
+defenses
+defensibility
+defensible
+defensibly
+defensing
+defensive
+defensively
+defensiveness
+defer
+deferable
+deference
+deferent
+deferential
+deferentially
+deferents
+deferment
+deferment's
+deferments
+deferrable
+deferral
+deferred
+deferrer
+deferrer's
+deferrers
+deferring
+defers
+defervescence
+defervescences
+defervescent
+defial
+defiance
+defiances
+defiant
+defiantly
+defibrillation
+defibrillator
+deficiencies
+deficiency
+deficient
+deficiently
+deficit
+deficit's
+deficits
+defied
+defier
+defies
+defilade
+defile
+defiled
+defilement
+defiler
+defiles
+defiling
+definable
+definably
+define
+defined
+definement
+definer
+definers
+defines
+definiendum
+definiens
+defining
+definite
+definitely
+definiteness
+definition
+definition's
+definitional
+definitions
+definitive
+definitively
+definitiveness
+definitization
+definitization's
+definitizations
+definitize
+definitized
+definitizes
+definitizing
+definitude
+deflagrate
+deflagrated
+deflagrates
+deflagrating
+deflagration
+deflate
+deflated
+deflater
+deflates
+deflating
+deflation
+deflationary
+deflator
+deflect
+deflected
+deflecting
+deflection
+deflectionization
+deflectionization's
+deflectionizations
+deflectionize
+deflectionizes
+deflections
+deflective
+deflector
+deflects
+deflexed
+deflocculate
+defloration
+deflorations
+deflower
+defoamer
+defoamers
+defocus
+defocusing
+defoe
+Defoe
+defoliant
+defoliate
+defoliated
+defoliates
+defoliating
+defoliation
+defoliator
+deforce
+deforcement
+deforciant
+deforest
+deforestation
+deforester
+deform
+deformalize
+deformation
+deformation's
+deformational
+deformations
+deformative
+deformed
+deforming
+deformities
+deformity
+deformity's
+deforms
+defraud
+defraudation
+defrauded
+defrauder
+defrauding
+defrauds
+defray
+defrayable
+defrayal
+defrayals
+defrayed
+defraying
+defrays
+defrock
+defrost
+defrosted
+defroster
+defrosting
+defrosts
+deft
+defter
+deftest
+deftly
+deftness
+defunct
+defunctionalization
+defunctionalization's
+defunctionalizations
+defunctionalize
+defunctionalizes
+defuse
+defused
+defusing
+defy
+defyed
+defying
+defyingly
+defys
+degas
+degassed
+degasses
+degassing
+degauss
+degaussed
+degausses
+degaussing
+degeneracy
+degenerate
+degenerated
+degenerately
+degenerateness
+degenerates
+degenerating
+degeneration
+degenerative
+deglutinate
+deglutition
+deglycerolized
+degradable
+degradation
+degradation's
+degradations
+degrade
+degraded
+degradedly
+degradedness
+degrader
+degrades
+degrading
+degradingly
+degranulation
+degrease
+degree
+degree's
+degreed
+degrees
+degression
+degressive
+degressively
+degum
+degumming
+degust
+dehisce
+dehiscent
+dehorn
+dehra
+dehumanization
+dehumanization's
+dehumanizations
+dehumanize
+dehumanized
+dehumanizes
+dehumanizing
+dehumidification
+dehumidifications
+dehumidified
+dehumidifier
+dehumidify
+dehydrase
+dehydrate
+dehydrated
+dehydrates
+dehydrating
+dehydration
+dehydrator
+dehydrogenase
+dehydrogenate
+dehydroretinol
+dehypnotization
+dehypnotize
+dehypnotized
+dehypnotizes
+dehypnotizing
+deianira
+deicide
+deictic
+deific
+deification
+deiform
+deify
+deign
+deigned
+deigning
+deigns
+deil
+Deimos
+deindustrialization
+deindustrialize
+deionization
+deionize
+deionizes
+deipnosophist
+Deirdre
+Deirdre's
+Deirdres
+deism
+deist
+deistic
+deistical
+deistically
+deities
+deity
+deity's
+deixis
+deja
+deject
+dejecta
+dejected
+dejectedly
+dejectedness
+dejection
+dejeuner
+dejeuners
+dekagram
+dekagram's
+dekagrams
+DeKalb
+dekaliter
+dekameter
+dekameter's
+dekameters
+DeKastere
+dekker
+dekko
+Del
+delacroix
+delagoa
+delaine
+delaminate
+delamination
+Delaney
+Delaney's
+Delano
+Delano's
+delate
+delated
+delates
+delating
+delation
+delator
+delaunay
+Delaware
+Delaware's
+delay
+delayed
+delayer
+delayers
+delaying
+delays
+dele
+delectability
+delectable
+delectableness
+delectably
+delectate
+delectation
+deledda
+delegable
+delegacy
+delegate
+delegated
+delegates
+delegating
+delegation
+delegations
+delegatory
+delete
+deleted
+deleter
+deleterious
+deleteriously
+deleteriousness
+deletes
+deleting
+deletion
+deletions
+delft
+delgado
+Delhi
+Delhi's
+deli
+deli's
+Delia
+Delia's
+Delian
+deliberate
+deliberated
+deliberately
+deliberateness
+deliberates
+deliberating
+deliberation
+deliberations
+deliberative
+deliberatively
+deliberativeness
+deliberator
+deliberator's
+deliberators
+Delibes
+delicacies
+delicacy
+delicacy's
+delicate
+delicately
+delicateness
+delicates
+delicatessen
+delicious
+deliciouses
+deliciously
+deliciousness
+delict
+delicti
+delight
+delighted
+delightedly
+delightedness
+delighter
+delightful
+delightfully
+delightfulness
+delighting
+delights
+delightsome
+delightsomely
+Delilah
+delimeter
+delimeters
+delimit
+delimitate
+delimitation
+delimitative
+delimited
+delimiter
+delimiters
+delimiting
+delimitize
+delimitizes
+delimits
+delineament
+delineaments
+delineate
+delineated
+delineates
+delineating
+delineation
+delineations
+delineative
+delineator
+delinquency
+delinquent
+delinquent's
+delinquently
+delinquents
+deliquesce
+deliquescence
+deliquescent
+delirious
+deliriously
+deliriousness
+delirium
+deliriums
+delis
+delist
+delitescence
+Delius
+deliver
+deliverability
+deliverable
+deliverables
+deliverance
+delivered
+deliverer
+deliverers
+deliveries
+delivering
+delivers
+delivery
+delivery's
+deliveryman
+deliveryman's
+deliverymen
+deliverymen's
+dell
+dell's
+Della
+Della's
+Deller
+dells
+dellwood
+Dellwood
+Delmarva
+delocalization
+delocalize
+Delorme
+Delos
+delouse
+deloused
+delouses
+delousing
+Delphi
+Delphic
+Delphically
+delphine
+delphinium
+Delphinus
+Delsarte
+delta
+delta's
+deltaic
+deltas
+deltiology
+deltoid
+deltoids
+delude
+deluded
+deluder
+deludes
+deluding
+deludingly
+deluge
+deluged
+deluges
+deluging
+delusion
+delusion's
+delusional
+delusionary
+delusions
+delusive
+delusively
+delusiveness
+delusory
+deluster
+deluxe
+delve
+delved
+delver
+delves
+delving
+demagnetizable
+demagnetizable's
+demagnetizables
+demagnetization
+demagnetization's
+demagnetizations
+demagnetize
+demagnetized
+demagnetizer
+demagnetizers
+demagnetizes
+demagnetizing
+demagnification
+demagnify
+demagog
+demagogic
+demagogical
+demagogically
+demagogism
+demagogue
+demagoguery
+demagogues
+demagogy
+demand
+demandable
+demandant
+demanded
+demander
+demanding
+demandingly
+demands
+demantoid
+demarcate
+demarcated
+demarcates
+demarcating
+demarcation
+demark
+demarkation
+dematerialization
+dematerialize
+dematerialized
+dematerializes
+dematerializing
+demavend
+deme
+demean
+demeaned
+demeaning
+demeanor
+demeanor's
+demeanors
+demeans
+dement
+demented
+dementedly
+dementedness
+dementia
+demential
+demerara
+demerit
+demerits
+demesne
+demeter
+Demeter
+demi
+demibastion
+demicanton
+demigod
+demigoddess
+demijohn
+demilitarization
+demilitarize
+demilitarized
+demilitarizes
+demilitarizing
+demilune
+demimondaine
+demimonde
+demineralization
+demineralization's
+demineralizations
+demineralize
+demineralized
+demineralizer
+demineralizes
+demineralizing
+demirel
+demirelief
+demirep
+demiscible
+demise
+demised
+demisemiquaver
+demises
+demising
+demission
+demist
+demit
+demitasse
+demitted
+demitting
+demiurge
+demivierge
+demivolt
+demo
+demob
+demobilization
+demobilize
+demobilized
+demobilizes
+demobilizing
+democracies
+democracy
+democracy's
+democrat
+democrat's
+democratic
+democratically
+democratique
+democratization
+democratization's
+democratizations
+democratize
+democratized
+democratizer
+democratizes
+democratizing
+democrats
+democritus
+demodulate
+demodulated
+demodulates
+demodulating
+demodulation
+demodulation's
+demodulations
+demodulator
+demodulator's
+demodulators
+Demogorgon
+demographer
+demographer's
+demographers
+demographic
+demographical
+demographically
+demographics
+demographiques
+demography
+demoiselle
+demolish
+demolished
+demolisher
+demolishes
+demolishing
+demolishment
+demolition
+demolitionist
+demolitions
+demon
+demon's
+demoness
+demonetization
+demonetize
+demonetized
+demonetizes
+demonetizing
+demoniac
+demoniacal
+demoniacally
+demonian
+demonic
+demonical
+demonically
+demonism
+demonization
+demonize
+demonized
+demonizes
+demonizing
+demonolater
+demonolatry
+demonology
+demons
+demonstrability
+demonstrable
+demonstrableness
+demonstrably
+demonstrate
+demonstrated
+demonstrates
+demonstrating
+demonstration
+demonstrational
+demonstrationist
+demonstrations
+demonstrative
+demonstratively
+demonstrativeness
+demonstrator
+demonstrator's
+demonstrators
+demoralization
+demoralization's
+demoralizations
+demoralize
+demoralized
+demoralizer
+demoralizers
+demoralizes
+demoralizing
+demoralizingly
+DeMorgan
+DeMorgan's
+demos
+Demosthenes
+demote
+demoted
+demotes
+demotic
+demoting
+demotion
+demould
+demoulded
+demoulding
+demoulds
+demount
+demountable
+demounted
+demounting
+demounts
+Dempsey
+dempster
+demulcent
+demulsify
+demultiplex
+demur
+demure
+demurely
+demureness
+demurrage
+demurral
+demurred
+demurrer
+demurring
+demurs
+demy
+demystified
+demystifies
+demystify
+demystifying
+demythologization
+demythologize
+demythologized
+demythologizer
+demythologizes
+demythologizing
+den
+den's
+denarius
+denary
+denationalization
+denationalize
+denationalized
+denationalizes
+denationalizing
+denaturalization
+denaturalize
+denaturalized
+denaturalizes
+denaturalizing
+denaturant
+denaturation
+denaturational
+denature
+denatured
+denatures
+denaturing
+denaturization
+denaturization's
+denaturizations
+denaturize
+denaturizer
+denaturizers
+denaturizes
+denazification
+denazify
+Denbighshire
+dendral
+dendriform
+dendrite
+dendrite's
+dendrites
+dendritic
+dendrochronologist
+dendrochronologists
+dendrochronology
+dendrogram
+dendrograms
+dendroid
+dendrologic
+dendrological
+dendrologist
+dendrology
+Dene
+Deneb
+Deneb's
+Denebola
+deneen
+Deneen
+denegation
+denervate
+denervated
+denervates
+denervating
+denervation
+dengue
+deniable
+denial
+denial's
+denials
+denicotinize
+denied
+denier
+denies
+denigrate
+denigrated
+denigrates
+denigrating
+denigration
+denigrative
+denigrator
+denigratory
+denim
+denims
+Denis
+denitrate
+denitrification
+denitrify
+deniz
+denizen
+denizenize
+denizenizes
+denizens
+Denmark
+Denmark's
+denning
+Dennis
+Denny
+denominate
+denominated
+denomination
+denomination's
+denominational
+denominationalism
+denominationalist
+denominationalize
+denominationalizes
+denominationally
+denominations
+denominative
+denominator
+denominator's
+denominators
+denormalize
+denotable
+denotation
+denotation's
+denotational
+denotationally
+denotations
+denotative
+denote
+denoted
+denotement
+denotes
+denoting
+denouement
+denounce
+denounced
+denouncement
+denouncer
+denouncers
+denounces
+denouncing
+dens
+dense
+densely
+denseness
+denser
+densest
+densification
+densify
+densimeter
+densimeter's
+densimeters
+densimetric
+densities
+densitometer
+densitometer's
+densitometers
+densitometric
+densitometry
+density
+density's
+dent
+dental
+Dentalium
+dentalization
+dentalization's
+dentalizations
+dentalize
+dentalizes
+dentally
+dentals
+dentate
+dentated
+dentately
+dentation
+dented
+dentex
+denticle
+denticulate
+denticulated
+denticulately
+denticulation
+dentiform
+dentifrice
+dentigerous
+dentil
+dentilabial
+dentilingual
+dentin
+dentinal
+dentine
+denting
+dentist
+dentist's
+dentistry
+dentists
+dentition
+dentoid
+Denton
+Denton's
+dents
+dentulous
+denture
+dentures
+denuclearization
+denuclearize
+denuclearized
+denuclearizes
+denuclearizing
+denudate
+denudation
+denudational
+denude
+denuded
+denudement
+denuder
+denudes
+denuding
+denumerable
+denumerably
+denunciate
+denunciated
+denunciates
+denunciating
+denunciation
+denunciations
+denunciative
+denunciatory
+Denver
+deny
+denying
+denyingly
+denys
+deodand
+deodar
+deodorant
+deodorant's
+deodorants
+deodorize
+deodorized
+deodorizes
+deodorizing
+deontic
+deontological
+deontologist
+deontology
+deoxidation
+deoxidizer
+deoxycholate
+deoxygenate
+deoxygenation
+deoxyribonucleic
+deoxyribose
+depart
+departed
+departing
+department
+department's
+departmental
+departmentalism
+departmentalization
+departmentalization's
+departmentalizations
+departmentalize
+departmentalizes
+departmentally
+departmentization
+departmentization's
+departmentizations
+departmentize
+departmentizes
+departments
+departs
+departure
+departure's
+departures
+depasture
+depend
+dependability
+dependable
+dependableness
+dependably
+Dependance
+Dependant
+dependant
+dependants
+Dependants
+depended
+dependence
+dependences
+dependencies
+dependency
+dependent
+dependently
+dependents
+depending
+depends
+depersonalization
+depersonalization's
+depersonalizations
+depersonalize
+depersonalized
+depersonalizes
+depersonalizing
+depict
+depicted
+depicter
+depicting
+depiction
+depictions
+depicts
+depicture
+depigmentation
+depilate
+depilated
+depilates
+depilating
+depilation
+depilatory
+deplane
+deplaned
+deplanes
+deplaning
+depletable
+deplete
+depleted
+depletes
+depleting
+depletion
+depletions
+depletive
+deplorable
+deplorableness
+deplorably
+deplore
+deplored
+deplorer
+deplores
+deploring
+deploringly
+deploy
+deployable
+deployed
+deploying
+deployment
+deployment's
+deployments
+deploys
+deplume
+depolarization
+depolarization's
+depolarizations
+depolarize
+depolarized
+depolarizer
+depolarizers
+depolarizes
+depolarizing
+depoliticization
+depoliticize
+depoliticized
+depoliticizes
+depoliticizing
+depolymerization
+depolymerize
+depolymerized
+depolymerizes
+depolymerizing
+depone
+deponed
+deponent
+depones
+deponing
+depopulate
+depopulation
+depopulator
+deport
+deportable
+deportation
+deported
+deportee
+deportee's
+deportees
+deporting
+deportment
+deports
+depose
+deposed
+deposes
+deposing
+deposit
+depositary
+deposited
+depositing
+deposition
+deposition's
+depositional
+depositions
+depositor
+depositor's
+depositors
+depository
+deposits
+depot
+depot's
+depots
+depravation
+depravations
+deprave
+depraved
+depravedly
+depravedness
+depravement
+depraver
+depraves
+depraving
+depravities
+depravity
+Depraz
+deprecate
+deprecated
+deprecates
+deprecating
+deprecatingly
+deprecation
+deprecations
+deprecatorily
+deprecatory
+depreciable
+depreciate
+depreciated
+depreciates
+depreciating
+depreciatingly
+depreciation
+depreciations
+depreciative
+depreciatively
+depreciator
+depreciators
+depreciatory
+depredate
+depredated
+depredates
+depredating
+depredation
+depredations
+depredator
+depredators
+depredatory
+depress
+depressant
+depressants
+depressed
+depresses
+depressible
+depressily
+depressing
+depressingly
+depression
+depression's
+depressions
+depressive
+depressively
+depressomotor
+depressor
+depressors
+depressurization
+depressurize
+depressurized
+depressurizes
+depressurizing
+deprivation
+deprivation's
+deprivations
+deprive
+deprived
+deprives
+depriving
+depside
+Dept
+depth
+depthless
+depths
+depurative
+deputation
+deputationize
+deputationizes
+deputations
+depute
+deputed
+deputes
+deputies
+deputing
+deputization
+deputize
+deputized
+deputizes
+deputizing
+deputy
+deputy's
+dequeue
+dequeued
+dequeues
+dequeuing
+deraign
+derail
+derailed
+derailing
+derailleur
+derailment
+derails
+derain
+derange
+deranged
+derangement
+deranges
+deranging
+derate
+derating
+deration
+derationalization
+derationalization's
+derationalizations
+derationalize
+derationalizes
+deratization
+deratization's
+deratizations
+derbent
+derbies
+derby
+Derbyshire
+derealization
+dereference
+dereferenced
+dereferencer
+dereferencers
+dereferences
+dereferencing
+deregister
+deregulate
+deregulationize
+deregulationizes
+deregulatory
+Derek
+Derek's
+derelict
+dereliction
+derelicts
+derestrict
+deride
+derided
+derider
+derides
+deriding
+deridingly
+derisible
+derision
+derisive
+derisively
+derisiveness
+derisory
+derivable
+derivate
+derivation
+derivation's
+derivational
+derivations
+derivative
+derivative's
+derivatively
+derivativeness
+derivatives
+derive
+derived
+deriver
+derives
+deriving
+derma
+dermal
+dermatitis
+dermatogen
+dermatoglyphics
+dermatoid
+dermatologic
+dermatological
+dermatologist
+dermatology
+dermatome
+dermatophyte
+dermatophytosis
+dermatoplasty
+dermatosis
+dermis
+dermoid
+Dernesch
+dero
+derogate
+derogated
+derogates
+derogating
+derogation
+derogative
+derogatorily
+derogatory
+derrick
+derricked
+derricking
+derrickman
+derrickmen
+derricks
+derriere
+derringer
+Derris
+derry
+derv
+dervish
+dervishes
+derwent
+derwentwater
+desai
+desalinate
+desalination
+desalinization
+desalinize
+desalting
+descant
+Descartes
+descend
+descendant
+descendant's
+descendants
+descended
+descendent
+descendent's
+descendents
+descender
+descenders
+descendible
+descending
+descends
+descension
+descent
+descent's
+descents
+deschamps
+deschool
+descrating
+describable
+describe
+described
+describer
+describers
+describes
+describing
+descried
+description
+description's
+descriptional
+descriptions
+descriptive
+descriptively
+descriptiveness
+descriptives
+descriptivism
+descriptor
+descriptor's
+descriptors
+descry
+descrying
+desecrate
+desecrated
+desecrater
+desecrates
+desecration
+desecrator
+desegregate
+desegregated
+desegregates
+desegregating
+desegregation
+deselect
+deselected
+deselecting
+deselection
+deselections
+deselects
+desensitization
+desensitization's
+desensitizations
+desensitize
+desensitized
+desensitizer
+desensitizers
+desensitizes
+desensitizing
+desert
+deserted
+deserter
+deserters
+desertic
+deserting
+desertion
+desertions
+deserts
+deserve
+deserved
+deservedly
+deservedness
+deserver
+deserves
+deserving
+deservingly
+deservings
+desex
+desexualization
+desexualize
+desexualized
+desexualizes
+desexualizing
+deshabille
+desicate
+desiccant
+desiccate
+desiccated
+desiccates
+desiccation
+desiccative
+desiccator
+desiderata
+desiderate
+desideration
+desiderative
+desideratum
+design
+designate
+designated
+designates
+designating
+designation
+designational
+designations
+designative
+designator
+designator's
+designators
+designatory
+designed
+designedly
+designee
+designer
+designer's
+designers
+designing
+designment
+designs
+desinence
+desirability
+desirable
+desirableness
+desirably
+desire
+desired
+desirer
+desires
+desiring
+desirous
+desirously
+desirousness
+desist
+desistance
+desk
+desk's
+deskill
+deskilled
+deskilling
+deskman
+desks
+desktop
+desman
+desmid
+desmoid
+Desmond
+desmoulins
+desolate
+desolated
+desolately
+desolateness
+desolater
+desolates
+desolating
+desolatingly
+desolation
+desolations
+desolator
+desorb
+desorbable
+desorbed
+desorption
+despair
+despaired
+despairer
+despairing
+despairingly
+despairs
+despatch
+despatched
+despenser
+desperado
+desperadoes
+desperate
+desperately
+desperateness
+desperation
+despicable
+despicableness
+despicably
+despiritualization
+despiritualize
+despise
+despised
+despisement
+despiser
+despises
+despising
+despite
+despited
+despiteful
+despitefully
+despitefulness
+despiteous
+despiteously
+despoil
+despoilation
+despoiled
+despoiler
+despoilers
+despoiling
+despoilment
+despoils
+despoliation
+despond
+despondence
+despondences
+despondency
+despondent
+despondently
+despot
+despot's
+despotic
+despotically
+despotism
+despotize
+despotizes
+despots
+despumate
+desquamate
+dessalines
+dessau
+dessert
+dessert's
+desserts
+dessertspoon
+dessiatine
+dessicate
+dessicator
+dessicators
+destabilization
+destabilize
+destabilized
+destabilizes
+destabilizing
+destalinize
+destalinized
+destalinizes
+destalinizing
+desterilize
+destigmatization
+destinate
+destination
+destination's
+destinations
+destine
+destined
+destinies
+destining
+destiny
+destiny's
+destitute
+destituteness
+destitution
+destroy
+destroyed
+destroyer
+destroyer's
+destroyers
+destroying
+destroys
+destruct
+destructibility
+destructible
+destruction
+destruction's
+destructionist
+destructions
+destructive
+destructively
+destructiveness
+destructivity
+destructor
+destructs
+desuetude
+desulfurization
+desulfurize
+desulphurization
+desulphurize
+desulphurized
+desulphurizes
+desulphurizing
+desultorily
+desultoriness
+desultory
+desynchronization
+desynchronize
+desynchronized
+desynchronizes
+desynchronizing
+detab
+detach
+detachability
+detachable
+detachably
+detached
+detachedly
+detachedness
+detacher
+detaches
+detaching
+detachment
+detachment's
+detachments
+detail
+detailed
+detailedly
+detailedness
+detailer
+detailing
+details
+detain
+detained
+detainee
+detainer
+detaining
+detainment
+detains
+detect
+detectability
+detectable
+detectably
+detectaphone
+detected
+detecting
+detection
+detection's
+detections
+detective
+detectives
+detector
+detector's
+detectors
+detects
+detent
+detente
+detention
+detentions
+deter
+deterge
+detergency
+detergent
+detergents
+deteriorate
+deteriorated
+deteriorates
+deteriorating
+deterioration
+deteriorative
+determent
+determents
+determinability
+determinable
+determinableness
+determinably
+determinacy
+determinant
+determinant's
+determinantal
+determinants
+determinate
+determinately
+determinateness
+determination
+determinations
+determinative
+determinatively
+determinativeness
+determinator
+determine
+determined
+determinedly
+determinedness
+determiner
+determiners
+determines
+determining
+determinism
+determinist
+deterministic
+deterministically
+deterred
+deterrence
+deterrent
+deterrently
+deterrents
+deterrer
+deterring
+deters
+detersive
+detersives
+detest
+detestable
+detestableness
+detestably
+detestation
+detestations
+detested
+detesting
+detests
+dethrone
+dethronement
+detinue
+detmold
+detonabilities
+detonability
+detonable
+detonatable
+detonate
+detonated
+detonates
+detonating
+detonation
+detonational
+detonative
+detonator
+detonator's
+detonators
+detour
+detoured
+detouring
+detours
+detoxicant
+detoxicants
+detoxicate
+detoxicated
+detoxicates
+detoxicating
+detoxication
+detoxicator
+detoxification
+detoxified
+detoxifies
+detoxify
+detoxifying
+detract
+detracted
+detracting
+detraction
+detractions
+detractive
+detractively
+detractor
+detractor's
+detractors
+detracts
+detrain
+detrained
+detraining
+detrainment
+detrains
+detrend
+detrended
+detrending
+detrends
+detribalization
+detribalization's
+detribalizations
+detribalize
+detribalized
+detribalizes
+detribalizing
+detriment
+detrimental
+detrimentally
+detriments
+detrition
+detritus
+Detroit
+detrude
+detruncate
+detumescence
+detumescences
+detumescent
+detune
+detuned
+detunes
+detuning
+deuce
+deuced
+deucedly
+deuces
+deucing
+deurne
+deus
+deuteragonist
+deuteranope
+deuterate
+deuterated
+deuterates
+deuterating
+deuteration
+deuterations
+deuteride
+deuterium
+deuteriums
+deuterogamy
+deuteron
+deuteron's
+Deuteronomist
+Deuteronomistic
+Deuteronomy
+deutoplasm
+deutsch
+Deutsch
+Deutschland
+Deutzia
+deva
+devaluate
+devaluation
+devaluations
+devalue
+devalued
+devalues
+devaluing
+devanagari
+devastate
+devastated
+devastates
+devastating
+devastatingly
+devastation
+devastations
+devastative
+devastator
+devastators
+develed
+develing
+develop
+developable
+developed
+developer
+developer's
+developers
+developing
+development
+development's
+developmental
+developmentally
+developments
+develops
+deventer
+deverbative
+Devereux
+devest
+devi
+deviance
+deviances
+deviancies
+deviancy
+deviant
+deviant's
+deviantly
+deviants
+deviate
+deviated
+deviates
+deviating
+deviation
+deviationism
+deviationist
+deviations
+deviator
+deviators
+device
+device's
+devices
+devil
+devil's
+deviled
+devilfish
+deviling
+devilish
+devilishly
+devilishness
+devilize
+devilizes
+devilkin
+devilment
+devilments
+devilry
+devils
+deviltry
+devious
+deviously
+deviousness
+devisability
+devisable
+devisal
+devise
+devised
+devisee
+deviser
+devises
+devising
+devisings
+devision
+devisions
+devisor
+devitalization
+devitalize
+devitalized
+devitalizes
+devitalizing
+devitrification
+devitrify
+devocalize
+devoice
+devoiced
+devoices
+devoicing
+devoid
+devoir
+devoirs
+devolatilization
+devolatilize
+devolatilized
+devolatilizes
+devolatilizing
+devolution
+devolutionary
+devolutionist
+devolve
+devolved
+devolves
+devolving
+Devon
+Devonian
+Devonshire
+devote
+devoted
+devotedly
+devotee
+devotee's
+devotees
+devotement
+devotes
+devoting
+devotion
+devotional
+devotionally
+devotions
+devour
+devoured
+devourer
+devouring
+devours
+devout
+devoutly
+devoutness
+dew
+dewan
+dewar
+dewars
+dewater
+dewatered
+dewaterer
+dewatering
+dewaters
+dewberry
+dewclaw
+dewdrop
+dewdrop's
+dewdrops
+dewed
+Dewey
+dewier
+dewily
+dewiness
+dewing
+Dewitt
+deworm
+dews
+dewsbury
+dewy
+Dexedrine
+dexedrine
+dexter
+dexterity
+dexterous
+dexterously
+dexterousness
+dextral
+dextrality
+dextrally
+dextran
+dextrin
+dextrine
+dextro
+dextroamphetamine
+dextroglucose
+dextrogyrate
+dextrorotation
+dextrorse
+dextrose
+dextrose's
+dextrous
+dey
+dezhnev
+DFL
+Dhabi
+dhahran
+dhak
+dharma
+dharna
+dhaulagiri
+dhobi
+dhole
+dhoti
+dhow
+diabase
+diabetes
+diabetic
+diabetics
+diablerie
+Diablo
+diabolic
+diabolical
+diabolically
+diabolicalness
+diabolism
+diabolist
+diabolization
+diabolize
+diabolized
+diabolizes
+diabolizing
+diabolo
+diacaustic
+diacetylmorphine
+diachronic
+diachronically
+diachronicness
+diachrony
+diacid
+diacidic
+diaconal
+diaconate
+diacritic
+diacritic's
+diacritical
+diacritically
+diacriticals
+diacritics
+diactinic
+diadelphous
+diadem
+diadic
+diadromous
+diaeresis
+diagenesis
+diageotropism
+diaghilev
+diagnometer
+diagnometer's
+diagnometers
+diagnosable
+diagnose
+diagnoseable
+diagnosed
+diagnoses
+diagnosing
+diagnosis
+diagnostic
+diagnostic's
+diagnostical
+diagnostically
+diagnostician
+diagnosticians
+diagnostics
+diagonal
+diagonalizable
+diagonalization
+diagonalize
+diagonalizes
+diagonally
+diagonals
+diagram
+diagram's
+diagramed
+diagraming
+diagrammable
+diagrammatic
+diagrammatical
+diagrammaticality
+diagrammatically
+diagrammed
+diagrammer
+diagrammer's
+diagrammers
+diagramming
+diagrams
+diagraph
+diakinesis
+diakinetic
+dial
+dial's
+dialect
+dialect's
+dialectal
+dialectally
+dialectic
+dialectical
+dialectically
+dialectician
+dialecticians
+dialecticize
+dialecticizes
+dialectics
+dialectological
+dialectologically
+dialectologist
+dialectology
+dialects
+dialed
+dialer
+dialers
+dialing
+dialings
+dialist
+dialists
+diallage
+dialog
+dialog's
+dialogic
+dialogical
+dialogically
+dialogism
+dialogist
+dialogistic
+dialogs
+dialogue
+dialogue's
+dialogues
+dials
+dialup
+dialup's
+dialups
+dialysis
+dialytic
+dialyzabilities
+dialyzability
+dialyzability's
+dialyzable
+dialyzable's
+dialyzables
+dialyze
+dialyzed
+dialyzer
+dialyzer's
+dialyzers
+dialyzes
+diamagnet
+diamagnetic
+diamagnetism
+diamagnets
+diamantine
+diamegnetism
+diameter
+diameter's
+diameters
+diametral
+diametric
+diametrical
+diametrically
+diamine
+diamond
+Diamond
+diamond's
+diamondback
+diamondize
+diamondizes
+diamonds
+Diana
+diandrous
+Diane
+dianetics
+Dianne
+dianne
+dianoetic
+dianoia
+diapason
+diapause
+diapausing
+diapedesis
+diapente
+diaper
+diaper's
+diapered
+diapering
+diapers
+diaphaneity
+diaphanous
+diaphanously
+diaphanousness
+diaphone
+diaphoresis
+diaphoretic
+diaphototropism
+diaphragm
+diaphragm's
+diaphragmatic
+diaphragmatically
+diaphragmic
+diaphragms
+diaphysis
+diapir
+diapositive
+diarch
+diarchy
+diaries
+diarist
+diarrhea
+diarrhea's
+diarrheal
+diarrheas
+diarrheic
+diarrhetic
+diary
+diary's
+dias
+diascope
+diaspora
+diaspore
+diastalsis
+diastase
+diastasis
+diastema
+diastole
+diastolic
+diastrophic
+diastrophically
+diastrophism
+diastyle
+diatessaron
+diathermancy
+diathermic
+diathermy
+diathesis
+diathetic
+diation
+diatom
+diatomaceous
+diatomic
+diatomite
+diatoms
+diatonic
+diatonically
+diatribe
+diatribe's
+diatribes
+diatropic
+diatropism
+diatropisms
+diazine
+diazo
+diazole
+diazomethane
+diazonium
+dibasic
+dibble
+dibbuk
+dibranchiate
+dibromide
+dibs
+dicarbonyl
+dicarboxylic
+dicast
+dice
+dicephalous
+dicer
+dices
+dicey
+dichasium
+dichlamydeous
+dichloride
+dichloroethanol
+dichondra
+dichotic
+dichotically
+dichotomies
+dichotomist
+dichotomization
+dichotomize
+dichotomized
+dichotomizes
+dichotomizing
+dichotomous
+dichotomously
+dichotomousness
+dichotomy
+dichroic
+dichroism
+dichroitic
+dichromat
+dichromate
+dichromatic
+dichromaticism
+dichromatism
+dichromats
+dichromic
+dichroscope
+dicier
+dicing
+dick
+Dick's
+dickcissel
+dickens
+dicker
+dickered
+dickering
+dickers
+Dickerson
+Dickerson's
+dickey
+Dickinson
+dicks
+Dickson
+dicky
+diclinous
+dicotyledon
+dicta
+Dictaphone
+dictate
+dictated
+dictates
+dictating
+dictation
+dictations
+dictator
+dictator's
+dictatorial
+dictatorially
+dictatorialness
+dictators
+dictatorship
+dictatorships
+diction
+dictionally
+dictionaries
+dictionary
+dictionary's
+dictions
+Dictograph
+dictum
+dictum's
+dictums
+dicuss
+dicyclic
+dicynodont
+did
+Didache
+didact
+didactic
+didactical
+didactically
+didacticism
+didactics
+diddle
+diddled
+diddler
+diddling
+diderot
+didgeridoo
+didn't
+Dido
+Dido's
+didymium
+didymous
+didynamous
+die
+dieback
+Diebold
+Diebold's
+diecious
+died
+diefenbaker
+Diego
+diehard
+diehards
+dieing
+diel
+dieldrin
+dielectric
+dielectric's
+dielectrics
+diem
+dien
+diencephalon
+dieppe
+dieresis
+dies
+diesel
+dieselization
+dieselization's
+dieselizations
+dieselize
+dieselizes
+diesels
+diesis
+Dieskau
+diestock
+diestrus
+diet
+dietaries
+dietarily
+dietary
+dieter
+dieters
+dietetic
+dietetically
+dietetics
+diethylaminoethyl
+diethylstilbestrol
+dietician
+dieticians
+dietitian
+dietitian's
+dietitians
+Dietrich
+diets
+diety
+Dietz
+dieu
+dieux
+diffeomorphic
+diffeomorphism
+differ
+differed
+difference
+difference's
+differenced
+differences
+differencing
+different
+differentia
+differentiability
+differentiable
+differential
+differential's
+differentialize
+differentializes
+differentially
+differentials
+differentiate
+differentiated
+differentiates
+differentiating
+differentiation
+differentiations
+differentiator
+differentiators
+differently
+differentness
+differer
+differers
+differing
+differs
+difficile
+difficult
+difficulties
+difficultly
+difficulty
+difficulty's
+diffidence
+diffident
+diffidently
+diffract
+diffracted
+diffracting
+diffraction
+diffractions
+diffractometer
+diffractometer's
+diffractometers
+diffracts
+diffuse
+diffused
+diffusely
+diffuseness
+diffuser
+diffusers
+diffuses
+diffusible
+diffusing
+diffusion
+diffusional
+diffusions
+diffusive
+diffusively
+diffusiveness
+diffusivity
+difluoride
+dig
+digamma
+digamy
+digenesis
+digenetic
+digest
+digestant
+digested
+digester
+digestibility
+digestible
+digesting
+digestion
+digestions
+digestive
+digestively
+digestiveness
+digests
+digged
+digger
+digger's
+diggers
+digging
+diggings
+dight
+digit
+digit's
+digital
+digitalin
+digitalis
+digitalism
+digitalization
+digitalization's
+digitalizations
+digitalize
+digitalized
+digitalizes
+digitalizing
+digitally
+digitate
+digitated
+digitately
+digitation
+digitiform
+digitigrade
+digitization
+digitize
+digitized
+digitizer
+digitizer's
+digitizers
+digitizes
+digitizing
+digitonin
+digitoxin
+digitron
+digits
+dignified
+dignify
+dignitaries
+dignitary
+dignities
+dignity
+digram
+digress
+digressed
+digresses
+digressing
+digression
+digression's
+digressional
+digressionary
+digressions
+digressive
+digressively
+digressiveness
+digs
+dihedral
+dihybrid
+dihydric
+dihydrofolate
+dihydroxy
+Dijkstra
+Dijkstra's
+Dijon
+dijon
+dike
+dike's
+diker
+dikes
+diking
+dikkop
+diktat
+dilapidate
+dilapidated
+dilapidates
+dilapidating
+dilapidation
+dilapidator
+dilatability
+dilatable
+dilatancy
+dilatant
+dilatation
+dilatational
+dilate
+dilated
+dilatedly
+dilatedness
+dilates
+dilating
+dilation
+dilative
+dilatometer
+dilatometer's
+dilatometers
+dilatometric
+dilatometry
+dilator
+dilatorily
+dilatoriness
+dilatory
+dildo
+dildos
+dilemma
+dilemma's
+dilemmas
+dilemmatic
+dilemmatical
+dilettante
+dilettantes
+dilettanti
+dilettantish
+dilettantism
+dilettantist
+diligence
+diligences
+diligent
+diligently
+diligentness
+dilithium
+dill
+dillinger
+Dillon
+dilly
+dillydally
+dilogarithm
+diluent
+dilute
+diluted
+dilutely
+diluteness
+diluter
+dilutes
+diluting
+dilution
+dilutions
+dilutive
+dilutor
+diluvial
+dim
+dimaggio
+DiMaggio
+dimashq
+dime
+dime's
+dimenhydrinate
+dimension
+dimensional
+dimensionality
+dimensionalization
+dimensionalize
+dimensionalized
+dimensionalizes
+dimensionalizing
+dimensionally
+dimensioned
+dimensioning
+dimensionless
+dimensions
+dimer
+dimercaprol
+dimeric
+dimerism
+dimerization
+dimerization's
+dimerizations
+dimerize
+dimerized
+dimerizes
+dimerizing
+dimerous
+dimers
+dimes
+dimeter
+dimeter's
+dimeters
+dimethoxymethane
+dimethyl
+dimethylformamide
+dimethylglyoxime
+dimethylpropane
+dimethylsulphoxide
+dimetric
+diminish
+diminishable
+diminished
+diminishes
+diminishing
+diminishment
+diminuendo
+diminuendo's
+diminuendos
+diminution
+diminutional
+diminutive
+diminutively
+diminutiveness
+diminutivize
+diminutivizes
+dimissory
+Dimitrovo
+dimity
+dimly
+dimmable
+dimmed
+dimmer
+dimmer's
+dimmers
+dimmest
+dimming
+dimness
+dimorph
+dimorphic
+dimorphism
+dimorphous
+dimout
+dimple
+dimpled
+dimples
+dimpling
+dimply
+dims
+dimwit
+dimwits
+dimyristoyl
+din
+Dinah
+dinar
+Dinaric
+dine
+dined
+diner
+dineric
+diners
+dines
+Dinesen
+dinette
+ding
+Dingaan
+dingbat
+dingbats
+dingdong
+dinge
+dinghies
+dinghy
+dingier
+dingily
+dinginess
+dingle
+dingo
+dingy
+dining
+dinitrobenzene
+dinitrogen
+dink
+Dinka
+dinkey
+dinkum
+dinky
+dinner
+dinner's
+dinnerless
+dinners
+dinnertime
+dinnerware
+dinning
+Dinnington
+Dinoceras
+dinoflagellate
+dinosaur
+dinosaurian
+dinosauric
+dinosaurs
+dinothere
+dint
+dio
+diocesan
+diocese
+Diocletian
+diode
+diode's
+diodes
+diodorus
+dioestrus
+diogenes
+Diogenes
+diol
+diomede
+diomedes
+dion
+Dion
+Dione
+Dionysia
+Dionysiac
+Dionysian
+dionysius
+Dionysus
+Diophantine
+diophantus
+diopside
+dioptase
+diopter
+dioptometer
+dioptometer's
+dioptometers
+dioptometry
+dioptric
+dioptrics
+dior
+diorama
+dioramas
+dioramic
+diorite
+Dioscuri
+dioxalate
+dioxan
+dioxide
+dioxides
+dip
+dipeptide
+dipetalous
+diphase
+diphasic
+diphenyl
+diphenylamine
+diphenylhydantoin
+diphosgene
+diphtheria
+diphtherial
+diphtherian
+diphtheritic
+diphtheroid
+diphthong
+diphthongal
+diphthongization
+diphthongization's
+diphthongizations
+diphthongize
+diphthongizes
+diphthongs
+diphyletic
+diphyllous
+diphyodont
+diplegia
+diplex
+diploblastic
+diplocardiac
+diplococcus
+Diplodocus
+diploid
+diploid's
+diploids
+diploidy
+diploma
+diploma's
+diplomacy
+diplomas
+diplomat
+diplomat's
+diplomate
+diplomatic
+diplomatically
+diplomatics
+diplomatist
+diplomatize
+diplomatizes
+diplomats
+diplont
+diplopia
+diplopod
+diplosis
+diplostemonous
+dipnoan
+dipod
+dipodic
+dipody
+dipolar
+dipole
+dipole's
+dipoles
+dipped
+dipper
+dipper's
+dipperful
+dippers
+dipping
+dippings
+dippy
+dipropellant
+diprotodont
+dips
+dipsomania
+dipsomaniac
+dipsomaniacal
+dipstick
+dipteral
+dipteran
+dipterocarpaceous
+dipterous
+diptych
+Dirac
+dire
+direct
+directed
+directing
+direction
+direction's
+directional
+directionality
+directionally
+directionless
+directions
+directive
+directive's
+directives
+directivity
+directly
+directness
+director
+director's
+directorate
+directorial
+directories
+directors
+directorship
+directory
+directory's
+directrices
+directrix
+directs
+direful
+direfully
+direly
+direness
+direr
+direst
+dirge
+dirge's
+dirged
+dirges
+dirging
+Dirham
+Dirichlet
+dirigible
+dirigibles
+diriment
+dirk
+dirndl
+dirt
+dirt's
+dirtied
+dirtier
+dirties
+dirtiest
+dirtily
+dirtiness
+dirts
+dirty
+dirtying
+disabilities
+disability
+disability's
+disable
+disabled
+disablement
+disabler
+disablers
+disables
+disabling
+disabuse
+disaccharide
+disaccharides
+disaccord
+disaccredit
+disaccustom
+disadvantage
+disadvantage's
+disadvantaged
+disadvantagedness
+disadvantageous
+disadvantageously
+disadvantageousness
+disadvantages
+disadvantaging
+disaffect
+disaffected
+disaffectedly
+disaffectedness
+disaffection
+disaffiliate
+disaffiliated
+disaffiliates
+disaffiliating
+disaffiliation
+disaffirm
+disaffirmance
+disaffirmation
+disafforest
+disaggregate
+disaggregated
+disaggregating
+disaggregation
+disaggregative
+disagree
+disagreeability
+disagreeable
+disagreeableness
+disagreeably
+disagreed
+disagreeing
+disagreement
+disagreement's
+disagreements
+disagrees
+disallow
+disallowance
+disallowed
+disallowing
+disallows
+disambiguate
+disambiguated
+disambiguates
+disambiguating
+disambiguation
+disambiguations
+disangularize
+disangularizes
+disannul
+disappear
+disappearance
+disappearance's
+disappearances
+disappeared
+disappearing
+disappears
+disappoint
+disappointed
+disappointedly
+disappointing
+disappointingly
+disappointment
+disappointment's
+disappointments
+disappoints
+disapprobation
+disapproval
+disapprovative
+disapprove
+disapproved
+disapprover
+disapproves
+disapproving
+disapprovingly
+disarm
+disarmament
+disarmed
+disarmer
+disarmers
+disarming
+disarmingly
+disarms
+disarrange
+disarranged
+disarrangement
+disarranges
+disarray
+disarrays
+disarticulate
+disarticulated
+disarticulation
+disassemble
+disassembled
+disassembler
+disassembler's
+disassemblers
+disassembles
+disassembling
+disassembly
+disassociate
+disassociated
+disassociates
+disassociating
+disassociation
+disaster
+disaster's
+disasters
+disastrous
+disastrously
+disauthorize
+disauthorizes
+disavow
+disavowable
+disavowal
+disavowals
+disavowed
+disavowing
+disavows
+disband
+disbanded
+disbanding
+disbandment
+disbands
+disbar
+disbarment
+disbars
+disbelief
+disbelieve
+disbelieved
+disbeliever
+disbelievers
+disbelieves
+disbelieving
+disboweled
+disboweling
+disbranch
+disbud
+disburden
+disburdenment
+disburse
+disbursed
+disbursement
+disbursement's
+disbursements
+disburser
+disburses
+disbursing
+disc
+disc's
+discalced
+discanonization
+discanonization's
+discanonizations
+discanonize
+discanonizes
+discard
+discardable
+discarded
+discarder
+discarding
+discards
+discern
+discernable
+discerned
+discerner
+discernibility
+discernible
+discernibly
+discerning
+discerningly
+discernment
+discerns
+discharge
+dischargeable
+discharged
+dischargee
+discharger
+discharges
+discharging
+disciform
+disciple
+disciple's
+disciples
+discipleship
+disciplinable
+disciplinal
+disciplinant
+disciplinarian
+disciplinarianism
+disciplinarily
+disciplinarity
+disciplinary
+discipline
+disciplined
+discipliner
+disciplines
+disciplining
+disclaim
+disclaimed
+disclaimer
+disclaimers
+disclaiming
+disclaims
+disclamation
+disclimax
+disclose
+disclosed
+discloser
+discloses
+disclosing
+disclosure
+disclosure's
+disclosures
+disco
+disco's
+discobolus
+discographer
+discographic
+discographical
+discographically
+discography
+discoid
+discoidal
+discoidin
+discolor
+discolor's
+discoloration
+discolored
+discolored's
+discoloredness
+discoloreds
+discoloring
+discolorization
+discolorization's
+discolorizations
+discolorment
+discolorment's
+discolorments
+discolors
+discombobulate
+discomfit
+discomfited
+discomfiting
+discomfits
+discomfiture
+discomfitures
+discomfort
+discomfortable
+discomfortably
+discomforting
+discomfortingly
+discommend
+discommendable
+discommendation
+discommode
+discommodes
+discommoding
+discommodity
+discommon
+discompose
+discomposed
+discomposedly
+discomposure
+disconcert
+disconcerted
+disconcerting
+disconcertingly
+disconcerts
+disconfirm
+disconfirmation
+disconform
+disconformable
+disconformity
+disconnect
+disconnected
+disconnectedly
+disconnectedness
+disconnecter
+disconnecting
+disconnection
+disconnections
+disconnects
+disconsider
+disconsolate
+disconsolately
+disconsolateness
+disconsolation
+discontent
+discontented
+discontentedly
+discontentment
+discontinuance
+discontinuation
+discontinue
+discontinued
+discontinues
+discontinuing
+discontinuities
+discontinuity
+discontinuity's
+discontinuous
+discontinuously
+discophile
+discord
+discordance
+discordances
+discordancy
+discordant
+discordantly
+discords
+discorporate
+discorporated
+discos
+discotheque
+discount
+discounted
+discountenance
+discounter
+discounting
+discounts
+discourage
+discourageable
+discouraged
+discouragement
+discourager
+discourages
+discouraging
+discouragingly
+discourse
+discourse's
+discoursed
+discourser
+discourses
+discoursing
+discourteous
+discourteously
+discourteousness
+discourtesy
+discover
+discoverable
+discovered
+discoverer
+discoverers
+discoveries
+discovering
+discovers
+discovert
+discovery
+discovery's
+discredit
+discreditable
+discreditably
+discredited
+discrediting
+discredits
+discreet
+discreetly
+discreetness
+discrepancies
+discrepancy
+discrepancy's
+discrepant
+discrepantly
+discrete
+discretely
+discreteness
+discretion
+discretionary
+discretions
+discretization
+discretize
+discriminability
+discriminable
+discriminably
+discriminant
+discriminate
+discriminated
+discriminates
+discriminating
+discriminatingly
+discrimination
+discriminational
+discriminations
+discriminative
+discriminator
+discriminatorily
+discriminators
+discriminatory
+discs
+discursive
+discursively
+discursiveness
+discus
+discuses
+discuss
+discussable
+discussant
+discussants
+discussed
+discusser
+discusses
+discussible
+discussing
+discussion
+discussion's
+discussions
+disdain
+disdainful
+disdainfully
+disdainfulness
+disdaining
+disdains
+disdenominationalize
+disdenominationalizes
+disdiplomatize
+disdiplomatizes
+disease
+diseased
+diseases
+diseasing
+disembark
+disembarkation
+disembarrass
+disembodied
+disembodiment
+disembody
+disembogue
+disembowel
+disemboweled
+disemboweling
+disembowelment
+disembowels
+disembroil
+disenable
+disenamor
+disenamor's
+disenamors
+disenchant
+disenchanter
+disenchanting
+disenchantingly
+disenchantment
+disencumber
+disencumbrance
+disendow
+disendower
+disendowment
+disenfranchise
+disenfranchised
+disenfranchisement
+disenfranchisement's
+disenfranchisements
+disenfranchiser
+disenfranchises
+disenfranchising
+disengage
+disengaged
+disengagement
+disengages
+disengaging
+disentail
+disentangle
+disentangled
+disentanglement
+disentangler
+disentangles
+disentangling
+disenthrall
+disenthralled
+disenthralling
+disenthralls
+disentitle
+disentomb
+disentwine
+disepalous
+disequilibrate
+disequilibration
+disequilibrium
+disestablish
+disestablished
+disestablishment
+disestablishmentarian
+disesteem
+disestimation
+disfavor
+disfavored
+disfavorer
+disfavorer's
+disfavorers
+disfavoring
+disfavors
+disfeature
+disfeaturement
+disfigure
+disfigured
+disfigurement
+disfigurements
+disfigures
+disfiguring
+disforest
+disfranchise
+disfranchised
+disfranchisement
+disfranchises
+disfranchising
+disfrock
+disfunction
+disfurnish
+disfurnishment
+disgorge
+disgorgement
+disgorger
+disgrace
+disgraced
+disgraceful
+disgracefully
+disgracefulness
+disgracer
+disgraces
+disgracing
+disgruntle
+disgruntled
+disgruntlement
+disgruntles
+disgruntling
+disguise
+disguised
+disguisedly
+disguisement
+disguiser
+disguises
+disguising
+disgust
+disgusted
+disgustedly
+disgustful
+disgustfully
+disgusting
+disgustingly
+disgusts
+dish
+dishabille
+disharmonic
+disharmonious
+disharmonize
+disharmonizes
+disharmony
+dishcloth
+dishearten
+disheartening
+dishearteningly
+disheartenment
+disheartenments
+dished
+dishes
+dishevel
+disheveled
+disheveler
+disheveling
+dishevels
+dishing
+dishonest
+dishonestly
+dishonesty
+dishonor
+dishonorable
+dishonorable's
+dishonorableness
+dishonorables
+dishonorablies
+dishonorably
+dishonored
+dishonorer
+dishonorer's
+dishonorers
+dishonoring
+dishonors
+dishpan
+dishrack
+dishracks
+dishtowel
+dishumanize
+dishumanizes
+dishumor
+dishumored
+dishumors
+dishwasher
+dishwashers
+dishwater
+dishy
+disillusion
+disillusioned
+disillusioning
+disillusionize
+disillusionizer
+disillusionizers
+disillusionizes
+disillusionment
+disillusionment's
+disillusionments
+disincentive
+disincentives
+disinclination
+disincline
+disinclined
+disinclines
+disinclining
+disincorporated
+disindividualize
+disindividualizes
+disinfect
+disinfectant
+disinfectants
+disinfected
+disinfecting
+disinfection
+disinfects
+disinfest
+disinfestant
+disinfestation
+disinfested
+disinfesting
+disinfests
+disinflation
+disinflationary
+disingenuous
+disingenuously
+disingenuousness
+disinherit
+disinheritance
+disinherited
+disinheriting
+disinherits
+disinhibition
+disinhibitory
+disinsectization
+disintegrate
+disintegrated
+disintegrates
+disintegrating
+disintegration
+disintegrations
+disintegrative
+disintegrator
+disintegrators
+disinter
+disintered
+disinterest
+disinterested
+disinterestedly
+disinterestedness
+disintering
+disinterment
+disinterred
+disinters
+disintoxication
+disinvest
+disinvestment
+disject
+disjoin
+disjoint
+disjointed
+disjointedly
+disjointedness
+disjointly
+disjointness
+disjunct
+disjunction
+disjunctions
+disjunctive
+disjunctively
+disjunctor
+disjunctors
+disjuncts
+disjuncture
+disk
+disk's
+disked
+diskette
+diskettes
+disking
+disklike
+disks
+dislicense
+dislicensed
+dislicenser
+dislicenses
+dislicensing
+dislikable
+dislikably
+dislike
+dislikeable
+disliked
+disliker
+dislikes
+disliking
+dislimn
+dislocate
+dislocated
+dislocates
+dislocating
+dislocation
+dislocations
+dislodge
+dislodged
+dislodgement
+dislodges
+dislodging
+disloyal
+disloyally
+disloyalty
+dismal
+dismalize
+dismalizes
+dismally
+dismalness
+dismantle
+dismantled
+dismantlement
+dismantles
+dismantling
+dismast
+dismay
+dismayed
+dismaying
+dismayingly
+dismays
+dismember
+dismembered
+dismembering
+dismemberment
+dismiss
+dismissal
+dismissal's
+dismissals
+dismissed
+dismisser
+dismissers
+dismisses
+dismissing
+dismission
+dismissive
+dismount
+dismounted
+dismounting
+dismounts
+disnaturalization
+disnaturalization's
+disnaturalizations
+disnaturalize
+disnaturalizes
+Disney
+Disneyland
+disobedience
+disobedient
+disobediently
+disobey
+disobeyed
+disobeyer
+disobeying
+disobeys
+disoblige
+disobliger
+disoblingingly
+disoperation
+disorder
+disordered
+disorderedly
+disorderedness
+disorderliness
+disorderly
+disorders
+disorganization
+disorganization's
+disorganizations
+disorganize
+disorganized
+disorganizer
+disorganizers
+disorganizes
+disorganizing
+disorient
+disorientation
+disoriented
+disown
+disowned
+disowning
+disownment
+disowns
+disozonize
+disozonizes
+dispapalize
+dispapalizes
+disparage
+disparaged
+disparagement
+disparager
+disparages
+disparaging
+disparagingly
+disparate
+disparately
+disparateness
+disparities
+disparity
+disparity's
+dispart
+dispassion
+dispassionate
+dispassionately
+dispassionateness
+dispatch
+dispatched
+dispatcher
+dispatchers
+dispatches
+dispatching
+dispauperize
+dispauperizes
+dispel
+dispelled
+dispelling
+dispels
+dispend
+dispensability
+dispensable
+dispensary
+dispensate
+dispensation
+dispensational
+dispensatory
+dispense
+dispensed
+dispenser
+dispensers
+dispenses
+dispensing
+dispeople
+dispermous
+dispersability
+dispersable
+dispersal
+dispersant
+disperse
+dispersed
+dispersedly
+dispersement
+disperser
+disperses
+dispersible
+dispersing
+dispersion
+dispersions
+dispersity
+dispersive
+dispersively
+dispersiveness
+dispersoid
+dispersonalize
+dispersonalizes
+dispirit
+dispirited
+dispiritedly
+dispiritedness
+dispiriting
+dispirits
+dispiteous
+displace
+displaceable
+displaced
+displacement
+displacement's
+displacements
+displacer
+displaces
+displacing
+displant
+display
+displayable
+displayed
+displayer
+displaying
+displays
+displease
+displeased
+displeasedly
+displeases
+displeasing
+displeasure
+displode
+disploded
+displodes
+disploding
+displosion
+dispopularize
+dispopularizes
+disport
+disportment
+disporves
+disposability
+disposable
+disposal
+disposal's
+disposals
+dispose
+disposed
+disposer
+disposes
+disposing
+disposition
+disposition's
+dispositional
+dispositions
+dispositive
+dispossess
+dispossessed
+dispossesses
+dispossessing
+dispossession
+dispossessor
+disposure
+disposures
+dispraise
+dispraiser
+dispraisingly
+dispread
+disprize
+disproof
+disproportion
+disproportional
+disproportionate
+disproportionately
+disproportionation
+disprovable
+disprove
+disproved
+disproven
+disproves
+disproving
+disputable
+disputant
+disputation
+disputatious
+disputatiously
+disputatiousness
+dispute
+disputed
+disputer
+disputers
+disputes
+disputing
+disqualification
+disqualified
+disqualifies
+disqualify
+disqualifying
+disquantity
+disquiet
+disquieting
+disquietingly
+disquietly
+disquietude
+disquisition
+Disraeli
+disraeli
+disrate
+disrealize
+disrealizes
+disregard
+disregarded
+disregardful
+disregarding
+disregards
+disrelate
+disrelated
+disrelation
+disrelish
+disremember
+disremembrance
+disrepair
+disreputability
+disreputable
+disreputableness
+disreputably
+disrepute
+disrespect
+disrespectability
+disrespectable
+disrespectful
+disrespectfully
+disrespectfulness
+disrobe
+disrupt
+disrupted
+disrupter
+disrupting
+disruption
+disruption's
+disruptions
+disruptive
+disruptively
+disruptiveness
+disrupts
+dissappear
+dissatisfaction
+dissatisfaction's
+dissatisfactions
+dissatisfactory
+dissatisfied
+dissatisfies
+dissatisfy
+dissatisfying
+disscepter
+disscepter's
+disscepters
+dissect
+dissected
+dissecting
+dissection
+dissector
+dissects
+disseize
+disseized
+disseizes
+disseizin
+disseizing
+disseizins
+disseizor
+disseizors
+dissemble
+dissembled
+dissembler
+dissembling
+disseminate
+disseminated
+disseminates
+disseminating
+dissemination
+disseminator
+disseminators
+disseminule
+dissension
+dissension's
+dissensions
+dissensualize
+dissensualizes
+dissent
+dissented
+dissenter
+dissenters
+dissentient
+dissenting
+dissention
+dissentious
+dissents
+dissepiment
+dissert
+dissertate
+dissertation
+dissertation's
+dissertations
+dissertator
+disserve
+disservice
+dissever
+disseverance
+disseverment
+dissidence
+dissident
+dissident's
+dissidents
+dissimilar
+dissimilarities
+dissimilarity
+dissimilarity's
+dissimilarly
+dissimilate
+dissimilated
+dissimilates
+dissimilating
+dissimilation
+dissimilative
+dissimilatory
+dissimilitude
+dissimulate
+dissimulation
+dissimulator
+dissipate
+dissipated
+dissipatedly
+dissipatedness
+dissipater
+dissipates
+dissipating
+dissipation
+dissipations
+dissipative
+dissociability
+dissociable
+dissocial
+dissocialize
+dissociant
+dissociate
+dissociated
+dissociates
+dissociating
+dissociation
+dissociative
+dissolubility
+dissoluble
+dissolute
+dissolutely
+dissoluteness
+dissolution
+dissolution's
+dissolutions
+dissolvable
+dissolve
+dissolved
+dissolvent
+dissolver
+dissolves
+dissolving
+dissonance
+dissonance's
+dissonances
+dissonant
+dissonantly
+dissuade
+dissuaded
+dissuader
+dissuades
+dissuading
+dissuasion
+dissuasive
+dissuasively
+dissuasiveness
+dissyllable
+dissymmetric
+dissymmetry
+dissympathize
+dissympathizes
+distaff
+distaffs
+distal
+distally
+distance
+distanced
+distances
+distancing
+distant
+distantly
+distantness
+distaste
+distasteful
+distastefully
+distastefulness
+distastes
+distemper
+distemperate
+distemperature
+distend
+distended
+distensibility
+distensible
+distension
+distent
+distention
+distich
+distichous
+distill
+distillate
+distillates
+distillation
+distillations
+distilled
+distiller
+distilleries
+distillers
+distillery
+distilling
+distills
+distinct
+distinction
+distinction's
+distinctions
+distinctive
+distinctively
+distinctiveness
+distinctly
+distinctness
+distinguish
+distinguishability
+distinguishable
+distinguishably
+distinguished
+distinguisher
+distinguishes
+distinguishing
+distort
+distortable
+distorted
+distorter
+distorting
+distortion
+distortion's
+distortional
+distortions
+distorts
+distract
+distracted
+distractedly
+distractibility
+distractible
+distracting
+distractingly
+distraction
+distraction's
+distractions
+distractive
+distracts
+distrain
+distrainable
+distrainee
+distrainer
+distrainor
+distraint
+distrait
+distraught
+distraughtly
+distress
+distressed
+distresses
+distressful
+distressfully
+distressfulness
+distressing
+distressingly
+distributary
+distribute
+distributed
+distributee
+distributer
+distributes
+distributing
+distribution
+distribution's
+distributional
+distributions
+distributive
+distributively
+distributiveness
+distributivity
+distributor
+distributor's
+distributors
+distributorship
+district
+district's
+districted
+districting
+districts
+distringas
+distrito
+distrubuted
+distrust
+distrusted
+distrustful
+distrustfully
+distrustfulness
+distrusts
+disturb
+disturbance
+disturbance's
+disturbances
+disturbed
+disturber
+disturbing
+disturbingly
+disturbs
+disubstituted
+disulfide
+disulfiram
+disulphate
+disulphide
+disulphuric
+disunion
+disunionist
+disunite
+disunited
+disunity
+disuse
+disused
+disutility
+disutilize
+disutilizes
+disvalue
+disvalues
+disyllabic
+disyllable
+dita
+ditch
+ditch's
+ditched
+ditcher
+ditches
+ditching
+ditheism
+dither
+dithered
+ditherer
+dithering
+dithery
+dithionite
+dithionous
+dithyramb
+dithyrambic
+dittander
+dittany
+ditties
+ditto
+dittography
+dittos
+ditty
+Ditzel
+diu
+diuresis
+diuretic
+diurnal
+div
+diva
+divagate
+divagation
+divalent
+divan
+divan's
+divans
+divaricate
+divarication
+divaricator
+dive
+dived
+diver
+diverge
+diverged
+divergence
+divergence's
+divergences
+divergencies
+divergency
+divergent
+divergently
+diverges
+diverging
+divers
+diverse
+diversely
+diverseness
+diversification
+diversified
+diversifier
+diversifies
+diversiform
+diversify
+diversifying
+diversion
+diversionary
+diversionist
+diversions
+diversities
+diversity
+divert
+diverted
+diverticulitis
+diverticulosis
+diverticulum
+divertimento
+diverting
+divertissement
+divertissements
+diverts
+dives
+divest
+divested
+divesting
+divestiture
+divestment
+divests
+divi
+dividable
+divide
+divided
+dividend
+dividend's
+dividends
+divider
+dividers
+divides
+dividing
+divination
+divinatory
+divine
+divined
+divinely
+diviner
+divines
+diving
+divining
+divinities
+divinity
+divinity's
+divinization
+divinization's
+divinizations
+divinize
+divinized
+divinizes
+divinizing
+divinylbenzene
+divisibility
+divisible
+divisibly
+division
+division's
+divisional
+divisionism
+divisionist
+divisions
+divisive
+divisively
+divisiveness
+divisor
+divisor's
+divisors
+divorce
+divorced
+divorcee
+divorcees
+divorcement
+divorces
+divorcing
+divot
+divulgate
+divulge
+divulged
+divulgence
+divulges
+divulging
+divulsion
+divvied
+divvies
+divvy
+divvying
+Dixie
+Dixiecrats
+dixiecrats
+Dixieland
+Dixon
+Dixon's
+diyarbakir
+dizen
+dizequalise
+dizequalise's
+dizequaliser
+dizequalisers
+dizequalises
+dizorganisation
+dizorganise
+dizzied
+dizzier
+dizzily
+dizziness
+dizzy
+dizzying
+dizzyingly
+djailolo
+djaja
+djajapura
+Djakarta
+djambi
+djebel
+djerba
+Djibouti
+djinni
+djokjakarta
+DMA
+DMF
+Dmitri
+DNA
+Dneprodzerzhinsk
+Dnepropetrovsk
+Dnieper
+Dnieper's
+Dniester
+do
+doab
+doable
+dobbin
+Dobbs
+dobby
+doberman
+Doberman
+dobla
+dobro
+dobruja
+dobson
+dobsonfly
+doc
+Doc
+docent
+docetic
+Docetism
+docile
+docilely
+docility
+dock
+dockage
+docked
+docker
+docket
+docketed
+docketing
+dockets
+dockhand
+docking
+dockization
+dockization's
+dockizations
+dockize
+dockizes
+dockland
+docklands
+docks
+dockside
+dockworker
+dockyard
+doctor
+doctor's
+doctoral
+doctorate
+doctorate's
+doctorates
+doctored
+doctoring
+doctorization
+doctorization's
+doctorizations
+doctorize
+doctorizes
+doctorless
+doctors
+doctorship
+doctrinaire
+doctrinairism
+doctrinal
+doctrinally
+doctrine
+doctrine's
+doctrines
+doctrinization
+doctrinization's
+doctrinizations
+doctrinize
+doctrinizes
+document
+document's
+documental
+documentale
+documentalist
+documentarian
+documentaries
+documentarily
+documentarist
+documentary
+documentary's
+documentation
+documentation's
+documentational
+documentations
+documented
+documenter
+documenters
+documenting
+documentize
+documentizes
+documents
+DOD
+Dodd
+Dodd's
+dodder
+doddered
+dodderer
+doddering
+dodders
+doddery
+doddle
+dodecagon
+dodecahedra
+dodecahedral
+dodecahedron
+dodecanese
+dodecanoic
+dodecaphonic
+dodecasyllable
+dodecyl
+dodge
+dodged
+dodgem
+dodger
+dodgers
+dodgery
+dodges
+dodging
+Dodgson
+dodgy
+Dodington
+dodington
+dodo
+dodo's
+dodoma
+Dodona
+dodos
+Dodson
+Dodson's
+doe
+doek
+doenitz
+doer
+doers
+does
+Doese
+doeskin
+doesn't
+doff
+doffing
+doffs
+dog
+dog's
+dogbane
+dogberry
+dogcart
+dogcatcher
+doge
+dogface
+dogfight
+dogfights
+dogfish
+dogfishs
+dogged
+doggedly
+doggedness
+dogger
+doggerel
+doggery
+doggie
+doggier
+doggies
+dogging
+doggish
+doggishly
+doggishness
+doggo
+doggone
+doggoned
+doggoning
+doggy
+doghouse
+dogleg
+doglike
+dogma
+dogma's
+dogman
+dogmas
+dogmatic
+dogmatical
+dogmatically
+dogmaticalness
+dogmatics
+dogmatism
+dogmatist
+dogmatist's
+dogmatists
+dogmatization
+dogmatize
+dogmatizer
+dognaped
+dognaping
+dogs
+dogsbody
+dogtooth
+Dogtown
+dogtrot
+dogvane
+dogwatch
+dogwood
+dogy
+doh
+doha
+Doherty
+Doherty's
+Dohnanyi
+doilies
+doily
+doing
+doings
+doit
+doited
+dojo
+Dol
+dolabriform
+Dolan
+Dolan's
+dolby
+dolce
+doldrum
+doldrums
+dole
+doled
+doleful
+dolefully
+dolefulness
+dolerite
+doles
+dolesome
+dolichocephalic
+Dolichosaurus
+doline
+doling
+doll
+doll's
+dollar
+dollarbird
+dollarfish
+dollars
+dollfuss
+dollhouse
+dollied
+dollies
+dollish
+dollishly
+dollishness
+dollop
+dollop's
+dolloped
+dolloping
+dollops
+dolls
+dolly
+dolly's
+dollying
+dolman
+dolmas
+dolmen
+dolmetsch
+dolomite
+dolomites
+dolomitic
+dolomitization
+dolomitization's
+dolomitizations
+dolomitize
+dolomitizes
+dolor
+Dolores
+dolorimetry
+doloroso
+dolorous
+dolorously
+dolorousness
+dolphin
+dolphin's
+dolphins
+dolt
+doltish
+doltishly
+doltishness
+dom
+domain
+domain's
+domains
+dome
+domed
+Domenico
+Domenico's
+domes
+Domesday
+domestic
+domestically
+domesticate
+domesticated
+domesticates
+domesticating
+domestication
+domesticity
+domesticize
+domesticizes
+domett
+domical
+domicil
+domicile
+domiciled
+domiciliary
+domiciliate
+domiciliation
+dominance
+dominant
+dominantly
+dominate
+dominated
+dominates
+dominating
+domination
+dominations
+dominative
+dominator
+dominee
+domineer
+domineering
+domineeringly
+domineeringness
+doming
+Domingo
+Dominic
+Dominica
+dominical
+Dominican
+Dominicans
+Dominick
+Dominick's
+dominie
+dominion
+dominions
+Dominique
+Dominique's
+dominium
+domino
+dominoes
+Domitian
+don
+don't
+dona
+Donahue
+Donald
+Donald's
+Donaldson
+Donar
+donate
+donated
+donatello
+donates
+Donath
+donating
+donation
+donations
+Donatist
+donative
+donator
+donatus
+donau
+donbass
+Doncaster
+done
+Doneck
+Doneck's
+donee
+Donegal
+doneness
+Donetsk
+dong
+donga
+Dongola
+Donizetti
+donjon
+donkey
+donkey's
+donkeys
+Donna
+donne
+donned
+Donnelly
+donner
+donnert
+donning
+donnish
+donnishly
+donnishness
+donny
+donnybrook
+donor
+donors
+Donovan
+dons
+donut
+donuts
+doodad
+doodah
+doodle
+doodlebug
+doodled
+doodler
+doodles
+doodling
+doohickey
+Dooley
+Dooley's
+Doolittle
+doom
+doomed
+doomful
+doomfully
+dooming
+dooms
+doomsayer
+doomsday
+doomster
+door
+door's
+doorbell
+doorframe
+doorjamb
+doorkeep
+doorkeeper
+doorkeepers
+doorknob
+doorknobs
+doorless
+doorman
+doormat
+doormen
+doorn
+doornail
+doornik
+doorplate
+doorpost
+doors
+doorsill
+doorstep
+doorstep's
+doorsteps
+doorstop
+doorway
+doorway's
+doorways
+dooryard
+dopa
+dopant
+dope
+doped
+doper
+dopers
+dopes
+dopester
+dopey
+dopier
+dopiness
+doping
+doppelganger
+Dopper
+Doppler
+dopy
+Dor
+Dora
+Dora's
+Dorado
+Dorati
+Dorcas
+Dorchester
+dordogne
+dordrecht
+Doreen
+Doreen's
+Doria
+Doria's
+Dorian
+Doric
+Doric's
+Doricize
+Doricizes
+Doris
+Dorking
+dorm
+dormancy
+dormant
+dormer
+dormice
+dormie
+dormitories
+dormitory
+dormitory's
+dormobile
+dormouse
+dormouse's
+Dormoy
+dormy
+dornbirn
+dornick
+Doronicum
+Dorothea
+Dorothea's
+Dorothy
+dorp
+dorpat
+dorsad
+dorsal
+dorsally
+Dorset
+Dorset's
+dorsiferous
+dorsigrade
+dorsiventral
+dorsoventral
+dorsum
+dort
+Dortmund
+Dortmund's
+dorty
+dory
+DOS
+dosage
+dosages
+dose
+dosed
+doses
+dosimeter
+dosimeter's
+dosimeters
+dosimetric
+dosimetry
+dosing
+doss
+dossal
+dosser
+dosshouse
+dossier
+dossiers
+dost
+Dostoevsky
+dot
+dot's
+dotage
+dotal
+dotard
+dotation
+dote
+doted
+doter
+dotes
+doth
+doting
+dotingly
+dots
+dotted
+dotter
+dotterel
+dottier
+dottily
+dottiness
+dotting
+dottle
+dotty
+douai
+douala
+douay
+double
+doubled
+Doubleday
+doubleheader
+doubleness
+doubler
+doublers
+doubles
+doublespeak
+doublet
+doublet's
+doublethink
+doubleton
+doubletree
+doublets
+doubling
+doubloon
+doublure
+doubly
+doubs
+doubt
+doubtable
+doubted
+doubter
+doubters
+doubtful
+doubtfully
+doubtfulness
+doubting
+doubtingly
+doubtless
+doubtlessly
+doubtlessness
+doubts
+douc
+douce
+douceur
+douche
+Doug
+dough
+doughboy
+Dougherty
+doughface
+doughier
+doughlike
+doughnut
+doughnut's
+doughnuts
+doughnuttery
+doughtier
+doughtily
+doughtiness
+doughty
+doughy
+Douglas
+Douglass
+doukhobors
+doum
+dour
+doura
+dourine
+dourly
+dourness
+douro
+douroucouli
+douse
+doused
+douser
+douses
+dousing
+dovap
+dove
+dovecot
+dovecote
+dovekie
+dover
+doves
+dovetail
+dovish
+dovishness
+Dow
+dowable
+dowager
+dowagers
+dowdier
+dowdies
+dowdily
+dowdiness
+dowding
+dowdy
+dowdyish
+dowel
+doweled
+doweler
+doweling
+dower
+dowery
+dowitcher
+Dowland
+Dowling
+Dowling's
+down
+downbeat
+downcast
+downcome
+downcomer
+downcourt
+downdraft
+downed
+downer
+downers
+Downey
+downfall
+downfallen
+downgrade
+downgraded
+downgrades
+downgrading
+downhaul
+downhearted
+downheartedly
+downheartedness
+downhill
+downhole
+downier
+downing
+download
+downloaded
+downloading
+downloads
+downpatrick
+downpipe
+downplay
+downplayed
+downplaying
+downplays
+downpour
+downrange
+downright
+downrightly
+downrightness
+downriver
+downs
+downshift
+downside
+downslope
+downspout
+downstage
+downstairs
+downstate
+downstater
+downstream
+downstroke
+downswing
+downswings
+downthrow
+downtime
+downtown
+downtowner
+downtowns
+downtrend
+downtrodden
+downturn
+downturns
+downward
+downwardly
+downwardness
+downwards
+downwash
+downweight
+downweighted
+downweighting
+downwell
+downwind
+downy
+dowries
+dowry
+dowsabel
+dowse
+dowser
+dowses
+dowsing
+Dowson
+doxastic
+doxographer
+doxology
+doxy
+doyen
+Doyle
+doyley
+doze
+dozed
+dozen
+dozens
+dozenth
+dozer
+dozes
+dozier
+doziness
+dozing
+dozy
+DPP
+Dr
+drab
+drabber
+drabbest
+drabbet
+drabbing
+drabble
+drabbled
+drabbling
+drably
+drabness
+drabs
+Dracaena
+Draco
+Draco's
+Draconian
+Draconic
+draff
+draft
+draft's
+draftable
+draftboard
+drafted
+draftee
+draftees
+drafter
+drafters
+draftier
+draftily
+draftiness
+drafting
+drafts
+draftsman
+draftsmanship
+draftsmen
+draftsperson
+drafty
+drag
+dragged
+dragger
+draggier
+dragging
+draggingly
+draggle
+draggled
+draggletailed
+draggling
+draggy
+draghound
+dragline
+dragnet
+dragoman
+dragon
+dragon's
+dragonet
+dragonfly
+dragonhead
+dragonish
+dragonize
+dragonizes
+dragonnade
+dragonroot
+dragons
+dragoon
+dragooned
+dragoons
+dragrope
+drags
+dragster
+drail
+drain
+drainage
+drainages
+drained
+drainer
+drainers
+draining
+drainpipe
+drainpipes
+drains
+drake
+Drakensberg
+dram
+drama
+drama's
+dramalogue
+Dramamine
+dramamine
+dramas
+dramatic
+dramatical
+dramatically
+dramatics
+dramatis
+dramatist
+dramatist's
+dramatists
+dramatizable
+dramatizable's
+dramatizables
+dramatization
+dramatization's
+dramatizations
+dramatize
+dramatized
+dramatizer
+dramatizers
+dramatizes
+dramatizing
+dramaturge
+dramaturgic
+dramaturgical
+dramaturgically
+dramaturgy
+drammen
+dramshop
+drancy
+drank
+drapability
+drapable
+drape
+drapeability
+drapeable
+draped
+draper
+draperies
+drapers
+drapery
+drapery's
+drapes
+draping
+drastic
+drastically
+drat
+dratted
+dratting
+drava
+Dravidian
+draw
+drawable
+drawback
+drawback's
+drawbacks
+drawbar
+drawbridge
+drawbridge's
+drawbridges
+drawdown
+drawee
+drawer
+drawerful
+drawers
+drawing
+drawings
+drawknife
+drawl
+drawled
+drawler
+drawling
+drawlingly
+drawls
+drawly
+drawn
+drawnly
+drawnness
+drawnwork
+drawplate
+draws
+drawstring
+drawstring's
+drawstrings
+drawtube
+dray
+drayage
+drayhorse
+drayman
+drayman's
+draymen
+draymen's
+Drayton
+dread
+dreaded
+dreadful
+dreadfully
+dreadfulness
+dreading
+dreadnought
+dreads
+dream
+dreamboat
+dreamed
+dreamer
+dreamers
+dreamful
+dreamfully
+dreamfulness
+dreamier
+dreamily
+dreaminess
+dreaming
+dreamingly
+dreamland
+dreamless
+dreamlessly
+dreamlessness
+dreamlike
+dreams
+dreamt
+dreamworld
+dreamy
+drear
+drearier
+drearily
+dreariness
+dreary
+dreck
+dredge
+dredge's
+dredged
+dredger
+dredgers
+dredges
+dredging
+dree
+dreg
+dreggy
+dregs
+dreich
+dreiser
+drench
+drenched
+drencher
+drenches
+drenching
+drenthe
+dresden
+dress
+dressage
+dressed
+Dressen
+dresser
+dressers
+dresses
+dressier
+dressiness
+dressing
+dressings
+dressmake
+dressmaker
+dressmaker's
+dressmakers
+dressmaking
+dressy
+drew
+Drexel
+Dreyfuss
+drib
+dribble
+dribbled
+dribbler
+dribbles
+dribbling
+driblet
+dribs
+dried
+drier
+drier's
+driers
+dries
+driest
+drift
+driftage
+drifted
+drifter
+drifters
+driftier
+drifting
+driftingly
+drifts
+driftweed
+driftwood
+driftwood's
+drifty
+drill
+drillability
+drillable
+drilled
+driller
+drilling
+drillmaster
+drills
+drillstock
+drily
+drin
+drink
+drinkability
+drinkable
+drinker
+drinkers
+drinking
+drinks
+drinkwater
+drip
+drip's
+dripless
+dripped
+dripper
+drippier
+dripping
+drippy
+drips
+dripstone
+Driscoll
+Driscoll's
+drivable
+drive
+driveable
+drivel
+driveled
+driveler
+drivelers
+driveline
+driveling
+driven
+drivenness
+driver
+driver's
+driverless
+drivers
+drives
+driveway
+driveway's
+driveways
+driving
+drizzle
+drizzled
+drizzles
+drizzling
+drizzlingly
+drizzly
+drogheda
+drogue
+droit
+droll
+drolleries
+drollery
+drollness
+drolly
+dromedary
+dromond
+drone
+drone's
+droner
+drones
+Dronfield
+drongo
+drongos
+droning
+droningly
+droob
+drool
+drooled
+drooler
+drooling
+drools
+droop
+drooped
+droopier
+drooping
+droopingly
+droops
+droopy
+drop
+drop's
+drophead
+dropkick
+dropkicker
+droplet
+droplets
+droplight
+dropout
+dropouts
+droppage
+dropped
+dropper
+dropper's
+dropperful
+droppers
+dropping
+dropping's
+droppings
+drops
+dropshot
+dropsonde
+dropsy
+droshky
+drosophila
+dross
+drossy
+drought
+drought's
+droughtiness
+droughts
+droughty
+drouth
+drove
+drover
+drovers
+droves
+drown
+drownd
+drownded
+drownding
+drowned
+drowner
+drowning
+drownings
+drowns
+drowse
+drowsed
+drowses
+drowsier
+drowsiest
+drowsily
+drowsiness
+drowsing
+drowsy
+drub
+drubber
+drubbing
+drudge
+drudger
+drudgery
+drudges
+drudging
+drudgingly
+druffen
+drug
+drug's
+drugged
+drugget
+drugging
+druggist
+druggist's
+druggists
+drugless
+drugmaker
+drugs
+drugstore
+drugstores
+druid
+druidess
+druidic
+druidical
+druidism
+drum
+drum's
+drumbeat
+drumbeater
+drumbeating
+drumfire
+drumhead
+drumlike
+drumlin
+drummed
+drummer
+drummer's
+drummers
+drumming
+Drummond
+Drummond's
+drumroll
+drums
+drumstick
+drumsticks
+drunk
+drunk's
+drunkard
+drunkard's
+drunkards
+drunken
+drunkeness
+drunkenly
+drunkenness
+drunker
+drunkly
+drunkometer
+drunkometer's
+drunkometers
+drunks
+drupe
+drupelet
+Drury
+Druse
+dry
+dryable
+dryad
+dryasdust
+Dryden
+dryer
+dryers
+drying
+drylot
+dryly
+dryness
+dryopithecine
+drypoint
+drys
+drysalter
+drysaltery
+drysdale
+drystone
+drywall
+du
+dual
+Duala
+dualism
+dualist
+dualistic
+dualistically
+dualities
+duality
+duality's
+dualization
+dualization's
+dualizations
+dualize
+dualizes
+dually
+duals
+Duane
+dub
+dubai
+dubbed
+dubber
+dubbin
+dubbing
+Dubhe
+Dubhe's
+dubiety
+dubiosity
+dubious
+dubiously
+dubiousness
+dubitable
+dubitation
+Dublin
+Dubonnet
+dubrovnik
+dubs
+dubuffet
+Dubuque
+dubuque
+ducal
+ducally
+ducat
+duccio
+duce
+duces
+duchamp
+duchess
+duchess's
+duchesses
+duchies
+duchy
+duck
+duckbill
+duckbilled
+duckboard
+ducked
+ducker
+duckfooted
+duckier
+ducking
+duckling
+duckpin
+ducks
+duckweed
+duckweed's
+duckweeds
+ducky
+duclos
+duct
+ducted
+ductile
+ductility
+ductilize
+ductilizes
+ducting
+ductless
+ducts
+ductule
+ductwork
+dud
+dude
+dudeen
+dudgeon
+dudish
+dudishly
+Dudley
+Dudley's
+duds
+due
+duel
+dueled
+dueler
+duelers
+dueling
+duelings
+duelist
+duelists
+duello
+duels
+duende
+dueness
+duenna
+duennaship
+duero
+dues
+duet
+duets
+duetted
+duetting
+duff
+duffel
+duffer
+duffers
+duffle
+Duffy
+dufy
+dug
+Dugan
+Dugan's
+dugong
+dugout
+duhamel
+duiker
+Duisburg
+duka
+Dukas
+duke
+duke's
+dukedom
+dukes
+dukhobors
+dulcet
+dulcetly
+dulciana
+dulcify
+dulcimer
+dulcimore
+Dulcinea
+dulgence
+dulia
+dull
+dullard
+dulled
+duller
+Dulles
+dulles
+dullest
+dulling
+dullish
+dullishly
+dullness
+dulls
+dullsville
+dully
+dulness
+dulosis
+dulse
+Duluth
+duly
+Duma
+Duma's
+dumas
+Dumas
+dumb
+Dumbarton
+dumbbell
+dumbbell's
+dumbbells
+dumbell
+dumbells
+dumber
+dumbest
+dumbfound
+dumbfounded
+dumbfounder
+dumbfounds
+dumbly
+dumbness
+dumbstruck
+dumbwaiter
+dumbwaiters
+dumdum
+dumfries
+dumka
+dummied
+dummies
+dummy
+dummy's
+dummying
+Dumont
+dumortierite
+dump
+dumped
+dumper
+dumpers
+dumpier
+dumpily
+dumpiness
+dumping
+dumpish
+dumpling
+dumpling's
+dumplings
+dumpo
+dumps
+dumpster
+dumpster's
+dumpsters
+Dumpty
+dumpy
+dumyat
+dun
+duna
+dunaj
+dunant
+Dunbar
+Dunbar's
+Dunbarton
+Duncan
+dunce
+dunce's
+dunces
+dundalk
+dundee
+Dundee
+Dundee's
+dunderhead
+dunderheaded
+dune
+dune's
+Dunedin
+Dunedin's
+duneland
+dunelike
+dunes
+dunfermline
+dung
+dungaree
+dungas
+dungeness
+dungeon
+dungeon's
+dungeons
+dunghill
+dungy
+Dunham
+dunite
+duniwassal
+dunk
+dunkel
+Dunker
+dunker
+dunkerque
+Dunkirk
+Dunlap
+dunlin
+Dunlop
+Dunlop's
+Dunn
+Dunn's
+dunnage
+dunnakin
+dunne
+Dunne
+dunnite
+dunno
+dunnock
+dunny
+dunois
+dunoon
+dunsany
+dunsinane
+dunstable
+dunstan
+dunt
+duntroon
+dunwoody
+duo
+duodecimal
+duodecimo
+duodenal
+duodenary
+duodenitis
+duodenum
+duologue
+duomo
+duomos
+duopolist
+duopolistic
+duopoly
+duos
+duotone
+dup
+duparc
+dupatta
+dupe
+duped
+duper
+dupery
+dupes
+duping
+dupion
+duple
+dupleix
+duplet
+duplex
+duplexer
+duplicable
+duplicate
+duplicated
+duplicates
+duplicating
+duplication
+duplications
+duplicative
+duplicator
+duplicator's
+duplicators
+duplicitous
+duplicitously
+duplicity
+dupondius
+DuPont
+Dupont
+dupont
+DuPonts
+Duponts
+duponts
+duppy
+Dupre
+duque
+Duquesne
+durabilities
+durability
+durable
+durableness
+durables
+durably
+Duralumin
+duramen
+durance
+Durango
+Durango's
+duration
+duration's
+durational
+durations
+durative
+durazzo
+Durban
+durbar
+Durer
+duress
+durex
+durgah
+Durham
+durian
+during
+Durkee
+Durkheim
+Durkin
+Durkin's
+durmast
+duro
+Duroc
+durometer
+durometer's
+durometers
+duros
+durra
+Durrell
+Durrell's
+durst
+Durufle
+durum
+Durward
+Durward's
+durzi
+Dusenberg
+Dusenbury
+Dusenbury's
+dushanbe
+dusk
+duskier
+duskily
+duskiness
+dusky
+Dusseldorf
+dust
+dustability
+dustable
+dustbin
+dustbins
+dustcart
+dustcarts
+dustcover
+dusted
+duster
+dusters
+dustheap
+dustier
+dustiest
+dustily
+Dustin
+dustin
+dustiness
+dusting
+dustless
+dustlike
+dustman
+dustmen
+dustpan
+dustpans
+dusts
+dustsheet
+dustsheets
+dustup
+dusty
+Dutch
+dutchess
+Dutchman
+Dutchmen
+duteous
+dutiable
+duties
+dutiful
+dutifully
+dutifulness
+Dutoit
+Dutton
+Dutton's
+duty
+duty's
+duumvir
+duumvirate
+duvalier
+duverger
+duvet
+dux
+Duyker
+Dvandva
+Dvina
+Dvinsk
+Dvorak
+Dvorsky
+dwale
+dwarf
+dwarfed
+dwarfishly
+dwarfishness
+dwarfism
+dwarflike
+dwarfness
+dwarfs
+dwarves
+dwell
+dwelled
+dweller
+dwellers
+dwelling
+dwellings
+dwells
+dwelt
+Dwight
+dwindle
+dwindled
+dwindles
+dwindling
+DWT
+Dwyer
+Dwyer's
+dyad
+dyadic
+dyadically
+dyads
+Dyak
+dyarchy
+dybbuk
+dye
+dyeability
+dyeable
+dyed
+dyeing
+dyer
+dyerear
+dyers
+dyes
+dyestuff
+dyewood
+dyfed
+dying
+Dyke
+dykes
+Dylan
+Dylan's
+dynameter
+dynamic
+dynamical
+dynamically
+dynamicism
+dynamics
+dynamism
+dynamist
+dynamistic
+dynamite
+dynamited
+dynamiter
+dynamites
+dynamitic
+dynamiting
+dynamized
+dynamo
+dynamoelectric
+dynamometer
+dynamometer's
+dynamometers
+dynamometric
+dynamometry
+dynamos
+dynamotor
+dynapolis
+dynast
+dynastic
+dynastically
+dynasties
+dynasts
+dynasty
+dynasty's
+dynatron
+dyne
+dynode
+dynodes
+Dyonisian
+dyscrasia
+dysenteric
+dysentery
+dysfunction
+dysfunctional
+dysgenesis
+dysgenic
+dysgenics
+dysgraphia
+dyslexia
+dyslexic
+dyslogistic
+dyslogistically
+dysmenorrhoea
+dyspepsia
+dyspeptic
+dyspeptically
+dysphagia
+dysphagic
+dysphasia
+dysphasic
+dysphemism
+dysphonia
+dysphonic
+dysphoria
+dysphoric
+dysplasia
+dysplastic
+dyspnoea
+dysprosium
+dysteleology
+dysthymia
+dystopia
+dystrophic
+dystrophy
+dysuria
+dytiscid
+dyula
+Dzaudzhikau
+Dzerzhinsk
+Dzhambul
+Dziggetai
+Dzongka
+Dzungaria
+e'er
+e's
+each
+Eagan
+Eagan's
+eager
+eagerly
+eagerness
+eagle
+eagle's
+eagles
+Eaglestone
+eaglet
+Eaglewood
+eagre
+ealdorman
+ealing
+eanes
+ear
+earache
+earbash
+eardrop
+eardrops
+eardrum
+eardrums
+eared
+earflap
+earful
+earhart
+earing
+earl
+earl's
+earlap
+earldom
+earless
+earlier
+earliest
+earliness
+earlobe
+earlock
+earls
+early
+earmark
+earmarked
+earmarking
+earmarkings
+earmarks
+earmuff
+earmuffs
+earn
+earned
+earner
+earner's
+earners
+earnest
+earnestly
+earnestness
+earning
+earnings
+earns
+earom
+Earp
+earp
+earphone
+earphones
+earpiece
+earplug
+earring
+earring's
+earrings
+ears
+earshot
+earsplitting
+earth
+earth's
+earthborn
+earthbound
+earthed
+earthen
+earthenware
+earthier
+earthily
+earthiness
+earthlight
+earthlike
+earthliness
+earthling
+earthly
+Earthman
+earthman
+Earthman's
+Earthmen
+earthmen
+Earthmen's
+earthmove
+earthmover
+earthmoving
+earthnut
+earthquake
+earthquake's
+earthquakes
+earthrise
+earths
+earthshaker
+earthshaking
+earthshakingly
+earthshine
+earthstar
+earthward
+earthwards
+earthwork
+earthworks
+earthworm
+earthworm's
+earthworms
+earthy
+earwax
+earwig
+earwigged
+earwigging
+earwitness
+ease
+eased
+easeful
+easefully
+easel
+easement
+easement's
+easements
+easer
+eases
+easier
+easiest
+easily
+easiness
+easing
+east
+eastbound
+Eastbourne
+easter
+easterly
+eastern
+easterner
+easterners
+easternize
+easternmost
+Eastertide
+Easthampton
+easthampton
+easting
+Eastland
+Eastleigh
+Eastman
+eastmost
+easts
+eastward
+eastwards
+eastwick
+Eastwick
+Eastwood
+easure
+easy
+easygoing
+easygoingness
+eat
+eatable
+eatables
+eatage
+eaten
+eater
+eaters
+eatery
+eating
+eatings
+Eaton
+Eaton's
+eats
+eave
+eaves
+eavesdrop
+eavesdropped
+eavesdropper
+eavesdropper's
+eavesdroppers
+eavesdropping
+eavesdrops
+ebb
+ebbed
+ebbing
+ebbs
+EBCDIC
+Eben
+Eben's
+Ebert
+eblis
+ebon
+ebonite
+ebonization
+ebonize
+ebonized
+ebonizes
+ebonizing
+ebony
+ebracteate
+ebullience
+ebulliency
+ebullient
+ebulliently
+ebullioscopy
+ebullition
+eburnation
+ECAD
+ecbatana
+ecbolic
+ecce
+eccentric
+eccentric's
+eccentrically
+eccentricities
+eccentricity
+eccentrics
+ecchymosis
+Eccles
+ecclesall
+ecclesia
+ecclesial
+Ecclesiastes
+ecclesiastic
+ecclesiastical
+ecclesiastically
+ecclesiasticism
+ecclesiasticize
+ecclesiasticizes
+Ecclesiasticus
+ecclesiolatry
+ecclesiological
+ecclesiology
+eccrinology
+ecdysiast
+ecdysis
+ecdysone
+ecesis
+ecevit
+ECG
+ech
+echard
+echelon
+echelons
+Echeveria
+echidna
+echinate
+echinococcus
+echinoderm
+echinoid
+echinulate
+echinulation
+echinus
+echo
+echoed
+echoes
+echoey
+echoic
+echoing
+echoism
+echoize
+echoizes
+echolalia
+echolocation
+echopraxia
+echos
+echovirus
+eck
+eckhart
+eclampsia
+eclat
+eclectic
+eclectically
+eclecticism
+eclecticize
+eclecticizes
+eclipse
+eclipsed
+eclipses
+eclipsing
+eclipsis
+ecliptic
+eclogite
+eclogue
+eclosion
+ecocide
+ecol
+Ecole
+ecologic
+ecological
+ecologically
+ecologist
+ecologists
+ecology
+econometric
+Econometrica
+econometrically
+econometrician
+econometricians
+econometrics
+econometrist
+economic
+economical
+economically
+economics
+economies
+economist
+economist's
+economists
+economization
+economization's
+economizations
+economize
+economized
+economizer
+economizers
+economizes
+economizing
+economy
+economy's
+ecophysiological
+ecophysiology
+ecospecies
+ecospecific
+ecosphere
+ecosystem
+ecosystems
+ecotone
+ecotype
+ecotypic
+ecotypically
+ecowas
+ecru
+ecstacy
+ecstasy
+ecstatic
+ecstatically
+ecstaticize
+ecstaticizes
+ecstatics
+ecthyma
+ectoblast
+ectoblastic
+ectocrine
+ectoderm
+ectodermal
+ectodermic
+ectoenzyme
+ectogenic
+ectogenous
+ectomere
+ectomeric
+ectomorph
+ectomorphic
+ectoparasite
+ectoparasitic
+ectophyte
+ectopia
+ectopic
+ectoplasm
+ectoplasmic
+ectoproct
+ectosarc
+ectotherm
+ectothermic
+ectotrophic
+ectotropic
+ectype
+Ecuador
+ecumenic
+ecumenic's
+ecumenical
+ecumenicalism
+ecumenically
+ecumenicism
+ecumenicist
+ecumenicist's
+ecumenicists
+ecumenicity
+ecumenics
+ecumenism
+ecumenist
+ecumenist's
+ecumenists
+eczema
+eczematous
+ed
+edacious
+edacity
+edale
+edam
+edaphic
+edaphically
+Edda
+Eddie
+eddied
+eddies
+Eddington
+eddo
+eddy
+eddy's
+eddying
+eddystone
+ede
+edelweiss
+edema
+edema's
+edemas
+edematous
+eden
+Edenization
+Edenization's
+Edenizations
+Edenize
+Edenizes
+edentate
+edentulous
+edessa
+Edgar
+edge
+edged
+edgehill
+edgeless
+edger
+Edgerton
+edges
+Edgewater
+edgewater
+edgeways
+edgewise
+edgewood
+Edgewood
+edgeworth
+edgier
+edgily
+edginess
+edging
+edgy
+edibility
+edible
+edibleness
+edibles
+edict
+edict's
+edictal
+edicts
+edification
+edificatory
+edifice
+edifice's
+edifices
+edified
+edifies
+edify
+edifying
+edile
+Edinburgh
+edirne
+Edison
+edit
+editable
+edited
+Edith
+editing
+edition
+edition's
+editions
+editor
+editor's
+editorial
+editorialist
+editorialization
+editorialize
+editorialized
+editorializer
+editorializes
+editorializing
+editorially
+editorials
+editors
+editorship
+editress
+edits
+Edmonds
+Edmondson
+Edmondson's
+Edmonton
+Edmonton's
+Edmund
+Edna
+Edo
+edom
+Edomite
+EDP
+Edsger
+Edsger's
+EDT
+Eduard
+eduard
+Eduardo
+Eduardo's
+educability
+educable
+educate
+educated
+educatedly
+educatedness
+educates
+educating
+education
+education's
+educational
+educationalist
+educationalists
+educationally
+educationist
+educations
+educative
+educator
+educator's
+educators
+educatory
+educe
+educible
+educing
+educt
+eduction
+eductor
+eductors
+edulcorate
+Edward
+Edwardian
+edwardine
+Edwardine
+Edwards
+Edwin
+Edwina
+eeg
+EEG
+eel
+eel's
+eelgrass
+eellike
+eelpout
+eels
+eelworm
+eely
+EEOC
+eerie
+eerier
+eerily
+eeriness
+eery
+eff
+effable
+efface
+effaceable
+effaced
+effacement
+effacer
+effaces
+effacing
+effect
+effected
+effecting
+effective
+effectively
+effectiveness
+effectives
+effectivity
+effector
+effector's
+effectors
+effects
+effectual
+effectuality
+effectualize
+effectualizes
+effectually
+effectualness
+effectuate
+effectuated
+effectuates
+effectuating
+effectuation
+effeminacy
+effeminate
+effeminatize
+effeminatizes
+effendi
+efferent
+efferently
+effervesce
+effervescence
+effervescent
+effervescently
+effete
+effetely
+effeteness
+efficacious
+efficaciously
+efficaciousness
+efficacity
+efficacy
+efficency
+efficiencies
+efficiency
+efficient
+efficiently
+Effie
+Effie's
+effigy
+effloresce
+efflorescence
+efflorescent
+efflrescent
+effluence
+effluent
+effluents
+effluvia
+effluvium
+efflux
+effluxion
+effort
+effort's
+effortful
+effortfully
+effortless
+effortlessly
+effortlessness
+efforts
+effrontery
+effulgence
+effulgent
+effuse
+effused
+effuses
+effusing
+effusiometer
+effusion
+effusive
+effusively
+effusiveness
+Efik
+eft
+efta
+eftsoons
+EGA
+EGA's
+egad
+egads
+egalitarian
+egalitarianism
+Egan
+Egan's
+Egbert
+Egeria
+Egerton
+egerton
+egest
+egesta
+egestion
+egestive
+egg
+eggbeater
+eggcup
+egged
+egger
+egghead
+eggheaded
+eggheadedness
+egging
+eggnog
+eggplant
+eggs
+eggshell
+Egham
+egis
+eglantine
+Egmont
+ego
+egocentric
+egocentrically
+egocentricity
+egocentrism
+egoism
+egoist
+egoistic
+egoistical
+egoistically
+egoists
+egoize
+egoizer
+egoizers
+egoizes
+egomania
+egomaniac
+egomaniacal
+egomaniacally
+egomaniacs
+egos
+egotism
+egotist
+egotistic
+egotistical
+egotistically
+egotists
+egregious
+egregiously
+egregiousness
+egress
+egression
+egret
+egrets
+Egypt
+Egyptian
+Egyptianization
+Egyptianization's
+Egyptianizations
+Egyptianize
+Egyptianizes
+Egyptians
+Egyptize
+Egyptizes
+Egyptology
+egyptus
+eh
+Ehrenburg
+Ehrlich
+Ehrlich's
+Eichendorff
+eichmann
+Eichmann
+eider
+eiderdown
+eidetic
+eidetically
+eidolon
+Eiffel
+eigenfrequencies
+eigenfrequency
+eigenfunction
+eigenfunctions
+eigenspace
+eigenstate
+eigenstates
+eigenstructure
+eigensystem
+eigensystems
+eigenvalue
+eigenvalue's
+eigenvalues
+eigenvector
+eigenvectors
+eiger
+eight
+eighteen
+eighteens
+eighteenth
+eightfold
+eighth
+eighth's
+eighthes
+eighths
+eighties
+eightieth
+eights
+eightsome
+eighty
+eightyfold
+Eijkman
+Eikon
+Eilat
+Eileen
+ein
+Eindhoven
+eine
+Einkorn
+Einstein
+Einsteinian
+einsteinium
+Eire
+Eire's
+eirenic
+eirenicon
+eisegesis
+Eisenach
+Eisenhower
+Eisenstadt
+Eisenstein
+eisk
+Eisner
+Eisner's
+Eisteddfod
+either
+ejaculate
+ejaculated
+ejaculates
+ejaculating
+ejaculation
+ejaculations
+ejaculatory
+eject
+ejecta
+ejectable
+ejected
+ejecting
+ejection
+ejective
+ejectment
+ejector
+ejectors
+ejects
+Ekaterinburg
+Ekaterinodar
+Ekaterinoslav
+Ekberg
+eke
+eked
+ekes
+eking
+ekistic
+ekistics
+Ekstrom
+Ekstrom's
+Ektachrome
+el
+elaborate
+elaborated
+elaborately
+elaborateness
+elaborates
+elaborating
+elaboration
+elaborations
+elaborative
+elaborators
+elaeoptene
+elagabalus
+Elaine
+elam
+Elamite
+elan
+eland
+elapid
+elapse
+elapsed
+elapses
+elapsing
+elasmobranch
+elasmosaur
+elastance
+elastase
+elastic
+elastically
+elasticate
+elasticated
+elasticates
+elasticating
+elasticities
+elasticity
+elasticization
+elasticize
+elasticized
+elasticizer
+elasticizers
+elasticizes
+elasticizing
+elastics
+elastin
+elastomer
+elastomeric
+elastoplast
+elat
+elate
+elated
+elatedly
+elatedness
+elater
+elaterid
+elaterin
+elaterite
+elaterium
+elates
+elating
+elation
+Elba
+elbe
+Elbert
+elbow
+elbowed
+elbowing
+elbowroom
+elbows
+elbrus
+elburz
+eld
+elder
+elderberry
+elderliness
+elderly
+elders
+eldership
+eldest
+eldo
+Eldon
+Eldon's
+eldritch
+elea
+Eleanor
+Eleatic
+Eleazar
+Eleazar's
+elecampane
+elecroencephalographic
+elect
+electability
+electable
+elected
+electing
+election
+election's
+electioneer
+electioneerer
+elections
+elective
+electively
+electiveness
+electives
+elector
+elector's
+electoral
+electorally
+electorate
+electors
+Electra
+electress
+electret
+electric
+electrical
+electricalize
+electricalizes
+electrically
+electricalness
+electrician
+electricians
+electricities
+electricity
+electricize
+electricizes
+electrics
+electrification
+electrified
+electrify
+electrifying
+electriques
+electro
+electroacoustic
+electroacoustically
+electroacoustics
+electroanalysis
+electroanalytic
+electroanalytical
+electroanesthesia
+electroanesthesia's
+electroanesthesias
+electrocardiogram
+electrocardiogram's
+electrocardiograms
+electrocardiograph
+electrocardiographic
+electrocardiographically
+electrocardiography
+electrocauterization
+electrocauterization's
+electrocauterizations
+electrochemical
+electrochemically
+electrochemist
+electrochemistry
+electrochemists
+electroconvulsive
+electrocorticogram
+electrocorticogram's
+electrocorticograms
+electrocute
+electrocuted
+electrocutes
+electrocuting
+electrocution
+electrocutions
+electrode
+electrode's
+electrodeposit
+electrodeposition
+electrodes
+electrodialysis
+electrodialytic
+electrodialyze
+electrodialyzer
+electrodialyzer's
+electrodialyzers
+electrodialyzes
+electrodynamic
+electrodynamicly
+electrodynamics
+electrodynamometer
+electrodynamometer's
+electrodynamometers
+electroencephalogram
+electroencephalogram's
+electroencephalograms
+electroencephalograph
+electroencephalography
+electroform
+electrogalvanize
+electrogalvanizes
+electrogenesis
+electrogenic
+electrogram
+electrogram's
+electrograms
+electrograph
+electrohomeopathies
+electrohomeopathy
+electrohomeopathy's
+electrohydraulic
+electrohydraulically
+electrojet
+electrokinetic
+electrokinetics
+electroless
+electrologist
+electroluminescence
+electroluminescent
+electrolysis
+electrolyte
+electrolyte's
+electrolytes
+electrolytic
+electrolytically
+electrolyze
+electrolyzed
+electrolyzes
+electrolyzing
+electromagnet
+electromagnetic
+electromagnetically
+electromagnetism
+electromagnetisms
+electromagnetizable
+electromagnets
+electromechanical
+electromechanically
+electromerism
+electrometallurgy
+electrometer
+electrometer's
+electrometers
+electromotive
+electromyogram
+electromyogram's
+electromyograms
+electromyograph
+electromyographic
+electromyographical
+electromyographically
+electromyography
+electron
+electron's
+electronegative
+electronegativity
+electronic
+electronically
+electronics
+electronography
+electrons
+electronvolt
+electrooculogram
+electrooculogram's
+electrooculograms
+electrophilic
+electrophone
+electrophoresis
+electrophoretic
+electrophoretically
+electrophoretogram
+electrophoretogram's
+electrophoretograms
+electrophorus
+electrophotographic
+electrophotography
+electrophysiologic
+electrophysiological
+electrophysiologically
+electrophysiologist
+electrophysiology
+electroplate
+electroplater
+electropositive
+electroretinogram
+electroretinogram's
+electroretinograms
+electroretinograph
+electroretinographic
+electroretinography
+electroscope
+electroshock
+electroshocks
+electrostatic
+electrostatically
+electrostatics
+electrostriction
+electrosurgery
+electrosurgical
+electrotechnology
+electrotherapist
+electrothermal
+electrothermally
+electrothermic
+electrotonic
+electrotonically
+electrotonize
+electrotonizes
+electrotonus
+electrotype
+electrotyper
+electrotypers
+electrovalence
+electrovalency
+electrovalent
+electroviscous
+electroweak
+electrowinning
+electrum
+elects
+electuary
+eleemosynary
+elegance
+elegances
+elegancy
+elegant
+elegantly
+elegiac
+elegiacal
+elegiacally
+elegies
+elegit
+elegize
+elegized
+elegizes
+elegizing
+elegy
+eleia
+element
+element's
+elemental
+elementalize
+elementalizes
+elementally
+elementals
+elementarily
+elementariness
+elementary
+elements
+elemi
+Elena
+Elena's
+elenchus
+eleoptene
+elephant
+elephant's
+elephantiasis
+elephantine
+elephants
+Eleusinian
+eleusis
+elevate
+elevated
+elevates
+elevating
+elevation
+elevations
+elevator
+elevator's
+elevators
+eleven
+elevenfold
+elevens
+elevenses
+eleventh
+elevon
+elf
+elfin
+elfish
+elfishly
+Elfland
+elflock
+Elgar
+Elgin
+Elgin's
+elgon
+Eli
+Elia
+Elias
+elicit
+elicitation
+elicited
+eliciting
+elicitor
+elicits
+elide
+elided
+elides
+elidible
+eliding
+eligibilities
+eligibility
+eligible
+eligibles
+eligibly
+Elijah
+eliminable
+eliminate
+eliminated
+eliminately
+eliminates
+eliminating
+elimination
+eliminations
+eliminative
+eliminator
+eliminators
+Elinor
+Elinor's
+Eliot
+elis
+Elisabeth
+Elisabethville
+Elisavetgrad
+Elisavetpol
+Elise
+Elise's
+Elisha
+Elisha's
+elision
+elisions
+elisp
+elite
+eliteness
+elites
+elitism
+elitist
+elitists
+elixir
+Elizabeth
+Elizabethan
+Elizabethanize
+Elizabethanizes
+Elizabethans
+elk
+elk's
+Elkhart
+elkhound
+elks
+ell
+Ella
+elle
+Ellen
+Ellen's
+Ellesmere
+Ellice
+Ellie
+ellie
+Ellington
+Elliot
+elliot
+Elliott
+ellipse
+ellipse's
+ellipses
+ellipsis
+ellipsoid
+ellipsoid's
+ellipsoidal
+ellipsoids
+ellipsometer
+ellipsometer's
+ellipsometers
+ellipsometry
+elliptic
+elliptical
+elliptically
+ellipticity
+Ellis
+Ellison
+Ellsworth
+Ellwood
+Ellwood's
+elm
+elmer
+Elmhurst
+Elmira
+elms
+Elmsford
+elocution
+elocutionary
+elocutionist
+elocutionists
+Elohim
+Elohist
+eloign
+Eloise
+elongate
+elongated
+elongates
+elongating
+elongation
+elope
+eloped
+elopement
+eloper
+elopes
+eloping
+eloquence
+eloquent
+eloquently
+elroy
+Elroy
+els
+elsan
+Elsass
+else
+else's
+Elsevier
+Elsevier's
+elsewhere
+Elsie
+Elsinore
+Elton
+Elton's
+eluant
+eluate
+eluates
+elucidate
+elucidated
+elucidates
+elucidating
+elucidation
+elucidative
+elucidator
+elucubrate
+elucubrated
+elucubrates
+elucubrating
+elucubration
+elude
+eluded
+eludes
+eluding
+eluent
+elusion
+elusive
+elusively
+elusiveness
+elute
+eluted
+eluting
+elution
+elutriate
+elutriator
+eluvial
+eluviate
+eluviation
+eluvium
+elver
+elves
+Elvira
+elvis
+Elvis
+Elvis's
+elvish
+Elwood
+Elwood's
+Ely
+Ely's
+elyot
+Elysee
+Elysee's
+Elysees
+elysian
+Elysium
+elysium
+elytron
+elytrum
+em
+emaciate
+emaciated
+emaciates
+emaciating
+emaciation
+emacs
+emacs's
+email
+email's
+emanate
+emanated
+emanates
+emanating
+emanation
+emanational
+emanations
+emanative
+emancipate
+emancipated
+emancipates
+emancipating
+emancipation
+emancipationist
+emancipator
+Emanuel
+emarginate
+emarginated
+emargination
+emasculate
+emasculated
+emasculates
+emasculating
+emasculation
+emasculator
+embalm
+embalmer
+embalmers
+embalming
+embalmment
+embalms
+embank
+embanked
+embanking
+embankment
+embankments
+embanks
+embarcadero
+embargo
+embargoed
+embargoes
+embargoing
+embark
+embarkation
+embarked
+embarking
+embarkment
+embarks
+embarrass
+embarrassable
+embarrassed
+embarrassedly
+embarrasses
+embarrassing
+embarrassingly
+embarrassment
+embassage
+embassies
+embassy
+embassy's
+embattle
+embattled
+embattlement
+embattles
+embattling
+embay
+embayment
+embed
+embeddable
+embedded
+embedder
+embedding
+embedment
+embeds
+embellish
+embellished
+embellisher
+embellishes
+embellishing
+embellishment
+embellishment's
+embellishments
+ember
+embers
+embezzle
+embezzled
+embezzlement
+embezzler
+embezzler's
+embezzlers
+embezzles
+embezzling
+embitter
+embittered
+embitterment
+embitters
+emblaze
+emblazed
+emblazes
+emblazing
+emblazon
+emblazoned
+emblazoner
+emblazoning
+emblazonment
+emblazonry
+emblazons
+emblem
+emblematic
+emblematical
+emblematically
+emblematicize
+emblematicizes
+emblematization
+emblematize
+emblematized
+emblematizes
+emblematizing
+emblements
+emblemize
+emblemizes
+emblems
+embodied
+embodier
+embodies
+embodiment
+embodiment's
+embodiments
+embody
+embodying
+embolden
+emboldened
+emboldens
+embolectomy
+embolic
+embolism
+embolismic
+embolization
+embolus
+embosom
+emboss
+embossable
+embossed
+embosser
+embossers
+embosses
+embossing
+embossment
+embouchure
+embow
+embowed
+embowel
+emboweled
+emboweling
+embower
+embrace
+embraceable
+embraced
+embracement
+embraceor
+embracer
+embracery
+embraces
+embracing
+embracingly
+embracive
+embranchment
+embrangle
+embranglement
+embrasure
+embrectomy
+embrittle
+embrittlement
+embrocate
+embrocated
+embrocates
+embrocating
+embrocation
+embroglio
+embroider
+embroidered
+embroiderer
+embroideries
+embroiders
+embroidery
+embroil
+embroiled
+embroiling
+embroilment
+embroils
+embrown
+embrue
+embryectomy
+embryo
+embryo's
+embryogenesis
+embryogenetic
+embryogenic
+embryogeny
+embryol
+embryologic
+embryological
+embryologically
+embryologist
+embryology
+embryonal
+embryonally
+embryonated
+embryonic
+embryonically
+embryos
+embryotic
+embus
+emcee
+emceed
+emceeing
+emden
+emend
+emendable
+emendate
+emendation
+emendator
+emendatory
+emender
+emerald
+emerald's
+emeralds
+emerge
+emerged
+emergence
+emergencies
+emergency
+emergency's
+emergent
+emerges
+emerging
+emeries
+emeriti
+emeritus
+emersed
+emerses
+emersion
+Emerson
+emery
+emesis
+emetic
+emetically
+emetine
+emf
+emigrant
+emigrant's
+emigrants
+emigrate
+emigrated
+emigrates
+emigrating
+emigration
+emigre
+emigre's
+emigree
+Emil
+Emil's
+Emile
+Emile's
+Emilio
+Emilio's
+Emily
+eminence
+eminency
+eminent
+eminently
+emir
+emirate
+Emirates
+emiscan
+emissaries
+emissary
+emission
+emission's
+emissions
+emissive
+emissivities
+emissivity
+emit
+emits
+emittance
+emitted
+emitter
+emitters
+emitting
+Emma
+Emmanuel
+emmen
+emmenagogue
+Emmenthal
+emmer
+Emmet
+emmetropia
+Emmett
+Emmett's
+Emmy
+emollient
+emollients
+emolument
+emoluments
+Emory
+emote
+emoted
+emotes
+emoting
+emotion
+emotion's
+emotional
+emotionalism
+emotionalist
+emotionalistic
+emotionality
+emotionalization
+emotionalization's
+emotionalizations
+emotionalize
+emotionalized
+emotionalizes
+emotionalizing
+emotionally
+emotionize
+emotionizes
+emotionless
+emotionlessness
+emotions
+emotive
+emotively
+emotivism
+emotivity
+empale
+empanel
+empaneled
+empaneling
+empanels
+empassion
+empath
+empathetic
+empathetically
+empathic
+empathize
+empathized
+empathizes
+empathizing
+empathy
+empedocles
+empennage
+emperies
+emperor
+emperor's
+emperors
+emperorship
+empery
+emphases
+emphasing
+emphasis
+emphasization
+emphasization's
+emphasize
+emphasized
+emphasizer
+emphasizers
+emphasizes
+emphasizing
+emphatic
+emphatically
+emphysema
+emphysematous
+empire
+empire's
+empires
+empiric
+empirical
+empirically
+empiricism
+empiricist
+empiricist's
+empiricists
+emplace
+emplacement
+emplane
+employ
+employability
+employable
+employed
+employee
+employee's
+employees
+employer
+employer's
+employers
+employing
+employment
+employment's
+employments
+employs
+empoison
+empoisonment
+empolder
+emporium
+emporiums
+empower
+empowered
+empowering
+empowerment
+empowers
+empress
+empressement
+emprise
+Empson
+emptied
+emptier
+empties
+emptiest
+emptily
+emptiness
+empty
+emptyhanded
+emptying
+empurple
+empurpled
+empurpling
+empyema
+empyrean
+empyreuma
+ems
+emu
+emulate
+emulated
+emulates
+emulating
+emulation
+emulations
+emulative
+emulatively
+emulator
+emulator's
+emulators
+emulous
+emulously
+emulousness
+emulsible
+emulsifiable
+emulsification
+emulsified
+emulsifier
+emulsifies
+emulsify
+emulsion
+emulsionize
+emulsionizes
+emulsions
+emulsive
+emulsoid
+emunctory
+en
+enable
+enabled
+enabler
+enablers
+enables
+enabling
+enact
+enacted
+enacting
+enactment
+enactments
+enactor
+enacts
+enamel
+enameled
+enameler
+enamelers
+enameling
+enamelings
+enamelist
+enamelists
+enamels
+enamelware
+enamine
+enamor
+enamor's
+enamored
+enamored's
+enamoredness
+enamoreds
+enamoring
+enamorment
+enamorment's
+enamorments
+enamors
+enantiomorph
+enarbor
+enarbor's
+enarbors
+enarthrosis
+enate
+encaenia
+encage
+encamp
+encamped
+encamping
+encampment
+encamps
+encapsulate
+encapsulated
+encapsulates
+encapsulating
+encapsulation
+encapsule
+encapsules
+encarnalization
+encarnalize
+encarnalized
+encarnalizes
+encarnalizing
+encase
+encased
+encasement
+encash
+encashment
+encaustic
+enceinte
+enceladus
+encephalic
+encephalin
+encephalitic
+encephalitis
+encephalitogenic
+encephalogram
+encephalogram's
+encephalograms
+encephalograph
+encephalographic
+encephalography
+encephaloma
+encephalomyelitis
+encephalon
+enchain
+enchained
+enchainment
+enchant
+enchanted
+enchanter
+enchanting
+enchantingly
+enchantment
+enchantress
+enchants
+enchase
+enchased
+enchasing
+enchilada
+enchiladas
+enchiridion
+enchondroma
+enchorial
+encipher
+enciphered
+encipherer
+enciphering
+encipherment
+enciphers
+encircle
+encircled
+encirclement
+encircles
+encircling
+enclasp
+enclave
+enclaves
+enclitic
+enclose
+enclosed
+encloses
+enclosing
+enclosure
+enclosure's
+enclosures
+encode
+encoded
+encoder
+encoders
+encodes
+encoding
+encodings
+encolor
+encolor's
+encolored
+encoloring
+encolors
+encomia
+encomiast
+encomium
+encomiums
+encompass
+encompassed
+encompasses
+encompassing
+encompassment
+encore
+encored
+encores
+encoring
+encounter
+encountered
+encountering
+encounters
+encourage
+encouraged
+encouragement
+encouragements
+encourager
+encourages
+encouraging
+encouragingly
+encrimson
+encrinite
+encroach
+encroached
+encroacher
+encroaches
+encroaching
+encroachment
+encrust
+encrustation
+encrusted
+encrusting
+encrusts
+encrypt
+encrypted
+encrypting
+encryption
+encryption's
+encryptions
+encrypts
+enculturation
+encumber
+encumbered
+encumbering
+encumbers
+encumbrance
+encumbrancer
+encumbrances
+encyclical
+encyclopedia
+encyclopedia's
+encyclopedias
+encyclopedic
+encyst
+encystation
+encystment
+end
+endamage
+Endamoeba
+endanger
+endangered
+endangering
+endangerment
+endangers
+endarch
+endarchy
+endbrain
+endear
+endeared
+endearing
+endearingly
+endearment
+endearments
+endears
+endeavor
+endeavor's
+endeavored
+endeavorer
+endeavorer's
+endeavorers
+endeavoring
+endeavors
+ended
+endemic
+endemically
+endemicity
+ender
+enderby
+endergonic
+endermic
+endermically
+enders
+endexine
+endgame
+Endicott
+ending
+endings
+endite
+endive
+endleaf
+endless
+endlessly
+endlessness
+endlong
+endmost
+endnote
+endnote's
+endnotes
+endo
+endobiotic
+endoblast
+endoblastic
+endocardial
+endocarditis
+endocardium
+endocarp
+endocentric
+endochondral
+endocranium
+endocrine
+endocrinologic
+endocrinological
+endocrinologist
+endocrinology
+endocytic
+endocytosis
+endocytotic
+endoderm
+endodermal
+endodermis
+endodontia
+endodontic
+endodontically
+endodontics
+endodontist
+endoenzyme
+endoergic
+endoerythrocytic
+endogamic
+endogamous
+endogamy
+endogen
+endogenic
+endogenous
+endogenously
+endogeny
+endolymph
+endolymphatic
+endometrial
+endometriosis
+endometrium
+endomitosis
+endomorph
+endomorphic
+endomorphism
+endomorphy
+endoneurium
+endonuclease
+endoparasite
+endoparasitism
+endopeptidase
+endophyte
+endophytic
+endoplasm
+endoplasmic
+endorsable
+endorse
+endorsed
+endorsee
+endorsement
+endorsement's
+endorsements
+endorser
+endorses
+endorsing
+endoscope
+endoscopic
+endoscopically
+endoscopy
+endoskeletal
+endoskeleton
+endosmosis
+endosmotic
+endosmotically
+endosome
+endosperm
+endospermic
+endospermous
+endospore
+endosporic
+endosporous
+endosteal
+endosteally
+endosternite
+endosteum
+endostosis
+endostyle
+endosymbiosis
+endothecium
+endothelial
+endothelioma
+endothelium
+endotherm
+endothermal
+endothermic
+endotoxic
+endotoxin
+endotracheal
+endotrophic
+endotropic
+endover
+endow
+endowed
+endowing
+endowment
+endowment's
+endowments
+endows
+endozoic
+endpaper
+endplate
+endplay
+endpoint
+endpoints
+Endrich
+ends
+endue
+endued
+enduing
+endurable
+endurably
+endurance
+endure
+endured
+endures
+enduring
+enduringly
+enduringness
+endways
+endwise
+Endymion
+enema
+enema's
+enemas
+enemata
+enemies
+enemy
+enemy's
+energetic
+energetically
+energetics
+energid
+energies
+energization
+energize
+energized
+energizer
+energizers
+energizes
+energizing
+energumen
+energy
+enervate
+enervated
+enervates
+enervating
+enervation
+enervative
+Enesco
+enface
+enfant
+enfants
+enfeeble
+enfeebled
+enfeeblement
+enfeebles
+enfeebling
+enfeoff
+enfetter
+enfever
+enfilade
+enflame
+enflamed
+enflames
+enflaming
+enfold
+enforcable
+enforce
+enforceability
+enforceable
+enforced
+enforcedly
+enforcement
+enforcer
+enforcers
+enforces
+enforcible
+enforcing
+enfranchise
+enfranchised
+enfranchisement
+enfranchiser
+enfranchises
+enfranchising
+engadine
+engage
+engaged
+engagement
+engagement's
+engagements
+engages
+engaging
+engagingly
+Engel
+Engels
+engender
+engendered
+engendering
+engenders
+engild
+engine
+engine's
+engined
+engineer
+engineer's
+engineered
+engineering
+engineeringly
+engineerings
+engineers
+engineroom
+enginerooms
+enginery
+engines
+engining
+engird
+engirdle
+englacial
+england
+englander
+englanders
+Engle
+Engle's
+Englewood
+English
+English's
+Englishism
+Englishize
+Englishizes
+Englishman
+Englishmen
+Englishry
+englut
+englutted
+engluttin
+engorge
+engorged
+engorgement
+engorges
+engorging
+engr
+engraft
+engrail
+engrailed
+engrain
+engram
+engram's
+engrammic
+engrams
+engrandize
+engrandizement
+engrandizement's
+engrandizements
+engrandizes
+engrave
+engraved
+engraver
+engravers
+engraves
+engraving
+engravings
+engross
+engrossed
+engrossedly
+engrosser
+engrossing
+engrossingly
+engrossment
+engulf
+engulfed
+engulfing
+engulfment
+engulfs
+enhalo
+enhance
+enhanced
+enhancement
+enhancement's
+enhancements
+enhances
+enhancing
+enharmonic
+enharmonically
+enhypostatize
+enhypostatizes
+Enid
+Enid's
+enigma
+enigmatic
+enigmatical
+enigmatically
+enisle
+eniwetok
+enjambement
+enjambment
+enjoin
+enjoinder
+enjoined
+enjoining
+enjoins
+enjoy
+enjoyable
+enjoyableness
+enjoyably
+enjoyed
+enjoying
+enjoyment
+enjoys
+enkindle
+enlace
+enlacement
+enlarge
+enlargeable
+enlarged
+enlargement
+enlargement's
+enlargements
+enlarger
+enlargers
+enlarges
+enlarging
+enlighten
+enlightened
+enlightening
+enlightenment
+enlightens
+enlist
+enlisted
+enlistee
+enlister
+enlisting
+enlistment
+enlistments
+enlists
+enliven
+enlivened
+enlivening
+enlivens
+enmesh
+enmeshed
+enmeshment
+enmities
+enmity
+ennage
+ennead
+enneagon
+enneahedron
+ennerdale
+ennervation
+ennis
+enniskillen
+ennius
+ennoble
+ennobled
+ennoblement
+ennobler
+ennobles
+ennobling
+ennui
+Enoch
+enol
+enolase
+enolic
+enolization
+enolization's
+enolizations
+enolize
+enolizes
+enologist
+enology
+enormities
+enormity
+enormous
+enormously
+enormousness
+Enos
+enosis
+enough
+enounce
+enow
+enphytotic
+enplane
+enqueue
+enqueued
+enqueues
+enquire
+enquired
+enquirer
+enquirers
+enquires
+enquiries
+enquiring
+enquiry
+enrage
+enraged
+enrages
+enraging
+enrapt
+enrapture
+enraptured
+enraptures
+enrapturing
+enregister
+enrich
+enriched
+enricher
+enriches
+enriching
+enrichment
+Enrico
+enrobe
+enroll
+enrolled
+enrollee
+enrollees
+enrolling
+enrollment
+enrollment's
+enrollments
+enrolls
+enroot
+ens
+ensample
+ensanguine
+enschede
+ensconce
+ensconced
+ensconces
+ensconcing
+enscroll
+ensemble
+ensemble's
+ensembles
+ensepulcher
+ensepulcher's
+ensepulchers
+enserf
+enserfment
+ensheathe
+enshrine
+enshrined
+enshrinement
+enshrines
+enshroud
+ensiform
+ensign
+ensign's
+ensigns
+ensilage
+ensile
+ensiled
+ensiling
+ensional
+enslave
+enslaved
+enslavement
+enslaver
+enslavers
+enslaves
+enslaving
+ensnare
+ensnared
+ensnares
+ensnaring
+ensnarl
+Ensolite
+ensolite
+ensor
+ensorceled
+ensorcels
+ensoul
+ensphere
+ensue
+ensued
+ensues
+ensuing
+ensure
+ensured
+ensurer
+ensurers
+ensures
+ensuring
+enswathe
+entablature
+entablement
+entablements
+entail
+entailed
+entailer
+entailing
+entailment
+entails
+Entamoeba
+entangle
+entangled
+entanglement
+entangler
+entangles
+entangling
+entasis
+ente
+entebbe
+entelechy
+entellus
+entendre
+entente
+enter
+enterable
+enteral
+enterally
+entered
+enterer
+enteric
+entering
+enteritis
+enterogastrone
+enterokinase
+enteron
+enterostomy
+enterotomy
+enterovirus
+enterprise
+enterpriser
+enterprises
+enterprising
+enterprisingly
+enters
+entertain
+entertained
+entertainer
+entertainers
+entertaining
+entertainingly
+entertainment
+entertainment's
+entertainments
+entertains
+enthalpy
+enthetic
+enthrall
+enthralled
+enthralling
+enthrallment
+enthrallment's
+enthrallments
+enthralls
+enthrone
+enthroned
+enthronement
+enthrones
+enthroning
+enthronization
+enthronization's
+enthronizations
+enthronize
+enthronizes
+enthuse
+enthused
+enthuses
+enthusiasm
+enthusiasms
+enthusiast
+enthusiast's
+enthusiastic
+enthusiastically
+enthusiasts
+enthusing
+enthymeme
+entice
+enticed
+enticement
+enticements
+enticer
+enticers
+entices
+enticing
+entire
+entirely
+entireties
+entirety
+entities
+entitle
+entitled
+entitlement
+entitlements
+entitles
+entitling
+entity
+entity's
+entoblast
+entoderm
+entodermal
+entodermic
+entoil
+entoiled
+entomb
+entombed
+entombment
+entomic
+entomological
+entomologist
+entomologize
+entomologized
+entomologizes
+entomologizing
+entomology
+entomophagous
+entomophilous
+entomophily
+entomostracan
+entophyte
+entopic
+entourage
+entourages
+entozoic
+entozoon
+entrail
+entrails
+entrain
+entrained
+entrainer
+entraining
+entrainment
+entrains
+entrammel
+entrance
+entranced
+entrancement
+entrances
+entranceway
+entrancing
+entrant
+entrants
+entrap
+entrapment
+entrapments
+entrapped
+entrappingly
+entraps
+entreat
+entreated
+entreaties
+entreating
+entreatingly
+entreatment
+entreats
+entreaty
+entrechat
+entree
+entrees
+entremets
+entrench
+entrenched
+entrenches
+entrenching
+entrenchment
+entrenchments
+entrepreneur
+entrepreneur's
+entrepreneurial
+entrepreneurs
+entrepreneurship
+entresol
+entries
+entropies
+entropy
+entrust
+entrusted
+entrusting
+entrustment
+entrusts
+entry
+entry's
+entryism
+entryist
+entryists
+entryname
+entrynames
+entrypoint
+entrypoints
+entryway
+entwine
+entwined
+entwinement
+entwines
+entwining
+entwist
+enucleate
+enucleated
+enucleating
+enucleation
+enugu
+enumerable
+enumerate
+enumerated
+enumerates
+enumerating
+enumeration
+enumerations
+enumerative
+enumerator
+enumerator's
+enumerators
+enunciable
+enunciate
+enunciated
+enunciates
+enunciating
+enunciation
+enunciator
+enunciators
+enure
+enuresis
+envapor
+envapor's
+envapors
+envelop
+envelope
+enveloped
+enveloper
+envelopes
+enveloping
+envelopment
+envelopments
+envelops
+envenom
+envenomed
+envenoming
+envenomization
+envenoms
+enver
+enviable
+enviableness
+enviably
+envied
+envier
+envies
+envious
+enviously
+enviousness
+environ
+environed
+environing
+environment
+environment's
+environmental
+environmentalism
+environmentalist
+environmentalists
+environmentally
+environments
+environs
+envisage
+envisaged
+envisages
+envisaging
+envision
+envisioned
+envisionin
+envisioning
+envisions
+envoi
+envois
+envoy
+envoy's
+envoys
+envy
+envying
+envyingly
+enwheel
+enwind
+enwinding
+enwomb
+enwrap
+enwreath
+enwreathe
+enzed
+enzootic
+enzymatic
+enzymatically
+enzyme
+enzymes
+enzymic
+enzymically
+enzymologist
+enzymology
+enzymolysis
+eobiont
+Eocene
+eogene
+eohippus
+eolian
+eolic
+eolipile
+eolith
+eolithic
+eon
+eon's
+eonian
+eonism
+eonism's
+eonisms
+eons
+eos
+eosin
+eosine
+eosinophil
+Eozoic
+EPA
+epact
+epaminondas
+eparch
+eparchy
+epaulet
+epaulet's
+epaulets
+epaulette
+epencephalon
+epenthesis
+epergne
+epexegesis
+ephah
+ephebe
+Ephedra
+Ephemera
+ephemeral
+ephemerality
+ephemerally
+ephemerals
+ephemerides
+ephemeris
+ephemeron
+Ephesian
+ephesians
+Ephesians
+Ephesus
+ephod
+ephor
+Ephraim
+Ephraimite
+epiblast
+epiboly
+epic
+epic's
+epical
+epically
+epicalyx
+epicanthus
+epicardial
+epicardium
+epicarp
+epicedium
+epicene
+epicenism
+epicenter
+epicenter's
+epicenters
+epicentral
+epiclesis
+epicontinental
+epicotyl
+epicrisis
+epicritic
+epics
+epictetus
+epicure
+epicurean
+epicureanism
+epicurism
+Epicurize
+Epicurizes
+epicurus
+Epicurus
+epicycle
+epicycles
+epicyclic
+epicyclical
+epicyclically
+epicycloidal
+epidaurus
+epideictic
+epidemic
+epidemic's
+epidemical
+epidemically
+epidemicity
+epidemics
+epidemiologic
+epidemiological
+epidemiologically
+epidemiologist
+epidemiology
+epidermal
+epidermic
+epidermis
+epidiascope
+epididymis
+epidote
+epidural
+epifocal
+epigastrium
+epigeal
+epigene
+epigenetic
+epigenous
+epigeous
+epiglottis
+epigone
+Epigoni
+epigram
+epigrammatic
+epigrammatical
+epigrammatically
+epigrammatism
+epigrammatist
+epigrammatization
+epigrammatize
+epigrammatized
+epigrammatizer
+epigrammatizes
+epigrammatizing
+epigrams
+epigraph
+epigrapher
+epigraphic
+epigraphical
+epigraphically
+epigraphist
+epigraphy
+epigynous
+epilate
+epilepsy
+epileptic
+epileptically
+epileptics
+epileptoid
+epilimnion
+epilogue
+epilogues
+epimere
+epimerism
+epimorphism
+epimorphosis
+epimysium
+epinasty
+epinephrine
+epineurium
+epiphanous
+epiphany
+epiphenomena
+epiphenomenal
+epiphenomenalism
+epiphenomenally
+epiphenomenon
+epiphragm
+epiphyseal
+epiphysis
+epiphyte
+epiphytic
+epiphytotic
+epirogeny
+epirus
+episcopacy
+episcopal
+Episcopalian
+Episcopalianize
+Episcopalianizes
+Episcopalism
+episcopally
+episcopate
+episcope
+episematic
+episiotomy
+episode
+episode's
+episodes
+episodic
+episodical
+episodically
+episomal
+episomally
+episome
+epispastic
+epistasis
+epistasy
+epistatic
+epistaxis
+epistemic
+epistemically
+epistemological
+epistemologically
+epistemologist
+epistemology
+episternum
+epistle
+epistle's
+epistler
+epistles
+epistolary
+epistolatory
+epistoler
+epistrophe
+epitaph
+epitaphed
+epitaphial
+epitaphic
+epitaphing
+epitaphize
+epitaphizes
+epitaphs
+epitaxial
+epitaxially
+epitaxy
+epithalamium
+epithelial
+epithelioma
+epithelium
+epithet
+epithet's
+epithetic
+epithetical
+epithetize
+epithetizes
+epithets
+epitome
+epitomes
+epitomization
+epitomization's
+epitomizations
+epitomize
+epitomized
+epitomizer
+epitomizers
+epitomizes
+epitomizing
+epizoic
+epizoon
+epizootic
+epoch
+epochal
+epochally
+epoches
+epochs
+epode
+epodes
+eponym
+eponymous
+eponymy
+epos
+epoxide
+epoxy
+epping
+eprom
+eproms
+epsilon
+epsilons
+Epsom
+Epstein
+epyllion
+equability
+equable
+equableness
+equably
+equal
+equaled
+equaling
+equalitarian
+equalitarianism
+equalities
+equality
+equality's
+equalization
+equalization's
+equalizations
+equalize
+equalized
+equalizer
+equalizer's
+equalizers
+equalizes
+equalizing
+equalizings
+equally
+equals
+equanimities
+equanimity
+equate
+equated
+equates
+equating
+equation
+equational
+equationally
+equations
+equator
+equator's
+equatorial
+Equatorial
+equators
+equatorward
+equerries
+equerry
+equestrian
+equestrianize
+equestrianizes
+equestrians
+equestrienne
+equiangular
+equiangularity
+equicaloric
+equidistant
+equidistantly
+equifrequent
+equifrequently
+equilateral
+equilaterals
+equilibrant
+equilibrate
+equilibrated
+equilibrates
+equilibrating
+equilibration
+equilibrator
+equilibrators
+equilibratory
+equilibria
+equilibrist
+equilibristic
+equilibrium
+equilibriums
+equimolal
+equimolar
+equimolecular
+equine
+equines
+equinoctial
+equinox
+equip
+equipage
+equipartition
+equipment
+equipments
+equipoise
+equipollence
+equipollent
+equipollently
+equiponderant
+equiponderate
+equipotent
+equipotential
+equipped
+equipping
+equiprobable
+equiproportional
+equiproportionality
+equiproportionate
+equips
+Equisetum
+equitability
+equitable
+equitableness
+equitably
+equitant
+equitation
+equites
+equities
+equity
+equivalence
+equivalenced
+equivalences
+equivalencing
+equivalency
+equivalent
+equivalently
+equivalents
+equivocal
+equivocality
+equivocally
+equivocalness
+equivocate
+equivocated
+equivocates
+equivocating
+equivocation
+equivocator
+equivoke
+equivoque
+equuleus
+era
+era's
+eradiate
+eradicable
+eradicably
+eradicate
+eradicated
+eradicates
+eradicating
+eradication
+eradicative
+eradicator
+eradicators
+eradictions
+eras
+erasabilities
+erasability
+erasable
+erase
+erased
+eraser
+erasers
+erases
+erasing
+erasion
+Erasmus
+Erastianism
+Erastus
+erasure
+Erato
+Erato's
+Eratosthenes
+erbium
+erciyas
+ERDA
+ere
+erebus
+Erechtheum
+Erechtheus
+erect
+erectable
+erected
+erectile
+erectility
+erecting
+erection
+erection's
+erections
+erectly
+erectness
+erector
+erector's
+erectors
+erects
+erelong
+eremite
+Erenburg
+erenow
+erepsin
+erethism
+erevan
+erewhile
+erewhiles
+erfurt
+erg
+ergastoplasm
+ergative
+ergatocracy
+ergo
+ergodic
+ergodicity
+ergograph
+ergometer
+ergometer's
+ergometers
+ergometric
+ergonomic
+ergonomics
+ergonomist
+ergonovine
+ergosterol
+ergot
+ergotamine
+ergotic
+ergotism
+ergotized
+ergotizes
+ergotropic
+erhard
+Eric
+Erica
+ericaceous
+Erich
+Erickson
+Ericson
+Ericsson
+eridanus
+Erie
+Erik
+Erik's
+Erika
+Erika's
+Erikson
+Erin
+erinaceous
+eringo
+erinyes
+eris
+eristic
+erith
+Eritrea
+erivan
+erk
+Erlang
+erlang
+Erlang's
+erlangen
+erlanger
+Erlenmeyer
+Erlenmeyer's
+erlking
+Ermanaric
+ermine
+ermine's
+ermined
+ermines
+Ermler
+erne
+Ernest
+Ernestine
+Ernie
+Ernst
+erode
+eroded
+erodes
+erodibility
+erodible
+eroding
+erogenic
+erogenous
+Eros
+erose
+erosely
+erosible
+erosion
+erosional
+erosionally
+erosive
+erosiveness
+erosivity
+erotema
+erotic
+erotica
+erotical
+erotically
+eroticism
+eroticist
+eroticization
+eroticize
+eroticized
+eroticizes
+eroticizing
+erotism
+erotogenic
+erotology
+erotomania
+err
+errancies
+errancy
+errand
+errands
+errant
+errantly
+errantry
+errants
+errata
+erratas
+erratic
+erratical
+erratically
+erraticism
+erratum
+erred
+errhine
+erring
+erringly
+Errol
+erroneous
+erroneously
+erroneousness
+error
+error's
+errorless
+errors
+errs
+errupt
+erruptive
+ersatz
+Erse
+Erskine
+Erskine's
+erst
+erstwhile
+erubescence
+eruct
+erudite
+eruditely
+erudition
+erumpent
+erupt
+erupted
+eruptible
+erupting
+eruption
+eruptions
+eruptive
+eruptively
+erupts
+Ervin
+Erwin
+Erymanthian
+erymanthus
+eryngo
+erysipelas
+erysipeloid
+erythema
+erythrism
+erythrite
+erythritol
+erythroblast
+erythroblastosis
+erythrocyte
+erythrocytometer
+erythromycin
+erythropoiesis
+erzgebirge
+erzurum
+esaki
+esau
+esbjerg
+ESC
+escadrille
+escalade
+escalader
+escalades
+escalate
+escalated
+escalates
+escalating
+escalation
+escalator
+escalators
+escalatory
+Escallonia
+escallop
+escallops
+escalope
+escapable
+escapade
+escapade's
+escapades
+escape
+escaped
+escapee
+escapee's
+escapees
+escapement
+escapements
+escaper
+escapes
+escaping
+escapism
+escapist
+escapologist
+escapology
+escargot
+escarp
+escarpment
+escarpment's
+escarpments
+escaut
+eschalot
+escharotic
+eschatology
+escheat
+escherichia
+Escherichia
+eschew
+eschewal
+eschewed
+eschewing
+eschews
+escoffier
+escolar
+Escorial
+escort
+escorted
+escorting
+escorts
+escot
+escribe
+escritoire
+escrow
+escuage
+escudo
+esculent
+escurial
+escutcheon
+escutcheons
+esdraelon
+Esdras
+esemplastic
+eserine
+esher
+esker
+Eskilstuna
+Eskimo
+Eskimoized
+Eskimoized's
+Eskimoizeds
+Eskimos
+esky
+Esmark
+Esmark's
+esophageal
+esophagi
+esophagus
+esoteric
+esoterica
+esoterically
+esotericism
+Esp
+esp
+espadrille
+espagnol
+Espagnol
+espalier
+espanol
+esparto
+especial
+especially
+esperance
+Esperanto
+espial
+espied
+espies
+espionage
+esplanade
+espoo
+Esposito
+Esposito's
+espousal
+espousals
+espouse
+espoused
+espouser
+espouses
+espousing
+espresso
+espressos
+esprit
+esprits
+espy
+espying
+Esquiline
+esquimau
+esquire
+esquires
+esro
+essaouira
+essay
+essayed
+essayer
+essayist
+essayistic
+essayists
+essays
+Essen
+Essen's
+essence
+essence's
+essences
+Essene
+Essenize
+Essenizes
+essential
+essentialism
+essentialist
+essentiality
+essentialize
+essentializes
+essentially
+essentialness
+essentials
+essequibo
+Essex
+essonite
+essonne
+EST
+establish
+establishable
+established
+establisher
+establishes
+establishing
+establishment
+establishment's
+establishmentarian
+establishmentarianism
+establishments
+estancia
+estate
+estate's
+estates
+este
+esteem
+esteemable
+esteemed
+esteeming
+esteems
+Estella
+Estella's
+ester
+esterase
+esterify
+esterization
+esterization's
+esterizations
+esterize
+esterizes
+esters
+Estes
+Esther
+esthesia
+esthesiometer
+esthesiometer's
+esthesiometers
+esthesis
+esthete
+esthetes
+esthetic
+esthetic's
+esthetically
+esthetics
+esthonia
+estienne
+estimable
+estimableness
+estimate
+estimated
+estimates
+estimating
+estimation
+estimations
+estimative
+estimator
+estimators
+estipulate
+estival
+estivate
+estivation
+Estonia
+Estonia's
+Estonian
+estop
+estoppal
+estopped
+estoppel
+estopping
+estovers
+estrade
+estradiol
+estragon
+estral
+estrange
+estranged
+estrangement
+estranger
+estranges
+estranging
+estray
+estreat
+estremadura
+estrin
+estriol
+estrogen
+estrogenic
+estrogenically
+estrone
+estrous
+estrum
+estrus
+estuarial
+estuaries
+estuarine
+estuary
+esurience
+esuriency
+esurient
+esuriently
+et
+eta
+etaerio
+etagere
+etalon
+etamine
+etaoin
+etas
+etatism
+etatist
+etc
+etcetera
+etceteras
+etch
+etchant
+etched
+etcher
+etches
+etching
+eteocles
+eternal
+eternalization
+eternalization's
+eternalizations
+eternalize
+eternalized
+eternalizes
+eternalizing
+eternally
+eternalness
+eterne
+eternities
+eternity
+eternize
+eternized
+eternizes
+eternizing
+etesian
+Eth
+Ethan
+ethane
+ethanol
+Ethel
+Ethelbert
+Ethelred
+ethene
+ether
+ether's
+ethereal
+ethereality
+etherealization
+etherealization's
+etherealizations
+etherealize
+etherealized
+etherealizes
+etherealizing
+ethereally
+etherealness
+etherege
+etheric
+etherify
+etherish
+etherization
+etherization's
+etherizations
+etherize
+etherized
+etherizer
+etherizers
+etherizes
+etherizing
+etherlike
+Ethernet
+Ethernet's
+Ethernets
+ethers
+ethic
+ethical
+ethicality
+ethically
+ethicalness
+ethician
+ethicians
+ethicist
+ethicists
+ethicization
+ethicize
+ethicized
+ethicizes
+ethicizing
+ethics
+Ethiopia
+Ethiopian
+Ethiopians
+ethmoid
+ethnarch
+ethnic
+ethnical
+ethnically
+ethnicities
+ethnicity
+ethnicize
+ethnicizes
+ethnobiological
+ethnobiology
+ethnobotany
+ethnocentric
+ethnocentrically
+ethnocentricity
+ethnocentrism
+ethnogeny
+ethnographer
+ethnographers
+ethnographic
+ethnographical
+ethnographically
+ethnography
+ethnol
+ethnologic
+ethnological
+ethnologically
+ethnologist
+ethnology
+ethnomethodology
+ethnomusicology
+ethological
+ethologist
+ethology
+ethonone
+ethos
+ethoxide
+ethoxy
+ethoxyethane
+ethyl
+ethylate
+ethylation
+ethylbenzene
+ethylene
+ethylenic
+ethylenically
+ethylic
+ethyne
+ethynyl
+etiolate
+etiologies
+etiology
+etiology's
+etiquette
+Etna
+etna
+Eton
+Etruria
+Etruscan
+etude
+etudes
+etui
+etymological
+etymologically
+etymologies
+etymologist
+etymologists
+etymologization
+etymologize
+etymologized
+etymologizes
+etymologizing
+etymology
+etymon
+etzel
+eubacteria
+euboea
+eucaine
+eucalyptol
+eucalyptus
+eucaryotic
+Eucharis
+Eucharist
+eucharistic
+euchlorine
+euchre
+euchromatin
+eucken
+Euclid
+Euclidean
+euclidian
+eucre
+eudemon
+eudemonia
+eudemonics
+eudiometer
+eudoxus
+Eugene
+Eugenia
+eugenic
+eugenically
+eugenicist
+eugenics
+eugenol
+euglena
+euhemerism
+euhemerist
+euhemeristic
+euhemeristically
+euhemerize
+eukaryote
+eukaryotic
+eulachon
+Euler
+Eulerian
+eulogia
+eulogies
+eulogist
+eulogistic
+eulogistically
+eulogium
+eulogization
+eulogization's
+eulogizations
+eulogize
+eulogized
+eulogizer
+eulogizers
+eulogizes
+eulogizing
+eulogy
+Eumenides
+eumorphic
+Eunice
+eunuch
+eunuchism
+eunuchs
+Euonymus
+Eupatorium
+eupatrid
+eupen
+eupepsia
+euphausiid
+euphemism
+euphemism's
+euphemisms
+euphemist
+euphemistic
+euphemistically
+euphemize
+euphemized
+euphemizer
+euphemizes
+euphemizing
+euphonic
+euphonically
+euphonious
+euphoniously
+euphoniousness
+euphonium
+euphonization
+euphonize
+euphonized
+euphonizes
+euphonizing
+euphony
+euphorbia
+euphorbiaceous
+euphoria
+euphoriant
+euphoric
+euphorically
+euphotic
+euphrasy
+Euphrates
+euphroe
+Euphrosyne
+euphuism
+euphuist
+euphuistic
+euphuistically
+euplastic
+euploid
+eupnoea
+Eurasia
+Eurasian
+euratom
+eure
+eureka
+eurhythmic
+eurhythmics
+eurhythmy
+Euridyce
+Euridyce's
+Euripides
+euripus
+Euroclydon
+Eurocommunism
+Eurocrat
+Eurodollar
+Euromarket
+Europa
+Europe
+Europe's
+European
+European's
+europeanish
+Europeanization
+Europeanization's
+Europeanizations
+Europeanize
+Europeanized
+Europeanizes
+Europeanizing
+Europeans
+europium
+Eurovision
+Eurus
+Euryale
+Eurydice
+eurypterid
+Eurystheus
+eurythermal
+eurythmic
+eurythmics
+eurythmy
+eurytopic
+eurytopicity
+eurytropic
+eusebius
+eusporangiate
+Eustachian
+eustatic
+eutectic
+eutectoid
+Euterpe
+Euterpe's
+euthanasia
+euthanasic
+euthenics
+euthenist
+eutherian
+euthyroid
+eutrophic
+eutrophication
+eutrophy
+eux
+euxenite
+Euxine
+eV
+Eva
+evacuant
+evacuate
+evacuated
+evacuates
+evacuating
+evacuation
+evacuations
+evacuative
+evacuator
+evacuee
+evacuees
+evadable
+evade
+evaded
+evader
+evades
+evading
+evaginate
+evagination
+evaluable
+evaluate
+evaluated
+evaluates
+evaluating
+evaluation
+evaluations
+evaluative
+evaluator
+evaluator's
+evaluators
+evanesce
+evanesced
+evanescence
+evanescent
+evanesces
+evanescing
+evangel
+evangelic
+evangelical
+evangelicalism
+evangelically
+Evangeline
+evangeline
+evangelism
+evangelist
+evangelistic
+evangelistically
+evangelists
+evangelization
+evangelization's
+evangelizations
+evangelize
+evangelized
+evangelizer
+evangelizers
+evangelizes
+evangelizing
+evanish
+evanishment
+Evans
+Evanston
+Evansville
+evaporable
+evaporate
+evaporated
+evaporates
+evaporating
+evaporation
+evaporations
+evaporative
+evaporatively
+evaporativity
+evaporator
+evaporators
+evaporimeter
+evaporimeters
+evaporite
+evaporitic
+evapotranspiration
+evasion
+evasions
+evasive
+evasively
+evasiveness
+eve
+evection
+Evelyn
+even
+evened
+evener
+evenfall
+evenhanded
+evenhandedly
+evenhandedness
+evening
+evening's
+evenings
+evenly
+evenness
+evens
+Evensen
+evensong
+event
+event's
+eventful
+eventfully
+eventfulness
+eventide
+eventides
+eventless
+events
+eventual
+eventualities
+eventuality
+eventualize
+eventualizes
+eventually
+eventuate
+eventuated
+eventuates
+eventuating
+ever
+everblooming
+Eveready
+everest
+Everett
+Everglade
+Everglades
+evergreen
+Everhart
+Everhart's
+everlasting
+everlastingly
+everlastingness
+evermore
+eversible
+eversion
+eversions
+evert
+Everton
+Evertor
+every
+everybody
+everybody's
+everyday
+everydayness
+everyman
+everyone
+everyone's
+everyones
+everyplace
+everything
+everywhere
+eves
+Evesham
+evict
+evicted
+evictee
+evictees
+evicting
+eviction
+eviction's
+evictions
+evictor
+evictors
+evicts
+evidence
+evidenced
+evidences
+evidencing
+evident
+evidential
+evidentially
+evidentiary
+evidently
+evil
+evildoer
+evildoers
+evildoing
+eviler
+evilest
+evilly
+evilness
+evils
+evince
+evinced
+evinces
+evincible
+evincing
+eviscerate
+eviscerated
+eviscerates
+eviscerating
+evisceration
+evitable
+evite
+evocable
+evocate
+evocation
+evocations
+evocative
+evocatively
+evocativeness
+evocator
+evocators
+evoke
+evoked
+evokes
+evoking
+evolute
+evolute's
+evolutes
+evolution
+evolution's
+evolutionarily
+evolutionary
+evolutionism
+evolutionist
+evolutionists
+evolutionize
+evolutionizes
+evolutions
+evolvable
+evolve
+evolved
+evolvement
+evolves
+evolving
+Evonymus
+evulsion
+evulsions
+evzone
+ewe
+ewe's
+Ewen
+ewen
+ewer
+ewes
+Ewing
+ex
+exacerbate
+exacerbated
+exacerbates
+exacerbating
+exacerbation
+exacerbations
+exact
+exacta
+exactable
+exacted
+exacter
+exacting
+exactingly
+exactingness
+exaction
+exaction's
+exactions
+exactitude
+exactly
+exactness
+exactor
+exactors
+exacts
+exaggerate
+exaggerated
+exaggeratedly
+exaggeratedness
+exaggerates
+exaggerating
+exaggeration
+exaggerations
+exaggerative
+exaggeratively
+exaggerator
+exaggerators
+exagitates
+exalt
+exaltation
+exaltations
+exalted
+exaltedly
+exalter
+exalters
+exalting
+exalts
+exam
+exam's
+examen
+examinable
+examinant
+examinants
+examination
+examination's
+examinational
+examinations
+examinatorial
+examine
+examined
+examinee
+examinees
+examiner
+examiners
+examines
+examining
+example
+example's
+exampled
+examples
+exampling
+exams
+exanimate
+exanimated
+exanimates
+exanimating
+exanthema
+exarate
+exarch
+exarchate
+exasperate
+exasperated
+exasperatedly
+exasperates
+exasperating
+exasperatingly
+exasperation
+exasperations
+Excalibur
+excaudate
+excavate
+excavated
+excavates
+excavating
+excavation
+excavational
+excavations
+excavator
+excavators
+exceed
+exceeded
+exceeder
+exceeding
+exceedingly
+exceeds
+excel
+excelled
+excellence
+excellences
+excellency
+excellent
+excellently
+excelling
+excels
+excelsior
+except
+excepted
+excepting
+exception
+exception's
+exceptionability
+exceptionable
+exceptionably
+exceptional
+exceptionality
+exceptionally
+exceptionalness
+exceptions
+exceptive
+excepts
+excerpt
+excerpted
+excerpter
+excerption
+excerptions
+excerptor
+excerptors
+excerpts
+excess
+excesses
+excessive
+excessively
+excessiveness
+exchange
+exchangeability
+exchangeable
+exchanged
+exchangee
+exchangees
+exchanger
+exchangers
+exchanges
+exchanging
+exchequer
+exchequer's
+exchequers
+excide
+excided
+excides
+exciding
+excipient
+excisable
+excise
+excised
+exciseman
+excises
+excising
+excision
+excisions
+excitability
+excitable
+excitableness
+excitant
+excitants
+excitation
+excitation's
+excitations
+excitative
+excitatory
+excite
+excited
+excitedly
+excitement
+exciter
+excites
+exciting
+excitingly
+exciton
+excitor
+exclaim
+exclaimed
+exclaimer
+exclaimers
+exclaiming
+exclaims
+exclamation
+exclamation's
+exclamations
+exclamatory
+exclaustration
+exclave
+exclaves
+exclosure
+exclosures
+excludability
+excludable
+exclude
+excluded
+excluder
+excludes
+excludible
+excluding
+exclusion
+exclusionary
+exclusioner
+exclusioners
+exclusionist
+exclusionists
+exclusions
+exclusive
+exclusively
+exclusiveness
+exclusivity
+excogitate
+excogitation
+excogitative
+excommunicate
+excommunicated
+excommunicates
+excommunicating
+excommunication
+excommunicative
+excommunicator
+excoriate
+excoriated
+excoriates
+excoriating
+excoriation
+excoriations
+excrement
+excrement's
+excremental
+excrementitious
+excrements
+excrescence
+excrescences
+excrescency
+excrescent
+excrescently
+excreta
+excretal
+excrete
+excreted
+excreter
+excretes
+excreting
+excretion
+excretions
+excretory
+excruciate
+excruciated
+excruciates
+excruciating
+excruciatingly
+excruciation
+exculpate
+exculpated
+exculpates
+exculpating
+exculpation
+exculpations
+exculpatory
+excurrent
+excursion
+excursion's
+excursionist
+excursionists
+excursionize
+excursionizes
+excursions
+excursive
+excursively
+excursiveness
+excursus
+excursuses
+excusable
+excusableness
+excusably
+excusatory
+excuse
+excused
+excuser
+excuses
+excusing
+exeat
+exec
+execrable
+execrableness
+execrably
+execrate
+execrated
+execrates
+execrating
+execration
+execrative
+execrator
+execrators
+executability
+executable
+executable's
+executables
+executant
+execute
+executed
+executer
+executers
+executes
+executing
+execution
+executional
+executioner
+executions
+executive
+executive's
+executives
+executor
+executor's
+executorial
+executors
+executory
+executrices
+executrix
+executrixes
+exedra
+exegesis
+exegete
+exegetic
+exegetical
+exegetically
+exegetics
+exegetist
+exemplar
+exemplarily
+exemplariness
+exemplarity
+exemplars
+exemplary
+exemplification
+exemplified
+exemplifier
+exemplifiers
+exemplifies
+exemplify
+exemplifying
+exemplum
+exempt
+exempted
+exempting
+exemption
+exemptions
+exempts
+exenterate
+exenterated
+exenterates
+exenterating
+exenteration
+exenterations
+exequatur
+exequies
+exercisable
+exercise
+exercised
+exerciser
+exercisers
+exercises
+exercising
+exercitation
+exergonic
+exergue
+exert
+exerted
+exerting
+exertion
+exertion's
+exertions
+exerts
+Exeter
+exeunt
+exfoliate
+exfoliated
+exfoliates
+exfoliating
+exfoliation
+exfoliative
+exhalant
+exhalants
+exhalation
+exhalations
+exhale
+exhaled
+exhalent
+exhalents
+exhales
+exhaling
+exhaust
+exhausted
+exhaustedly
+exhauster
+exhaustibility
+exhaustible
+exhausting
+exhaustingly
+exhaustion
+exhaustive
+exhaustively
+exhaustiveness
+exhaustivity
+exhaustless
+exhaustlessly
+exhaustlessness
+exhausts
+exhibit
+exhibited
+exhibiting
+exhibition
+exhibition's
+exhibitioner
+exhibitionism
+exhibitionist
+exhibitionistic
+exhibitionize
+exhibitionizes
+exhibitions
+exhibitive
+exhibitor
+exhibitor's
+exhibitors
+exhibitory
+exhibits
+exhilarant
+exhilarate
+exhilarated
+exhilarates
+exhilarating
+exhilaratingly
+exhilaration
+exhilarative
+exhort
+exhortation
+exhortation's
+exhortations
+exhortative
+exhortatory
+exhorted
+exhorter
+exhorting
+exhorts
+exhumation
+exhumations
+exhume
+exhumed
+exhumer
+exhumes
+exhuming
+exigence
+exigencies
+exigency
+exigent
+exigently
+exigible
+exiguity
+exiguous
+exiguously
+exiguousness
+exile
+exiled
+exiles
+exilic
+exiling
+eximious
+exine
+exist
+existed
+existence
+existences
+existent
+existential
+existentialism
+existentialist
+existentialist's
+existentialistic
+existentialistically
+existentialists
+existentialize
+existentializes
+existentially
+existing
+exists
+exit
+exitance
+exited
+exiting
+exits
+Exmoor
+exo
+exobiological
+exobiologist
+exobiology
+exocarp
+exocentric
+exocrine
+exocyclic
+exoderm
+exodermis
+exodontia
+exodontics
+exodontist
+exodus
+exoergic
+exogamic
+exogamous
+exogamy
+exogenous
+exogenously
+Exon
+exonerate
+exonerated
+exonerates
+exonerating
+exoneration
+exonerative
+exonuclease
+exonym
+exopeptidase
+exophthalmic
+exophthalmos
+exoplasm
+exorable
+exorbitance
+exorbitances
+exorbitant
+exorbitantly
+exorciser
+exorcism
+exorcist
+exorcistic
+exorcistical
+exorcize
+exorcized
+exorcizes
+exorcizing
+exordial
+exordium
+exoskeleta
+exoskeletal
+exoskeleton
+exoskeletons
+exosmosis
+exosmotic
+exosphere
+exospheric
+exospore
+exostosis
+exosystem
+exosystems
+exoteric
+exotericaly
+exothermal
+exothermic
+exothermically
+exotic
+exotica
+exotically
+exoticism
+exoticness
+exotism
+exotoxin
+expand
+expandable
+expanded
+expander
+expander's
+expanders
+expanding
+expands
+expanse
+expansed
+expanses
+expansibility
+expansible
+expansile
+expansing
+expansion
+expansional
+expansionary
+expansionism
+expansionist
+expansionistic
+expansions
+expansive
+expansively
+expansiveness
+expansivity
+expatiate
+expatiated
+expatiates
+expatiating
+expatiation
+expatriate
+expatriated
+expatriates
+expatriating
+expatriation
+expecially
+expect
+expectable
+expectably
+expectance
+expectancies
+expectancy
+expectant
+expectantly
+expectation
+expectation's
+expectations
+expectative
+expected
+expectedly
+expectedness
+expecting
+expectingly
+expectorant
+expectorate
+expectoration
+expects
+expedience
+expediency
+expedient
+expediential
+expediently
+expedite
+expedited
+expediter
+expedites
+expediting
+expedition
+expedition's
+expeditionary
+expeditions
+expeditious
+expeditiously
+expeditiousness
+expeditor
+expel
+expellable
+expellant
+expelled
+expellee
+expeller
+expellers
+expelling
+expels
+expend
+expendability
+expendable
+expended
+expender
+expending
+expenditure
+expenditure's
+expenditures
+expends
+expense
+expensed
+expenses
+expensing
+expensive
+expensively
+expensiveness
+experience
+experienced
+experiences
+experiencing
+experiential
+experientialism
+experientially
+experiment
+experimental
+experimentalism
+experimentalist
+experimentalist's
+experimentalists
+experimentalize
+experimentalizes
+experimentally
+experimentation
+experimentation's
+experimentations
+experimented
+experimenter
+experimenters
+experimenting
+experimentize
+experimentizes
+experiments
+expert
+expertise
+expertism
+expertly
+expertness
+experts
+expiable
+expiate
+expiated
+expiates
+expiating
+expiation
+expiator
+expiatory
+expiration
+expiration's
+expirations
+expiratory
+expire
+expired
+expires
+expiring
+expiry
+explain
+explainable
+explained
+explainer
+explainers
+explaining
+explains
+explanation
+explanation's
+explanations
+explanative
+explanatively
+explanatorily
+explanatory
+explant
+explantation
+explants
+expletive
+expletives
+expletory
+explicable
+explicably
+explicate
+explicated
+explicates
+explicating
+explication
+explicative
+explicatively
+explicator
+explicatory
+explicit
+explicite
+explicitely
+explicitly
+explicitness
+explicity
+explictly
+explode
+exploded
+explodent
+exploder
+explodes
+exploding
+exploit
+exploitable
+exploitation
+exploitation's
+exploitations
+exploitative
+exploitatively
+exploited
+exploiter
+exploiters
+exploiting
+exploitive
+exploits
+exploration
+exploration's
+explorational
+explorations
+explorative
+exploratively
+exploratory
+explore
+explored
+explorer
+explorers
+explores
+exploring
+explosibility
+explosible
+explosion
+explosion's
+explosions
+explosive
+explosively
+explosiveness
+explosives
+expo
+exponent
+exponent's
+exponential
+exponentially
+exponentials
+exponentiate
+exponentiated
+exponentiates
+exponentiating
+exponentiation
+exponentiation's
+exponentiations
+exponents
+exponible
+export
+exportability
+exportable
+exportation
+exported
+exporter
+exporters
+exporting
+exports
+expos
+expose
+exposed
+exposer
+exposers
+exposes
+exposing
+exposit
+exposited
+exposition
+exposition's
+expositional
+expositions
+expositor
+expository
+expostulate
+expostulation
+expostulatory
+exposure
+exposure's
+exposures
+expound
+expounded
+expounder
+expounding
+expounds
+express
+expressage
+expressed
+expresser
+expresses
+expressibility
+expressible
+expressibly
+expressing
+expression
+expression's
+expressional
+expressionism
+expressionist
+expressionistic
+expressionistically
+expressionists
+expressionless
+expressionlessly
+expressionlessness
+expressions
+expressive
+expressively
+expressiveness
+expressivity
+expressly
+expresso
+expressway
+expressways
+expropriate
+expropriated
+expropriates
+expropriating
+expropriation
+expropriations
+expropriator
+expropriators
+expulsion
+expulsive
+expunction
+expunge
+expunged
+expunger
+expunges
+expunging
+expurgate
+expurgated
+expurgates
+expurgating
+expurgation
+expurgator
+expurgatorial
+expurgatory
+exquisite
+exquisitely
+exquisiteness
+exsanguinate
+exsanguination
+exsanguine
+exscind
+exsect
+exsert
+exserted
+exsertile
+exsertion
+exsertions
+exsiccate
+exsiccation
+exstipulate
+exstrophy
+ext
+extant
+extemporal
+extemporally
+extemporaneity
+extemporaneous
+extemporaneously
+extemporaneousness
+extemporarily
+extemporary
+extempore
+extemporization
+extemporization's
+extemporizations
+extemporize
+extemporized
+extemporizer
+extemporizers
+extemporizes
+extemporizing
+extend
+extendable
+extended
+extendedly
+extendedness
+extender
+extendibility
+extendible
+extendibles
+extending
+extends
+extensibility
+extensible
+extensile
+extension
+extension's
+extensional
+extensionality
+extensionally
+extensions
+extensity
+extensive
+extensively
+extensiveness
+extensometer
+extensometer's
+extensometers
+extensor
+extent
+extent's
+extention
+extentions
+extents
+extenuate
+extenuated
+extenuating
+extenuation
+extenuator
+extenuatory
+exterior
+exterior's
+exteriority
+exteriorization
+exteriorization's
+exteriorizations
+exteriorize
+exteriorized
+exteriorizes
+exteriorizing
+exteriorly
+exteriors
+exterminate
+exterminated
+exterminates
+exterminating
+extermination
+exterminations
+exterminator
+exterminator's
+exterminators
+exterminatory
+extermine
+extern
+external
+externalism
+externalities
+externality
+externalization
+externalization's
+externalizations
+externalize
+externalized
+externalizes
+externalizing
+externally
+externals
+externship
+exteroceptive
+exteroceptor
+exterritorial
+exterritoriality
+extinct
+extinction
+extinctive
+extine
+extinguish
+extinguishable
+extinguishant
+extinguished
+extinguisher
+extinguishers
+extinguishes
+extinguishing
+extinguishment
+extirpate
+extirpated
+extirpating
+extirpation
+extirpative
+extol
+extoll
+extolled
+extoller
+extolling
+extolment
+extols
+extort
+extorted
+extorter
+extorting
+extortion
+extortionary
+extortionate
+extortionately
+extortioner
+extortionist
+extortionist's
+extortionists
+extortive
+extorts
+extra
+extracanonical
+extracellular
+extracellularly
+extrachromosomal
+extracorporeal
+extracorporeally
+extracranial
+extract
+extractability
+extractable
+extracted
+extractible
+extracting
+extraction
+extraction's
+extractions
+extractive
+extractively
+extractor
+extractor's
+extractors
+extracts
+extracurricular
+extraditable
+extradite
+extradites
+extradition
+extrados
+extradoses
+extragalactic
+extrajudicial
+extrajudicially
+extralegal
+extralegally
+extralimital
+extralinguistic
+extralinguistically
+extrality
+extramarital
+extramundane
+extramural
+extramurally
+extraneous
+extraneously
+extraneousness
+extranuclear
+extraordinarily
+extraordinariness
+extraordinary
+extrapolate
+extrapolated
+extrapolates
+extrapolating
+extrapolation
+extrapolations
+extrapolative
+extrapolator
+extraposition
+extras
+extrasensory
+extrasystole
+extrasystolic
+extraterrestrial
+extraterritorial
+extraterritoriality
+extrauterine
+extravagance
+extravagancy
+extravagant
+extravagantly
+extravaganza
+extravaganzas
+extravagate
+extravasate
+extravasation
+extravascular
+extravehicular
+extraversion
+extraversive
+extravert
+extraverted
+extrema
+extremadura
+extremal
+extreme
+extremed
+extremely
+extremeness
+extremer
+extremes
+extremest
+extremis
+extremism
+extremist
+extremist's
+extremists
+extremities
+extremity
+extremity's
+extremum
+extricable
+extricate
+extricated
+extricates
+extricating
+extrication
+extrinsic
+extrinsically
+extrorse
+extrorsely
+extroversion
+extrovert
+extroverted
+extroverts
+extrudability
+extrudable
+extrude
+extruded
+extruder
+extrudes
+extruding
+extrusion
+extrusive
+exuberance
+exuberant
+exuberantly
+exuberate
+exudate
+exudation
+exudative
+exude
+exuded
+exudes
+exuding
+exult
+exultance
+exultancy
+exultant
+exultantly
+exultation
+exulted
+exulting
+exultingly
+exults
+exurban
+exurbanite
+exurbia
+exuviae
+exuviate
+exuviation
+Exxon
+eyas
+eye
+eyeball
+eyeballs
+eyebath
+eyeblack
+eyebolt
+eyebright
+eyebrow
+eyebrow's
+eyebrows
+eyecup
+eyed
+eyedness
+eyedropper
+eyedropperful
+eyeful
+eyeglass
+eyeglasses
+eyehole
+eyehook
+eyeing
+eyelash
+eyelashes
+eyeless
+eyelet
+eyeleteer
+eyelets
+eyelid
+eyelid's
+eyelids
+eyelike
+eyeliner
+eyepatch
+eyepiece
+eyepiece's
+eyepieces
+eyepoint
+eyepopper
+eyer
+eyers
+eyes
+eyeshade
+eyeshot
+eyesight
+eyesore
+eyesore's
+eyesores
+eyespot
+eyestalk
+eyestrain
+eyestrings
+eyeteeth
+eyetie
+eyetooth
+eyewash
+eyewink
+eyewitness
+eyewitness's
+eyewitnesses
+eying
+eyot
+eyots
+eyra
+eyre
+eyrie
+eyrir
+eysenck
+Ezekiel
+Ezra
+f's
+FAA
+fab
+fabaceous
+Faber
+Faber's
+Fabian
+Fabian's
+Fabianism
+fabians
+fabius
+fable
+fabled
+fabler
+fables
+fabliau
+fabling
+fabre
+fabric
+fabric's
+fabricant
+fabricate
+fabricated
+fabricates
+fabricating
+fabrication
+fabrications
+fabricator
+fabricators
+fabrics
+Fabrikoid
+fabular
+fabulist
+fabulous
+fabulously
+fabulousness
+facade
+facaded
+facades
+facading
+face
+facebar
+faced
+facedown
+faceless
+facelessness
+facement
+facepiece
+facepieces
+faceplate
+facer
+faces
+facet
+faceted
+facetiae
+faceting
+facetious
+facetiously
+facetiousness
+facets
+facetted
+faceup
+facia
+facial
+facially
+facies
+facile
+facilely
+facileness
+facilitate
+facilitated
+facilitates
+facilitating
+facilitation
+facilitative
+facilitator
+facilitators
+facilitatory
+facilities
+facility
+facility's
+facilties
+facing
+facings
+facsimile
+facsimile's
+facsimiled
+facsimiles
+facsimiling
+facsimilize
+facsimilizes
+fact
+fact's
+Factice
+facticity
+faction
+faction's
+factional
+factionalism
+factionally
+factions
+factious
+factiously
+factiousness
+factitious
+factitiously
+factitiousness
+factitive
+factitively
+facto
+factor
+factorable
+factorage
+factored
+factorial
+factories
+factoring
+factorings
+factorization
+factorization's
+factorizations
+factorize
+factorized
+factorizes
+factorizing
+factors
+factorship
+factory
+factory's
+factotum
+facts
+factual
+factualism
+factualist
+factualists
+factuality
+factually
+factualness
+facture
+factures
+facula
+faculae
+facultative
+facultatively
+faculties
+faculty
+faculty's
+fad
+fadden
+faddish
+faddishness
+faddism
+faddist
+faddists
+fade
+fadeaway
+faded
+fadedly
+fadeless
+fadelessly
+fadeout
+fader
+faders
+fades
+fadge
+fading
+fads
+faecal
+faeces
+faenza
+faerie
+faeroes
+faeroese
+faery
+faff
+Fafnir
+Fafnir's
+fag
+fagaceous
+fagging
+faggot
+faggoting
+faggots
+Fagin
+fags
+Fahey
+Fahey's
+fahlband
+Fahrenheit
+Fahrenheits
+faial
+faience
+fail
+failed
+failing
+failingly
+failings
+faille
+fails
+failsafe
+failsoft
+failure
+failure's
+failures
+fain
+faint
+fainted
+fainter
+faintest
+fainthearted
+faintheartedly
+faintheartedness
+fainting
+faintish
+faintishness
+faintly
+faintness
+faints
+fair
+fairbanks
+Fairbanks
+Fairchild
+faired
+fairer
+fairest
+Fairfax
+Fairfield
+fairgoer
+fairgoers
+fairground
+fairgrounds
+fairies
+fairing
+fairish
+fairishly
+fairlead
+fairleader
+fairless
+fairly
+Fairmont
+fairness
+Fairport
+fairs
+Fairview
+fairview
+fairway
+fairways
+fairweather
+fairy
+fairy's
+fairyfloss
+fairyland
+fairylike
+Faisal
+faith
+faithful
+faithfully
+faithfulness
+faithfuls
+faithless
+faithlessly
+faithlessness
+faiths
+faitour
+faiyum
+Faizabad
+fake
+faked
+faker
+fakery
+fakes
+faking
+fakir
+falafel
+Falange
+falbala
+falcate
+falcated
+falchion
+falciform
+falcon
+falconer
+falconet
+falconiform
+falconine
+falconry
+falcons
+falderal
+faldstool
+falerii
+Faliscan
+falk
+Falk
+Falkirk
+Falkland
+Falklands
+Falkner
+fall
+Falla
+fallacies
+fallacious
+fallaciously
+fallaciousness
+fallacy
+fallacy's
+fallal
+fallback
+fallen
+faller
+fallfish
+fallibility
+fallible
+fallibly
+falling
+falloff
+Fallopian
+fallout
+fallouts
+fallow
+fallowness
+falls
+Falmouth
+Falmouth's
+false
+falsehood
+falsehood's
+falsehoods
+falsely
+falseness
+falser
+falsest
+falseties
+falsetto
+falsettos
+falsety
+falsework
+falsies
+falsification
+falsified
+falsifier
+falsifies
+falsify
+falsifying
+falsity
+Falstaff
+Falstaffian
+falster
+faltboat
+falter
+faltered
+falterer
+faltering
+falteringly
+falters
+falun
+famagusta
+fame
+famed
+fames
+familial
+familiar
+familiarities
+familiarity
+familiarization
+familiarization's
+familiarizations
+familiarize
+familiarized
+familiarizer
+familiarizers
+familiarizes
+familiarizing
+familiarizingly
+familiarly
+familiarness
+familiars
+families
+familism
+familist
+family
+family's
+famine
+famine's
+famines
+faming
+famish
+famished
+famishes
+famishing
+famishment
+famous
+famously
+famousness
+famulus
+fan
+fan's
+fanagalo
+fanatic
+fanatic's
+fanatical
+fanatically
+fanaticalness
+fanaticism
+fanaticize
+fanaticized
+fanaticizes
+fanaticizing
+fanatics
+fancied
+fancier
+fancier's
+fanciers
+fancies
+fanciest
+fanciful
+fancifully
+fancifulness
+fancily
+fanciness
+fancy
+fancying
+fancywork
+fandangle
+fandango
+fane
+fanfani
+fanfare
+fanfaronade
+fanfold
+fang
+fang's
+fanged
+fangio
+fangled
+fango
+fangs
+fanion
+fankle
+fanlight
+fanlike
+fanned
+fanner
+Fannies
+fanning
+Fanny
+fanon
+fanout
+fans
+fantail
+fantasia
+fantasied
+fantasies
+fantasist
+fantasize
+fantasized
+fantasizer
+fantasizes
+fantasizing
+fantasm
+fantast
+fantastic
+fantastical
+fantasticality
+fantastically
+fantasticalness
+fantasticate
+fantasticated
+fantasticates
+fantasticating
+fantastication
+fantasy
+fantasy's
+Fanti
+fantoccini
+fantod
+fantom
+fanwise
+FAQ
+FAQ's
+FAQ'S
+faqir
+FAQs
+far
+farad
+Faraday
+faradic
+faradism
+faradization
+faradization's
+faradizations
+faradize
+faradized
+faradizer
+faradizers
+faradizes
+faradizing
+farandole
+faraway
+Farber
+farce
+farce's
+farces
+farceur
+farci
+farcical
+farcicality
+farcically
+farcing
+farcy
+fard
+fardel
+fare
+fared
+Fareham
+farer
+fares
+farewell
+farewells
+farfetched
+farfetchedness
+Fargo
+farina
+farinaceous
+faring
+farinose
+Farkas
+farl
+Farley
+farm
+farmed
+farmer
+farmer's
+farmers
+farmhand
+farmhands
+farmhouse
+farmhouse's
+farmhouses
+farming
+Farmington
+farmland
+farmlands
+farms
+farmstead
+farmsteading
+farmworker
+farmworkers
+farmyard
+farmyard's
+farmyards
+Farnborough
+Farnese
+Farnesol
+Farnham
+Farnsworth
+Farnsworth's
+faro
+Faroe
+Faroes
+Farouk
+Farquhar
+Farrago
+Farrell
+farrier
+farriery
+farrow
+farseeing
+farside
+farsighted
+farsightedly
+farsightedness
+fart
+farther
+farthermost
+farthest
+farthing
+Farthingale
+Fartlek
+Faruk
+fasces
+fascia
+fascial
+fasciate
+fasciated
+fasciation
+fascicle
+fascicled
+fascicles
+fascicular
+fascicularly
+fasciculate
+fasciculated
+fasciculation
+fasciculations
+fascicule
+fasciculus
+fascinate
+fascinated
+fascinates
+fascinating
+fascinatingly
+fascination
+fascinations
+fascinator
+fascinators
+fascine
+fascism
+fascist
+fascistic
+fascistically
+fascisticization
+fascisticization's
+fascisticizations
+fascisticize
+fascisticizes
+fascistization
+fascistization's
+fascistizations
+fascistize
+fascistized
+fascistizes
+fascistizing
+fascists
+fash
+fashion
+fashionabilities
+fashionability
+fashionable
+fashionableness
+fashionably
+fashioned
+fashioner
+fashioners
+fashioning
+fashionize
+fashionizes
+fashionmonger
+fashions
+fashoda
+Fassbaender
+Fassbinder
+fast
+fastback
+fastball
+fastball's
+fastballs
+fasted
+fasten
+fastened
+fastener
+fasteners
+fastening
+fastenings
+fastens
+faster
+fastest
+fastidious
+fastidiously
+fastidiousness
+fastigiate
+fasting
+fastness
+fasts
+fastuous
+fastuously
+fat
+fatah
+fatal
+fatalism
+fatalist
+fatalistic
+fatalistically
+fatalists
+fatalities
+fatality
+fatality's
+fatalize
+fatalizes
+fatally
+fatals
+fatback
+fate
+fated
+fateful
+fatefully
+fatefulness
+fates
+fathead
+fatheaded
+fatheadedness
+father
+father's
+fathered
+fatherhood
+fathering
+fatherland
+fatherless
+fatherlike
+fatherliness
+fatherly
+fathers
+fathom
+fathomable
+fathomed
+Fathometer
+fathoming
+fathomless
+fathomlessly
+fathomlessness
+fathoms
+fatidic
+fatigability
+fatigable
+fatigue
+fatigued
+fatigues
+fatiguing
+fatiguingly
+Fatima
+Fatimid
+fating
+fatling
+fatly
+fatness
+fats
+Fatshan
+fatso
+fatted
+fatten
+fattened
+fattener
+fatteners
+fattening
+fattens
+fatter
+fattest
+fattier
+fatties
+fattiness
+fatting
+fattish
+fatty
+fatuity
+fatuous
+fatuously
+fatuousness
+Faubourg
+faucal
+fauces
+faucet
+faucets
+faugh
+Faulkner
+Faulknerian
+faulknerian
+fault
+faulted
+faultfinder
+faultfinding
+faultier
+faultily
+faultiness
+faulting
+faultless
+faultlessly
+faultlessness
+faults
+faulty
+faun
+fauna
+faunal
+faunally
+faunistic
+faunistically
+fauntleroy
+Fauntleroy
+faunus
+Faure
+Faust
+Faustian
+Faustus
+fauteuil
+fauve
+fauvism
+fauvist
+faux
+faveolate
+favonian
+favor
+favor's
+favorable
+favorable's
+favorableness
+favorables
+favorably
+favored
+favored's
+favoredly
+favoredness
+favoreds
+favorer
+favorer's
+favorers
+favoring
+favoring's
+favoringly
+favorings
+favorite
+favorite's
+favorites
+favoritism
+favoritism's
+favoritisms
+favorless
+favorlesses
+favors
+favrile
+favus
+fawkes
+Fawkes
+fawn
+fawned
+fawner
+fawning
+fawningly
+fawns
+fawny
+fax
+fax's
+faxes
+fay
+Fayal
+fayalite
+Fayette
+Fayette's
+Fayetteville
+fayum
+faze
+fazed
+fazes
+fazing
+FBI
+FCC
+FDA
+feal
+fealty
+fear
+feared
+fearer
+fearful
+fearfully
+fearfulness
+fearing
+fearless
+fearlessly
+fearlessness
+fearnought
+fears
+fearsome
+fearsomely
+fearsomeness
+feasibility
+feasible
+feasibleness
+feasibly
+feast
+feasted
+feaster
+feasting
+feasts
+feat
+feat's
+feather
+featherbed
+featherbedding
+featherbrain
+featherbrained
+feathered
+featheredge
+featherer
+featherers
+featherhead
+featherheaded
+feathering
+featherless
+featherman
+Featherman
+feathers
+featherstitch
+feathertop
+featherweight
+feathery
+feating
+featly
+feats
+feature
+featured
+featureless
+features
+featuring
+feaze
+Feb
+febricity
+febrifacient
+febrific
+febrifuge
+febrile
+Februaries
+February
+February's
+fecal
+feces
+fechner
+feck
+feckless
+fecklessly
+fecklessness
+feckly
+fecula
+feculence
+feculent
+fecund
+fecundability
+fecundate
+fecundated
+fecundates
+fecundating
+fecundation
+fecundations
+fecundity
+fecundize
+fecundizes
+fed
+fedayee
+federal
+federalism
+federalist
+federalists
+federalization
+federalization's
+federalizations
+federalize
+federalized
+federalizes
+federalizing
+federally
+federals
+federate
+federated
+federates
+federating
+federation
+federations
+federative
+federatively
+fedora
+Fedoseyev
+feds
+fee
+feeble
+feebleminded
+feeblemindedly
+feeblemindedness
+feebleness
+feebler
+feeblest
+feebly
+feed
+feedback
+feedbacks
+feedbag
+feeder
+feeders
+feeding
+feedings
+feedlot
+feeds
+feedstock
+feedstuff
+feeing
+feel
+feeler
+feelers
+feeling
+feelingly
+feelingness
+feelings
+feels
+Feeney
+Feeney's
+fees
+feet
+feetfirst
+feeze
+Feigin
+feign
+feigned
+feigner
+feigning
+feigns
+feininger
+feint
+feinted
+feinting
+feints
+Feisal
+feist
+feistier
+feisty
+felafel
+Felder
+Feldman
+feldspar
+feldspathic
+Felice
+Felicia
+felicific
+felicitate
+felicitated
+felicitates
+felicitating
+felicitation
+felicitator
+felicities
+felicitous
+felicitously
+felicitousness
+felicity
+feline
+felinely
+felines
+felinity
+Felix
+fell
+fella
+fellable
+fellah
+fellas
+fellatio
+fellation
+fellations
+felled
+feller
+fellers
+felling
+fellini
+Fellini
+fellmonger
+fellness
+felloe
+fellow
+fellow's
+fellowly
+fellowman
+fellows
+fellowship
+fellowship's
+fellowships
+fells
+felo
+felon
+felones
+felonious
+feloniously
+feloniousness
+felonry
+felons
+felony
+felsite
+felsitic
+felspar
+felt
+felted
+felting
+felts
+felucca
+female
+female's
+femaleness
+females
+femalize
+femalizes
+Feme
+feminine
+femininely
+feminineness
+femininity
+feminism
+feminist
+feminist's
+feministic
+feminists
+feminity
+feminization
+feminizations
+feminize
+feminized
+feminizes
+feminizing
+femme
+femmes
+femoral
+femur
+femur's
+femurs
+fen
+fence
+fenced
+fenceless
+fencelessness
+fencepost
+fencer
+fencers
+fences
+fencible
+fencing
+fend
+fender
+fenders
+fenestella
+fenestra
+fenestral
+fenestrate
+fenestrated
+fenestrates
+fenestration
+Fenian
+Fenice
+fennec
+fennel
+fennelflower
+fenny
+Fenrir
+Fenton
+Fenton's
+fenugreek
+Fenwick
+feoff
+feoffee
+feoffment
+feral
+ferbam
+Ferber
+Ferber's
+Ferdinand
+ferdinando
+Ferdinando
+fere
+feretory
+fergana
+Fergus
+Ferguson
+Ferguson's
+feria
+ferial
+ferine
+fering
+ferity
+fermanagh
+Fermat
+Fermat's
+ferment
+fermentable
+fermentation
+fermentation's
+fermentations
+fermentative
+fermented
+fermenter
+fermenting
+ferments
+Fermi
+fermion
+fermion's
+fermions
+fermium
+fern
+fern's
+fernandel
+Fernandi
+Fernando
+fernery
+fernlike
+ferns
+ferny
+ferocious
+ferociously
+ferociousness
+ferocity
+Ferrara
+ferrari
+ferrate
+Ferreira
+ferreled
+ferreling
+ferreous
+Ferrer
+Ferrer's
+ferret
+ferreted
+ferreter
+ferreting
+ferrets
+ferrety
+ferriage
+ferric
+ferricyanic
+ferricyanide
+ferried
+ferries
+ferriferous
+ferrimagnet
+ferrimagnetic
+ferrimagnetically
+ferrimagnetism
+ferris
+ferrite
+ferritic
+ferritin
+ferritization
+ferritization's
+ferritizations
+ferro
+ferrocene
+ferrochromium
+ferroconcrete
+ferrocyanic
+ferrocyanide
+ferroelectric
+ferrofluid
+ferrol
+ferromagnesian
+ferromagnet
+ferromagnetic
+ferromagnetism
+ferromanganese
+ferrosilicon
+ferrotype
+ferrous
+ferruginous
+ferrule
+ferry
+ferryboat
+ferrying
+ferryman
+fertile
+fertilely
+fertileness
+fertilities
+fertility
+fertilizable
+fertilizable's
+fertilizables
+fertilization
+fertilization's
+fertilizational
+fertilizational's
+fertilizationals
+fertilizations
+fertilize
+fertilized
+fertilizer
+fertilizers
+fertilizes
+fertilizing
+ferula
+ferule
+fervency
+fervent
+fervently
+fervid
+fervidly
+fervidness
+fervor
+fervor's
+fervorless
+fervorlesses
+fervors
+Fescennine
+fescue
+Fess
+fess
+fesse
+fest
+festal
+fester
+festered
+festering
+festers
+festinate
+festinately
+festination
+festival
+festival's
+festivals
+festive
+festively
+festiveness
+festivities
+festivity
+festoon
+festoonery
+festoons
+festschrift
+feta
+fetal
+fetalization
+fetalization's
+fetalizations
+fetation
+fetch
+fetched
+fetcher
+fetches
+fetching
+fetchingly
+fete
+feted
+feterita
+fetes
+fetial
+feticide
+fetid
+fetidly
+fetidness
+fetiparous
+fetish
+fetishes
+fetishism
+fetishist
+fetishistic
+fetishization
+fetishization's
+fetishizations
+fetishize
+fetishized
+fetishizes
+fetishizing
+fetlock
+fetlocks
+fetologist
+fetology
+fetor
+fetter
+fettered
+fettering
+fetterlock
+fetters
+fettle
+fettled
+fettles
+fettling
+fettuccine
+fetus
+fetus's
+fetuses
+Feuchtwanger
+feud
+feud's
+feudal
+feudalism
+feudalist
+feudalistic
+feudality
+feudalizable
+feudalizable's
+feudalizables
+feudalization
+feudalization's
+feudalizations
+feudalize
+feudalized
+feudalizes
+feudalizing
+feudally
+feudatory
+feudist
+feuds
+Feuerbach
+Feuilleton
+fever
+fevered
+feverfew
+fevering
+feverish
+feverishly
+feverishness
+feverous
+feverously
+fevers
+feverwort
+few
+fewer
+fewest
+fewness
+fews
+fey
+feydeau
+feyness
+fez
+fezes
+Fezzan
+fezzes
+fiacre
+fiance
+fiancee
+Fianna
+fiasco
+fiat
+fiats
+fib
+fibber
+fibbing
+fiber
+fiber's
+fiberboard
+fibered
+Fiberglas
+fiberglass
+fiberization
+fiberize
+fiberized
+fiberizer
+fiberizer's
+fiberizers
+fiberizes
+fiberizing
+fiberless
+fiberlesses
+fibers
+Fibonacci
+fibration
+fibrefill
+fibriallating
+fibriform
+fibril
+fibrillar
+fibrillate
+fibrillated
+fibrillates
+fibrillation
+fibrilliform
+fibrillose
+fibrils
+fibrin
+fibrinogen
+fibrinolysin
+fibrinolysis
+fibrinous
+fibrize
+fibrizer
+fibrizers
+fibrizes
+fibro
+fibroblast
+fibrocement
+fibroid
+fibroin
+fibroma
+fibronectin
+fibrosis
+fibrositis
+fibrous
+fibrously
+fibrousness
+fibrovascular
+fibula
+fibular
+fiche
+fichte
+fichu
+ficino
+fickle
+fickleness
+ficticious
+fictile
+fiction
+fiction's
+fictional
+fictionalization
+fictionalize
+fictionalized
+fictionalizes
+fictionalizing
+fictionally
+fictioneer
+fictioneering
+fictionist
+fictionization
+fictionization's
+fictionizations
+fictionize
+fictionizes
+fictions
+fictitious
+fictitiously
+fictitiousness
+fictive
+fictively
+ficus
+fid
+fiddle
+fiddleback
+fiddled
+fiddlehead
+fiddler
+fiddles
+fiddlestick
+fiddlesticks
+fiddlewood
+fiddling
+fide
+fideicommissary
+fideicommissum
+fideism
+fideist
+fideistic
+fidel
+Fidel
+fidelism
+fidelity
+fidge
+fidget
+fidgeted
+fidgetiness
+fidgeting
+fidgets
+fidgety
+fidging
+fiducial
+fiducially
+fiduciary
+fidus
+fie
+fief
+fiefdom
+field
+fielded
+fielder
+fielders
+fieldfare
+fielding
+fieldmouse
+fieldpiece
+fields
+fieldsman
+fieldstone
+fieldstrip
+fieldwork
+fieldworker
+fieldworkers
+fiend
+fiendish
+fiendishly
+fiendishness
+fiends
+fierce
+fiercely
+fierceness
+fiercer
+fiercest
+fieri
+fierily
+fieriness
+fiery
+fiesole
+fiesta
+fifa
+fife
+FIFO
+fifteen
+fifteens
+fifteenth
+fifth
+fifthly
+fifths
+fifties
+fiftieth
+fifty
+fiftyfold
+fig
+fig's
+figaro
+Figaro
+fight
+fighter
+fighters
+fighting
+fights
+figment
+figs
+figuline
+figurable
+figural
+figurant
+figurate
+figuration
+figurations
+figurative
+figuratively
+figurativeness
+figure
+figured
+figurehead
+figurer
+figurers
+figures
+figurine
+figurines
+figuring
+figurings
+figurize
+figurizes
+figwort
+Fiji
+Fiji's
+Fijian
+Fijian's
+Fijians
+filable
+filament
+filament's
+filamentary
+filamentous
+filaments
+filar
+filaria
+filarial
+filariasis
+filature
+filbert
+filberts
+filch
+filched
+filches
+file
+file's
+filecard
+filed
+filefish
+filename
+filename's
+filenames
+filer
+filers
+files
+filespace
+filestore
+filet
+filets
+filial
+filially
+filiate
+filiation
+filibuster
+filibustered
+filibusterer
+filibustering
+filibusters
+filicide
+filiform
+filigree
+filigreed
+filigreeing
+filing
+filings
+Filipino
+Filipinos
+filippo
+Filippo
+fill
+fillable
+fillagree
+fille
+filled
+filler
+fillers
+filles
+fillet
+filleted
+filleting
+fillets
+fillies
+filling
+fillings
+fillip
+fillips
+fillment
+Fillmore
+fillmore
+fills
+filly
+film
+filmcard
+filmdom
+filmed
+filmic
+filmically
+filmier
+filmily
+filminess
+filming
+filmize
+filmizes
+filmmake
+filmmaker
+filmmakers
+filmmaking
+filmography
+films
+filmset
+filmsetting
+filmstrip
+filmstrips
+filmy
+filoplume
+filose
+filoselle
+fils
+filter
+filter's
+filterability
+filterable
+filtered
+filterer
+filtering
+filters
+filth
+filthier
+filthiest
+filthily
+filthiness
+filthy
+filtrable
+filtrate
+filtrated
+filtrates
+filtrating
+filtration
+filtration's
+filum
+fimble
+fimbria
+fimbrial
+fimbriate
+fimbriated
+fimbriates
+fimbriation
+fin
+fin's
+finable
+finagle
+finagled
+finagler
+finagles
+finagling
+final
+finale
+finale's
+finales
+finalism
+finalist
+finalists
+finality
+finalization
+finalizations
+finalize
+finalized
+finalizes
+finalizing
+finally
+finals
+finance
+financed
+finances
+financial
+financially
+financier
+financier's
+financiers
+financing
+finback
+finch
+finchley
+find
+findable
+finder
+finders
+finding
+findings
+finds
+fine
+fineable
+fined
+finely
+fineness
+finer
+finery
+fines
+finespun
+finesse
+finessed
+finessing
+finest
+finfoot
+finger
+fingerboard
+fingerbreadth
+fingered
+fingerer
+fingering
+fingerings
+fingerlike
+fingerling
+fingermark
+fingermarked
+fingermarking
+fingermarks
+fingernail
+fingernails
+fingerpost
+fingerprint
+fingerprinted
+fingerprinting
+fingerprints
+fingers
+fingerstall
+fingerstalls
+fingertip
+fingertips
+fingo
+finial
+finical
+finically
+finicalness
+finickiness
+finicking
+finicky
+fining
+finis
+finish
+finished
+finisher
+finishers
+finishes
+finishing
+finishings
+finisterre
+finitary
+finite
+finitely
+finiteness
+finites
+finitude
+fink
+Finland
+Finley
+Finley's
+finlike
+Finn
+finnan
+finned
+Finnegan
+finner
+finney
+Finnic
+finning
+Finnish
+finnmark
+Finns
+finny
+fino
+finochio
+fins
+Finsen
+Finsteraarhorn
+fiord
+Fiorello
+fiori
+Fiori
+fiorin
+fipple
+fir
+Firbank
+firdausi
+fire
+firearm
+firearm's
+firearms
+fireback
+fireball
+fireballs
+firebird
+fireboat
+firebomb
+firebox
+firebrand
+firebrat
+firebreak
+firebreaks
+firebrick
+firebug
+fireclay
+firecracker
+firecrackers
+firecrest
+fired
+firedamp
+firedog
+firedrake
+firefight
+firefighters
+firefighting
+firefights
+fireflies
+firefly
+firefly's
+fireguard
+firehouse
+firehouses
+fireless
+firelight
+firelighting
+firelock
+fireman
+firemen
+firenze
+firepan
+fireplace
+fireplace's
+fireplaces
+fireplug
+fireplugs
+firepower
+fireproof
+firer
+fireroom
+firers
+fires
+fireside
+Firestone
+firestorm
+firethorn
+firetrap
+firewall
+firewarden
+firewater
+firewood
+firework
+fireworks
+firing
+firings
+firkin
+firm
+firm's
+firma
+firmament
+firmamental
+firmed
+firmer
+firmest
+firming
+firmly
+firmness
+firms
+firmware
+firmwares
+firry
+first
+firstborn
+firstfruits
+firsthand
+firstling
+firstlings
+firstly
+firsts
+firth
+fisc
+fiscal
+fiscalization
+fiscalization's
+fiscalizations
+fiscalize
+fiscalizes
+fiscally
+fiscals
+Fischbein
+Fischbein's
+Fischer
+fish
+fishability
+fishable
+fishbolt
+fishbowl
+fished
+fisher
+fisheries
+fisherman
+fisherman's
+fishermen
+fishermen's
+fishers
+fishery
+fishes
+fishfinger
+fishgig
+fishhook
+fishier
+fishing
+Fishkill
+fishkill
+fishmeal
+fishmonger
+fishmongers
+fishnet
+fishplate
+fishplates
+fishpond
+fishskin
+fishtail
+fishway
+fishwife
+fishy
+fishyback
+Fisk
+Fiske
+Fiske's
+fissile
+fissility
+fission
+fissionability
+fissionable
+fissional
+fissioned
+fissioning
+fissions
+fissipalmate
+fissiparous
+fissiparously
+fissiparousness
+fissiped
+fissirostral
+fissure
+fissured
+fissures
+fissuring
+fist
+fisted
+fistfight
+fistful
+fistic
+fisticuff
+fisticuffs
+fistmele
+fistnote
+fists
+fistula
+fistulous
+fit
+Fitch
+Fitchburg
+fitchew
+fitful
+fitfully
+fitfulness
+fitly
+fitment
+fitness
+fits
+fitted
+fitter
+fitter's
+fitters
+fittest
+fitting
+fittingly
+fittingness
+fittings
+fittipaldi
+Fitzgerald
+Fitzpatrick
+Fitzroy
+fitzsimmons
+fiume
+five
+fivefold
+fivepenny
+fivepins
+fiver
+fives
+fix
+fixable
+fixate
+fixated
+fixates
+fixating
+fixation
+fixations
+fixative
+fixed
+fixedly
+fixedness
+fixer
+fixers
+fixes
+fixing
+fixings
+fixity
+fixture
+fixture's
+fixtures
+fixups
+Fizeau
+Fizeau's
+fizgig
+fizz
+fizzer
+fizzle
+fizzled
+fizzles
+fizzling
+fizzy
+fjord
+fjords
+FL
+flab
+flabbergast
+flabbergasted
+flabbergasting
+flabbergastingly
+flabbergasts
+flabbier
+flabbily
+flabbiness
+flabby
+flabellate
+flabellum
+flaccid
+flaccidity
+flaccidly
+flack
+flacon
+flag
+flag's
+flagellant
+flagellantism
+flagellants
+flagellar
+flagellate
+flagellated
+flagellates
+flagellating
+flagellation
+flagelliform
+flagellum
+flageolet
+flagged
+flagger
+flagging
+flaggingly
+flaggy
+flagitious
+flagitiously
+flagitiousness
+Flagler
+Flagler's
+flagman
+flagon
+flagpole
+flagpoles
+flagrance
+flagrancies
+flagrancy
+flagrant
+flagrante
+flagrantly
+flags
+flagship
+flagship's
+flagships
+flagstad
+flagstaff
+flagstone
+flail
+flailed
+flailing
+flails
+flair
+flak
+flake
+flaked
+flaker
+flakes
+flakier
+flakiness
+flaking
+flaky
+flam
+flamb
+flambeau
+flamborough
+flamboyance
+flamboyancy
+flamboyant
+flamboyantize
+flamboyantizes
+flamboyantly
+flame
+flamed
+flamelet
+flamelets
+flamen
+flamenco
+flameout
+flameproof
+flamer
+flamers
+flames
+flamethrower
+Flamig
+flaming
+flamingly
+flamingo
+flamingoes
+Flaminian
+flamininus
+flaminius
+flammability
+flammable
+flammables
+flamsteed
+flan
+flan's
+Flanagan
+flanch
+Flanders
+flange
+flanged
+flanges
+flank
+flanked
+flanker
+flankers
+flanking
+flanks
+flannel
+flannel's
+flanneled
+flannelette
+flanneling
+flannels
+flap
+flap's
+flapdoodle
+flapjack
+flapped
+flapper
+flappers
+flapping
+flappy
+flaps
+flare
+flareback
+flared
+flares
+flaring
+flaringly
+flash
+flashback
+flashbacks
+flashboard
+flashbulb
+flashbulbs
+flashcube
+flashcubes
+flashed
+flasher
+flashers
+flashes
+flashgun
+flashguns
+flashier
+flashily
+flashiness
+flashing
+flashlight
+flashlight's
+flashlights
+flashover
+flashovers
+flashtube
+flashy
+flask
+flasket
+flat
+flatbed
+flatboat
+flatcap
+flatcar
+flatette
+flatfeet
+flatfish
+flatfishes
+flatfoot
+flatfooted
+flatfoots
+flathead
+flatiron
+flatirons
+flatland
+flatlander
+flatlands
+flatlet
+flatlets
+flatling
+flatly
+flatmate
+flatmates
+flatness
+flatnesses
+flats
+flatted
+flatten
+flattened
+flattener
+flattening
+flattens
+flatter
+flattered
+flatterer
+flattering
+flatteringly
+flatters
+flattery
+flattest
+flatting
+flattish
+flattop
+flatulence
+flatulency
+flatulent
+flatulently
+flatus
+flatware
+flatways
+flatwise
+flatwork
+flatworm
+flaubert
+flaunch
+flaunt
+flaunted
+flaunting
+flauntingly
+flaunts
+flaunty
+flautist
+flavescent
+flavin
+flavine
+flavone
+flavoprotein
+flavopurpurin
+flavor
+flavor's
+flavored
+flavorer
+flavorer's
+flavorers
+flavorful
+flavorfully
+flavoring
+flavorings
+flavorless
+flavorlesses
+flavorous
+flavors
+flavorsome
+flavory
+flaw
+flawed
+flawing
+flawless
+flawlessly
+flawlessness
+flaws
+flax
+flaxen
+flaxier
+flaxman
+flaxseed
+flaxy
+flay
+flea
+flea's
+fleabag
+fleabane
+fleabite
+fleabites
+fleam
+fleapit
+fleapits
+fleas
+fleawort
+fleck
+flecked
+flecker
+flecking
+flecks
+flection
+flective
+fled
+Fledermaus
+fledermaus
+fledge
+fledged
+fledges
+fledging
+fledgling
+fledgling's
+fledglings
+fledgy
+flee
+fleece
+fleece's
+fleeced
+fleeces
+fleecier
+fleecy
+fleeing
+fleer
+fleeringly
+flees
+fleet
+fleetest
+fleeting
+fleetingly
+fleetingness
+fleetly
+fleetness
+fleets
+Fleetwood
+Fleischman
+fleischman
+Fleisher
+fleisher
+Fleming
+Flemings
+Flemish
+Flemished
+Flemishes
+Flemishing
+Flensburg
+flense
+flesh
+fleshed
+flesher
+fleshes
+fleshier
+fleshiness
+fleshing
+fleshings
+fleshly
+fleshment
+fleshpot
+fleshpots
+fleshy
+fletch
+fletched
+Fletcher
+fletcher
+Fletcherism
+Fletcherize
+Fletcherizes
+fletches
+fletching
+fletching's
+fletchings
+fleurette
+fleury
+flew
+flews
+flex
+flexed
+flexibilities
+flexibility
+flexible
+flexibly
+flexile
+flexing
+flexion
+flexitime
+flexo
+flexographic
+flexographically
+flexography
+flexor
+flexuous
+flexuously
+flexural
+flexure
+fley
+fleysome
+flibbertigibbet
+flibbertigibbety
+flick
+flicked
+flicker
+flickered
+flickering
+flickeringly
+flickery
+flicking
+flicks
+flier
+fliers
+flies
+flight
+flight's
+flightier
+flightily
+flightiness
+flightless
+flights
+flighty
+flimflam
+flimflammed
+flimflammer
+flimflamming
+flimsier
+flimsies
+flimsily
+flimsiness
+flimsy
+flinch
+flinched
+flincher
+flinches
+flinching
+flinders
+fling
+fling's
+flinger
+flinging
+flings
+flint
+flintier
+flintily
+flintiness
+flintless
+flintlike
+flintlock
+flints
+Flintshire
+flinty
+flip
+flipflop
+flippancy
+flippant
+flippantly
+flipped
+flipper
+flippers
+flipping
+flips
+flirt
+flirtation
+flirtations
+flirtatious
+flirtatiously
+flirtatiousness
+flirted
+flirter
+flirting
+flirts
+flirty
+flit
+flitch
+flite
+flits
+flitted
+flitter
+flitting
+flivver
+Flo
+Flo's
+float
+floatage
+floatation
+floated
+floater
+floaters
+floating
+floatplane
+floats
+floaty
+floc
+floccose
+flocculant
+flocculants
+flocculate
+flocculated
+flocculates
+flocculating
+flocculation
+flocculent
+flocculus
+floccus
+flock
+flocked
+flocking
+flocks
+flodden
+floe
+floes
+flog
+flogged
+flogger
+flogging
+flogs
+flong
+flood
+flooded
+flooder
+floodgate
+flooding
+floodlight
+floodlit
+floodplain
+floods
+floodwall
+floodwater
+floodwater's
+floodwaters
+floodway
+flooey
+floor
+floorage
+floorboard
+floorboards
+floored
+floorer
+flooring
+floorings
+floors
+floorwalker
+floozie
+floozies
+floozy
+flop
+flop's
+flophouse
+flophouses
+flopover
+flopovers
+flopped
+flopper
+floppers
+floppier
+floppies
+floppily
+floppiness
+flopping
+floppy
+floppy's
+flops
+flora
+floral
+floralize
+floralizes
+florally
+floreated
+Florence
+Florentine
+flores
+florescence
+florescent
+floret
+florey
+floriate
+floriated
+floriation
+floriations
+floribunda
+florican
+floricultural
+floriculturally
+floriculture
+floriculturist
+florid
+Florida
+Florida's
+Floridian
+Floridians
+floridity
+floridly
+floridness
+floriferous
+floriferously
+floriferousness
+florigen
+florigenic
+florilegium
+florin
+florio
+florist
+floristic
+floristically
+floristics
+floristry
+florists
+floruit
+flory
+flos
+floss
+flossed
+flosses
+flossier
+flossing
+flossy
+flotage
+flotation
+flotations
+flotilla
+flotillas
+flotow
+flotsam
+flounce
+flounced
+flounces
+flouncing
+flouncy
+flounder
+floundered
+floundering
+flounders
+flour
+floured
+flourish
+flourished
+flourisher
+flourishes
+flourishing
+flourishingly
+flours
+floury
+flout
+flouted
+flouter
+flouting
+flouts
+flow
+flowability
+flowage
+flowchart
+flowcharting
+flowcharts
+flowed
+flower
+flowerage
+flowerbed
+flowered
+flowerer
+floweret
+floweriness
+flowering
+flowerless
+flowerlike
+flowerpot
+flowers
+flowery
+flowing
+flowingly
+flown
+flows
+flowstone
+Floyd
+flu
+flub
+flubbed
+flubbing
+flubs
+fluctuant
+fluctuate
+fluctuated
+fluctuates
+fluctuating
+fluctuation
+fluctuations
+flue
+fluegelhorn
+fluency
+fluent
+fluently
+fluff
+fluffier
+fluffiest
+fluffiness
+fluffs
+fluffy
+Flugelhorn
+fluid
+fluidal
+fluidally
+fluidextract
+fluidic
+fluidics
+fluidity
+fluidization
+fluidization's
+fluidizations
+fluidize
+fluidized
+fluidizer
+fluidizes
+fluidizing
+fluidly
+fluidness
+fluidounce
+fluidram
+fluids
+fluke
+flukey
+flukier
+fluky
+flume
+flumed
+flumes
+fluming
+flummery
+flummox
+flump
+flumped
+flumping
+flumps
+flung
+flunk
+flunked
+flunker
+flunkeys
+flunking
+flunks
+flunky
+fluor
+fluorene
+fluoresce
+fluorescein
+fluorescence
+fluorescent
+fluorescer
+fluoresces
+fluoric
+fluoridate
+fluoridated
+fluoridates
+fluoridating
+fluoridation
+fluoridations
+fluoride
+fluorides
+fluoridization
+fluoridization's
+fluoridizations
+fluoridize
+fluoridizes
+fluorimeter
+fluorimeter's
+fluorimeters
+fluorimetric
+fluorimetry
+fluorinate
+fluorinated
+fluorinates
+fluorinating
+fluorination
+fluorinations
+fluorine
+fluorite
+fluorocarbon
+fluorometer
+fluorophore
+fluoroscope
+fluoroscopic
+fluoroscopy
+fluorosis
+fluorosulphuric
+fluorspar
+flurried
+flurries
+flurry
+flurrying
+flush
+flushable
+flushed
+flushes
+flushing
+flushness
+fluster
+flustered
+flustering
+flusters
+flute
+flute's
+fluted
+flutelike
+fluter
+flutes
+fluting
+flutist
+flutter
+flutterboard
+fluttered
+flutterer
+fluttering
+flutters
+fluttery
+fluvial
+fluviatile
+fluviomarine
+flux
+fluxed
+fluxes
+fluxion
+fluxional
+fluxmeter
+fluxmeters
+fly
+flyable
+flyaway
+flyback
+flyblow
+flyblown
+flyboat
+flyboats
+flybook
+flyby
+flybys
+flycatcher
+flycatchers
+flyer
+flyer's
+flyers
+flying
+flyleaf
+flyleaves
+flyman
+Flynn
+flyover
+flyovers
+flypaper
+flypast
+flypasts
+Flysch
+flyspeck
+flyswatter
+flyte
+flytier
+flyting
+flytrap
+flytraps
+flyway
+flyweight
+flywheel
+flywheels
+FM
+FMC
+foal
+foals
+foam
+foamed
+foamer
+foamflower
+foamier
+foaminess
+foaming
+foamless
+foams
+foamy
+fob
+fobbing
+focal
+focalization
+focalization's
+focalizations
+focalize
+focalized
+focalizes
+focalizing
+focally
+foch
+foci
+fock
+focus
+focusable
+focused
+focuser
+focuses
+focusing
+focusless
+fodder
+fodgel
+foe
+foe's
+foehn
+foeman
+foes
+foetal
+foetation
+foeticide
+foetor
+fog
+fog's
+Fogarty
+fogbound
+fogbow
+fogbows
+fogdog
+fogey
+fogeys
+fogged
+fogger
+foggest
+foggia
+foggier
+foggiest
+foggily
+fogginess
+fogging
+foggy
+foghorn
+foghorns
+fogies
+fogless
+fogs
+fogy
+fogyish
+fogyism
+foible
+foibles
+foie
+foil
+foiled
+foiling
+foils
+foilsman
+foin
+Foism
+Foison
+foist
+foisted
+foisting
+foists
+Fokine
+Fokker
+folacin
+fold
+foldable
+foldaway
+foldboat
+foldboater
+foldboating
+folded
+folder
+folderol
+folders
+folding
+foldings
+foldout
+foldouts
+folds
+Foley
+Foley's
+folia
+foliaceous
+foliage
+foliaged
+foliages
+foliar
+foliate
+foliated
+foliates
+foliating
+foliation
+foliations
+folic
+folie
+folio
+foliolate
+folios
+foliose
+foliot
+foliots
+folium
+folk
+folk's
+folkestone
+folketing
+folkish
+folkishness
+folklike
+folklore
+folkloric
+folklorish
+folklorist
+folkloristic
+folkmoot
+folks
+folksier
+folksily
+folksiness
+folksinger
+folksinger's
+folksingers
+folksinging
+folksong
+folksongs
+folksy
+folktale
+folktale's
+folktales
+folkway
+folkways
+follicle
+follicles
+follicular
+folliculate
+folliculated
+folliculin
+follies
+follow
+followed
+follower
+followers
+followership
+followeth
+following
+followings
+follows
+followup
+followup's
+followups
+folly
+folsom
+Folsom
+Fomalhaut
+Fomalhaut's
+foment
+fomentation
+fomentations
+fomented
+fomenter
+fomenting
+foments
+fond
+fonda
+fondant
+fondants
+fonder
+fondest
+fondle
+fondled
+fondler
+fondles
+fondling
+fondly
+fondness
+fonds
+fondue
+fondues
+fonseca
+font
+font's
+Fontaine
+Fontaine's
+Fontainebleau
+fontal
+fontana
+Fontana
+fontanelle
+fonteyn
+fonts
+Foochow
+food
+food's
+foodless
+foodlessness
+foods
+foodstuff
+foodstuff's
+foodstuffs
+fool
+fooled
+foolery
+foolhardily
+foolhardiness
+foolhardy
+fooling
+foolish
+foolishly
+foolishness
+foolproof
+fools
+foolscap
+foolscap's
+foot
+footage
+footages
+football
+football's
+footballed
+footballer
+footballers
+footballs
+footboard
+footboards
+footboy
+footboys
+footbridge
+footbridges
+footcandle
+footcloth
+Foote
+footed
+footer
+footers
+footfall
+footfalls
+footgear
+foothill
+foothills
+foothold
+footholds
+footing
+footings
+footle
+footled
+footler
+footles
+footless
+footlessly
+footlessness
+footlight
+footlights
+footlike
+footling
+footlocker
+footloose
+footman
+footmark
+footmen
+footnote
+footnote's
+footnotes
+footpace
+footpad
+footpads
+footpath
+footpaths
+footplate
+footplates
+footprint
+footprint's
+footprints
+footrace
+footrest
+footrests
+footrope
+footropes
+foots
+footsie
+footslog
+footslogged
+footslogger
+footslogging
+footslogs
+footsore
+footsoreness
+footstalk
+footstall
+footstep
+footsteps
+footstock
+footstool
+footstools
+footwall
+footway
+footways
+footwear
+footwork
+footworn
+footy
+foozle
+foozled
+fop
+foppery
+fopping
+foppish
+foppishly
+foppishness
+fops
+for
+fora
+forage
+foraged
+forager
+forages
+foraging
+foramen
+foraminifer
+foraminifera
+forasmuch
+foray
+foray's
+forayer
+forays
+forbade
+forbear
+forbear's
+forbearance
+forbearer
+forbearing
+forbears
+Forbes
+forbid
+forbiddance
+forbidden
+forbidder
+forbidding
+forbiddingly
+forbiddingness
+forbids
+forbode
+forbore
+forborne
+forby
+forbye
+force
+force's
+forced
+forcedly
+forcefield
+forcefield's
+forcefields
+forceful
+forcefully
+forcefulness
+forceless
+forcemeat
+forceps
+forcepslike
+forcer
+forces
+forcible
+forcibleness
+forcibly
+forcing
+ford
+fordable
+Fordham
+fordo
+fordone
+fords
+fore
+forearm
+forearm's
+forearmed
+forearms
+forebear
+forebears
+forebode
+foreboded
+foreboder
+forebodes
+foreboding
+forebodingly
+forebodingness
+forebodings
+forebrain
+forecast
+forecasted
+forecaster
+forecasters
+forecasting
+forecastle
+forecastles
+forecasts
+foreclose
+foreclosed
+forecloses
+foreclosing
+foreclosure
+forecourse
+forecourt
+forecourts
+foredeck
+foredo
+foredoom
+foredoomed
+forefather
+forefather's
+forefathers
+forefeel
+forefeet
+forefend
+forefinger
+forefinger's
+forefingers
+forefoot
+forefront
+foregather
+forego
+foregoer
+foregoes
+foregoing
+foregone
+foreground
+foregrounds
+foregut
+forehand
+forehanded
+forehandedly
+forehandedness
+forehead
+forehead's
+foreheads
+forehock
+foreign
+foreigner
+foreigners
+foreignism
+foreignization
+foreignization's
+foreignizations
+foreignize
+foreignizes
+foreignly
+foreignness
+foreigns
+forejudge
+forejudgment
+forejudgment's
+forejudgments
+foreknow
+foreknowledge
+foreknown
+forelady
+foreland
+foreleg
+forelimb
+forelock
+foreman
+foremanship
+foremast
+foremasts
+foremen
+foremost
+foremother
+forename
+forenamed
+forenames
+forenoon
+forensic
+forensical
+forensically
+forensics
+foreordain
+foreordained
+foreordaining
+foreordains
+foreordination
+forepart
+forepassed
+forepast
+forepaw
+forepaws
+forepeak
+foreplay
+forequarter
+forequarters
+forereach
+forerun
+forerunner
+forerunners
+foresaid
+foresail
+foresaw
+foresee
+foreseeable
+foreseeing
+foreseen
+foreseer
+foresees
+foreshadow
+foreshadowed
+foreshadower
+foreshadowing
+foreshadows
+foreshank
+foresheet
+foreshock
+foreshore
+foreshorten
+foreshortened
+foreshortening
+foreshortens
+foreshow
+foreside
+foresight
+foresighted
+foresightedly
+foresightedness
+foresightful
+foreskin
+forespeak
+forespent
+forest
+forestage
+forestal
+forestall
+forestalled
+forestaller
+forestalling
+forestallment
+forestalls
+forestation
+forestay
+forestaysail
+forested
+forester
+foresters
+forestial
+forestry
+forests
+foreswear
+foresworn
+foretaste
+foretell
+foretellable
+foreteller
+foretelling
+foretells
+forethought
+forethought's
+forethoughtfully
+forethoughtfulness
+forethougtful
+foretime
+foretoken
+foretold
+foretooth
+foretop
+foretriangle
+forever
+forevermore
+foreverness
+forewarn
+forewarned
+forewarner
+forewarning
+forewarnings
+forewarns
+forewent
+forewind
+forewing
+forewoman
+foreword
+foreworn
+foreyard
+forfar
+forfeit
+forfeitable
+forfeited
+forfeiter
+forfeiters
+forfeiting
+forfeits
+forfeiture
+forfeitures
+forfend
+forfended
+forfending
+forfends
+forficate
+forgat
+forgather
+forgave
+forge
+forgeability
+forgeable
+forged
+forger
+forgeries
+forgers
+forgery
+forgery's
+forges
+forget
+forgetful
+forgetfully
+forgetfulness
+forgetive
+forgets
+forgettable
+forgettably
+forgetter
+forgetting
+forging
+forgivable
+forgivably
+forgive
+forgiveable
+forgiveably
+forgiven
+forgiveness
+forgiver
+forgives
+forgiving
+forgivingly
+forgivingness
+forgo
+forgoer
+forgoes
+forgoing
+forgone
+forgot
+forgotten
+forint
+forjudge
+fork
+forked
+forker
+forkful
+forkier
+forking
+forklift
+forklike
+forks
+forky
+forlorn
+forlornly
+forlornness
+form
+forma
+formability
+formable
+formal
+formaldehyde
+formalin
+formalism
+formalism's
+formalisms
+formalist
+formalistic
+formalistically
+formalities
+formality
+formalizable
+formalization
+formalization's
+formalizations
+formalize
+formalized
+formalizer
+formalizers
+formalizes
+formalizing
+formally
+formalness
+formals
+formant
+formants
+format
+formate
+formated
+formates
+formating
+formation
+formation's
+formational
+formations
+formative
+formatively
+formativeness
+formats
+formatted
+formatter
+formatter's
+formatters
+formatting
+forme
+formed
+former
+formerly
+formers
+formfeed
+formfeeds
+formfitting
+formful
+formic
+Formica
+formicary
+formicate
+formication
+formidability
+formidable
+formidableness
+formidably
+forming
+formless
+formlessly
+formlessness
+Formosa
+Formosan
+forms
+formula
+formula's
+formulae
+formulaic
+formulaically
+formularization
+formularizations
+formularize
+formularized
+formularizer
+formularizes
+formularizing
+formulary
+formulas
+formulate
+formulated
+formulates
+formulating
+formulation
+formulations
+formulator
+formulator's
+formulators
+formulism
+formulization
+formulizations
+formulize
+formulized
+formulizes
+formulizing
+formwork
+formyl
+Fornax
+fornenst
+fornicate
+fornicated
+fornicates
+fornicating
+fornication
+fornications
+fornicator
+fornicators
+fornix
+forrader
+forrarder
+Forrester
+forsake
+forsaken
+forsakes
+forsaking
+forsee
+forseen
+forsook
+forsooth
+forspeak
+forspent
+forster
+forsterite
+forswear
+forswears
+forswore
+forsworn
+Forsythe
+Forsythe's
+Forsythia
+fort
+fort's
+fortaleza
+fortalice
+forte
+fortepiano
+fortes
+Fortescue
+Fortescue's
+forth
+forthcome
+forthcoming
+forthright
+forthrightly
+forthrightness
+forthwith
+fortier
+forties
+fortieth
+fortification
+fortifications
+fortified
+fortifier
+fortifies
+fortify
+fortifying
+fortin
+fortiori
+fortis
+fortissimo
+fortitude
+fortman
+fortnight
+fortnightly
+Fortran
+Fortran's
+fortress
+fortress's
+fortresses
+forts
+fortuitism
+fortuitous
+fortuitously
+fortuitousness
+fortuity
+fortuna
+fortunate
+fortunately
+fortunateness
+fortunates
+fortune
+fortune's
+fortuned
+fortunes
+fortuning
+forty
+fortyfold
+forum
+forum's
+forumize
+forumizes
+forums
+forward
+forwarded
+forwarder
+forwarders
+forwarding
+forwardly
+forwardness
+forwards
+forwent
+forwhy
+forworn
+forzando
+fosbury
+Foss
+fossa
+fossate
+fosse
+fossette
+fossick
+fossil
+fossiled
+fossiliferous
+fossilizable
+fossilizable's
+fossilizables
+fossilization
+fossilization's
+fossilizations
+fossilize
+fossilized
+fossilizes
+fossilizing
+fossils
+fossorial
+foster
+fosterage
+fostered
+fosterer
+fostering
+fosterite
+fosterling
+fosterlings
+fosters
+fotheringhay
+fou
+foucault
+foucquet
+foudroyant
+fought
+foul
+foulard
+fouled
+fouler
+foulest
+fouling
+foully
+foulmouth
+foulmouthed
+foulness
+fouls
+found
+foundation
+foundation's
+foundational
+foundationally
+foundationless
+foundations
+founded
+founder
+foundered
+foundering
+founderous
+founders
+founding
+foundling
+foundlings
+foundress
+foundries
+foundrous
+foundry
+foundry's
+founds
+fount
+fount's
+fountain
+fountain's
+fountainhead
+fountains
+founts
+Fouquet
+four
+fourdrinier
+fourfold
+Fourier
+Fourier's
+Fourierism
+Fournet
+Fournier
+fourpence
+fourpenny
+fours
+fourscore
+foursome
+foursomes
+foursquare
+fourteen
+fourteener
+fourteens
+fourteenth
+fourth
+fourthly
+fourths
+fovea
+foveola
+fowey
+fowl
+fowler
+fowliang
+fowling
+fowls
+fox
+fox's
+foxed
+foxes
+foxfire
+foxglove
+Foxhall
+foxhole
+foxholes
+foxhound
+foxier
+foxily
+foxiness
+foxing
+foxtail
+foxtrot
+foxtrot's
+foxtrots
+foxy
+foyboat
+foyer
+FPC
+FPS
+fracas
+fracases
+fractal
+fractal's
+fractals
+fracted
+fraction
+fraction's
+fractional
+fractionalization
+fractionalize
+fractionalized
+fractionalizes
+fractionalizing
+fractionally
+fractionate
+fractionated
+fractionates
+fractionating
+fractionation
+fractionations
+fractionator
+fractionators
+fractioned
+fractioning
+fractionization
+fractionization's
+fractionizations
+fractionize
+fractionizes
+fractions
+fractious
+fractiously
+fractiousness
+fractocumulus
+fractostratus
+fracture
+fractured
+fractures
+fracturing
+frae
+fraenum
+frag
+fragged
+fragging
+fragile
+fragilely
+fragility
+fragment
+fragmental
+fragmentally
+fragmentarily
+fragmentariness
+fragmentary
+fragmentate
+fragmentated
+fragmentates
+fragmentating
+fragmentation
+fragmentations
+fragmented
+fragmenting
+fragmentize
+fragmentized
+fragmentizer
+fragmentizes
+fragmentizing
+fragments
+fragonard
+fragrance
+fragrance's
+fragrances
+fragrancy
+fragrant
+fragrantly
+frags
+frail
+frailer
+frailest
+frailly
+frailness
+frailties
+frailty
+fraise
+fraktur
+framable
+frambesia
+framboesia
+frame
+frame's
+frameable
+framed
+framer
+framers
+frames
+framework
+framework's
+frameworks
+framing
+framings
+Fran
+Fran's
+franc
+franca
+francaise
+Francaise
+France
+France's
+Frances
+Francesca
+francesca
+Francescatti
+Francesco
+francesco
+franchise
+franchise's
+franchised
+franchisee
+franchiser
+franchises
+franchising
+franchisor
+Francie
+francie
+Francine
+Francine's
+Francis
+Franciscan
+Franciscans
+Francisco
+francium
+Francize
+Francizes
+Franck
+Franco
+Francois
+francois
+Francoise
+Francoise's
+francolin
+Franconia
+Franconian
+Francophile
+Francophobe
+Francophone
+francs
+franger
+frangibility
+frangible
+frangipane
+frangipani
+Franglais
+frank
+frankalmoign
+franked
+Frankel
+Frankel's
+Frankenstein
+franker
+frankest
+Frankford
+Frankfort
+Frankfurt
+frankfurter
+frankfurters
+Frankie
+frankincense
+franking
+Frankish
+franklin
+Franklinization
+Franklinization's
+Franklinizations
+frankly
+frankness
+frankpledge
+franks
+franny
+Franny
+frantic
+frantically
+franticly
+franticness
+Franz
+frap
+frappe
+frapping
+Fraser
+Fraser's
+frass
+frat
+fratchy
+frater
+fraternal
+fraternalism
+fraternally
+fraternities
+fraternity
+fraternity's
+fraternization
+fraternization's
+fraternizations
+fraternize
+fraternized
+fraternizer
+fraternizers
+fraternizes
+fraternizing
+fratricidal
+fratricide
+Frau
+fraud
+fraud's
+frauds
+fraudulence
+fraudulent
+fraudulently
+fraudulentness
+Frauenfeld
+fraught
+fraughted
+fraughting
+fraughts
+Fraunhofer
+fraxinella
+fray
+frayed
+fraying
+Frayne
+frayne
+frays
+Frazer
+Frazier
+Frazil
+frazzle
+frazzled
+frazzles
+frazzling
+freak
+freak's
+freakier
+freakish
+freakishly
+freakishness
+freaks
+freaky
+Freccia
+freckle
+freckled
+freckles
+freckling
+freckly
+Fred
+Freda
+Freddie
+Freddy
+Freddy's
+Frederic
+Fredericia
+Frederick
+Fredericks
+Fredericksburg
+Fredericksburg's
+Frederico
+Fredericton
+Fredericton's
+Frederiksberg
+Fredholm
+Fredholm's
+Fredrick
+fredrick
+Fredrickson
+Fredrikstad
+free
+freebie
+freeboard
+freeboot
+freebooter
+freebooters
+freeborn
+freed
+freedman
+freedmen
+freedom
+freedom's
+freedomites
+freedoms
+freedwoman
+freehand
+freehanded
+freehandedly
+freehearted
+freeheartedly
+freehold
+freeholder
+freeholders
+freeing
+freeings
+freelance
+freeload
+freeloader
+freely
+freeman
+freemartin
+freemason
+Freemason
+freemasonry
+freemen
+freeness
+Freeport
+freer
+frees
+freesheet
+freesheets
+Freesia
+freest
+freestanding
+freestone
+freestyle
+freethink
+freethinker
+freethinkers
+freethinking
+Freetown
+Freetown's
+freeway
+freeway's
+freeways
+freewheel
+freewheeled
+freewheeler
+freewheelers
+freewheeling
+freewheelingness
+freewheels
+freewill
+freeze
+freezer
+freezers
+freezes
+freezing
+Freiburg
+Freida
+freida
+freight
+freightage
+freighted
+freighter
+freighters
+freighting
+freightliner
+freights
+fremantle
+fremitus
+French
+French's
+frenchification
+frenchify
+Frenchize
+Frenchizes
+Frenchman
+Frenchmen
+Frenchy
+frenetic
+frenetically
+Freni
+frenulum
+frenum
+frenzied
+frenziedly
+frenzies
+frenzy
+frenzying
+freon
+frequence
+frequencies
+frequency
+frequent
+frequentation
+frequentations
+frequentative
+frequentatives
+frequented
+frequenter
+frequenters
+frequenting
+frequently
+frequentness
+frequents
+fresco
+Frescobaldi
+frescoed
+frescoes
+frescoing
+frescos
+fresh
+freshen
+freshened
+freshener
+fresheners
+freshening
+freshens
+fresher
+freshers
+freshest
+freshet
+freshly
+freshman
+freshmen
+freshness
+freshwater
+Fresnel
+Fresno
+fret
+fretful
+fretfully
+fretfulness
+frets
+fretted
+fretting
+fretwork
+Freud
+Freudian
+Frey
+Freya
+Freya's
+Freytag
+Fri
+friability
+friable
+friableness
+friar
+friar's
+friarbird
+friarly
+friars
+friary
+fribble
+fribbled
+fribbles
+fribbling
+Fribourg
+Fricandeau
+fricasee
+fricassee
+frication
+fricative
+fricatives
+Frick
+friction
+friction's
+frictional
+frictionally
+frictionize
+frictionizes
+frictionless
+frictionlessly
+frictions
+Friday
+Friday's
+Fridays
+fridge
+fridge's
+fridges
+fried
+Friedman
+Friedrich
+Friedrich's
+friend
+friend's
+friendless
+friendlessness
+friendlier
+friendlies
+friendliest
+friendlily
+friendliness
+friendly
+friends
+friendship
+friendship's
+friendships
+frier
+fries
+Friesian
+Friesland
+Friesland's
+frieze
+frieze's
+friezes
+frig
+frigate
+frigate's
+frigates
+Frigg
+Frigga
+frigging
+fright
+frighten
+frightened
+frightening
+frighteningly
+frightens
+frightful
+frightfully
+frightfulness
+frigid
+Frigidaire
+frigidity
+frigidly
+frigidness
+frigorific
+Frijol
+frill
+frill's
+frilled
+frillery
+frills
+frilly
+fringe
+fringed
+fringes
+fringier
+fringilline
+fringing
+fringy
+frippery
+frippet
+Frisbee
+Frisch
+Frisco
+Frisian
+frisk
+frisked
+frisker
+frisket
+friskier
+friskily
+friskiness
+frisking
+frisks
+frisky
+frisson
+frissons
+frit
+fritillary
+frito
+Frito
+fritted
+fritter
+fritterer
+fritters
+fritting
+Fritz
+Friuli
+Friulian
+frivol
+frivoled
+frivoler
+frivoling
+frivolity
+frivolous
+frivolously
+frivolousness
+Frizette
+frizz
+frizzier
+frizzily
+frizziness
+frizzle
+frizzled
+frizzles
+frizzlier
+frizzling
+frizzly
+frizzy
+fro
+Frobisher
+frock
+frock's
+frocked
+frocking
+frocks
+froe
+froebel
+frog
+frog's
+frogfish
+frogged
+frogging
+froghopper
+frogman
+frogmarch
+frogmen
+frogmouth
+frogs
+frogspawn
+froissart
+frolic
+frolick
+frolicked
+frolicking
+frolicks
+frolics
+frolicsome
+frolicsomely
+frolicsomeness
+from
+frome
+Froment
+fromenty
+fromm
+frond
+frond's
+fronde
+fronded
+frondescence
+frondeur
+frondose
+frondosely
+fronds
+frons
+front
+frontage
+frontal
+frontality
+frontally
+fronted
+frontenac
+frontier
+frontier's
+frontiers
+frontiersman
+frontiersmen
+fronting
+frontispiece
+frontispieces
+frontless
+frontlet
+frontogenesis
+frontolysis
+fronton
+frontrunner
+fronts
+frontwards
+frore
+frost
+Frostbelt
+Frostbelt's
+frostbite
+frostbiting
+frostbitten
+frosted
+frostier
+frostily
+frostiness
+frosting
+frosts
+frostwork
+frosty
+froth
+frothier
+frothily
+frothiness
+frothing
+froths
+frothy
+frottage
+froude
+froufrou
+frow
+froward
+frowardly
+frowardness
+frown
+frowned
+frowner
+frowning
+frowningly
+frowns
+frowsier
+frowst
+frowstier
+frowsty
+frowsy
+frowzier
+frowzy
+froze
+frozen
+frozenly
+frozenness
+fructiferous
+fructification
+fructifications
+fructify
+fructose
+fructose's
+fructoses
+fructuous
+fructuously
+Fruehauf
+Fruehauf's
+frugal
+frugality
+frugally
+frugivorous
+fruit
+fruit's
+fruitage
+fruitarian
+fruitcake
+fruited
+fruiter
+fruiterer
+fruitful
+fruitfully
+fruitfulness
+fruitier
+fruition
+fruitless
+fruitlessly
+fruitlessness
+fruitlet
+fruits
+fruity
+frumentaceous
+frumenty
+frump
+frumpier
+frumpish
+frumps
+frumpy
+frunze
+frustrate
+frustrated
+frustrater
+frustrates
+frustrating
+frustratingly
+frustration
+frustrations
+frustule
+frustum
+frutescent
+fry
+Frye
+Frye's
+fryer
+frying
+FSF
+FSF'S
+Ft
+ft
+FTC
+ftp
+FTP
+ftper
+ftpers
+ftping
+ftpings
+ftps
+fuad
+fubsy
+Fuchs
+fuchsia
+fuchsin
+fuck
+fuck's
+fucked
+fucker
+fucker's
+fuckers
+fucking
+fucks
+fuckwit
+fucoid
+fucose
+fucus
+fuddle
+fuddled
+fuddles
+fuddling
+fudge
+fudged
+fudges
+fudging
+Fuegian
+fuel
+fueled
+fueler
+fuelers
+fueling
+fuelizer
+fuelizer's
+fuelizers
+fuels
+fugacious
+fugacity
+fugal
+fugally
+fugard
+fugato
+fugger
+fugio
+fugitive
+fugitive's
+fugitively
+fugitiveness
+fugitives
+fugue
+fuguist
+Fuji
+Fujitsu
+Fujitsu's
+fukien
+fukuda
+fukuoka
+fukushima
+fula
+fulani
+Fulbright
+fulbright
+Fulbright's
+Fulbrights
+fulcra
+fulcrum
+fulfill
+fulfilled
+fulfiller
+fulfilling
+fulfillment
+fulfillment's
+fulfillments
+fulfills
+fulgent
+fulgently
+fulgurant
+fulgurate
+fulgurated
+fulgurates
+fulgurating
+fulguration
+fulgurations
+fulgurite
+fulgurous
+Fulham
+fuliginous
+fuliginously
+full
+fullback
+fullbacking
+fuller
+Fullerton
+fullest
+fullmouthed
+fullness
+fullword
+fullword's
+fullwords
+fully
+fulmar
+fulminant
+fulminate
+fulminated
+fulminates
+fulminating
+fulmination
+fulminations
+fulminator
+fulminators
+fulminic
+fulminous
+fulness
+fulsome
+fulsomely
+fulsomeness
+Fulton
+Fulton's
+fulvous
+fum
+fumarate
+fumaric
+fumarole
+fumatorium
+fumatory
+fumble
+fumbled
+fumbler
+fumbles
+fumbling
+fumblingly
+fume
+fumed
+fumes
+fumigant
+fumigate
+fumigated
+fumigates
+fumigation
+fumigations
+fumigator
+fumigators
+fuming
+fumitory
+fumy
+fun
+funambulist
+funchal
+function
+function's
+functional
+functionalism
+functionalist
+functionalistic
+functionalists
+functionalities
+functionality
+functionalize
+functionalizes
+functionally
+functionals
+functionary
+functioned
+functioning
+functionize
+functionizes
+functionless
+functions
+functor
+functor's
+functorial
+functors
+fund
+fundament
+fundamental
+fundamentalism
+fundamentalist
+fundamentalist's
+fundamentalistic
+fundamentalists
+fundamentally
+fundamentals
+funded
+funder
+funders
+fundi
+funding
+fundraiser
+fundraiser's
+fundraisers
+fundraising
+funds
+fundus
+fundy
+funeral
+funeral's
+funeralize
+funeralizes
+funerals
+funerary
+funereal
+funereally
+funfair
+fungal
+fungi
+fungibility
+fungible
+fungicidal
+fungicidally
+fungicide
+fungicides
+fungiform
+fungistat
+fungo
+fungoes
+fungoid
+fungous
+fungus
+funguses
+funicle
+funicular
+funiculus
+funigating
+funk
+funkier
+funkiness
+funky
+funnel
+funneled
+funneler
+funnelform
+funneling
+funnels
+funnier
+funnies
+funniest
+funnily
+funniness
+funning
+funny
+funnyman
+fur
+fur's
+furan
+furbearer
+furbelow
+furbish
+furbisher
+furbishes
+furbishing
+furcate
+furcated
+furcately
+furcates
+furcating
+furcation
+furcations
+furcula
+furcular
+furfur
+furfuraceous
+furfural
+furfuraldehyde
+furfuran
+furies
+furioso
+furious
+furiouser
+furiously
+furiousness
+furl
+furled
+furless
+furlong
+furlongs
+furlough
+furloughed
+furloughs
+Furman
+Furman's
+furmenty
+furmity
+furnace
+furnace's
+furnaced
+furnaces
+furnacing
+furness
+furnish
+furnished
+furnisher
+furnishers
+furnishes
+furnishing
+furnishings
+furniture
+furnivall
+furor
+furor's
+furors
+furphy
+furred
+furrier
+furriers
+furriery
+furring
+furrow
+furrowed
+furrowing
+furrows
+furry
+furs
+further
+furtherance
+furthered
+furtherer
+furtherest
+furthering
+furthermore
+furthermost
+furthers
+furthest
+furtive
+furtively
+furtiveness
+furuncle
+furuncular
+furunculosis
+furunculous
+fury
+fury's
+furze
+fusain
+fuscous
+fuse
+fused
+fusee
+fusee's
+fusees
+fuselage
+fuselages
+fuses
+fushih
+fushun
+fusibility
+fusible
+fusiform
+fusil
+fusile
+fusileer
+fusilier
+fusillade
+fusillades
+fusing
+fusion
+fusionism
+fusionist
+fusions
+fuss
+fussbudget
+fussbudgety
+fusser
+fussier
+fussily
+fussiness
+fussing
+fusspot
+fussy
+fustanella
+fustian
+fustians
+fustic
+fustigate
+fustigated
+fustigates
+fustigating
+fustigation
+fustigations
+fustily
+fustiness
+fusty
+futile
+futilely
+futileness
+futilitarian
+futilitarianism
+futility
+futilize
+futilizes
+futtock
+Futuna
+future
+future's
+futureless
+futures
+futurism
+futurist
+futuristic
+futuristically
+futurists
+futurity
+futurize
+futurizes
+futurology
+fuzz
+fuzzed
+fuzzier
+fuzziest
+fuzzily
+fuzziness
+fuzzy
+fyke
+fylde
+fylfot
+fyn
+fyrd
+Fyzabad
+g's
+GA
+gab
+gabar
+gabardine
+gabardines
+gabber
+gabbier
+gabbing
+gabble
+gabbled
+gabbler
+gabbles
+gabbling
+gabbro
+gabby
+gabelle
+gaberdine
+gaberlunzie
+Gaberones
+gabfest
+gabfests
+gabion
+gabionade
+gable
+gabled
+gabler
+gables
+gablet
+gabo
+Gabon
+Gabon's
+gabor
+gaborone
+Gabriel
+Gabrielle
+gaby
+gad
+gadabout
+gadabouts
+Gadarene
+gaddafi
+gadded
+gadder
+gadding
+gadfly
+gadget
+gadget's
+gadgeteer
+gadgeteers
+gadgetry
+gadgets
+gadgety
+gadhelic
+gadid
+gadoid
+gadolinite
+gadolinium
+gadroon
+gadsden
+gadwall
+gadzooks
+gaea
+gaekwar
+Gael
+Gaelic
+Gaelicization
+Gaelicization's
+Gaelicizations
+Gaelicize
+Gaelicizes
+Gaeltacht
+gaff
+gaffe
+gaffer
+gaffes
+gaffs
+gaffsail
+gag
+gaga
+Gagarin
+gagauzi
+gage
+gaged
+gager
+gages
+gagged
+gagger
+gagging
+gaggle
+gaging
+gagman
+gagmen
+gags
+gagster
+gagsters
+gagwriter
+gagwriters
+gahnite
+Gaia
+gaieties
+gaiety
+gaikwar
+Gail
+gaillard
+gaillardia
+gaily
+gain
+gained
+gainer
+gainers
+Gaines
+Gainesville
+gainful
+gainfully
+gainfulness
+gaingiving
+gaining
+gainings
+gainless
+gainlessness
+gainly
+gains
+gainsay
+gainsayer
+Gainsborough
+gaiseric
+gait
+gaited
+gaiter
+gaiters
+Gaithersburg
+gaits
+gaitskell
+gaius
+gal
+gala
+galactagogue
+galactic
+galactometer
+galactopoietic
+galactopyranose
+galactopyranoside
+galactopyranosides
+galactopyranosyl
+galactose
+Galago
+galah
+Galahad
+galahad
+galangal
+galantine
+galanty
+Galapagos
+galashiels
+galata
+Galatea
+Galatia
+Galatia's
+galatians
+galavant
+galaxies
+galaxy
+galaxy's
+galba
+galbanum
+galbraith
+Galbreath
+gale
+galea
+Galen
+galen
+Galen's
+galena
+Galenic
+Galenical
+Galenism
+galenite
+gales
+Galibi
+Galician
+Galilean
+Galilee
+Galileo
+galileo
+Galileo's
+galimatias
+galingale
+galiot
+galipot
+gall
+Galla
+Gallagher
+Gallagher's
+gallant
+gallantize
+gallantizes
+gallantly
+gallantry
+gallants
+gallberry
+gallbladder
+galle
+galleass
+galled
+galleon
+galleons
+galleried
+galleries
+gallery
+gallet
+galley
+galley's
+galleys
+gallfly
+gallia
+galliambic
+galliard
+Gallic
+Gallican
+Gallicanism
+gallice
+Gallicism
+Gallicization
+Gallicize
+Gallicized
+Gallicizes
+Gallicizing
+gallied
+galligaskins
+gallimaufry
+gallinacean
+gallinaceous
+gallinas
+galling
+gallingly
+gallinule
+galliot
+gallipoli
+gallipot
+gallium
+gallivant
+gallivanted
+gallivanting
+gallivants
+galliwasp
+gallnut
+galloglass
+gallon
+gallon's
+gallonage
+gallons
+galloon
+galloot
+gallop
+gallopade
+galloped
+galloper
+gallopers
+galloping
+gallops
+gallous
+gallow
+Galloway
+gallows
+gallowses
+galls
+gallstone
+gallstones
+Gallup
+gallus
+galluses
+Galois
+galoot
+galop
+galore
+galosh
+galoshed
+galoshes
+galoshing
+gals
+galsworthy
+Galt
+Galt's
+Galton
+galumph
+galvani
+galvanic
+galvanically
+galvanism
+galvanization
+galvanization's
+galvanizations
+galvanize
+galvanized
+galvanizer
+galvanizers
+galvanizes
+galvanizing
+galvanometer
+galvanometer's
+galvanometers
+galvanometric
+galvanoscope
+galvanostat
+galvanotropism
+Galveston
+Galvin
+Galvin's
+galvo
+Galway
+Galway's
+Galwegian
+galyak
+gam
+gama
+gamba
+gambado
+Gambeson
+Gambetta
+Gambia
+Gambia's
+Gambier
+gambit
+gambits
+gamble
+gambled
+gambler
+gamblers
+gambles
+gambling
+Gamboge
+gambol
+gamboled
+gamboling
+gambols
+gambrel
+gambrinus
+game
+gamecock
+gamed
+gamekeeper
+gamekeepers
+gamelan
+gamely
+gameness
+games
+gamesman
+gamesmanship
+gamesome
+gamesomely
+gamesomeness
+gamester
+gametangium
+gamete
+gamete's
+gametes
+gametic
+gametically
+gametocyte
+gametogenesis
+gametophore
+gametophyte
+gamey
+gamic
+gamier
+gamily
+gamin
+gamine
+gaminess
+gaming
+gamma
+gammadion
+gammas
+gammer
+gamming
+gammon
+gamogenesis
+gamopetalous
+gamophyllous
+gamosepalous
+gamp
+gamut
+gamy
+gan
+gance
+gand
+Ganda
+gandalf
+gander
+gandhi
+Gandhi
+Gandhi's
+Gandhian
+Gandhiism
+gandy
+gandzha
+ganesa
+gang
+gang's
+Ganga
+gangbang
+ganger
+Ganges
+gangland
+ganglier
+gangling
+ganglion
+ganglioside
+gangliosides
+gangly
+gangplank
+gangplow
+gangrel
+gangrene
+gangrened
+gangrenes
+gangrening
+gangrenous
+gangs
+gangster
+gangster's
+gangsterism
+gangsters
+gangtok
+gangue
+gangway
+gangways
+ganister
+ganja
+gannet
+Gannett
+Gannett's
+ganof
+ganoid
+gansey
+gantlet
+gantries
+gantry
+Ganymede
+GAO
+gap
+gap's
+gape
+gaped
+gaper
+gapes
+gapeworm
+gaping
+gapingly
+gapped
+gapping
+gappy
+gaps
+gar
+garage
+garaged
+garageman
+garagemen
+garages
+garaging
+garam
+Garamond
+garand
+garb
+garbage
+garbage's
+garbaged
+garbages
+garbaging
+garbanzo
+garbed
+garble
+garbled
+garbler
+garbles
+garbling
+garbo
+garboard
+garboil
+Garcia
+gard
+garda
+gardant
+garde
+garden
+gardened
+gardener
+gardeners
+gardenful
+gardenia
+gardenias
+gardening
+gardenize
+gardenizes
+gardens
+garderobe
+gardiner
+Gardner
+Garfield
+garfish
+Garfunkel
+garganey
+Gargantua
+gargantuan
+garget
+gargle
+gargled
+gargles
+gargling
+gargoyle
+gargoyled
+gargoyles
+Garibaldi
+garish
+garishly
+garishness
+garland
+garlanded
+garlands
+garlic
+garlicky
+garlics
+garment
+garment's
+garmented
+garmenting
+garments
+garner
+garnered
+garnering
+garners
+garnet
+garnett
+Garnett
+garnierite
+garnish
+garnishable
+garnished
+garnishee
+garnishees
+garnishes
+garnishment
+garnishments
+garniture
+garnitures
+garonne
+garotte
+garpike
+garret
+garrets
+Garrett
+garrick
+garrison
+garrisoned
+Garrisonian
+garrisoning
+garrisons
+garrote
+garroted
+garroter
+garrotes
+garroting
+garrots
+garrulity
+garrulous
+garrulously
+garrulousness
+Garry
+Garrya
+garter
+garter's
+gartered
+gartering
+garters
+Garth
+garth
+Garth's
+Garvey
+Gary
+Gary's
+gas
+gas's
+gasbag
+Gascon
+gasconade
+Gascony
+gaselier
+gaseous
+gaseously
+gaseousness
+gases
+gash
+gash's
+gashed
+gashes
+gashing
+gasholder
+gashouse
+gasification
+gasifications
+gasified
+gasifier
+gasifiers
+gasifies
+gasiform
+gasify
+gasifying
+gaskell
+gasket
+gaskets
+gaskin
+gaslight
+gaslighted
+gaslights
+gaslit
+gasman
+gasogene
+gasohol
+gasolene
+gasolier
+gasoline
+gasolines
+gasolinic
+gasometer
+gasometer's
+gasometers
+gasometry
+gasp
+Gaspar
+gasped
+Gaspee
+Gaspee's
+gasper
+gaspers
+gasping
+gaspingly
+gasps
+gassed
+gasser
+gassers
+gasses
+Gasset
+gasset
+gassiness
+gassing
+gassings
+gassy
+gast
+gasteropod
+gastight
+gastightness
+gastness
+Gaston
+gastral
+gastralgia
+gastrectomy
+gastric
+gastrin
+gastritis
+gastroenteric
+gastroenteritis
+gastroenterology
+gastroenterostomy
+gastrogenic
+gastrogenous
+gastrointestinal
+gastrolith
+gastrology
+gastronome
+gastronomes
+gastronomic
+gastronomical
+gastronomically
+gastronomist
+gastronomy
+gastropod
+gastroscope
+gastrostomy
+gastrotomy
+gastrotrich
+gastrovascular
+gastrula
+gastrulate
+gastrulation
+gasworker
+gasworks
+gat
+gate
+gated
+gatefold
+gatehouse
+gatekeep
+gatekeeper
+gatekeeper's
+gatekeepers
+gatepost
+gates
+Gates
+gateshead
+gateway
+gateway's
+gateways
+gath
+Gatha
+gather
+gathered
+gatherer
+gatherers
+gathering
+gatherings
+gathers
+gating
+Gatlinburg
+gatling
+gator
+Gatsby
+gatsby
+gatt
+gauche
+gauchely
+gaucheness
+gaucherie
+gaucheries
+Gaucho
+gaud
+gauded
+gaudery
+gaudier
+gaudies
+gaudily
+gaudiness
+gauding
+gauds
+gaudy
+gauffer
+gauge
+gaugeable
+gaugeably
+gauged
+gaugeing
+gauger
+gauges
+gauging
+Gauguin
+gauhati
+Gaul
+Gaulish
+Gaulle
+Gaulle's
+Gaullism
+Gaullist
+Gaultheria
+gaum
+gaumless
+gaums
+gaunt
+gauntlet
+gauntleted
+Gauntley
+gauntley
+gauntly
+gauntness
+gauntry
+gaup
+gaur
+gauss
+gausses
+Gaussian
+gaussmeter
+Gautama
+gautama
+gautier
+gauze
+gauzed
+gauzelike
+gauzes
+gauzily
+gauziness
+gauzing
+gauzy
+gavage
+gave
+gavel
+gaveled
+gaveler
+gaveling
+gavial
+Gavin
+gavotte
+gavottes
+gawk
+gawker
+gawkier
+gawkily
+gawkish
+gawkishly
+gawkishness
+gawks
+gawky
+gawp
+gay
+gaya
+gayer
+gayest
+gayety
+Gaylor
+Gaylord
+gayly
+gayness
+Gaynor
+gayomart
+Gaza
+gazankulu
+gaze
+gazebo
+gazebo's
+gazebos
+gazed
+gazehound
+gazelle
+gazelles
+gazer
+gazers
+gazes
+gazette
+gazetted
+gazetteer
+gazetteers
+gazettes
+gazetting
+gaziantep
+gazing
+gazpacho
+gazpacho's
+gazump
+GCD
+gdynia
+GE
+gean
+geanticline
+gear
+gearbox
+geared
+gearing
+gearless
+gears
+gearshift
+gearwheel
+Geary
+geary
+geber
+gec
+gecko
+gedact
+gedanken
+Gedda
+gee
+geegaw
+geek
+geek's
+geeks
+geelong
+geese
+geest
+geezer
+gefilte
+Gegenschein
+Gehenna
+gehlenite
+Gehrig
+gehrig
+Geiger
+Geigy
+Geigy's
+Geisel
+geisha
+geishas
+Geissler
+gel
+gel's
+gelable
+gelada
+gelant
+gelate
+gelated
+gelates
+gelatin
+gelatine
+gelating
+gelatinizabilities
+gelatinizability
+gelatinizability's
+gelatinizable
+gelatinizable's
+gelatinizables
+gelatinization
+gelatinization's
+gelatinizations
+gelatinize
+gelatinized
+gelatinizer
+gelatinizers
+gelatinizes
+gelatinizing
+gelatinoid
+gelatinous
+gelatinously
+gelatinousness
+gelation
+geld
+Gelderland
+gelding
+geldings
+gelibolu
+gelid
+gelidity
+gelidly
+gelin
+gell
+gelled
+gelligaer
+gelling
+gels
+Gelsemium
+Gelsenkirchen
+gelt
+gem
+gem's
+Gemara
+gemeinschaft
+geminal
+geminally
+geminate
+geminately
+gemination
+Gemini
+Geminid
+gemlike
+Gemma
+gemmate
+gemmated
+gemmates
+gemmating
+gemmation
+gemming
+gemmiparous
+gemmulation
+gemmule
+gemology
+gemot
+gems
+gemsbok
+gemstone
+gemstone's
+gemstones
+gen
+genappe
+Gencer
+gendarme
+gendarmerie
+gender
+gender's
+gendered
+gendering
+genders
+Gendron
+gene
+gene's
+genealogical
+genealogically
+genealogies
+genealogist
+genealogists
+genealogy
+genera
+generable
+general
+general's
+generale
+generalism
+generalissimo
+generalist
+generalist's
+generalists
+generalities
+generality
+generalizability
+generalizable
+generalizable's
+generalizables
+generalization
+generalization's
+generalizational
+generalizations
+generalize
+generalized
+generalizer
+generalizers
+generalizes
+generalizing
+generally
+generalness
+generals
+generalship
+generalships
+generate
+generated
+generates
+generating
+generation
+generational
+generations
+generative
+generatively
+generator
+generator's
+generators
+generatrix
+generic
+generically
+genericness
+generosities
+generosity
+generosity's
+generous
+generously
+generousness
+genes
+Genesco
+genesis
+genet
+genetic
+genetical
+genetically
+geneticist
+geneticist's
+geneticists
+genetics
+Geneva
+Geneva's
+Genevan
+Genevieve
+Genevieve's
+Genf
+Genfersee
+Genghis
+genial
+geniality
+genialize
+genializes
+genially
+genialness
+genic
+genically
+geniculate
+geniculated
+geniculately
+genie
+genie's
+genies
+genii
+genip
+genipap
+genital
+genital's
+genitalia
+genitalic
+genitally
+genitals
+genitive
+genitive's
+genitives
+genitor
+genitourinary
+genius
+genius's
+geniuses
+genizah
+genk
+Genoa
+Genoa's
+genocidal
+genocide
+genocides
+Genoese
+genome
+genome's
+genomes
+genotype
+genotype's
+genotypes
+genotypic
+genotypical
+genotypically
+genotypicity
+Genova
+genre
+genre's
+genres
+genro
+gens
+genseric
+genstat
+gent
+genteel
+genteeler
+genteelest
+genteelism
+genteelize
+genteelizes
+genteelly
+genteelness
+gentian
+gentianaceous
+gentianella
+gentians
+gentile
+gentiles
+gentilesse
+gentility
+gentilization
+gentilization's
+gentilizations
+gentilize
+gentilizes
+gentle
+gentled
+gentlefolk
+gentlefolks
+gentleman
+gentlemanize
+gentlemanizes
+gentlemanlike
+gentlemanlikeness
+gentlemanliness
+gentlemanly
+gentlemen
+gentleness
+gentler
+gentlest
+gentlewoman
+gentlewomen
+gentlewomen's
+gentling
+gently
+Gentoo
+gentrice
+gentries
+gentrification
+gentry
+gents
+genu
+genuflect
+genuflected
+genuflecting
+genuflection
+genuflectory
+genuflects
+genuine
+genuinely
+genuineness
+genus
+geocentric
+geocentrically
+geocentricism
+geochemical
+geochemically
+geochemist
+geochemistry
+geochronologic
+geochronological
+geochronologically
+geochronologist
+geochronology
+geochronometric
+geochronometry
+geode
+geode's
+geodes
+geodesic
+geodesics
+geodesist
+geodesy
+geodetic
+geodetical
+geodetically
+geoduck
+geodynamics
+Geoff
+Geoff's
+Geoffrey
+Geoffrey's
+geognosy
+geographer
+geographer's
+geographers
+geographic
+geographical
+geographically
+geographies
+geography
+geohydrologic
+geohydrology
+geoid
+geologic
+geological
+geologist
+geologist's
+geologists
+geologize
+geologized
+geologizes
+geologizing
+geology
+geomagnetic
+geomagnetically
+geomagnetism
+geomancy
+geomantic
+geomechanics
+geometer
+geometer's
+geometers
+geometric
+geometrical
+geometrically
+geometrician
+geometricize
+geometricizes
+geometrid
+geometries
+geometrize
+geometrized
+geometrizes
+geometrizing
+geometry
+geomorphic
+geomorphological
+geomorphology
+geophagy
+geophysical
+geophysically
+geophysicist
+geophysicists
+geophysics
+geophyte
+geopolitic
+geopolitical
+geopolitically
+geopolitician
+geopolitics
+geoponic
+geoponics
+Geordie
+George
+George's
+Georges
+Georgetown
+Georgette
+Georgia
+Georgian
+Georgians
+georgic
+geoscience
+geosphere
+geostatic
+geostatics
+geostrategic
+geostrategist
+geostrategy
+geostrophic
+geostrophically
+geosynchronous
+geosyncline
+geotaxis
+geotectonic
+geothermal
+geothermally
+geothermic
+geotropic
+geotropically
+geotropism
+gera
+gerah
+Gerald
+Geraldine
+geraniaceous
+geranial
+geraniol
+geranium
+Gerard
+geratology
+Gerber
+gerbil
+gerent
+gerenuk
+gerfalcon
+Gerhard
+Gerhardt
+geriatric
+geriatrician
+geriatricians
+geriatrics
+geriatrist
+gerlachovka
+germ
+germ's
+German
+German's
+germander
+germane
+Germania
+germania
+Germanic
+germanicus
+Germanism
+germanium
+germanization
+germanization's
+germanizations
+germanize
+germanized
+germanizer
+germanizers
+germanizes
+germanizing
+Germanophile
+Germanophobe
+germanous
+Germans
+Germantown
+Germany
+Germany's
+germen
+germfree
+germicidal
+germicide
+germicides
+germier
+germinability
+germinal
+germinally
+germinant
+germinate
+germinated
+germinates
+germinating
+germination
+germinations
+germinative
+germinatively
+germiston
+germproof
+germs
+germy
+gerome
+Gerome
+gerona
+geronimo
+gerontic
+gerontocracy
+gerontological
+gerontologist
+gerontologists
+gerontology
+Gerry
+Gerry's
+gerrymander
+gerrymandered
+gerrymandering
+gers
+Gershwin
+Gershwins
+Gertrude
+gerund
+gerundial
+gerundive
+geryon
+gesellschaft
+gesso
+gest
+gestalt
+gestapo
+gestate
+gestated
+gestates
+gestating
+gestation
+gestation's
+gestational
+gestations
+gestatorial
+gesticulate
+gesticulated
+gesticulates
+gesticulating
+gesticulation
+gesticulations
+gesticulative
+gesticulatively
+gesticulator
+gesticulators
+gesticulatory
+gestural
+gesture
+gestured
+gestures
+gesturing
+gesualdo
+get
+getatable
+getaway
+getaways
+Gethsemane
+gets
+getter
+getter's
+gettered
+getters
+getting
+Getty
+Gettysburg
+getup
+getups
+Geum
+gewgaw
+gey
+geyser
+geysered
+geysering
+geyserite
+geysers
+gezira
+Ghana
+Ghanian
+Gharial
+Gharry
+ghastful
+ghastfully
+ghastlier
+ghastliness
+ghastly
+ghat
+ghats
+Ghaut
+ghazal
+ghazals
+Ghazi
+Ghazzah
+Gheber
+ghee
+Ghent
+Gherao
+gherkin
+gherkins
+ghetto
+ghettoization
+ghettoization's
+ghettoizations
+ghettoize
+ghettoized
+ghettoizes
+ghettoizing
+ghettos
+Ghiaurov
+Ghiberti
+Ghibli
+Ghillie
+Ghirlandaio
+Ghitalla
+ghost
+ghosted
+ghosting
+ghostlier
+ghostlike
+ghostliness
+ghostlinesses
+ghostly
+ghosts
+ghostwrite
+ghostwriter
+ghosty
+ghoul
+ghoulish
+ghoulishly
+ghoulishness
+ghouls
+Giacometti
+Giacomo
+giant
+giant's
+giantess
+gianthood
+gianthoods
+giantism
+giantisms
+giantize
+giantizes
+giantlike
+giants
+gib
+gibber
+gibbered
+gibberellic
+gibberellin
+gibbering
+gibberish
+gibbers
+gibbet
+gibbeted
+gibbeting
+gibbets
+gibbing
+gibbon
+gibbons
+gibbosity
+gibbous
+gibbously
+gibbousness
+Gibbs
+gibbsite
+Gibby
+gibby
+gibe
+gibeon
+Gibeonite
+giber
+gibes
+gibing
+giblet
+giblets
+gibli
+Gibraltar
+gibran
+Gibson
+Gibson's
+gid
+giddap
+giddied
+giddier
+giddily
+giddiness
+giddings
+Giddings
+giddy
+giddying
+gide
+Gideon
+gidgee
+gie
+Gielgud
+Gierek
+Giessen
+Gifford
+gift
+gifted
+giftedly
+giftedness
+gifts
+giftwrap
+gifu
+gig
+gig's
+gigabit
+gigabyte
+gigabytes
+gigacycle
+gigacycles
+gigahertz
+gigaherz
+gigantesque
+gigantic
+gigantically
+giganticness
+gigantism
+gigantisms
+gigantomachy
+gigavolt
+gigawatt
+gigging
+giggle
+giggled
+giggler
+giggles
+giggling
+gigglingly
+giggly
+gigli
+gigolo
+gigot
+gigots
+Gigout
+gigs
+gigue
+Gil
+Gil's
+gila
+gilbert
+Gilbertian
+Gilbertson
+Gilchrist
+Gilchrist's
+gild
+Gilda
+Gilda's
+gildas
+gilded
+gilder
+gilding
+gilds
+Gilead
+Gilead's
+Gileadite
+Gilels
+Giles
+gilet
+gilgai
+gilgamesh
+Gilkson
+gill
+gill's
+gilled
+giller
+Gillespie
+Gillette
+gillies
+Gilligan
+Gillingham
+gillion
+gillray
+gills
+gillyflower
+Gilmore
+Gilmore's
+gilolo
+gilsonite
+gilt
+gilthead
+gimbal
+gimbaled
+gimbaling
+gimbals
+Gimbel
+gimcrack
+gimcrackery
+gimel
+gimlet
+gimlet's
+gimlets
+gimmal
+gimme
+gimmick
+gimmick's
+gimmickry
+gimmicks
+gimmicky
+gimp
+gimpy
+gin
+gin's
+Gina
+Gina's
+ginger
+gingerbread
+gingered
+gingering
+gingerliness
+gingerly
+gingersnap
+gingery
+gingham
+ginghams
+gingiva
+gingivitis
+gingko
+gink
+ginkgo
+ginmill
+ginnel
+ginning
+Gino
+Gino's
+gins
+Ginsberg
+Ginsberg's
+Ginsburg
+Ginsburg's
+ginseng
+Gioconda
+gioconda
+Giorgio
+giorgione
+giotto
+Giovanni
+gip
+gipon
+Gippsland
+Gippy
+Gipsies
+Gipsy
+Gipsy's
+giraffe
+giraffe's
+giraffes
+giraffish
+giraldus
+girandole
+Giraud
+Giraudoux
+gird
+girded
+girder
+girder's
+girders
+girding
+girdle
+girdlecake
+girdled
+girdler
+girdles
+girdling
+girds
+girgenti
+girl
+girl's
+girlfriend
+girlfriend's
+girlfriends
+girlhood
+girlhoods
+girlie
+girlish
+girlishly
+girlishness
+girls
+girly
+girn
+giro
+gironde
+gironny
+girosol
+girt
+girth
+gisarme
+Gisborne
+Giscard
+gish
+gismo
+gismos
+gissing
+gist
+git
+gittern
+Giuliano
+Giuliano's
+Giulini
+Giulio
+Giuseppe
+Giuseppe's
+giusto
+givable
+give
+giveaway
+giveaways
+given
+givenness
+givens
+giver
+givers
+gives
+giveth
+giving
+givingly
+gizmo
+gizmo's
+gizmos
+gizzard
+gizzard's
+gizzards
+glabella
+glabrous
+glacial
+glacialist
+glacialize
+glacializes
+glacially
+glaciate
+glaciated
+glaciates
+glaciating
+glaciation
+glacier
+glacier's
+glaciers
+glaciologic
+glaciological
+glaciologist
+glaciology
+glacis
+glad
+gladbeck
+gladded
+gladden
+gladdened
+gladdening
+gladdens
+gladder
+gladdest
+gladding
+gladdon
+gladdy
+glade
+glades
+gladiate
+gladiator
+gladiatorial
+gladiators
+gladiola
+gladiolus
+gladly
+gladness
+gladrags
+gladsome
+gladsomely
+gladsomeness
+Gladstone
+glady
+Gladys
+Glagolitic
+glaikit
+glair
+glaive
+glamorgan
+glamorization
+glamorizations
+glamorize
+glamorized
+glamorizer
+glamorizers
+glamorizes
+glamorizing
+glamorless
+glamorous
+glamorously
+glamorousness
+glamour
+glamoured
+glamouring
+glamours
+glance
+glanced
+glances
+glancing
+glancingly
+gland
+gland's
+glandered
+glanders
+glandless
+glands
+glandular
+glandularly
+glandule
+glans
+glare
+glared
+glares
+glarier
+glaring
+glaringly
+glaringness
+glarus
+glary
+glaser
+Glasgow
+glass
+glassblower
+glassblowing
+glassed
+glasses
+glassful
+glasshouse
+glassier
+glassies
+glassily
+glassine
+glassiness
+glassless
+glassmaker
+glassmaking
+glassman
+glassware
+glasswork
+glassworker
+glassworks
+glasswort
+glassy
+glastonbury
+Glaswegian
+glauce
+glaucoma
+glauconite
+glaucous
+glaze
+glazed
+glazer
+glazers
+glazes
+glazier
+glaziers
+glaziery
+glazing
+Glazunov
+gleam
+gleamed
+gleaming
+gleams
+gleamy
+glean
+gleanable
+gleaned
+gleaner
+gleaning
+gleanings
+gleans
+Gleason
+glebe
+glee
+gleed
+gleeful
+gleefully
+gleefulness
+gleeman
+glees
+gleesome
+gleet
+gleiwitz
+glen
+glen's
+glencoe
+Glenda
+Glendale
+glendower
+Glengarry
+Glenn
+glenoid
+glenrothes
+glens
+gley
+glia
+gliadin
+glib
+glibber
+glibbest
+glibly
+glibness
+Glickman
+Glidden
+Glidden's
+glide
+glided
+glider
+gliders
+glides
+gliding
+glim
+glimmer
+glimmered
+glimmering
+glimmers
+glimpse
+glimpsed
+glimpser
+glimpsers
+glimpses
+glimpsing
+Glinka
+glint
+glinted
+glinting
+glints
+glioma
+glissade
+glissando
+glisten
+glistened
+glistening
+glistens
+glister
+glitch
+glitch's
+glitches
+glitter
+glittered
+glittering
+glitteringly
+glitters
+glittery
+gliwice
+gloam
+gloamed
+gloaming
+gloams
+gloat
+gloated
+gloater
+gloats
+glob
+global
+globalism
+globalist
+globalists
+globalization
+globalizations
+globalize
+globalized
+globalizes
+globalizing
+globally
+globals
+globate
+globe
+globe's
+globeflower
+globes
+globetrotter
+Globigerina
+globin
+globing
+globoid
+globose
+globular
+globularity
+globularly
+globularness
+globule
+globuliferous
+globulin
+globulins
+glochidium
+glockenspiel
+glogg
+glom
+glomerate
+glomeration
+glomerular
+glomerulate
+glomerule
+glomerulus
+glomma
+glommed
+glomming
+gloms
+gloom
+gloomier
+gloomily
+gloominess
+glooms
+gloomy
+Gloria
+Gloriana
+Gloriana's
+gloried
+glories
+glorification
+glorifications
+glorified
+glorifier
+glorifiers
+glorifies
+glorify
+Glorioso
+glorious
+gloriously
+gloriousness
+glory
+glorying
+gloss
+glossa
+glossarial
+glossaries
+glossarist
+glossary
+glossary's
+glossator
+glossectomy
+glossed
+glosseme
+glosses
+glossier
+glossies
+glossily
+glossiness
+glossing
+glossitis
+glossographer
+glossography
+glossolalia
+glossology
+glossopharyngeal
+glossy
+glottal
+glottalization
+glottalize
+glottalizes
+glottic
+glottis
+glottochronology
+Gloucester
+Gloucestershire
+glove
+gloved
+gloveless
+glover
+glovers
+gloves
+gloving
+glow
+glowed
+glower
+glowered
+glowering
+glowers
+glowing
+glowingly
+glows
+Gloxinia
+gloze
+glucagon
+glucinum
+Gluck
+glucocorticord
+gluconeogenesis
+gluconyl
+glucoprotein
+glucopyranosyl
+glucosamine
+glucose
+glucoside
+glucosuria
+glue
+glued
+glueing
+gluer
+gluers
+glues
+gluey
+gluily
+gluing
+glum
+glumaceous
+glume
+glumly
+glummer
+glummest
+glumness
+gluon
+glut
+glutamate
+glutamic
+glutamine
+glutathione
+gluteal
+glutelin
+gluten
+gluteus
+glutinous
+glutinously
+glutinousness
+gluts
+glutted
+glutting
+glutton
+glutton's
+gluttonize
+gluttonizes
+gluttonous
+gluttonously
+gluttonousness
+gluttons
+gluttony
+glyceric
+glyceride
+glycerin
+glycerinate
+glycerinated
+glycerine
+glycerinize
+glycerinizes
+glycerol
+glycerolize
+glycerolized
+glycerolizes
+glycerophosphate
+glyceryl
+glycine
+glycocholate
+glycocholates
+glycoconjugate
+glycoconjugates
+glycodeoxycholate
+glycodeoxycholates
+glycogen
+glycogenesis
+glycogenize
+glycogenizes
+glycol
+glycolic
+glycolipid
+glycolipids
+glycols
+glycolysis
+glyconeogenesis
+glycopeptide
+glycopeptides
+glycoprotein
+glycoproteins
+glycosidase
+glycosidases
+glycoside
+glycosidic
+glycosphingolipid
+glycosphingolipids
+glycosuria
+glycosyl
+glycosylate
+glycosylated
+glycosylates
+glycosylation
+glynn
+Glynn
+glyoxaline
+glyph
+glyphography
+glyptal
+glyptic
+glyptics
+glyptodont
+glyptography
+GM
+GMT
+gnarl
+gnarled
+gnarls
+gnarly
+gnash
+gnashes
+gnashing
+gnat
+gnat's
+gnatcatcher
+gnathic
+gnathion
+gnathite
+gnathonic
+gnats
+gnatty
+gnaw
+gnawed
+gnawer
+gnawing
+gnaws
+gneiss
+gneissic
+gnocchi
+gnome
+gnomelike
+gnomes
+gnomic
+gnomish
+gnomon
+gnomonic
+gnosis
+gnostic
+gnosticism
+gnosticize
+gnosticizer
+gnosticizers
+gnosticizes
+gnotobiotics
+GNP
+gnu
+gnus
+go
+goad
+goaded
+goading
+goads
+goal
+goal's
+goalie
+goalkeeper
+goalmouth
+goalpost
+goals
+goaltender
+goaltending
+goanna
+goat
+goat's
+goatee
+goatee's
+goatees
+goatfish
+goatherd
+goatish
+goatlike
+goats
+goatsbeard
+goatskin
+goatsucker
+gob
+gobbet
+Gobbi
+gobble
+gobbled
+gobbledegook
+gobbledygook
+gobbler
+gobblers
+gobbles
+gobbling
+Gobelin
+Gobi
+gobi
+Gobi's
+gobioid
+goblet
+goblet's
+goblets
+goblin
+goblin's
+goblins
+gobo
+gobstopper
+goby
+god
+god's
+godard
+godavari
+godchild
+goddamn
+goddamned
+Goddard
+Goddard's
+goddaughter
+godded
+goddess
+goddess's
+goddesses
+godding
+goddize
+goddizes
+godefroy
+goderich
+Godesberg
+Godetia
+godfather
+godforsaken
+Godfrey
+Godfrey's
+godhead
+godhood
+Godiva
+godkin
+godless
+godlessness
+godlier
+godlike
+godlikeness
+godliness
+godling
+godly
+godmother
+godmother's
+godmothers
+Godolphin
+godot
+Godot
+godown
+godparent
+godroon
+gods
+godsend
+godsends
+godson
+Godspeed
+Godthaab
+Godunov
+Godwin
+Godwin's
+godwit
+Godzilla
+Godzilla's
+Goebbels
+goer
+goering
+goes
+Goethe
+goethite
+Goff
+Goff's
+gog
+gogga
+goggle
+gogglebox
+goggled
+goggler
+gogglers
+goggles
+goggling
+goggly
+Gogh
+goglet
+gogo
+gogol
+gogra
+Goidel
+going
+goings
+goiter
+goiters
+goitrogen
+goitrogenic
+Golconda
+gold
+Golda
+golda
+goldarn
+goldbeater
+goldbeating
+Goldberg
+goldbrick
+goldbug
+goldcrest
+golden
+goldeneye
+goldenly
+goldenness
+goldenrod
+goldenseal
+goldeye
+Goldfield
+goldfinch
+goldfish
+goldilocks
+golding
+Goldman
+Goldmark
+goldoni
+golds
+goldschmidt
+goldsmith
+goldsmiths
+Goldstein
+Goldstein's
+Goldstine
+Goldstine's
+goldthread
+Goldwater
+golem
+Goleta
+Goleta's
+golf
+golfer
+golfers
+golfing
+golfs
+Golgi
+Golgotha
+goliard
+goliardery
+Goliath
+golliwog
+gollop
+golly
+goloshes
+Gomberg
+gombroon
+gomel
+gomez
+Gomez
+gomorrah
+gompers
+gomphosis
+gomulka
+gomuti
+gonad
+gonad's
+gonadal
+gonadotropic
+gonadotropin
+gonads
+goncourt
+Gond
+gondar
+Gondi
+gondola
+gondolas
+gondolier
+gondoliers
+Gondwanaland
+gone
+goner
+gonfalon
+gonfalonier
+gong
+gong's
+gongola
+Gongorism
+gongs
+gonidium
+goniometer
+gonion
+gonk
+gonna
+gonococcus
+gonocyte
+gonof
+gonophore
+gonopore
+gonorrhea
+gonorrheal
+Gonzales
+Gonzalez
+goo
+goober
+good
+goodbye
+goodbye's
+goodbyes
+Goode
+Goode's
+goodie
+goodie's
+goodies
+goodish
+goodly
+Goodman
+goodness
+goodnight
+Goodrich
+goods
+goodwife
+goodwill
+Goodwin
+goody
+goody's
+Goodyear
+gooey
+goof
+goofball
+goofed
+goofier
+goofily
+goofiness
+goofing
+goofs
+goofy
+googly
+googol
+googolplex
+gook
+goole
+goon
+gooney
+Goop
+goosander
+goose
+gooseberry
+gooseflesh
+goosefoot
+goosegog
+goosegrass
+gooseneck
+goosenecked
+gooses
+goosey
+goosing
+goosy
+GOP
+gopak
+gopher
+gophers
+gorakhpur
+goral
+gorbals
+gorblimey
+Gorcock
+Gordian
+Gordon
+gore
+gored
+Goren
+Goren's
+goreng
+gores
+gorge
+gorgeous
+gorgeously
+gorgeousness
+gorger
+gorgerin
+gorges
+gorget
+gorgias
+gorging
+gorgon
+gorgoneion
+gorgonian
+gorgonize
+gorgonized
+gorgonizes
+gorgonizing
+Gorgonzola
+gorgously
+Gorham
+gorica
+gorier
+gorilla
+gorilla's
+gorillas
+goring
+gorizia
+Gorki
+Gorky
+Gorlovka
+gormandize
+gormandized
+gormandizer
+gormandizes
+gormandizing
+gormless
+gorse
+gorsedd
+Gorton
+Gorton's
+gory
+gosh
+goshawk
+Goshen
+gosling
+gospel
+gospeler
+gospelers
+gospelize
+gospelizes
+gospels
+Gosplan
+gosport
+gossamer
+gossamery
+gosse
+gossip
+gossiped
+gossiper
+gossipers
+gossiping
+gossipmonger
+gossipmongers
+gossipry
+gossips
+gossipy
+gossoon
+goster
+got
+gotama
+gotcha
+gotcha's
+gotchas
+goth
+Goth
+Gotha
+Gotham
+Gothenburg
+Gothic
+Gothically
+Gothicism
+Gothicize
+Gothicized
+Gothicizer
+Gothicizers
+Gothicizes
+Gothicizing
+Gotland
+goto
+gotta
+gotten
+Gottfried
+Gottfried's
+gouache
+goucher
+Goucher
+gouda
+Gouda's
+gouge
+gouged
+gouger
+gouges
+gouging
+goulash
+Gould
+Gould's
+Gounod
+gourami
+gourd
+gourde
+gourmand
+gourmand's
+gourmandism
+gourmandize
+gourmandized
+gourmandizes
+gourmandizing
+gourmands
+gourmet
+gourmets
+gourmont
+gout
+goutweed
+gouty
+govern
+governable
+governance
+governed
+governess
+governesses
+governessy
+governing
+government
+government's
+governmental
+governmentalism
+governmentalist
+governmentalize
+governmentalized
+governmentalizes
+governmentalizing
+governmentally
+governments
+governor
+governor's
+governorate
+governorates
+governors
+governorship
+governs
+gowan
+gower
+gowk
+gown
+gowned
+gowns
+gowon
+goy
+Goya
+goyish
+goys
+GPO
+GPSS
+Graafian
+grab
+grabbed
+grabber
+grabber's
+grabbers
+grabbier
+grabbing
+grabbings
+grabble
+grabbled
+grabbler
+grabbles
+grabbling
+grabby
+Graben
+grabs
+Gracchus
+grace
+graced
+graceful
+gracefully
+gracefulness
+graceless
+gracelessly
+gracelessness
+graces
+gracie
+Gracie
+gracile
+gracileness
+gracility
+gracing
+gracioso
+gracious
+graciously
+graciousness
+grackle
+grad
+gradable
+gradate
+gradated
+gradates
+gradating
+gradation
+gradation's
+gradational
+gradationally
+gradations
+grade
+graded
+gradeless
+gradely
+grader
+graders
+grades
+gradient
+gradient's
+gradients
+grading
+gradings
+gradiometer
+gradiometer's
+gradiometers
+grads
+gradual
+gradualism
+gradualist
+gradualists
+gradually
+gradualness
+graduand
+graduate
+graduated
+graduates
+graduating
+graduation
+graduations
+graduator
+gradus
+Grady
+Graeae
+graecism
+Graff
+Graff's
+graffiti
+graffito
+Graffman
+graft
+graftage
+grafted
+grafter
+grafting
+grafton
+Grafton
+grafts
+graham
+graham's
+grahame
+grahams
+graiae
+Graian
+grail
+grails
+grain
+grained
+grainer
+grainger
+grainier
+graininess
+graining
+grains
+grainy
+grallatorial
+gram
+gram's
+grama
+gramarye
+gramercy
+gramicidin
+gramineous
+graminivorous
+grammar
+grammar's
+grammarian
+grammarians
+grammars
+grammatic
+grammatical
+grammaticality
+grammatically
+grammaticalness
+grammaticize
+grammaticizes
+grammatology
+gramophone
+gramophone's
+gramophones
+grampian
+gramps
+grampus
+grams
+granada
+granadilla
+granados
+granaries
+granary
+granary's
+grand
+grandad
+grandaddy
+grandam
+grandame
+grandaunt
+grandchild
+grandchildren
+granddad
+granddaughter
+granddaughters
+grande
+grandee
+grander
+grandest
+grandeur
+grandfather
+grandfather's
+grandfatherly
+grandfathers
+grandiloquence
+grandiloquent
+grandiloquently
+grandiose
+grandiosely
+grandioseness
+grandiosity
+grandioso
+grandkid
+grandkid's
+grandkids
+grandly
+grandma
+grandma's
+grandmaster
+grandmasters
+grandmother
+grandmother's
+grandmotherly
+grandmothers
+grandnephew
+grandnephews
+grandness
+grandniece
+grandnieces
+grandpa
+grandpa's
+grandparent
+grandparental
+grandparenthood
+grandparents
+grandpas
+grands
+grandsire
+grandsires
+grandson
+grandson's
+grandsons
+grandstand
+grandstanded
+grandstander
+grandstanding
+grandstands
+granduncle
+granduncles
+grange
+grangemouth
+granger
+grangerism
+grangerize
+grangerized
+grangerizer
+grangerizes
+grangerizing
+granges
+granicus
+granite
+graniteware
+granitic
+granitite
+granitization
+granitization's
+granitizations
+granitize
+granitizes
+granivorous
+grannies
+granny
+granodiorite
+granola
+granolith
+granophyre
+grant
+grant's
+granta
+grantable
+granted
+grantee
+granter
+Granth
+granting
+grantor
+grants
+grantsman
+grantsmanship
+granular
+granularity
+granularly
+granulate
+granulated
+granulates
+granulating
+granulation
+granulations
+granulative
+granulator
+granule
+granules
+granulite
+granulitic
+granulize
+granulizes
+granulocyte
+granulocytes
+granulocytic
+granuloma
+granulose
+Granville
+grape
+grape's
+grapefruit
+grapes
+grapeshot
+grapevine
+grapevine's
+grapevines
+graph
+graph's
+graphed
+grapheme
+graphemic
+graphemically
+graphemics
+graphic
+graphical
+graphically
+graphicness
+graphics
+graphing
+graphite
+graphitic
+graphitizable
+graphitization
+graphitization's
+graphitizations
+graphitize
+graphitizes
+graphological
+graphologist
+graphology
+graphomotor
+graphophone
+graphs
+grapier
+grapnel
+grappa
+grappelli
+grapple
+grappled
+grappler
+grapples
+grappling
+graptolite
+grapy
+gras
+grasmere
+grasp
+graspable
+grasped
+grasper
+grasping
+graspingly
+graspingness
+grasps
+grass
+grassed
+grassers
+grasses
+grassfinch
+grasshook
+grasshopper
+grasshopper's
+grasshoppers
+grassier
+grassiest
+grassing
+grassland
+grasslands
+grasslike
+grassquit
+grassroot
+grassroots
+grassy
+grata
+grate
+grated
+grateful
+gratefully
+gratefulness
+grater
+grates
+gratian
+graticule
+gratification
+gratifications
+gratified
+gratify
+gratifying
+gratifyingly
+gratin
+grating
+gratingly
+gratings
+gratis
+gratitude
+grattan
+gratuities
+gratuitous
+gratuitously
+gratuitousness
+gratuity
+gratuity's
+gratulate
+gratulating
+graupel
+grav
+gravamen
+grave
+gravel
+graveled
+graveless
+graveling
+gravelly
+gravels
+gravely
+graven
+graveness
+gravenhage
+graver
+gravers
+graves
+gravesend
+gravest
+gravestone
+gravestones
+gravettian
+graveyard
+graveyards
+gravid
+gravidity
+gravidly
+gravidness
+gravies
+gravimeter
+gravimeter's
+gravimeters
+gravimetric
+gravimetrical
+gravimetrically
+gravimetry
+graving
+gravitate
+gravitated
+gravitates
+gravitating
+gravitation
+gravitational
+gravitationally
+gravitations
+gravitative
+gravities
+gravitometer
+gravitometer's
+gravitometers
+graviton
+graviton's
+gravitons
+gravity
+gravure
+gravy
+gray
+graybeard
+graybeards
+grayed
+grayer
+grayest
+graying
+grayish
+grayling
+graylings
+grayly
+grayness
+grays
+Grayson
+graywacke
+graz
+grazable
+graze
+grazeable
+grazed
+grazer
+grazes
+grazier
+graziers
+grazing
+grease
+greased
+greaseless
+greasepaint
+greasepaints
+greaseproof
+greaser
+greasers
+greases
+greasewood
+greasier
+greasily
+greasiness
+greasing
+greasy
+great
+greatcoat
+greatcoated
+greatcoats
+greaten
+greatened
+greatening
+greater
+greatest
+greathearted
+greatheartedly
+greatheartedness
+greatly
+greatness
+greats
+greave
+greaves
+grebe
+Grecian
+Grecianize
+Grecianizes
+Grecism
+grecize
+grecized
+grecizing
+gree
+Greece
+greed
+greedier
+greedily
+greediness
+greedy
+greegree
+Greek
+Greek's
+Greekize
+Greekizes
+Greeks
+greeley
+green
+Green
+greenaway
+greenback
+greenbacker
+greenbackism
+greenbelt
+Greenberg
+Greenblatt
+greenbottle
+Greenbriar
+greenbrier
+Greene
+Greene's
+greened
+greener
+greenery
+greenest
+Greenfeld
+Greenfield
+greenfinch
+greenfly
+greengage
+greengrocer
+greengrocery
+Greenham
+greenhead
+greenheart
+greenhorn
+greenhouse
+greenhouse's
+greenhouses
+greening
+greenish
+greenishness
+Greenland
+greenlet
+greenling
+greenly
+greenness
+greenock
+greenockite
+Greenpeace
+Greenpeace's
+greenroom
+greens
+greensand
+Greensboro
+greenshank
+greensickness
+greenstick
+greenstone
+greenstuff
+Greensville
+greensward
+Greentree
+greentree
+Greenville
+greenware
+Greenwich
+greenwood
+greeny
+Greer
+Greer's
+greet
+greeted
+greeter
+greeting
+greetings
+greets
+Greg
+Greg's
+gregarine
+gregarinian
+gregarious
+gregariously
+gregariousness
+Gregg
+Gregorian
+Gregory
+greige
+Greisen
+gremial
+gremlin
+gremlin's
+gremlins
+gremmie
+gremmies
+gremmy
+Grenada
+grenade
+grenade's
+grenades
+grenadier
+grenadine
+Grenadines
+Grendel
+grenier
+Grenier
+Grenoble
+Grenville
+grep
+Gresham
+Gresham's
+gressorial
+Greta
+Gretchen
+Gretel
+Gretel's
+Gretna
+greuze
+grew
+grewsome
+grey
+greyback
+greybeard
+greyest
+greyhen
+greyhound
+greying
+greylag
+greystones
+greywacke
+gribble
+grid
+grid's
+griddle
+griddlecake
+gridfile
+gridfiles
+gridiron
+gridlock
+gridlock's
+grids
+grief
+grief's
+griefless
+griefs
+Grieg
+Grierson
+grievance
+grievance's
+grievances
+grievant
+grieve
+grieved
+griever
+grievers
+grieves
+grieving
+grievingly
+grievous
+grievously
+grievousness
+Griffe
+griffin
+Griffith
+Griffiths
+Griffon
+Grig
+Grigioni
+Grignard
+Grikwa
+grill
+grillage
+grille
+grilled
+griller
+grilling
+grillparzer
+grillroom
+grills
+grillwork
+grilse
+grim
+grimace
+grimaced
+grimacer
+grimaces
+grimacing
+Grimaldi
+Grimaldi's
+grimalkin
+grime
+grimed
+grimes
+grimier
+grimines
+griming
+grimly
+Grimm
+grimmer
+grimmest
+grimness
+grimsby
+grimy
+grin
+Grinch
+Grinch's
+grind
+Grindelia
+grindelwald
+grinder
+grinders
+grindery
+grinding
+grindingly
+grindings
+grinds
+grindstone
+grindstone's
+grindstones
+gringo
+gringos
+grinned
+grinner
+grinning
+grinningly
+grins
+grip
+gripe
+griped
+griper
+gripes
+griping
+grippe
+gripped
+gripper
+gripper's
+grippers
+gripping
+grippingly
+grippy
+grips
+Griqua
+Griqualand
+Gris
+gris
+grisaille
+griseofulvin
+griseous
+grisette
+grishun
+griskin
+grisliness
+grisly
+Grison
+grisons
+grist
+gristle
+gristlier
+gristliness
+gristly
+gristmill
+Griswold
+Griswold's
+grit
+grit's
+grith
+grits
+gritted
+grittier
+grittily
+grittiness
+gritting
+gritty
+grivation
+grivet
+grizzle
+grizzled
+grizzles
+grizzlier
+grizzling
+grizzly
+groan
+groaned
+groaner
+groaners
+groaning
+groans
+groat
+groats
+grocer
+grocer's
+groceries
+grocers
+grocery
+grockle
+grodno
+grog
+groggier
+groggily
+grogginess
+groggy
+grogram
+grogshop
+groin
+grok
+grokked
+grokking
+groks
+Grolier
+grommet
+gromyko
+groningen
+groom
+groom's
+groomed
+groomer
+grooming
+grooms
+groomsman
+groomsmen
+Groot
+groot
+groove
+grooved
+groover
+grooves
+groovier
+grooving
+groovy
+grope
+groped
+groper
+gropes
+groping
+gropius
+gros
+grosbeak
+groschen
+grosgrain
+gross
+grosse
+grossed
+grosser
+grosses
+grossest
+Grosset
+grosseteste
+grossing
+grossly
+Grossman
+grossness
+grossular
+grossularite
+grosswardein
+Grosvenor
+grosz
+grot
+grote
+grotesque
+grotesquely
+grotesqueness
+grotesquerie
+grotesquery
+grotius
+Groton
+grotto
+grotto's
+grottoes
+grottos
+grouch
+grouch's
+grouched
+grouches
+grouchier
+grouchily
+grouchiness
+grouching
+grouchy
+ground
+groundage
+grounded
+grounder
+grounders
+groundhog
+groundhog's
+groundhogs
+grounding
+groundless
+groundlessly
+groundlessness
+groundling
+groundmass
+groundnut
+groundout
+grounds
+groundsel
+groundsheet
+groundsill
+groundskeep
+groundskeepers
+groundsman
+groundspeed
+groundswell
+groundwater
+groundwork
+group
+group's
+groupable
+grouped
+grouper
+groupie
+groupie's
+groupies
+grouping
+groupings
+groupoid
+groups
+groupwork
+grouse
+groused
+grouser
+grouses
+grousing
+grout
+grouted
+grouter
+grouting
+grouts
+grouty
+grove
+grovel
+groveled
+groveler
+grovelers
+grovelike
+groveling
+grovelingly
+grovels
+grover
+grovers
+groves
+grovet
+grow
+grower
+growers
+growing
+growingly
+growl
+growled
+growler
+growlier
+growliness
+growling
+growlingly
+growls
+growly
+grown
+grownup
+grownup's
+grownups
+grows
+growth
+growths
+groyne
+grozing
+grozny
+grub
+grub's
+grubber
+grubbier
+grubbily
+grubbiness
+grubbing
+grubby
+grubs
+grubstake
+grubstaker
+grudge
+grudge's
+grudged
+grudger
+grudges
+grudging
+grudgingly
+gruel
+grueled
+grueler
+gruelers
+grueling
+gruelingly
+gruesome
+gruesomely
+gruesomeness
+gruff
+gruffly
+gruffness
+grugru
+grumble
+grumbled
+grumbler
+grumbles
+grumbling
+grumblingly
+grumbly
+Grumman
+grummet
+grumous
+grump
+grumped
+grumpier
+grumpily
+grumpiness
+grumping
+grumps
+grumpy
+Grundheber
+grundy
+grunion
+grunt
+grunted
+grunter
+grunting
+gruntle
+gruntled
+gruntles
+gruntling
+grunts
+Grus
+grusky
+Grusky
+Gruyere
+gryphon
+grysbok
+GSA
+gtad
+GU
+guacamole
+guacharo
+guaco
+guadalajara
+guadalcanal
+guadalquivir
+guadalupe
+Guadalupe
+Guadeloupe
+guadiana
+guaiacum
+Guam
+guan
+guanabara
+guanaco
+guanajuato
+guanase
+guanidine
+guanine
+guano
+guanosine
+Guarani
+guarantee
+guaranteed
+guaranteeing
+guaranteer
+guaranteers
+guarantees
+guarantor
+guaranty
+guard
+guardafui
+guardant
+guarded
+guardedly
+guardedness
+guarder
+guardhouse
+Guardia
+guardian
+guardian's
+guardians
+guardianship
+guarding
+guardrail
+guardroom
+guards
+guardsman
+guarneri
+Guatemala
+Guatemalan
+guava
+guayaquil
+guayule
+gubbins
+gubernatorial
+guck
+gudeance
+gudgeon
+gudrun
+guelders
+Guelph
+guenon
+Guenther
+Guenther's
+guerdon
+guerilla
+Guerin
+Guernica
+Guernsey
+guernsey
+guernseys
+Guerrero
+guerrilla
+guerrilla's
+guerrillas
+guess
+guessed
+guesser
+guesses
+guessing
+guesstimate
+guesswork
+guest
+guest's
+guested
+guesthouse
+guesting
+guests
+Guevara
+guff
+guffaw
+guffaws
+Guggenheim
+guggle
+guggled
+guggles
+guggling
+Guhleman
+guhleman
+Guiana
+guidable
+guidance
+guidances
+guide
+guidebook
+guidebook's
+guidebooks
+guided
+guideline
+guideline's
+guidelines
+guidepost
+guideposts
+guider
+guides
+guideway
+guiding
+Guido
+guidon
+guienne
+guignol
+guild
+guilder
+Guildford
+guildhall
+guildship
+guildsman
+guile
+guileful
+guilefully
+guilefulness
+guileless
+guilelessly
+guilelessness
+Guilford
+Guilford's
+Guillaume
+guillemot
+guilloche
+guillotine
+guillotine's
+guillotined
+guillotines
+guillotining
+Guillou
+guilt
+guiltier
+guiltiest
+guiltily
+guiltiness
+guiltless
+guiltlessly
+guiltlessness
+guilts
+guilty
+guimet
+guimpe
+Guinea
+guinea
+guineas
+Guinevere
+Guinevere's
+Guinness
+guipure
+guisard
+guiscard
+guise
+guise's
+guised
+guises
+guising
+guitar
+guitar's
+guitarfish
+guitarist
+guitarists
+guitars
+guizot
+Gujarat
+Gujarati
+gujranwala
+gul
+gulag
+gulags
+gular
+gulbenkian
+gulch
+gulch's
+gulches
+gulden
+gules
+gulf
+gulf's
+gulfs
+gulfweed
+gull
+gullable
+Gullah
+gulled
+gullet
+gullets
+gullibility
+gullible
+gullibly
+gullied
+gullies
+gulling
+gulls
+gully
+gully's
+gullying
+gulosity
+gulp
+gulped
+gulper
+gulps
+gum
+gum's
+gumbo
+gumboil
+gumdrop
+gumdrop's
+gumdrops
+gumma
+gummatous
+gummed
+gummer
+gummier
+gumminess
+gumming
+gummite
+gummosis
+gummous
+gummy
+gumption
+gums
+gumshield
+gumshoe
+gumtree
+gun
+gun's
+gunboat
+guncotton
+Gunderson
+gundog
+gunfight
+gunfighter
+gunfights
+gunfire
+gunfires
+gunflint
+gunge
+gunk
+gunky
+gunlock
+gunman
+gunmen
+gunmetal
+gunnar
+Gunnar
+gunned
+gunnel
+gunner
+gunner's
+gunners
+gunnery
+gunning
+gunny
+gunnysack
+gunpaper
+gunplay
+gunpoint
+gunpowder
+gunpowders
+gunpowdery
+gunrunner
+gunrunning
+guns
+gunsel
+gunship
+gunshot
+gunsling
+gunslinger
+gunslinging
+gunsmith
+gunstock
+gunter
+Gunther
+Gunther's
+guntur
+gunwale
+gunyah
+guppies
+guppy
+gur
+gurdwara
+gurgitation
+gurgle
+gurgled
+gurgles
+gurglet
+gurgling
+gurjun
+Gurkha
+Gurkha's
+gurkhali
+Gurmukhi
+gurnard
+gurney
+gurneys
+guru
+guru's
+gurus
+Gurzenich
+Gus
+gush
+gushed
+gusher
+gushes
+gushier
+gushily
+gushiness
+gushing
+gushy
+gusset
+gussets
+gust
+gust's
+Gustafson
+Gustafson's
+gustation
+gustative
+gustativeness
+gustatorial
+gustatorially
+gustatorily
+gustatory
+Gustav
+Gustav's
+Gustave
+Gustave's
+gustavo
+Gustavus
+gustily
+gustiness
+gusto
+gustoes
+gusts
+gusty
+gut
+gutbucket
+Gutenberg
+Guthrie
+guthrun
+gutless
+gutlessness
+guts
+gutser
+gutsier
+gutsiness
+gutsy
+gutta
+guttate
+guttation
+gutted
+gutter
+guttered
+guttering
+gutters
+guttersnipe
+guttersnipish
+guttier
+gutting
+guttural
+gutturalism
+gutturalization
+gutturalization's
+gutturalizations
+gutturalize
+gutturalized
+gutturalizes
+gutturalizing
+gutturalness
+gutty
+guv
+guy
+guy's
+Guyana
+guyed
+guyenne
+guyer
+guyers
+guying
+guyot
+guys
+guzzle
+guzzled
+guzzler
+guzzles
+guzzling
+gwalior
+gwelo
+Gwen
+gwent
+Gwyn
+Gwyn's
+gwynedd
+gwyniad
+gyani
+gybe
+gym
+gymkhana
+gymnasiarch
+gymnasiast
+gymnasium
+gymnasium's
+gymnasiums
+gymnast
+gymnast's
+gymnastic
+gymnastically
+gymnastics
+gymnasts
+gymnosophist
+gymnosperm
+gyms
+gymslip
+gynaeceum
+gynaecocracy
+gynaecoid
+gynaecomastia
+gynandrous
+gynarchy
+gynecium
+gynecocrat
+gynecocratic
+gynecologic
+gynecological
+gynecological's
+gynecologicals
+gynecologics
+gynecologies
+gynecologist
+gynecologist's
+gynecologists
+gynecology
+gynecology's
+gyniatrics
+gynophore
+gyp
+gypping
+gypseous
+gypsied
+gypsies
+gypsite
+Gypsophila
+gypsum
+gypsy
+gypsy's
+gypsying
+gyral
+gyrate
+gyrated
+gyrates
+gyrating
+gyration
+gyrational
+gyrations
+gyrator
+gyrators
+gyratory
+gyre
+gyrene
+gyrfalcon
+gyro
+gyrocompass
+gyrofrequency
+gyromagnetic
+gyron
+gyronny
+gyroplane
+gyros
+gyroscope
+gyroscope's
+gyroscopes
+gyroscopic
+gyroscopically
+gyrose
+gyrostabilizer
+gyrostat
+gyrostatic
+gyrostatics
+gyve
+h's
+ha
+Haag
+Haag's
+Haas
+habeas
+haberdasher
+haberdasheries
+haberdashery
+Haberman
+Haberman's
+Habib
+Habib's
+habiles
+habiliment
+habilitate
+habilitated
+habilitates
+habilitating
+habilitation
+habilitations
+habit
+habit's
+habitability
+habitable
+habitableness
+habitably
+habitant
+habitants
+habitat
+habitat's
+habitation
+habitation's
+habitations
+habitats
+habits
+habitual
+habitualize
+habitualizes
+habitually
+habitualness
+habituate
+habituated
+habituates
+habituating
+habituation
+habitude
+habitudes
+habitus
+Habsburg
+habu
+hac
+hachure
+hacienda
+haciendas
+hack
+hackamore
+hackberry
+hackbut
+hacked
+hacker
+hacker's
+hackers
+Hackett
+hacking
+hackle
+hackled
+hackler
+hackles
+hackling
+hackmatack
+hackney
+hackneyed
+hackneying
+hackneys
+hacks
+hacksaw
+hacksaws
+hackstaff
+hackwork
+had
+hadal
+Hadamard
+hadaway
+Haddad
+Haddad's
+Haddington
+haddix
+haddock
+haddocks
+hade
+hades
+Hades
+hadhramaut
+Hadith
+hadj
+hadji
+Hadley
+Hadley's
+hadn't
+Hadrian
+hadron
+hadrosaur
+hadst
+hae
+haecceity
+haeckel
+haem
+haemachrome
+haemacytometer
+haemagglutinate
+haemagglutinin
+haemagogue
+haemal
+haematein
+haematemesis
+haematic
+haematin
+haematinic
+haematite
+haematoblast
+haematocele
+haematocrit
+haematocryal
+haematogenesis
+haematogenous
+haematoid
+haematological
+haematology
+haematolysis
+haematoma
+haematopoiesis
+haematosis
+haematothermal
+haematoxylin
+Haematoxylon
+haematozoon
+haematuria
+haemic
+haemin
+haemochrome
+haemocoel
+haemocyanin
+haemocyte
+haemocytometer
+haemodialysis
+haemoflagellate
+haemoglobin
+haemoglobinuria
+haemoid
+haemolysin
+haemolysis
+haemophile
+haemophilia
+haemophiliac
+haemophilic
+haemopoiesis
+haemoptysis
+haemorrhage
+haemorrhagic
+haemorrhoidectomy
+haemorrhoids
+haemostasis
+haemostat
+haemostatic
+haeres
+hafiz
+Hafiz
+hafnium
+haft
+haftarah
+hag
+hagar
+hagbut
+Hagegard
+Hagen
+hagen
+Hagen's
+Hager
+Hager's
+hagfish
+haggadah
+haggadic
+haggadist
+haggadistic
+haggai
+haggard
+haggardly
+haggardness
+haggis
+haggish
+haggle
+haggled
+haggler
+haggles
+haggling
+hagiarchy
+hagiocracy
+Hagiographa
+hagiographer
+hagiographies
+hagiography
+hagiography's
+hagiolatry
+hagiology
+hagioscope
+Hagstrom
+Hagstrom's
+Hague
+hah
+Hahn
+Hahn's
+hahnemann
+Haida
+haidar
+Haifa
+haig
+haik
+haiku
+hail
+haile
+hailed
+hailer
+hailing
+hails
+hailstone
+hailstorm
+Hainan
+hainaut
+Haines
+haiphong
+hair
+hair's
+hairball
+hairbreadth
+hairbrush
+haircloth
+haircut
+haircut's
+haircuts
+haircutter
+haircutting
+hairdo
+hairdos
+hairdresser
+hairdresser's
+hairdressers
+hairdressing
+haired
+hairgrip
+hairier
+hairif
+hairiness
+hairless
+hairlessness
+hairlike
+hairline
+hairnet
+hairpiece
+hairpin
+hairs
+hairsbreadth
+hairsplitter
+hairsplitting
+hairspring
+hairspring's
+hairsprings
+hairstreak
+hairstyle
+hairstyle's
+hairstyles
+hairstyling
+hairstylist
+hairtail
+hairweaving
+hairworm
+hairy
+Haiti
+Haitian
+Haitink
+hajj
+hake
+Hakea
+hakim
+hakluyt
+hakodate
+Hal
+halafian
+halakah
+halal
+halation
+halberd
+halberdier
+halcyon
+halcyone
+haldane
+hale
+haleakala
+haler
+halesowen
+Haley
+Haley's
+half
+halfback
+halfbacks
+halfbeak
+halfhearted
+halfheartedly
+halfheartedness
+halfness
+halfpennies
+halfpenny
+halftime
+halftone
+halfway
+halfwit
+halfword
+halfword's
+halfwords
+halibut
+halibuts
+halicarnassus
+halide
+halides
+halidom
+Halifax
+haling
+halite
+halitosis
+hall
+hall's
+hallah
+hallam
+Hallamshire
+Halle
+hallel
+hallelujah
+hallelujahs
+haller
+Halley
+Halley's
+halliard
+halliards
+hallinan
+Hallinan
+hallmark
+hallmark's
+hallmarked
+hallmarking
+hallmarks
+hallo
+halloo
+halloos
+hallow
+hallowed
+Halloween
+hallowing
+Hallowmas
+hallows
+halls
+Hallstatt
+halluces
+hallucinate
+hallucinated
+hallucinates
+hallucinating
+hallucination
+hallucinational
+hallucinations
+hallucinative
+hallucinatory
+hallucinogen
+hallucinogenic
+hallucinogens
+hallucinosis
+hallux
+hallway
+hallway's
+hallways
+halm
+halma
+halmahera
+halmstad
+halo
+halobiont
+halocarbon
+halocline
+haloes
+halogen
+halogenate
+halogenation
+halogenous
+halogens
+haloid
+halomorphic
+halomorphism
+halophyte
+halos
+halothane
+Halpern
+halpern
+hals
+Halsey
+Halsey's
+Halstead
+Halstead's
+halt
+halted
+haltemprice
+halter
+haltere
+haltered
+haltering
+halters
+halting
+haltingly
+halts
+halvah
+halve
+halved
+halvers
+Halverson
+Halverson's
+halves
+halving
+halyard
+ham
+ham's
+hama
+hamadryad
+hamadryas
+Hamal
+Hamal's
+hamamatsu
+hamamelidaceous
+hamate
+hambletonian
+Hamburg
+hamburger
+hamburger's
+hamburgers
+hame
+hamelin
+hameln
+hamersley
+hamey
+Hamey
+hamhung
+hamilcar
+Hamilton
+Hamiltonian
+Hamiltonians
+Hamite
+Hamitic
+hamlet
+hamlet's
+hamletization
+hamletization's
+hamletizations
+hamletize
+hamletizes
+hamlets
+Hamlin
+Hamlin's
+hamm
+hammer
+hammered
+hammerer
+hammerfest
+hammerhead
+hammering
+hammerless
+hammerlock
+hammers
+hammersmith
+hammerstein
+hammertoe
+hammett
+Hammett
+hammier
+hammily
+hamminess
+hamming
+hammock
+hammock's
+hammocks
+Hammond
+hammurabi
+hammy
+hampden
+hamper
+hampered
+hampering
+hampers
+Hampshire
+hampstead
+Hampton
+hams
+hamshackle
+hamster
+hamsters
+hamstring
+hamstrung
+hamsun
+hamulus
+hamza
+hanaper
+hanau
+Hancock
+hand
+handbag
+handbag's
+handbags
+handball
+handbarrow
+handbell
+handbill
+handbook
+handbook's
+handbooks
+handbrake
+handbreadth
+handcar
+handcart
+handclasp
+handcraft
+handcraftman
+handcraftsman
+handcrank
+handcranks
+handcuff
+handcuffed
+handcuffing
+handcuffs
+handed
+handedly
+handedness
+Handel
+Handel's
+hander
+handers
+handfast
+handfasting
+handfeed
+handful
+handfuls
+handgrip
+handgun
+handguns
+handhold
+handicap
+handicap's
+handicapped
+handicapper
+handicapping
+handicaps
+handicraft
+handicrafter
+handicrafts
+handicraftsman
+handicraftsmen
+handier
+handiest
+handily
+handiness
+handing
+handiwork
+handkerchief
+handkerchief's
+handkerchiefs
+handle
+handleability
+handleable
+handlebar
+handlebars
+handled
+handleless
+handler
+handlers
+handles
+handless
+Handley
+handline
+handling
+handlist
+handmade
+handmaid
+handmaiden
+handout
+handouts
+handpick
+handpicked
+handpress
+handprint
+handprint's
+handprints
+handrail
+hands
+handsaw
+handsbreadth
+handseled
+handseling
+handset
+handsets
+handsful
+handshake
+handshake's
+handshaker
+handshakes
+handshaking
+handshook
+handsome
+handsomely
+handsomeness
+handsomer
+handsomest
+handspike
+handspikes
+handspring
+handsprings
+handstand
+handstands
+handstroke
+handwaving
+handwheel
+handwheels
+handwork
+handworker
+handwoven
+handwrite
+handwrites
+handwriting
+handwritings
+handwritten
+handwrought
+handy
+handyman
+handymen
+Haney
+Haney's
+Hanford
+Hanford's
+hang
+hangable
+hangar
+hangar's
+hangars
+hangbird
+hangchow
+hangdog
+hanged
+hanger
+hangers
+hanging
+hangman
+hangman's
+hangmen
+hangnail
+hangnail's
+hangnails
+hangout
+hangouts
+hangover
+hangover's
+hangovers
+hangs
+hangtag
+hangup
+hank
+Hankel
+Hankel's
+hanker
+hankerchief
+hankered
+hankerer
+hankering
+hankers
+hankie
+hankies
+hankow
+hanky
+Hanley
+Hanley's
+Hanlon
+Hanlon's
+Hanna
+Hanna's
+Hannah
+Hannibal
+hannover
+Hanoi
+Hanover
+Hanoverian
+Hanoverianize
+Hanoverianizes
+Hanoverize
+Hanoverizes
+hanratty
+Hans
+Hansard
+Hanseatic
+Hansel
+hanseled
+hanseling
+Hansen
+hansom
+Hanson
+hant
+hanter
+Hanukkah
+Hanuman
+Hanyang
+haole
+hap
+hapax
+hapchance
+hapgood
+Hapgood
+haphazard
+haphazardly
+haphazardness
+haphazardry
+haphtarah
+hapless
+haplessly
+haplessness
+haplite
+haplography
+haploid
+haploidy
+haplology
+haplosis
+haply
+happen
+happenchance
+happened
+happening
+happenings
+happens
+happenstance
+happier
+happiest
+happily
+happiness
+happing
+happy
+Hapsburg
+Hapsburg's
+hapten
+hapteron
+haptic
+hapto
+haptotropism
+harakiri
+harald
+harambee
+harangue
+harangued
+haranguer
+harangues
+haranguing
+harappa
+harar
+harass
+harassed
+harasser
+harasses
+harassing
+harassment
+harassments
+Harbin
+Harbin's
+harbinger
+harbingers
+harbor
+harbor's
+harborage
+harborages
+harbored
+harborer
+harborer's
+harborers
+harborful
+harboring
+harborless
+harborlesses
+harbors
+Harcourt
+hard
+hardback
+hardbake
+hardball
+hardboard
+hardboiled
+hardboot
+hardbound
+hardcase
+hardcopies
+hardcopy
+hardcover
+hardcovers
+hardecanute
+harden
+Hardenberg
+hardened
+hardener
+hardening
+hardens
+harder
+hardest
+hardfisted
+hardfistedness
+hardhack
+hardhanded
+hardhandedness
+hardhat
+hardhead
+hardheaded
+hardheadedly
+hardheadedness
+hardhearted
+hardheartedly
+hardheartedness
+hardicanute
+hardie
+hardier
+hardihood
+hardily
+hardiment
+Hardin
+hardiness
+harding
+hardings
+hardly
+hardmouthed
+hardness
+hardnesses
+hardpan
+hards
+hardscrabble
+hardshell
+hardship
+hardship's
+hardships
+hardstand
+hardstanding
+hardtack
+hardtop
+hardtops
+hardware
+hardwares
+hardwire
+hardwired
+hardwires
+hardwiring
+hardwood
+hardwoods
+hardworking
+Hardy
+hardy
+hare
+hare's
+harebell
+harebrain
+harebrained
+harelip
+harelipped
+harelips
+harem
+hares
+hargeisa
+Hargreaves
+haricot
+harijan
+harikari
+Haringey
+hark
+harked
+harken
+harking
+harks
+Harl
+Harlan
+Harlan's
+Harlem
+harlequin
+harlequinade
+Harley
+Harley's
+harlot
+harlot's
+harlotry
+harlots
+Harlow
+harm
+harmattan
+harmed
+harmer
+harmful
+harmfully
+harmfulness
+harming
+harmless
+harmlessly
+harmlessness
+Harmon
+Harmon's
+harmonic
+harmonica
+harmonica's
+harmonical
+harmonically
+harmonicalness
+harmonicas
+harmonics
+harmonies
+harmonious
+harmoniously
+harmoniousness
+Harmonist
+harmonist
+Harmonistic
+Harmonistically
+harmonium
+harmonizable
+harmonizable's
+harmonizables
+harmonization
+harmonization's
+harmonizations
+harmonize
+harmonized
+harmonizer
+harmonizers
+harmonizes
+harmonizing
+harmonograph
+harmonographs
+harmony
+harmotome
+harms
+Harmsworth
+harness
+harnessed
+harnesser
+harnesses
+harnessing
+harney
+Harold
+harp
+harped
+harpenden
+Harper
+harper
+harpers
+harpies
+harping
+harpings
+harpist
+harpoon
+harpoon's
+harpooned
+harpooner
+harpooning
+harpoons
+harps
+harpsichord
+harpsichordist
+harpsichords
+harpy
+harpy's
+harquebus
+harquebusier
+harrar
+harridan
+harried
+harrier
+Harriet
+Harrild
+Harriman
+Harriman's
+Harrington
+Harrington's
+Harris
+Harrisburg
+Harrison
+Harrisonburg
+harrogate
+Harrovian
+harrow
+harrowed
+harrower
+harrowing
+harrows
+harrumph
+harrumphed
+harrumphes
+harrumphing
+harrumphs
+harry
+Harry's
+harrying
+harsh
+harshen
+harshened
+harshening
+harsher
+harshest
+harshly
+harshness
+harslet
+hart
+hartal
+harte
+hartebeest
+Hartford
+harthacanute
+hartlepool
+Hartley
+Hartman
+hartnell
+hartree
+hartshead
+harun
+haruspex
+Harvard
+Harvardize
+Harvardizes
+harvest
+harvestable
+harvested
+harvester
+harvesters
+harvesting
+harvestman
+harvestmen
+harvests
+harvesttime
+Harvey
+Harveyize
+Harveyizes
+Harveys
+harwell
+harwich
+haryana
+harz
+has
+hasa
+hasdrubal
+hash
+hashed
+hashemite
+hasher
+hashes
+hashing
+hashish
+hask
+haskell
+Haskell
+haskins
+Haskins
+haslet
+hasn't
+hasp
+hasps
+hassan
+hasselt
+hassle
+hassled
+hassler
+hassles
+hassling
+hassock
+hassocks
+hast
+hastate
+hastately
+haste
+hasted
+hasten
+hastened
+hastener
+hastening
+hastens
+hastes
+hastier
+hastiest
+hastily
+hastiness
+hasting
+hastings
+hasty
+hat
+hat's
+hatband
+hatbox
+hatch
+hatchability
+hatchable
+hatchback
+hatcheck
+hatched
+hatcheled
+hatcheling
+hatcher
+hatcheries
+hatchery
+hatchery's
+hatches
+hatchet
+hatchet's
+hatchets
+hatching
+hatchling
+hatchment
+hatchments
+Hatchure
+hatchure
+hatchway
+hate
+hated
+hateful
+hatefully
+hatefulness
+hater
+hates
+Hatfield
+hath
+Hathaway
+Hathaway's
+Hathor
+hating
+hatless
+hatpin
+hatred
+hats
+hatshepsut
+hatted
+hatter
+Hatteras
+hatters
+Hattie
+Hattiesburg
+Hattiesburg's
+hatting
+Hattize
+Hattizes
+haubergeon
+hauberk
+Haugen
+Haugen's
+haugh
+haughtier
+haughtily
+haughtiness
+haughty
+haul
+haulage
+haulageway
+haulaway
+hauled
+hauler
+haulers
+haulier
+hauling
+haulm
+hauls
+haunch
+haunch's
+haunches
+haunt
+haunted
+haunter
+haunting
+hauntingly
+haunts
+Hauptmann
+hauraki
+Hausa
+Hausa's
+Hausdorff
+Hausdorff's
+hauser
+Hauser
+hausfrau
+haustellum
+haustorium
+hautboy
+hautboys
+haute
+hauteur
+Havana
+havant
+have
+havel
+havelock
+haven
+haven's
+haven't
+havens
+haver
+havering
+havers
+haversack
+haversack's
+haversacks
+Haversian
+haves
+havildar
+Havilland
+Havilland's
+having
+havoc
+havocked
+havocking
+havocs
+havre
+haw
+Hawaii
+Hawaiian
+hawes
+hawfinch
+hawhaw
+Hawick
+hawing
+hawk
+hawkbill
+hawked
+hawker
+hawkers
+hawking
+Hawkins
+hawkish
+hawkishly
+hawkishness
+hawks
+hawksbill
+hawkweed
+Hawley
+haworth
+hawse
+hawsehole
+hawsepipe
+hawser
+hawthorn
+Hawthorne
+hay
+haybox
+haycock
+Hayden
+Hayden's
+Haydn
+hayer
+Hayes
+hayfield
+hayfields
+hayfork
+haying
+hayloft
+hayloft's
+haylofts
+haymaker
+haymaking
+haymow
+Haynes
+hayrack
+hayrick
+hayride
+hays
+hayseed
+hayseeds
+haystack
+haystacks
+Hayward
+haywire
+haywood
+Haywood
+hazard
+hazard's
+hazarded
+hazarding
+hazardize
+hazardizes
+hazardous
+hazardously
+hazardousness
+hazards
+haze
+haze's
+hazed
+hazel
+hazelhen
+hazelnut
+hazelnuts
+hazer
+hazes
+hazier
+haziest
+hazily
+haziness
+hazing
+hazlitt
+hazy
+HDL
+he
+he'd
+he'll
+he's
+head
+head's
+headache
+headache's
+headaches
+headachy
+headband
+headboard
+headboards
+headcount
+headdress
+headed
+header
+headers
+headfirst
+headforemost
+headgear
+headgroup
+headgroup's
+headgroups
+headhunter
+headier
+headily
+headiness
+heading
+heading's
+headings
+headlamp
+headland
+headland's
+headlands
+headless
+headlessness
+headlight
+headlights
+headline
+headlined
+headliner
+headlines
+headlining
+headlock
+headlong
+headman
+headman's
+headmaster
+headmastership
+headmen
+headmen's
+headmistress
+headmost
+headnote
+headphone
+headphone's
+headphones
+headpiece
+headpin
+headquarter
+headquartered
+headquarters
+headrace
+headrail
+headreach
+headrest
+headroom
+heads
+headsail
+headscarf
+headset
+headsets
+headship
+headshrinker
+headsman
+headsmen
+headspring
+headsquare
+headstall
+headstand
+headstands
+headstock
+headstone
+headstones
+headstream
+headstrong
+headwaiter
+headwall
+headwalls
+headward
+headwards
+headwater
+headwaters
+headway
+headwind
+headwind's
+headwinds
+headword
+headwork
+heady
+heal
+heald
+healds
+healed
+healer
+healers
+Healey
+Healey's
+healing
+heals
+health
+healthful
+healthfully
+healthfulness
+healthier
+healthiest
+healthily
+healthiness
+healths
+healthy
+Healy
+Healy's
+heap
+heaped
+heaping
+heaps
+hear
+heard
+Heard
+hearer
+hearers
+hearest
+hearing
+hearings
+hearken
+hearkened
+hearkening
+hears
+hearsay
+hearse
+hearses
+hearsing
+Hearst
+heart
+heart's
+heartache
+heartache's
+heartaches
+heartbeat
+heartbeats
+heartbreak
+heartbreaking
+heartbreakingly
+heartbroken
+heartburn
+heartburning
+hearted
+heartedly
+hearten
+heartened
+heartening
+hearteningly
+heartens
+heartfelt
+hearth
+hearths
+hearthstone
+heartier
+hearties
+heartiest
+heartily
+heartiness
+heartland
+heartland's
+heartless
+heartlessly
+heartlessness
+heartrending
+heartrendingly
+hearts
+heartsease
+heartsick
+heartsickness
+heartsome
+heartsomely
+heartsore
+heartstring
+heartstrings
+heartthrob
+heartthrob's
+heartthrobs
+heartwarming
+heartwood
+Heartwood
+heartworm
+hearty
+heat
+heatable
+heated
+heatedly
+heater
+heaters
+heath
+heathberry
+heathen
+heathendom
+heathenish
+heathenishly
+heathenism
+heathenization
+heathenize
+heathenized
+heathenizes
+heathenizing
+heathenry
+heather
+heathery
+heathfowl
+Heathkit
+heathless
+heathlike
+heathman
+Heathman
+heating
+heatless
+heats
+heatstroke
+heaume
+heave
+heaved
+heaven
+heaven's
+heavenize
+heavenizes
+heavenliness
+heavenly
+heavens
+heavenward
+heavenwards
+heaver
+heavers
+heaves
+heavier
+heavies
+heaviest
+heavily
+heaviness
+heaving
+Heaviside
+heavy
+heavyhearted
+heavyheartedly
+heavyheartedness
+heavyset
+heavyweight
+hebbel
+hebdomad
+hebdomadal
+hebdomadally
+Hebe
+hebephrenia
+hebephrenic
+hebetate
+hebetation
+hebetic
+hebetude
+hebetudinous
+Hebraic
+Hebraicize
+Hebraicizes
+Hebraism
+Hebraist
+hebraization
+hebraizations
+hebraize
+hebraized
+hebraizes
+hebraizing
+Hebrew
+Hebrews
+Hebrides
+Hebrides's
+Hebron
+Hecate
+Hecate's
+hecatomb
+heck
+heckelphone
+heckle
+heckled
+heckler
+hecklers
+heckles
+heckling
+Heckman
+Heckman's
+hectare
+hectares
+hectic
+hectically
+hectocotylus
+hectogram
+hectogram's
+hectograms
+hectograph
+hectographic
+hectoliter
+hectometer
+hectometer's
+hectometers
+hector
+Hecuba
+hedda
+Hedda
+heddle
+heddler
+hedge
+hedged
+hedgehog
+hedgehog's
+hedgehogs
+hedgehop
+hedgehopper
+hedgepig
+hedger
+hedgerow
+hedges
+hedging
+hedgingly
+hedjaz
+hedonic
+hedonically
+hedonics
+hedonism
+hedonist
+hedonistic
+hedonistically
+hedonists
+hee
+heed
+heeded
+heedful
+heedfully
+heedfulness
+heeding
+heedless
+heedlessly
+heedlessness
+heeds
+heehaw
+heel
+heelball
+heeled
+heeler
+heelers
+heeling
+heelless
+heelpiece
+heelpost
+heels
+heeltap
+heenan
+heerlen
+heffer
+heft
+hefted
+heftier
+heftily
+heftiness
+hefts
+hefty
+Hegel
+hegel
+Hegelian
+Hegelianize
+Hegelianizes
+hegemonic
+hegemonies
+hegemony
+hegira
+hegumen
+heh
+Heidegger
+heidegger
+Heidegger's
+Heidelberg
+Heidi
+Heidi's
+heiduc
+heifer
+Heifetz
+heigh
+height
+heighten
+heightened
+heightening
+heightens
+heights
+heilbronn
+heilungkiang
+Heine
+Heine's
+Heinlein
+Heinlein's
+heinous
+heinously
+heinousness
+Heinrich
+Heinrich's
+Heinz
+Heinze
+heinze
+heir
+heir's
+heirdom
+heiress
+heiress's
+heiresses
+heirless
+heirloom
+heirs
+heirship
+Heisenberg
+Heiser
+heiser
+heist
+heist's
+heisted
+heister
+heisting
+heists
+heitiki
+heitler
+hejira
+hekate
+hekla
+hel
+held
+heldentenor
+Helen
+Helena
+Helene
+Helga
+Helga's
+Helgoland
+heliacal
+heliacally
+Helianthus
+helical
+helically
+helices
+helichrysum
+helicline
+helicograph
+helicoid
+helicoidal
+helicon
+helicopt
+helicopted
+helicopter
+helicopters
+helicopting
+Heligoland
+heliocentric
+heliochrome
+Heliogabalus
+heliogram
+heliogram's
+heliograms
+heliograph
+heliographer
+heliographic
+heliography
+heliogravure
+heliolatrous
+heliolatry
+heliolithic
+heliometer
+heliometer's
+heliometers
+heliometric
+heliometrically
+heliophyte
+Heliopolis
+heliopolis
+Helios
+heliostat
+heliotaxis
+heliotherapy
+heliotrope
+heliotropic
+heliotropically
+heliotropin
+heliotropism
+heliotype
+heliozoan
+heliozoic
+helipad
+heliport
+helistop
+helium
+helix
+helixes
+hell
+hell's
+Helladic
+Hellas
+hellbender
+hellbent
+hellbox
+hellbroth
+hellcat
+Helldiver
+helle
+hellebore
+Helleborine
+Hellenic
+Hellenism
+Hellenist
+Hellenistic
+Hellenization
+Hellenizations
+Hellenize
+Hellenized
+Hellenizes
+Hellenizing
+heller
+hellery
+helles
+Hellespont
+hellfire
+hellgrammite
+hellhole
+hellhound
+hellion
+hellish
+hellishly
+hellishness
+hello
+hellos
+hells
+helluva
+helm
+helmand
+helmet
+helmet's
+helmeted
+helmetlike
+helmets
+Helmholtz
+helminth
+helminthiasis
+helminthic
+helminthology
+helmont
+helmsman
+helmsmanship
+helmsmen
+Helmut
+helot
+helotism
+helotry
+help
+helped
+helper
+helpers
+helpful
+helpfully
+helpfulness
+helping
+helpless
+helplessly
+helplessness
+helpmann
+helpmate
+helpmeet
+helps
+helsingborg
+Helsinki
+helve
+helved
+helvellyn
+helves
+Helvetia
+Helvetian
+Helvetic
+Helvetica
+Helvetii
+helving
+hem
+hem's
+hemacytometer
+hemacytometer's
+hemacytometers
+hemal
+hematic
+hematin
+hematinic
+hematite
+hematoblast
+hematoblastic
+hematocrit
+hematogenous
+hematologic
+hematological
+hematologist
+hematology
+hematoma
+hematophagous
+hemel
+hemelytron
+hemeralopia
+hemialgia
+hemianopsia
+hemicellulose
+hemichordate
+hemicycle
+hemidemisemiquaver
+hemielytron
+hemihedral
+hemihedrally
+hemihydrate
+hemihydrated
+hemimetabolic
+hemimetabolism
+hemimetabolous
+hemimorphic
+hemimorphism
+hemimorphite
+Hemingway
+hemiola
+hemiparasite
+hemiparasitic
+hemiplegia
+hemiplegic
+hemipode
+hemipteran
+hemipterous
+hemispheral
+hemisphere
+hemisphere's
+hemisphered
+hemispheres
+hemispheric
+hemispherical
+hemispheroid
+hemistich
+hemiterpene
+hemline
+hemlock
+hemlock's
+hemlocks
+hemmed
+hemmer
+hemming
+Hemmings
+hemoblast
+hemodynamically
+hemodynamics
+hemoflagellate
+hemoglobin
+hemoglobinic
+hemoglobinopathy
+hemoglobinous
+hemolymph
+hemolysin
+hemolytic
+hemophilia
+hemophiliac
+hemophilic
+hemoprotein
+hemoptysis
+hemorrhage
+hemorrhaged
+hemorrhages
+hemorrhagic
+hemorrhaging
+hemorrhoid
+hemorrhoidal
+hemorrhoids
+hemosiderin
+hemostasis
+hemostat
+hemostatic
+hemostats
+hemp
+hempel
+hempen
+Hempstead
+Hempstead's
+hems
+hemstitch
+hemus
+hen
+hen's
+henae
+henbane
+henbit
+hence
+henceforth
+henceforward
+henchman
+henchmen
+hencoop
+hendecagon
+hendecahedron
+hendecasyllabic
+hendecasyllable
+Henderson
+hendiadys
+Hendrick
+Hendricks
+Hendrickson
+Hendrix
+hendrix
+henequen
+henge
+hengelo
+hengist
+henhouse
+Henie
+Henley
+Henley's
+henna
+hennery
+Hennessey
+Hennessey's
+Hennessy
+henning
+henotheism
+henotheist
+henotheistic
+henpeck
+henpecked
+Henri
+Henri's
+Henrietta
+henry
+Henryson
+hens
+Henslowe
+hent
+Henze
+hep
+heparin
+heparinize
+hepatic
+hepatica
+hepatitis
+hepatize
+hepatized
+hepatizes
+hepatizing
+hepatocellular
+hepatocyte
+hepatocyte's
+hepatocytes
+hepatoma
+Hepburn
+hepcat
+Hephaestus
+hepplewhite
+hepta
+heptad
+heptadecanoic
+heptagon
+heptagonal
+heptahedron
+heptamerous
+heptameter
+heptameter's
+heptameters
+heptane
+heptangular
+heptarchy
+heptastich
+Heptateuch
+heptatriene
+heptavalent
+heptose
+hepworth
+her
+Hera
+heraclea
+heracles
+Heraclid
+Heraclitus
+herakleion
+herald
+heralded
+heraldic
+heraldically
+heralding
+heraldize
+heraldizes
+heraldry
+heralds
+Herat
+herb
+herb's
+herbaceous
+herbage
+herbal
+herbalist
+herbarium
+Herbert
+herbicidal
+herbicidally
+herbicide
+herbicide's
+herbicides
+herbivore
+herbivorous
+herbivorously
+herblike
+herbs
+herby
+hercegovina
+herculaneum
+Herculean
+Hercules
+Hercynian
+herd
+herded
+herder
+herdic
+herding
+herdlike
+herds
+herdsman
+herdsmen
+here
+here's
+hereabout
+hereabouts
+hereafter
+hereat
+hereaway
+hereaways
+hereby
+heredes
+hereditable
+hereditament
+hereditarian
+hereditarianism
+hereditarily
+hereditary
+hereditist
+heredity
+Hereford
+Herefordshire
+herein
+hereinabove
+hereinafter
+hereinbefore
+hereinbelow
+hereinto
+hereof
+hereon
+Herero
+heres
+heresiarch
+heresy
+heretic
+heretic's
+heretical
+heretically
+hereticalness
+hereticize
+hereticizes
+heretics
+hereto
+heretofore
+hereunder
+hereunto
+hereupon
+hereward
+herewith
+heriot
+herisau
+heritability
+heritable
+heritage
+heritages
+heritor
+herl
+herm
+Herman
+Hermann
+Hermann's
+hermannstadt
+hermaphrodite
+hermaphrodite's
+hermaphrodites
+hermaphroditic
+hermaphroditically
+hermaphroditism
+Hermaphroditus
+hermatypic
+hermeneutic
+hermeneutical
+hermeneutically
+hermeneutics
+Hermes
+hermetic
+hermetical
+hermetically
+hermeticism
+hermetism
+hermetist
+hermit
+hermit's
+hermitage
+hermitage's
+hermitages
+Hermite
+hermitian
+hermitism
+hermits
+hermon
+Hermosa
+hermosillo
+hermoupolis
+hern
+Hernandez
+hernandez
+Hernandez's
+herne
+hernia
+hernia's
+hernial
+hernias
+herniate
+herniated
+herniates
+herniating
+herniation
+herniations
+herniorrhaphy
+hero
+hero's
+herod
+herodias
+Herodotus
+heroes
+heroic
+heroical
+heroically
+heroicomic
+heroicomical
+heroics
+heroin
+heroine
+heroine's
+heroines
+heroinism
+heroinize
+heroinizes
+heroism
+heroization
+heroization's
+heroizations
+heroize
+heroized
+heroizes
+heroizing
+heron
+heron's
+heronry
+herons
+herophilus
+heros
+herpes
+herpesvirus
+herpetic
+herpetologic
+herpetological
+herpetologically
+herpetologist
+herpetologists
+herpetology
+Herr
+herrick
+herring
+herring's
+herringbone
+herrings
+Herrington
+herrington
+herriot
+hers
+Herschel
+herself
+hersey
+Hersey
+Hershel
+Hershey
+herstmonceux
+Hertford
+Hertfordshire
+herty
+hertz
+hertzes
+Hertzian
+Hertzog
+Hertzog's
+Herzegovina
+Herzl
+Herzog
+hesiod
+hesiometer
+hesiometer's
+hesiometers
+Hesione
+hesitance
+hesitancy
+hesitant
+hesitantly
+hesitate
+hesitated
+hesitater
+hesitates
+hesitating
+hesitatingly
+hesitation
+hesitations
+Hesperia
+Hesperian
+Hesperides
+hesperidin
+hesperidium
+Hesperus
+Hess
+Hesse
+Hesse's
+Hessian
+Hessians
+hest
+Hester
+Hester's
+hestia
+Hesychast
+Het
+hetaera
+hetaerism
+heterarchy
+heterecious
+hetero
+heteroatom
+heteroautotrophic
+heterocercal
+heterochromatic
+heterochromatin
+heterochromatins
+heterochromosome
+heterochromous
+heteroclite
+heterocycle
+heterocyclic
+heterocyst
+heterodactyl
+heterodont
+heterodox
+heterodoxy
+heterodyne
+heteroecious
+heteroecism
+heterogamete
+heterogametic
+heterogamous
+heterogamy
+heterogeneity
+heterogeneous
+heterogeneously
+heterogeneousness
+heterogenesis
+heterogenetic
+heterogenous
+heterogeny
+heterogonic
+heterogony
+heterograft
+heterography
+heterogynous
+heterolecithal
+heterologous
+heterologously
+heterology
+heterolysis
+heterolytic
+heteromerous
+heteromorphic
+heteromorphism
+heteromorphous
+heteronomous
+heteronomously
+heteronomy
+heteronym
+Heteroousian
+heterophil
+heterophile
+heterophony
+heterophyllous
+heterophylly
+heterophyte
+heterophytic
+heteroplasty
+heteroploid
+heteroploidy
+heteropolar
+heteropolarity
+heteropterous
+heteroscedasticity
+heterosexual
+heterosexuality
+heterosexually
+heterosexuals
+heterosis
+heterosporous
+heterostructure
+heterostyly
+heterotaxis
+heterothallic
+heterotic
+heterotopia
+heterotopic
+heterotroph
+heterotrophic
+heterotrophically
+heterotypic
+heterotypical
+heterozygosis
+heterozygosity
+heterozygote
+heterozygous
+heth
+Hetman
+Hetman's
+Hettie
+Hettie's
+Hetty
+Hetty's
+Heublein
+heuristic
+heuristic's
+heuristically
+heuristics
+Heusen
+Heusen's
+Heuser
+Heuser's
+hevelius
+hevesy
+hew
+hewed
+hewer
+Hewett
+Hewett's
+hewing
+Hewitt
+Hewitt's
+Hewlett
+Hewlett's
+hewn
+hews
+hex
+hexachloride
+hexachloroethane
+hexachlorophene
+hexachord
+hexacosanoic
+hexad
+hexade
+hexadecane
+hexadecimal
+hexadecimally
+hexadecimals
+hexadic
+hexaemeron
+hexafluoride
+hexagon
+hexagonal
+hexagonally
+hexagons
+hexagram
+hexahedron
+hexahydrate
+hexahydrated
+hexahydrite
+hexamerous
+hexameter
+hexamethonium
+hexane
+hexangular
+hexanoic
+hexapla
+hexaploid
+hexaploidy
+hexapod
+hexapody
+hexastich
+hexastyle
+Hexateuch
+hexavalent
+hexene
+hexer
+hexone
+hexosan
+hexose
+hexyl
+hexylresorcinol
+hey
+heyday
+heyduck
+heyerdahl
+Heynis
+Heysham
+heywood
+Heywood
+Hezekiah
+hi
+Hialeah
+Hiatt
+Hiatt's
+hiatus
+hiatuses
+Hiawatha
+hibachi
+Hibbard
+Hibbard's
+hibernaculum
+hibernal
+hibernate
+hibernated
+hibernates
+hibernating
+hibernation
+hibernator
+Hibernia
+Hibernicism
+hibiscus
+hic
+hiccup
+hiccuped
+hiccuping
+hiccups
+hick
+Hickey
+Hickeys
+Hickman
+Hickman's
+hickok
+Hickok
+hickories
+hickory
+Hickox
+hicks
+hid
+hidalgo
+hidden
+hiddenite
+hide
+hideaway
+hidebound
+hided
+hideous
+hideously
+hideousness
+hideout
+hideout's
+hideouts
+hider
+hides
+Hideyoshi
+hiding
+hidrosis
+hidrotic
+hie
+hieing
+Hieland
+hiemal
+hieracosphinx
+hierarch
+hierarchal
+hierarchic
+hierarchical
+hierarchically
+hierarchies
+hierarchy
+hierarchy's
+hieratic
+hieratically
+hierocracy
+hierodule
+hieroglyph
+hieroglyphic
+hieroglyphical
+hieroglyphically
+hieroglyphics
+hierogram
+hierology
+Hieronymus
+hierophant
+hifalutin
+Higgins
+higgle
+higgled
+higgler
+higgles
+higgling
+high
+highball
+highbinder
+highborn
+highboy
+highbred
+highbrow
+highbrowed
+highbrowism
+highchair
+higher
+highest
+highfalutin
+Highfield
+highhanded
+highjack
+highland
+highlander
+highlands
+highlife
+highlight
+highlighted
+highlighting
+highlights
+highline
+highlines
+highly
+highness
+highness's
+highnesses
+highroad
+highs
+hight
+hightail
+highveld
+highway
+highway's
+highwayman
+highwaymen
+highways
+hijack
+hijacked
+hijacker
+hijackers
+hijacking
+hijacks
+hijaz
+hijinks
+hike
+hiked
+hiker
+hikers
+hikes
+hiking
+hilarious
+hilariously
+hilariousness
+hilarity
+Hilary
+Hilbert
+Hildebrand
+Hildebrand's
+Hildesheim
+hilding
+hill
+hill's
+hilla
+hillary
+Hillary
+hillbilly
+Hillcrest
+hilled
+Hillel
+hiller
+hillery
+hillfort
+hilliard
+hillier
+hilling
+hillingdon
+hillman
+hillmen
+hillock
+hillocks
+hillocky
+hills
+Hillsboro
+Hillsdale
+hillside
+hilltop
+hilltop's
+hilltops
+hilly
+hillyer
+hilt
+hilt's
+Hilton
+hilts
+hilum
+hilus
+hilversum
+him
+himachal
+Himalaya
+Himalaya's
+himalayas
+Himalayas
+himation
+himeji
+himmler
+Himmler
+hims
+himself
+Himyarite
+Himyaritic
+hin
+Hinayana
+hinckley
+hind
+hindbrain
+Hindemith
+Hindenburg
+hinder
+hindered
+hinderer
+hindering
+hinders
+hindgut
+Hindi
+hindmost
+hindoo
+hindquarter
+hindquarters
+hindrance
+hindrances
+hinds
+hindsight
+Hindu
+Hindu's
+Hinduism
+Hindus
+hindustan
+Hindustan
+Hindustan's
+Hines
+hinge
+hinged
+hinger
+hinges
+hinging
+hingism
+Hinkle
+hinkle
+Hinman
+Hinman's
+hinny
+Hinsdale
+hinshelwood
+hint
+hinted
+hinter
+hinterland
+hinterlands
+hinting
+hints
+hip
+hip's
+hipbone
+hipness
+hipparch
+hipparchus
+Hippeastrum
+hipped
+hipper
+hippest
+hippie
+hippies
+hipping
+hippo
+hippocampal
+hippocampus
+hippocras
+Hippocrates
+Hippocratic
+Hippocrene
+hippodrome
+hippogriff
+hippolyta
+Hippolytus
+Hippomenes
+hippopotamus
+hippos
+hippy
+hips
+hipster
+hipsterism
+hipsters
+hiragana
+Hiram
+hircine
+hire
+hired
+hireling
+hirelings
+hirer
+hirers
+hires
+Hirey
+hirey
+hiri
+hiring
+hirings
+hirohito
+Hiroshi
+Hiroshi's
+hiroshige
+Hiroshima
+Hirsch
+hirseled
+hirseling
+hirsute
+hirsuteness
+hirsutism
+hirsutulous
+Hirudin
+hirundine
+his
+Hispania
+Hispanic
+Hispanic's
+Hispanicism
+Hispanicization
+Hispanicize
+Hispanicized
+Hispanicizes
+Hispanicizing
+Hispanics
+Hispaniola
+hispid
+hiss
+hissed
+hisser
+hisses
+hissing
+hist
+histaminase
+histamine
+histaminergic
+histaminic
+histidine
+histiocyte
+histochemic
+histochemical
+histochemistry
+histogen
+histogenesis
+histogram
+histogram's
+histograms
+histoid
+histologic
+histological
+histologically
+histologist
+histology
+histolysis
+histolytic
+histone
+histopathologic
+histopathological
+histopathologically
+histopathologist
+histopathology
+histophysiologic
+histophysiological
+histophysiology
+histoplasmosis
+historian
+historian's
+historians
+historiated
+historic
+historical
+historically
+historicalness
+historicism
+historicist
+historicity
+historicize
+historicized
+historicizes
+historicizing
+histories
+historiographer
+historiographic
+historiographical
+historiographically
+historiography
+history
+history's
+histrionic
+histrionically
+histrionics
+hit
+hit's
+Hitachi
+hitch
+Hitchcock
+hitched
+hitcher
+hitches
+hitchhike
+hitchhiked
+hitchhiker
+hitchhikers
+hitchhikes
+hitchhiking
+hitching
+hither
+hithermost
+hitherto
+hitherward
+Hitler
+Hitlerian
+Hitlerism
+Hitlerite
+Hitlerites
+hitless
+hitparade
+hits
+hitter
+hitter's
+hitters
+hitting
+Hittite
+hive
+hiveless
+hives
+hiving
+hmm
+hmso
+ho
+hoactzin
+hoad
+hoagie
+hoagies
+Hoagland
+Hoagland's
+hoagy
+hoar
+hoard
+hoarded
+hoarder
+hoarding
+hoards
+hoarfrost
+hoarhound
+hoarier
+hoariness
+hoarse
+hoarsely
+hoarsen
+hoarsened
+hoarseness
+hoarsening
+hoarser
+hoarsest
+hoary
+hoatching
+hoatzin
+hoax
+hoax's
+hoaxed
+hoaxer
+hoaxes
+hoaxing
+hob
+Hobart
+Hobart's
+hobbema
+Hobbes
+hobbies
+hobbing
+Hobbism
+hobble
+hobbled
+hobbledehoy
+hobbler
+hobbles
+hobbling
+Hobbs
+hobby
+hobby's
+hobbyhorse
+hobbyist
+hobbyist's
+hobbyists
+hobday
+Hobday
+hobgoblin
+hobnail
+hobnailed
+hobnob
+hobnobbed
+hobnobber
+hobnobbing
+hobnobs
+hobo
+Hoboken
+hobos
+hoc
+Hochheimer
+hochhuth
+hock
+hockaday
+hocker
+hockey
+hocking
+hockney
+hocks
+Hocktide
+hocus
+hocused
+hocusing
+hocussed
+hocussing
+hod
+hodad
+hodaddy
+hodden
+hodeida
+Hodge
+hodge
+Hodge's
+hodgepodge
+hodges
+Hodgkin
+Hodgkin's
+Hodgson
+hodman
+hodometer
+hodoscope
+hoe
+hoe's
+hoecake
+hoedown
+hoeing
+hoek
+Hoene
+hoer
+hoes
+hofei
+Hoff
+Hoff's
+Hoffman
+Hofmann
+hofmannsthal
+hofuf
+hog
+hog's
+Hogan
+hogan
+Hogan's
+hogarth
+hogback
+hogg
+hogged
+hogging
+hoggish
+hoggishly
+hoggishness
+hogmanay
+hognosed
+hogs
+hogshead
+hogtie
+hogue
+hogwash
+hogweed
+hohenlinden
+hohenlohe
+hohenstaufen
+Hohenzollern
+hoi
+hoick
+hoicks
+hoiden
+hoising
+hoist
+hoisted
+hoister
+hoisting
+hoistman
+hoistmen
+hoists
+hokan
+hoke
+hokey
+hokeyer
+hokeyest
+hokeyness
+hokeypokey
+hoking
+hokkaido
+hokku
+hokum
+hokusai
+holabird
+holandric
+holandry
+holarctic
+holbein
+Holbrook
+Holcomb
+Holcomb's
+hold
+holdall
+holdalls
+holdback
+holden
+holder
+holders
+holdfast
+holding
+holdings
+holdout
+holdouts
+holdover
+holdovers
+holds
+holdup
+holdups
+hole
+hole's
+holeable
+holed
+holes
+holey
+holiday
+holiday's
+holidayer
+holidaymaker
+holidays
+holier
+holies
+holily
+holiness
+holing
+holinshed
+holism
+holistic
+holistically
+holkar
+Holland
+Holland's
+hollandaise
+Hollander
+Hollanders
+Hollandia
+Hollands
+hollas
+holler
+hollered
+hollering
+Hollerith
+hollers
+Holliday
+hollies
+Holliger
+Hollingsworth
+Hollingsworth's
+Hollister
+hollo
+holloa
+hollow
+holloware
+Holloway
+Holloway's
+hollowed
+hollower
+hollowest
+hollowing
+hollowly
+hollowness
+hollows
+hollowware
+holly
+hollyhock
+hollyhocks
+Hollywood
+Hollywood's
+Hollywoodize
+Hollywoodizes
+Holm
+Holm's
+Holman
+Holman's
+Holmdel
+Holmdel's
+Holmes
+holmic
+holmium
+holoblastic
+holoblastically
+holocaine
+holocaust
+Holocene
+holoenzyme
+holofernes
+hologamous
+hologamy
+hologram
+hologram's
+holograms
+holograph
+holographic
+holographically
+holography
+hologynic
+hologyny
+holohedral
+holometabolism
+holometabolous
+holomyarian
+holophrastic
+holophytic
+holoplankton
+holothurian
+holotype
+holotypic
+holozoic
+holp
+holpen
+hols
+Holst
+Holstein
+holster
+holstered
+holstering
+holsters
+holt
+holy
+holyhead
+holyoake
+Holyoke
+holystone
+holystones
+holytide
+holzman
+Holzman
+Hom
+homage
+homaged
+homager
+homages
+homaging
+hombre
+homburg
+home
+homebody
+homebound
+homebred
+homebuild
+homebuilder
+homebuilders
+homebuilding
+homebuilt
+homecome
+homecoming
+homecomings
+homecraft
+homed
+homegrown
+homeland
+homeless
+homelessness
+homelier
+homelike
+homeliness
+homely
+homemade
+homemake
+homemaker
+homemaker's
+homemakers
+homemaking
+homeobox
+homeomorph
+homeomorphic
+homeomorphism
+homeomorphism's
+homeomorphisms
+homeopath
+homeopathic
+homeopathically
+homeopathies
+homeopaths
+homeopathy
+homeopathy's
+homeostasis
+homeostatic
+homeotypic
+homeown
+homeowner
+homeowners
+homeownership
+homer
+Homeric
+homerists
+homeroom
+homers
+homes
+homesick
+homesickness
+homesite
+homespun
+homestead
+homesteader
+homesteaders
+homesteads
+homestretch
+hometown
+homeward
+homewards
+homework
+homeworker
+homeworkers
+homey
+homeyness
+homicidal
+homicidally
+homicide
+homicides
+homier
+homiletic
+homiletical
+homiletically
+homiletics
+homily
+hominess
+homing
+hominid
+hominization
+hominized
+hominoid
+hominy
+homo
+homocentric
+homocercal
+homochromatic
+homochromous
+homocyclic
+homodont
+homoerotic
+homoeroticism
+homogametic
+homogamic
+homogamous
+homogamy
+homogenate
+homogenates
+homogeneities
+homogeneity
+homogeneity's
+homogeneous
+homogeneously
+homogeneousness
+homogenization
+homogenization's
+homogenizations
+homogenize
+homogenized
+homogenizer
+homogenizers
+homogenizes
+homogenizing
+homogenous
+homogeny
+homograft
+homograph
+homographic
+homoiotherm
+homoiothermal
+homoiothermic
+Homoiousian
+homolog
+homologate
+homologation
+homological
+homologically
+homologization
+homologize
+homologized
+homologizer
+homologizes
+homologizing
+homologous
+homolographic
+homologue
+homology
+homolysis
+homolytic
+homomorphic
+homomorphism
+homomorphism's
+homomorphisms
+homomorphy
+homonuclear
+homonym
+homonym's
+homonymic
+homonymous
+homonymously
+homonyms
+homonymy
+homoousian
+homophile
+homophobe
+homophobes
+homophobia
+homophone
+homophonic
+homophonous
+homophony
+homophyly
+homoplastic
+homoplastically
+homoplasy
+homopolar
+homopolymer
+homopolymers
+homopteran
+homopterous
+homorganic
+homos
+homoscedastic
+homoscedasticity
+homosexual
+homosexuality
+homosexually
+homosexuals
+homosporous
+homospory
+homotaxis
+homothallic
+homothallism
+homothermal
+homotopy
+homotransplant
+homotransplantation
+homozygosis
+homozygosity
+homozygote
+homozygotic
+homozygous
+homozygously
+homunculi
+homunculus
+homy
+hon
+honan
+honcho
+honchos
+Honda
+Honda's
+hondo
+Hondo
+Honduras
+hone
+honecker
+honed
+honegger
+honer
+hones
+honest
+honestly
+honesty
+honewort
+honey
+honeybee
+honeybees
+honeybunch
+honeycomb
+honeycombed
+honeydew
+honeyed
+honeying
+honeymoon
+honeymooned
+honeymooner
+honeymooners
+honeymooning
+honeymoons
+honeys
+honeysucker
+honeysuckle
+Honeywell
+Hong
+hong
+honiara
+honied
+honing
+Honiton
+honk
+honked
+honker
+honkers
+honkeys
+honkie
+honkies
+honking
+honks
+honky
+honky's
+Honolulu
+honor
+honorabilities
+honorability
+honorability's
+honorable
+honorable's
+honorableness
+honorables
+honorableship
+honorableship's
+honorableships
+honorablies
+honorably
+honoraria
+honorarily
+honorarium
+honorary
+honored
+honoree
+honorer
+honorer's
+honorers
+honorific
+honorific's
+honorifically
+honorifics
+honoring
+honorless
+honorlesses
+honors
+Honshu
+Honshu's
+hoo
+hooch
+hood
+hood's
+hooded
+hoodedness
+hooding
+hoodlike
+hoodlum
+hoodlumish
+hoodlumism
+hoodlumize
+hoodlumizes
+hoodlums
+hoodoo
+hoodooism
+hoodoos
+hoods
+hoodwink
+hoodwinked
+hoodwinker
+hoodwinking
+hoodwinks
+hooey
+hoof
+hoof's
+hoofbeat
+hoofbound
+hoofed
+hoofer
+hoofmark
+hoofmarks
+hoofprint
+hoofprint's
+hoofprints
+hoofs
+hoogh
+hooghly
+hook
+hookah
+hooke
+hooked
+hookedness
+hooker
+hookers
+hookey
+hookeys
+hooking
+hooklet
+hooknose
+hooks
+hookup
+hookups
+hookworm
+hooky
+hooligan
+hooliganism
+hooliganize
+hooliganizes
+hooligans
+hoop
+hooped
+hooper
+hooping
+hoopla
+hoopoe
+hoopoes
+hoops
+hooray
+hooray's
+hoorays
+hoosegow
+hoosegows
+Hoosier
+Hoosierize
+Hoosierizes
+hoot
+hootch
+hooted
+hootenanny
+hooter
+hooters
+hooting
+hoots
+Hoover
+Hoover's
+hoovered
+hoovering
+Hooverize
+Hooverizes
+hoovers
+hooves
+hop
+hope
+hoped
+hopeful
+hopefully
+hopefulness
+hopefuls
+hopeh
+hopeless
+hopelessly
+hopelessness
+hoper
+hopes
+hophead
+hopi
+Hopi
+Hopi's
+hoping
+Hopkins
+Hopkinsian
+hoplite
+hoplology
+hopped
+hopper
+hopper's
+hoppers
+hopping
+hopple
+hoppled
+hopples
+hoppus
+hops
+hopsack
+hopscotch
+hora
+Horace
+horae
+horal
+horary
+Horatian
+Horatio
+Horatius
+hord
+horde
+horde's
+hordein
+hordes
+horeb
+horehound
+Horenstein
+horizon
+horizon's
+horizonal
+horizons
+horizontal
+horizontalization
+horizontalization's
+horizontalizations
+horizontalize
+horizontalizes
+horizontally
+horme
+hormonal
+hormonally
+hormone
+hormone's
+hormonelike
+hormones
+hormonize
+hormonizes
+hormuz
+horn
+hornbeam
+hornbeams
+hornbill
+hornbills
+hornblende
+Hornblower
+hornbook
+hornby
+Horne
+horned
+hornedness
+hornet
+hornet's
+hornets
+hornfels
+hornier
+horniness
+hornless
+hornlessness
+hornlike
+hornmouth
+hornpipe
+hornpipe's
+hornpipes
+horns
+hornstone
+hornswoggle
+hornswoggled
+hornswoggles
+hornswoggling
+horntail
+hornwort
+horny
+horologe
+horologer
+horologic
+horological
+horologist
+horologists
+horologium
+horology
+horoscope
+horoscopes
+horoscopy
+Horowitz
+horrendous
+horrendously
+horrent
+horrible
+horribleness
+horribly
+horrid
+horridly
+horridness
+horrific
+horrifically
+horrified
+horrifies
+horrify
+horrifying
+horrifyingly
+horripilation
+horror
+horror's
+horrorize
+horrorizes
+horrors
+hors
+horsa
+horse
+horse's
+horseback
+horsebox
+horseboxs
+horsecar
+horsedom
+horseflesh
+horseflies
+horsefly
+horsehair
+horsehide
+horselaugh
+horseleech
+horseleeches
+horselike
+horsely
+horseman
+horsemanship
+horsemen
+horsemint
+horsens
+horseplay
+horseplayer
+horsepower
+horsepowers
+horseradish
+horseradishes
+horseriding
+horses
+horseshit
+horseshoe
+horseshoer
+horseshoes
+horsetail
+horsewhip
+horsewoman
+horsewomen
+horsey
+horsier
+horsily
+horsiness
+horsing
+horst
+horsy
+horta
+hortative
+hortatively
+hortatory
+Hortense
+horthy
+horticultural
+horticulturalist
+horticulturally
+horticulture
+horticulturist
+Horton
+hortus
+Horus
+hosanna
+hose
+hose's
+hosea
+hosed
+hoses
+hosier
+hosiery
+hosing
+hospice
+hospices
+hospitable
+hospitably
+hospital
+hospital's
+hospitalet
+hospitality
+hospitalization
+hospitalization's
+hospitalizations
+hospitalize
+hospitalized
+hospitalizes
+hospitalizing
+hospitaller
+hospitals
+hospodar
+host
+host's
+Hosta
+hostage
+hostage's
+hostages
+hosted
+hostel
+hosteler
+hosteller
+hostelling
+hostelries
+hostelry
+hostels
+hostess
+hostess's
+hostesses
+hostie
+hostile
+hostilely
+hostilities
+hostility
+hostilize
+hostilizes
+hosting
+hostler
+hostly
+hosts
+hot
+hotbed
+hotblood
+hotbox
+hotchpot
+hotchpotch
+hotdogs
+hotel
+hotel's
+hotelier
+hotelization
+hotelization's
+hotelizations
+hotelize
+hotelizes
+hotelman
+hotels
+hotfeet
+hotfoot
+hotfoot's
+hotfoots
+hothead
+hotheaded
+hotheadedly
+hotheadedness
+hothouse
+hotien
+hotly
+hotness
+hotplate
+hotpot
+hotrod
+hotshot
+hotspur
+Hottentot
+Hottentot's
+hotter
+hottest
+hottie
+hottish
+Houdaille
+Houdaille's
+Houdan
+Houdini
+houdon
+hough
+Houghton
+Houghton's
+houmous
+hound
+hounded
+hounder
+hounding
+hounds
+hounslow
+hour
+hour's
+hourglass
+houri
+hourly
+hours
+house
+house's
+houseboat
+houseboats
+housebound
+houseboy
+houseboys
+housebreak
+housebreaker
+housebreakers
+housebreaking
+housebroken
+housebuilding
+housecarl
+houseclean
+housecleaner
+housecleaning
+housecoat
+housed
+housedress
+housefather
+housefathers
+houseflies
+housefly
+housefly's
+housefront
+houseful
+houseguest
+household
+household's
+householder
+householders
+households
+housekeep
+housekeeper
+housekeeper's
+housekeepers
+housekeeping
+housel
+houseled
+houseleek
+houseleeks
+houseless
+houselessness
+houselights
+houseline
+houseling
+houselings
+housemaid
+housemaids
+houseman
+housemaster
+housemasters
+housemate
+housemate's
+housemates
+housemother
+housemothers
+houseplant
+houser
+houseroom
+houses
+housetop
+housetop's
+housetops
+houseward
+housewares
+housewarming
+housewife
+housewife's
+housewifeliness
+housewifely
+housewifery
+housewives
+housework
+houseworker
+houseworkers
+housing
+housings
+housman
+Houston
+Houstonia
+houting
+hove
+hovel
+hovel's
+hoveled
+hoveler
+hovelers
+hoveling
+hovels
+hover
+hovercraft
+hovered
+hoverer
+hovering
+hoverport
+hovers
+hovertrain
+hovertrains
+how
+how's
+Howard
+howbeit
+howdah
+howdy
+Howe
+Howell
+however
+howitzer
+howl
+Howland
+howled
+howler
+howlet
+howling
+howls
+howrah
+hows
+howsoever
+howsomever
+howtowdie
+hoxha
+hoy
+Hoya
+hoyden
+hoydenish
+hoylake
+hoyle
+Hoyt
+Hoyt's
+HP
+hradec
+Hrothgar
+Hrothgar's
+hrs
+hrvatska
+hsi
+hsian
+hsiang
+hsining
+hsinking
+hua
+huambo
+huang
+hub
+hub's
+hubba
+Hubbard
+Hubbard's
+Hubbell
+Hubbell's
+hubbies
+hubble
+Hubble
+Hubble's
+hubbub
+hubby
+hubcap
+hubcap's
+hubcaps
+Huber
+Huber's
+Hubert
+hubli
+hubris
+hubristic
+hubristically
+hubs
+huck
+Huck
+huckaback
+huckel
+huckle
+huckleberry
+hucklebone
+huckster
+huckstered
+huckstering
+hucksterism
+hucksterize
+hucksterizes
+hucksters
+hud
+Huddersfield
+huddle
+huddled
+huddler
+huddles
+Huddleston
+huddling
+Hudibrastic
+Hudson
+hue
+hue's
+hued
+huelva
+hues
+huesca
+huey
+Huey
+huff
+huffier
+huffiness
+huffish
+Huffman
+Huffman's
+huffy
+hufuf
+hug
+huge
+hugely
+hugeness
+hugeous
+hugeously
+huger
+hugest
+huggable
+hugged
+hugger
+huggermugger
+huggers
+hugging
+huggings
+Huggins
+Hugh
+Hughes
+hughie
+Hugo
+hugs
+Huguenot
+huh
+huhehot
+hula
+hulk
+hulked
+hulking
+hulks
+hull
+hull's
+hullabaloo
+hullabalooed
+hullabalooing
+hullabaloos
+hulled
+huller
+hulling
+hullo
+hulls
+hulme
+hum
+human
+humane
+humanely
+humaneness
+humanism
+humanist
+humanistic
+humanistically
+humanists
+humanitarian
+humanitarianism
+humanitarianize
+humanitarianizes
+humanitarians
+humanities
+humanity
+humanity's
+humanization
+humanization's
+humanizations
+humanize
+humanized
+humanizer
+humanizers
+humanizes
+humanizing
+humankind
+humanlike
+humanly
+humanness
+humanoid
+humans
+humber
+humberside
+humble
+humblebee
+humbled
+humbleness
+humbler
+humbles
+humblest
+humbling
+humbly
+Humboldt
+humbug
+humbugged
+humbuggery
+humbugging
+humdinger
+humdrum
+Hume
+humectant
+humeral
+humeri
+humerus
+humic
+humid
+humidification
+humidifications
+humidified
+humidifier
+humidifiers
+humidifies
+humidify
+humidifying
+humidistat
+humidities
+humidity
+humidly
+humidor
+humification
+humifications
+humified
+humiliate
+humiliated
+humiliates
+humiliating
+humiliatingly
+humiliation
+humiliations
+humility
+hummable
+hummed
+Hummel
+Hummel's
+hummer
+humming
+hummingbird
+hummingbirds
+hummock
+hummocks
+hummocky
+humor
+humor's
+humoral
+humored
+humorer
+humorers
+humoresque
+humoring
+humorism
+humorism's
+humorisms
+humorist
+humorist's
+humoristic
+humoristical
+humoristical's
+humoristicals
+humoristics
+humorists
+humorize
+humorizes
+humorless
+humorlesses
+humorlessness
+humorous
+humorously
+humorousness
+humors
+humorsome
+hump
+humpback
+humpbacked
+humpbacks
+humped
+Humperdinck
+humph
+Humphrey
+Humphreys
+humpier
+humping
+humps
+humpty
+Humpty
+humpy
+hums
+humus
+Hun
+hunan
+hunch
+hunchback
+hunchback's
+hunchbacked
+hunchbacks
+hunched
+hunches
+hundred
+hundredfold
+hundreds
+hundredth
+hundredweight
+hundredweights
+hung
+Hungarian
+Hungary
+hunger
+hungered
+hungering
+hungers
+hungnam
+hungrier
+hungriest
+hungrily
+hungriness
+hungry
+hunk
+hunk's
+hunker
+hunkered
+hunkering
+hunkers
+hunks
+Hunnish
+huns
+hunt
+hunted
+hunter
+hunters
+hunting
+huntingdon
+Huntingdonshire
+Huntington
+Huntington's
+Huntley
+Huntley's
+huntress
+hunts
+huntsman
+Huntsville
+hunyadi
+huon
+hup
+hupeh
+huppah
+Hurd
+Hurd's
+Hurdies
+hurdle
+hurdled
+hurdler
+hurdles
+hurdling
+hurds
+hurl
+hurled
+hurler
+hurlers
+hurley
+hurling
+hurly
+Huron
+hurrah
+hurray
+hurrays
+hurricane
+hurricane's
+hurricanes
+hurricanize
+hurricanizes
+hurried
+hurriedly
+hurriedness
+hurrier
+hurries
+hurry
+hurrying
+Hurst
+hurstmonceux
+hurt
+hurter
+hurtful
+hurtfully
+hurtfulness
+hurting
+hurtingly
+hurtle
+hurtled
+hurtles
+hurtless
+hurtling
+hurts
+hurty
+Hurwitz
+hus
+husain
+husband
+husband's
+husbander
+husbandly
+husbandman
+husbandmen
+husbandry
+husbands
+husein
+hush
+hushaby
+hushed
+hushes
+hushing
+husk
+husked
+husker
+huskier
+huskies
+huskily
+huskiness
+husking
+husks
+husky
+huss
+hussar
+hussein
+husserl
+hussies
+Hussite
+hussy
+hustings
+hustle
+hustled
+hustler
+hustlers
+hustles
+hustling
+Huston
+Huston's
+hut
+hut's
+hutch
+hutchie
+Hutchins
+Hutchinson
+Hutchison
+hutment
+huts
+hutu
+hutzpah
+Huxley
+Huxtable
+Huxtable's
+Huybrechts
+huygens
+huysmans
+huzzah
+huzzahs
+hwang
+hwyl
+hyacinth
+hyacinthine
+hyacinths
+Hyacinthus
+Hyades
+hyaena
+hyaenas
+hyalin
+hyaline
+hyalinization
+hyalinization's
+hyalinizations
+hyalinize
+hyalinizes
+hyalite
+hyaloid
+hyaloplasm
+hyaluronic
+Hyannis
+hybrid
+hybridism
+hybridity
+hybridizable
+hybridizable's
+hybridizables
+hybridization
+hybridization's
+hybridizations
+hybridize
+hybridized
+hybridizer
+hybridizers
+hybridizes
+hybridizing
+hybrids
+hybris
+hydantoin
+hydathode
+hydatid
+Hyde
+Hyde's
+hyderabad
+hydnocarpate
+hydnocarpic
+hydra
+hydracid
+hydrangea
+hydrant
+hydranth
+hydrants
+hydrastinine
+Hydrastis
+hydrate
+hydrated
+hydrates
+hydrating
+hydration
+hydrations
+hydrator
+hydraulic
+hydraulical
+hydraulically
+hydraulics
+hydrazide
+hydrazine
+hydrazoic
+hydria
+hydric
+hydrically
+hydride
+hydrides
+hydriodic
+hydro
+hydrobiological
+hydrobiologist
+hydrobiology
+hydrobromic
+hydrocarbon
+hydrocarbonaceous
+hydrocarbonic
+hydrocarbonous
+hydrocarbons
+hydrocaryaceous
+hydrocaryaceouses
+hydrocele
+hydrocellulose
+hydrocephalic
+hydrocephalus
+hydrocephaly
+hydrochemistry
+hydrochloric
+hydrochloride
+hydrocoral
+hydrocortisone
+hydrocyanic
+hydrodynamic
+hydrodynamical
+hydrodynamically
+hydrodynamicist
+hydrodynamics
+hydroelectric
+hydroelectrically
+hydroelectricity
+hydrofluoric
+hydrofoil
+hydroformer
+hydroforming
+hydrogen
+hydrogen's
+hydrogenate
+hydrogenation
+hydrogenization
+hydrogenization's
+hydrogenizations
+hydrogenize
+hydrogenized
+hydrogenizes
+hydrogenizing
+hydrogenolysis
+hydrogenous
+hydrogens
+hydrograph
+hydrographer
+hydrographic
+hydrographically
+hydrography
+hydroid
+hydrokinetic
+hydrokinetics
+hydrolase
+hydrologic
+hydrological
+hydrologically
+hydrologist
+hydrology
+hydrolysate
+hydrolysis
+hydrolyte
+hydrolytic
+hydrolytically
+hydrolyzable
+hydrolyzable's
+hydrolyzables
+hydrolyze
+hydrolyze's
+hydrolyzed
+hydrolyzes
+hydromagnetic
+hydromagnetics
+hydromancy
+hydromechanical
+hydromechanics
+hydromedusa
+hydromel
+hydrometallurgy
+hydrometeor
+hydrometer
+hydrometer's
+hydrometers
+hydrometric
+hydrometrical
+hydrometry
+hydromorphic
+hydronaut
+hydronic
+hydronically
+hydronium
+hydropathic
+hydropathically
+hydropathy
+hydroperoxide
+hydrophane
+hydrophile
+hydrophilic
+hydrophilous
+hydrophobia
+hydrophobic
+hydrophobicity
+hydrophone
+hydrophyte
+hydrophytic
+hydroplane
+hydroplaner
+hydroponic
+hydroponically
+hydroponics
+hydropower
+hydroquinone
+hydros
+hydroscope
+hydrosere
+Hydroski
+hydrosol
+hydrosolic
+hydrospace
+hydrosphere
+hydrospheric
+hydrostat
+hydrostatic
+hydrostatical
+hydrostatically
+hydrostatics
+hydrosulfide
+hydrosulfite
+hydrosulphate
+hydrosulphide
+hydrosulphurous
+hydrotactic
+hydrotaxis
+hydrotherapeutics
+hydrotherapy
+hydrothermal
+hydrothermally
+hydrothorax
+hydrotropic
+hydrotropically
+hydrotropism
+hydrous
+hydroxide
+hydroxides
+hydroxonium
+hydroxy
+hydroxyl
+hydroxyl's
+hydroxylamine
+hydroxylate
+hydroxylation
+hydroxylic
+hydroxylization
+hydroxylization's
+hydroxylizations
+hydroxylize
+hydroxylizes
+hydroxyls
+hydroxyproline
+hydroxyzine
+hydrozoan
+Hydrus
+hyena
+hyenic
+hyenoid
+hyetograph
+hyetography
+Hygeia
+hygiene
+hygienic
+hygienically
+hygienics
+hygienist
+hygienists
+hygienization
+hygienization's
+hygienizations
+hygienize
+hygienizes
+hygristor
+hygrograph
+hygrometer
+hygrometer's
+hygrometers
+hygrometric
+hygrometry
+hygrophilous
+hygrophyte
+hygrophytic
+hygroscope
+hygroscopic
+hygroscopically
+hygroscopicity
+hygrostat
+hying
+hyksos
+hyla
+hylomorphism
+hylophagous
+hylotheism
+hylozoism
+Hyman
+hymen
+hymenal
+hymeneal
+hymeneally
+hymenial
+hymenium
+hymenopteran
+hymenopterous
+hymens
+hymettus
+hymn
+hymn's
+hymnal
+hymnary
+hymnbook
+hymning
+hymnist
+hymnody
+hymnology
+hymns
+Hynninen
+hyoid
+hyoscyamine
+Hyoscyamus
+hypabyssal
+hypaesthesia
+hypaethral
+hypallage
+hypanthium
+hype
+hype's
+hyped
+hyper
+hyperacid
+hyperacidity
+hyperactive
+hyperactivity
+hyperaemia
+hyperbaric
+hyperbarically
+hyperbaton
+hyperbola
+hyperbole
+hyperbolic
+hyperbolical
+hyperbolically
+hyperbolist
+hyperbolize
+hyperbolized
+hyperbolizes
+hyperbolizing
+hyperboloid
+hyperboloidal
+hyperborean
+hypercatalectic
+hypercatharsises
+hypercellularity
+hypercharge
+hypercivilization
+hypercivilization's
+hypercivilizations
+hypercivilized
+hypercivilized's
+hypercivilizeds
+hypercorrect
+hypercorrection
+hypercritic
+hypercritical
+hypercritically
+hypercriticism
+hypercriticize
+hypercriticizes
+hypercube
+hypercube's
+hypercubes
+hyperdulia
+hyperemia
+hyperemic
+hyperemphasize
+hyperemphasizes
+hyperesthesia
+hyperesthetic
+hypereutectic
+hyperextension
+hyperfine
+hyperfocal
+hypergamous
+hypergamously
+hypergamy
+hyperglycaemia
+hyperglycemia
+hyperglycemic
+hyperimmunization
+hyperimmunization's
+hyperimmunizations
+hyperimmunize
+hyperimmunizes
+hyperinsulinism
+hyperinsulinization
+hyperinsulinization's
+hyperinsulinizations
+hyperinsulinize
+hyperinsulinizes
+hyperion
+hyperirritability
+hyperirritable
+hyperkeratosis
+hyperkeratotic
+hyperkinesia
+hyperkinesis
+hyperkinetic
+hypermarket
+hypermeter
+hypermeter's
+hypermeters
+hypermetric
+hypermetrical
+hypermetropia
+hypermetropic
+hypermetropical
+hypermetropy
+hypermnesia
+hypermnesic
+hypermorph
+hypermorphic
+hypermorphism
+hyperon
+hyperope
+hyperopia
+hyperopic
+hyperostosis
+hyperostotic
+hyperoxygenize
+hyperoxygenizes
+hyperparasite
+hyperparasitic
+hyperparasitism
+hyperparasitize
+hyperparasitizes
+hyperphagia
+hyperphysical
+hyperphysically
+hyperpituitarism
+hyperpituitary
+hyperplane
+hyperplanes
+hyperplasia
+hyperplastic
+hyperploid
+hyperploidy
+hyperpnoea
+hyperpyrexia
+hyperrealize
+hyperrealizes
+hypersensitive
+hypersensitiveness
+hypersensitivity
+hypersensitization
+hypersensitization's
+hypersensitizations
+hypersensitize
+hypersensitized
+hypersensitizes
+hypersensitizing
+hypersonic
+hypersonically
+hyperspace
+hyperspiritualizing
+hyperspiritualizing's
+hyperspiritualizings
+hyperstability
+hyperstable
+hypersthene
+hypersurface
+hypertension
+hypertensive
+hyperterm
+hyperterms
+hypertext
+hypertext's
+hyperthermia
+hyperthermic
+hyperthyroid
+hyperthyroidism
+hyperthyroidization
+hyperthyroidization's
+hyperthyroidizations
+hyperthyroidize
+hyperthyroidizes
+hypertonic
+hypertonicity
+hypertrophic
+hypertrophied
+hypertrophy
+hypervelocity
+hyperventilation
+hypervitalization
+hypervitalization's
+hypervitalizations
+hypervitalize
+hypervitalizes
+hypervitaminosis
+hypes
+hypesthesia
+hypethral
+hypha
+hyphae
+hyphal
+hyphen
+hyphen's
+hyphenate
+hyphenated
+hyphenates
+hyphenating
+hyphenation
+hyphenations
+hyphened
+hyphening
+hyphenization
+hyphenization's
+hyphenizations
+hyphenize
+hyphenizes
+hyphenless
+hyphens
+hypnagogic
+hypnoanalysis
+hypnogenesis
+hypnogenetic
+hypnogenetically
+hypnogogic
+hypnoid
+hypnoidal
+hypnology
+hypnopaedia
+hypnopompic
+Hypnos
+hypnoses
+hypnosis
+hypnotherapy
+hypnotic
+hypnotically
+hypnotics
+hypnotism
+hypnotist
+hypnotists
+hypnotizabilities
+hypnotizability
+hypnotizability's
+hypnotizable
+hypnotizable's
+hypnotizables
+hypnotization
+hypnotization's
+hypnotizations
+hypnotize
+hypnotized
+hypnotizer
+hypnotizers
+hypnotizes
+hypnotizing
+hypo
+hypoacidity
+hypoactive
+hypoblast
+hypocaust
+hypocellularity
+hypocenter
+hypocentral
+hypochlorite
+hypochlorous
+hypochondria
+hypochondriac
+hypochondriacal
+hypochondriacally
+hypochondrium
+hypocoristic
+hypocoristical
+hypocoristically
+hypocotyl
+hypocrisies
+hypocrisy
+hypocrite
+hypocrite's
+hypocrites
+hypocritic
+hypocritical
+hypocritically
+hypocycloid
+hypoderm
+hypodermic
+hypodermically
+hypodermics
+hypodermis
+hypoeutectic
+hypogastrium
+hypogeal
+hypogene
+hypogenous
+hypogeous
+hypogeum
+hypoglossal
+hypoglycaemia
+hypoglycemia
+hypoglycemic
+hypognathous
+hypogynous
+hypoid
+hypoiodite
+hypolimnion
+hypomania
+hypomorphic
+hyponasty
+hyponitrite
+hyponitrous
+hypophosphate
+hypophosphite
+hypophosphoric
+hypophosphorous
+hypophyge
+hypophyseal
+hypophysectomized
+hypophysis
+hypopituitarism
+hypoplasia
+hypoploid
+hypopnoea
+hypos
+hyposensitization
+hyposensitize
+hypostatization
+hypostatization's
+hypostatizations
+hypostatize
+hypostatizes
+hyposthenia
+hypostyle
+hyposulphite
+hyposulphurous
+hypotaxis
+hypotension
+hypotensive
+hypotenuse
+hypotenuses
+hypothalamic
+hypothalamically
+hypothalamus
+hypothalmus
+hypothec
+hypothecate
+hypothecation
+hypothecator
+hypothenuse
+hypothermal
+hypothermia
+hypothermic
+hypotheses
+hypothesis
+hypothesize
+hypothesized
+hypothesizer
+hypothesizers
+hypothesizes
+hypothesizing
+hypothetic
+hypothetical
+hypothetically
+hypothyroid
+hypothyroidism
+hypotonic
+hypotonically
+hypotonicity
+hypotrophy
+hypoxanthine
+hypoxemia
+hypoxemic
+hypoxia
+hypoxic
+hypsography
+hypsometer
+hypsometer's
+hypsometers
+hypsometric
+hypsometry
+hyracoid
+hyrax
+hyrcania
+Hyson
+hyssop
+hysterectomize
+hysterectomized
+hysterectomizes
+hysterectomizing
+hysterectomy
+hysteresis
+hysteretic
+hysteria
+hysteric
+hysterical
+hysterically
+hysterics
+hysterogenic
+hysteroid
+hysteron
+hysterotomy
+hystricomorph
+Hz
+I'd
+I'll
+I'm
+i's
+I've
+IA
+iamb
+iambic
+iambus
+iambuses
+Ian
+Ian's
+Iapetus
+iata
+iatric
+iatrogenic
+ibadan
+ibarruri
+Iberia
+Iberian
+ibero
+Ibero
+ibert
+ibex
+ibibio
+ibid
+ibidem
+ibis
+ibises
+ibiza
+IBM
+IBM's
+Ibn
+Ibo
+Ibrahim
+Ibsen
+Icaria
+Icarian
+Icarus
+ICC
+ice
+iceberg
+iceberg's
+icebergs
+iceblink
+icebound
+icebox
+icebreaker
+icecap
+icecap's
+icecaps
+iced
+icefall
+icehouse
+Iceland
+Iceland's
+Icelander
+Icelandic
+iceless
+iceman
+iceman's
+icemans
+Iceni
+ices
+ichang
+ichinomiya
+ichneumon
+ichneumonized
+ichneumonized's
+ichneumonizeds
+ichnography
+ichnology
+ichor
+ichorous
+ichthyic
+ichthyoid
+ichthyolite
+ichthyology
+ichthyophagous
+Ichthyornis
+ichthyosaur
+ichthyosis
+icicle
+icicles
+icier
+iciest
+icily
+iciness
+icing
+icings
+ickier
+icky
+ICL
+icon
+icon's
+iconic
+iconically
+iconicity
+iconium
+iconoclasm
+iconoclast
+iconoclastic
+iconoclastically
+iconographer
+iconographic
+iconographical
+iconographically
+iconography
+iconolatry
+iconological
+iconology
+iconomatic
+iconoscope
+iconostasis
+icons
+icosahedra
+icosahedral
+icosahedron
+icterus
+ictinus
+ictus
+icy
+id
+id's
+Ida
+Ida's
+Idaho
+ide
+idea
+idea's
+ideal
+idealess
+idealism
+idealist
+idealistic
+idealistically
+ideality
+idealization
+idealization's
+idealizations
+idealize
+idealized
+idealizer
+idealizers
+idealizes
+idealizing
+idealless
+ideally
+idealogical
+idealogy
+ideals
+ideas
+ideate
+ideates
+ideation
+ideational
+ideationally
+ideatum
+idem
+idempotent
+idempotents
+identic
+identical
+identically
+identicalness
+identifers
+identifiability
+identifiable
+identifiably
+identification
+identifications
+identified
+identifier
+identifiers
+identifies
+identify
+identifying
+identikit
+identities
+identity
+identity's
+ideogram
+ideogram's
+ideogramic
+ideogrammatic
+ideogrammic
+ideograms
+ideograph
+ideographic
+ideographically
+ideography
+ideolect
+ideologic
+ideological
+ideologically
+ideologies
+ideologist
+ideologists
+ideologue
+ideologues
+ideology
+ideomotor
+ideosyncrasies
+ideosyncrasy
+ides
+idetic
+idioblast
+idiocies
+idiocy
+idiographic
+idiolect
+idiolectal
+idiom
+idiomatic
+idiomatically
+idiomaticness
+idiomorphic
+idiomorphically
+idioms
+idiopathic
+idiopathically
+idiopathy
+idiophone
+idioplasm
+idioplasmatic
+idioplasmic
+idiosyncracies
+idiosyncracy
+idiosyncrasies
+idiosyncrasy
+idiosyncrasy's
+idiosyncratic
+idiosyncratically
+idiot
+idiot's
+idiotic
+idiotical
+idiotically
+idioticalness
+idiotism
+idiotize
+idiotizes
+idiots
+idle
+idled
+idleness
+idler
+idlers
+idles
+idlest
+idling
+idly
+Ido
+idocrase
+idol
+idol's
+idolater
+idolatrize
+idolatrized
+idolatrizes
+idolatrizing
+idolatrous
+idolatrously
+idolatrousness
+idolatry
+idolization
+idolization's
+idolizations
+idolize
+idolized
+idolizer
+idolizers
+idolizes
+idolizing
+idols
+idolum
+Idomeneus
+idun
+idyll
+idyllic
+idyllically
+idyllist
+ie
+IEE
+IEEE
+ieper
+ieyasu
+if
+ife
+iffiness
+iffy
+Ifni
+igbo
+igdrasil
+igfet
+igloo
+igloos
+IGN
+Ignatius
+igneous
+ignescent
+ignis
+ignitability
+ignitable
+ignite
+ignited
+igniter
+ignites
+ignitible
+igniting
+ignition
+ignitions
+ignitor
+ignitron
+ignobility
+ignoble
+ignobleness
+ignobly
+ignominiosness
+ignominious
+ignominiously
+ignominy
+ignorable
+ignoramus
+ignorance
+ignorant
+ignorantly
+ignorantness
+ignoratio
+ignore
+ignored
+ignorer
+ignores
+ignoring
+ignotum
+Igor
+igor
+Igor's
+Igorot
+igraine
+iguana
+Iguanodon
+ihram
+ii
+iii
+Ijssel
+Ijsselmeer
+ikan
+Ike
+Ike's
+ikebana
+ikeja
+ikhnaton
+ikon
+IL
+ilea
+ileac
+ileitis
+ileostomy
+ilesha
+ileum
+ileus
+ilex
+Ilford
+ilia
+iliac
+Iliad
+Iliadize
+Iliadizes
+ilial
+iliamna
+iligan
+ilion
+ilium
+ilk
+ilk's
+Ilkeston
+ilkley
+ill
+illampu
+illation
+illative
+illatively
+illaudable
+illaudably
+illawarra
+illegal
+illegalities
+illegality
+illegalization
+illegalize
+illegalized
+illegalizes
+illegalizing
+illegally
+illegibility
+illegible
+illegibly
+illegitimacy
+illegitimate
+illegitimately
+illegitimatize
+illegitimatizes
+illiberal
+illiberalism
+illiberality
+illiberally
+illiberalness
+illich
+illicit
+illicitly
+illimani
+illimitability
+illimitable
+illimitableness
+illimitably
+illinium
+Illinois
+illiquid
+illiquidity
+illite
+illiteracy
+illiterate
+illiterately
+illiterateness
+illiterates
+illitic
+illness
+illness's
+illnesses
+illocution
+illogic
+illogical
+illogicality
+illogically
+illogicalness
+illon
+ills
+illude
+illume
+illumed
+illuminable
+illuminance
+illuminant
+illuminate
+illuminated
+illuminates
+illuminati
+illuminating
+illuminatingly
+illumination
+illuminations
+illuminative
+illuminator
+illuminators
+illumine
+illumined
+illumines
+illuming
+illuminism
+illuminist
+Illuminize
+Illuminizes
+illus
+illusion
+illusion's
+illusional
+illusionary
+illusionism
+illusionist
+illusionistic
+illusions
+illusive
+illusively
+illusiveness
+illusorily
+illusoriness
+illusory
+illust
+illustrate
+illustrated
+illustrates
+illustrating
+illustration
+illustrational
+illustrations
+illustrative
+illustratively
+illustrator
+illustrator's
+illustrators
+illustrious
+illustriously
+illustriousness
+illutation
+illutation's
+illutations
+illuvial
+illuviate
+illuviation
+illuvium
+illy
+illyria
+Illyrian
+illyricum
+ilmen
+ilmenite
+iloilo
+Ilona
+ilorin
+Ilyushin
+im
+image
+imaged
+Imagen
+imagen
+Imagen's
+imagery
+images
+imaginable
+imaginableness
+imaginably
+imaginal
+imaginarily
+imaginariness
+imaginary
+imaginate
+imagination
+imagination's
+imaginations
+imaginative
+imaginatively
+imaginativeness
+imagine
+imagined
+imaginer
+imagines
+imaging
+imagining
+imaginings
+imagism
+imagist
+imagistic
+imagistically
+imago
+Imai
+imam
+imamate
+imaret
+imbalance
+imbalances
+imbecile
+imbecilely
+imbecilic
+imbecility
+imbed
+imbibe
+imbibed
+imbiber
+imbibing
+imbibition
+imbibitional
+imbitter
+imbosom
+imbricate
+imbricately
+imbrication
+Imbrium
+imbroglio
+imbros
+imbrown
+imbrue
+imbrued
+imbruing
+imbrute
+imbruted
+imbruting
+imbue
+imbued
+imbuing
+imdtly
+ime
+imidazole
+imide
+imidic
+imido
+imine
+imino
+iminourea
+imipramine
+imit
+imitable
+imitate
+imitated
+imitates
+imitating
+imitation
+imitational
+imitations
+imitative
+imitatively
+imitativeness
+imitator
+imitators
+immaculacy
+immaculate
+immaculately
+immaculateness
+immane
+immanence
+immanency
+immanent
+immanentism
+immanentist
+immanentistic
+immanently
+Immanuel
+immaterial
+immaterialism
+immaterialist
+immateriality
+immaterialization
+immaterialize
+immaterialized
+immaterializes
+immaterializing
+immaterially
+immaterialness
+immature
+immaturel
+immaturely
+immatureness
+immaturity
+immeasurable
+immeasurableness
+immeasurably
+immediacies
+immediacy
+immediate
+immediately
+immediateness
+immedicable
+immedicably
+Immelmann
+immemorial
+immemorially
+immense
+immensely
+immenseness
+immensities
+immensity
+immensurable
+immerge
+immerged
+immergence
+immerging
+immerse
+immersed
+immerser
+immerses
+immersible
+immersing
+immersion
+immersionism
+immersions
+immesh
+immethodical
+immethodically
+immigrant
+immigrant's
+immigrants
+immigrate
+immigrated
+immigrates
+immigrating
+immigration
+immigrational
+imminence
+imminency
+imminent
+imminently
+imminentness
+Immingham
+immingle
+immiscibility
+immiscible
+immiscibly
+immitigable
+immitigableness
+immitigably
+immittance
+immix
+immixture
+immobile
+immobilism
+immobility
+immobilization
+immobilization's
+immobilizations
+immobilize
+immobilized
+immobilizer
+immobilizes
+immobilizing
+immoderacy
+immoderate
+immoderately
+immoderateness
+immoderation
+immodest
+immodestly
+immodesty
+immolate
+immolation
+immolator
+immoral
+immoralist
+immoralities
+immorality
+immoralize
+immoralizes
+immorally
+immortal
+immortality
+immortalizable
+immortalizable's
+immortalizables
+immortalization
+immortalization's
+immortalizations
+immortalize
+immortalized
+immortalizer
+immortalizers
+immortalizes
+immortalizing
+immortally
+immortals
+immortelle
+immotile
+immotility
+immovability
+immovable
+immovableness
+immovably
+immoveables
+immune
+immunities
+immunity
+immunity's
+immunization
+immunization's
+immunizations
+immunize
+immunized
+immunizes
+immunizing
+immunoassay
+immunochemical
+immunochemically
+immunochemistry
+immunoelectrophoresis
+immunofluorescence
+immunofluorescent
+immunogenesis
+immunogenetic
+immunogenetically
+immunogenetics
+immunogenic
+immunogenically
+immunogenicity
+immunoglobulin
+immunohematological
+immunohematology
+immunologic
+immunological
+immunologically
+immunologist
+immunology
+immunomicrosphere
+immunopathologic
+immunopathological
+immunopathologist
+immunopathology
+immunoreaction
+immunosuppression
+immunosuppressive
+immunotherapy
+immunotoxin
+immunotoxins
+immure
+immured
+immurement
+immures
+immuring
+immutability
+immutable
+immutableness
+immutably
+imp
+imp's
+impact
+impacted
+impacter
+impacting
+impaction
+impactionize
+impactionizes
+impactions
+impactive
+impactor
+impactor's
+impactors
+impacts
+impair
+impaired
+impairer
+impairing
+impairment
+impairs
+impala
+impale
+impaled
+impalement
+impales
+impaling
+impalpability
+impalpable
+impalpably
+impanation
+impanel
+impaneled
+impaneling
+imparadised
+imparipinnate
+imparisyllabic
+imparity
+impart
+impartable
+impartation
+imparted
+impartial
+impartiality
+impartially
+impartible
+impartibly
+imparting
+impartment
+imparts
+impassability
+impassable
+impassableness
+impassably
+impasse
+impasses
+impassibility
+impassible
+impassibly
+impassion
+impassioned
+impassioning
+impassions
+impassive
+impassively
+impassiveness
+impassivity
+impaste
+impasto
+impatience
+Impatiens
+impatient
+impatiently
+impeach
+impeachable
+impeached
+impeaches
+impeaching
+impeachment
+impearl
+impeccability
+impeccable
+impeccably
+impeccant
+impecuniosity
+impecunious
+impecuniously
+impecuniousness
+impedance
+impedance's
+impedances
+impede
+impeded
+impeder
+impedes
+impediment
+impediment's
+impedimenta
+impediments
+impeding
+impel
+impelled
+impeller
+impellers
+impelling
+impellor
+impels
+impend
+impendent
+impending
+impenetrability
+impenetrable
+impenetrableness
+impenetrably
+impenitence
+impenitent
+impenitently
+impennate
+imperate
+imperative
+imperatively
+imperativeness
+imperatives
+imperator
+imperatorial
+imperceivable
+imperceptibility
+imperceptible
+imperceptibly
+imperceptive
+imperceptiveness
+imperceptivity
+imperfect
+imperfectability
+imperfection
+imperfection's
+imperfections
+imperfective
+imperfectivity
+imperfectly
+imperfectness
+imperforate
+imperforated
+imperforates
+imperial
+imperialism
+imperialist
+imperialist's
+imperialistic
+imperialistically
+imperialists
+imperialization
+imperialization's
+imperializations
+imperialize
+imperializes
+imperially
+imperil
+imperiled
+imperiling
+imperilment
+imperious
+imperiously
+imperiousness
+imperishability
+imperishable
+imperishableness
+imperishably
+imperium
+impermanence
+impermanency
+impermanent
+impermanently
+impermeability
+impermeable
+impermeableness
+impermeably
+impermissibility
+impermissible
+impermissibly
+imperscriptible
+impersonal
+impersonality
+impersonalization
+impersonalization's
+impersonalizations
+impersonalize
+impersonalized
+impersonalizes
+impersonalizing
+impersonally
+impersonate
+impersonated
+impersonates
+impersonating
+impersonation
+impersonations
+impersonator
+impertinence
+impertinency
+impertinent
+impertinently
+imperturbability
+imperturbable
+imperturbably
+impervious
+imperviously
+imperviousness
+impetigo
+impetrate
+impetrated
+impetrates
+impetrating
+impetration
+impetrations
+impetuosity
+impetuous
+impetuously
+impetuousness
+impetus
+imphal
+impi
+impiety
+impinge
+impinged
+impingement
+impinges
+impinging
+impious
+impiously
+impish
+impishly
+impishness
+implacability
+implacable
+implacableness
+implacably
+implacental
+implant
+implantable
+implantation
+implanted
+implanter
+implanting
+implants
+implausibility
+implausible
+implausibly
+implead
+implement
+implementability
+implementable
+implemental
+implementation
+implementation's
+implementations
+implemented
+implementer
+implementers
+implementing
+implementor
+implementor's
+implementors
+implements
+implicant
+implicant's
+implicants
+implicate
+implicated
+implicates
+implicating
+implication
+implications
+implicative
+implicatively
+implicativeness
+implicit
+implicitly
+implicitness
+implied
+implies
+implode
+imploded
+implodes
+imploding
+implore
+implored
+implores
+imploring
+implosion
+implosions
+implosive
+implosively
+imply
+implying
+impolder
+impolicy
+impolite
+impolitely
+impoliteness
+impolitic
+impolitical
+impolitically
+impoliticly
+impoliticness
+imponderabilia
+imponderability
+imponderable
+imponderableness
+imponderables
+imponderably
+imponent
+import
+importable
+importance
+importancy
+important
+importantly
+importation
+importations
+imported
+importer
+importers
+importing
+imports
+importunate
+importunately
+importunateness
+importune
+importunely
+importuner
+importuners
+importunities
+importunity
+imposable
+impose
+imposed
+imposer
+imposes
+imposing
+imposingly
+imposition
+imposition's
+impositions
+impossibilities
+impossibility
+impossible
+impossibleness
+impossibles
+impossibly
+impost
+imposter
+imposthume
+impostor
+impostor's
+impostors
+imposts
+impostume
+imposture
+impotence
+impotency
+impotent
+impotently
+impound
+impounded
+impounding
+impoundment
+impoundments
+impounds
+impoverish
+impoverished
+impoverisher
+impoverishes
+impoverishing
+impoverishment
+impower
+impracticability
+impracticable
+impracticableness
+impracticably
+impractical
+impracticality
+impractically
+impracticalness
+imprecate
+imprecated
+imprecates
+imprecating
+imprecation
+imprecations
+imprecatory
+imprecise
+imprecisely
+impreciseness
+imprecision
+impregnability
+impregnable
+impregnableness
+impregnably
+impregnate
+impregnated
+impregnates
+impregnating
+impregnation
+impregnations
+impregnator
+impregnators
+impresa
+impresario
+imprescriptible
+impress
+impressed
+impresser
+impresses
+impressibility
+impressible
+impressibly
+impressing
+impression
+impression's
+impressionability
+impressionable
+impressionableness
+impressionably
+impressional
+impressionism
+impressionist
+impressionistic
+impressionistically
+impressionists
+impressions
+impressive
+impressively
+impressiveness
+impressment
+impressure
+imprest
+imprimatur
+imprimis
+imprint
+imprinted
+imprinting
+imprints
+imprison
+imprisonable
+imprisoned
+imprisoning
+imprisonment
+imprisonment's
+imprisonments
+imprisons
+improbability
+improbable
+improbableness
+improbably
+improbity
+impromptu
+improper
+improperly
+improperness
+impropitious
+impropriety
+improvability
+improvable
+improvably
+improve
+improved
+improvement
+improvements
+improver
+improves
+improvidence
+improvident
+improvidently
+improving
+improvisation
+improvisation's
+improvisational
+improvisations
+improvisator
+improvisatorial
+improvisatory
+improvise
+improvised
+improviser
+improvisers
+improvises
+improvising
+improvisor
+improvizatorize
+improvizatorizes
+imprudence
+imprudent
+imprudently
+imps
+impudence
+impudent
+impudently
+impudicity
+impugn
+impugnable
+impugned
+impugner
+impugning
+impugns
+impuissance
+impuissant
+impulse
+impulsed
+impulses
+impulsing
+impulsion
+impulsions
+impulsive
+impulsively
+impulsiveness
+impunity
+impure
+impurely
+impureness
+impurities
+impurity
+impurity's
+imputability
+imputable
+imputation
+imputations
+imputative
+imputatively
+impute
+imputed
+imputes
+imputing
+imroz
+in
+inabilities
+inability
+inaccessibility
+inaccessible
+inaccessibly
+inaccuracies
+inaccuracy
+inaccurate
+inaccurately
+inaction
+inactions
+inactivate
+inactivation
+inactive
+inactively
+inactivity
+inadequacies
+inadequacy
+inadequate
+inadequately
+inadequateness
+inadmissibility
+inadmissible
+inadmissibly
+inadvertence
+inadvertency
+inadvertent
+inadvertently
+inadvisability
+inadvisable
+inalienability
+inalienable
+inalienably
+inalterability
+inalterable
+inalterableness
+inalterably
+inamorata
+inane
+inanely
+inaneness
+inaner
+inanest
+inanimate
+inanimately
+inanimateness
+inanition
+inanity
+inapparent
+inapparently
+inappeasable
+inappellable
+inappetence
+inapplicability
+inapplicable
+inapplicably
+inapposite
+inappositely
+inappositeness
+inappreciable
+inappreciably
+inappreciative
+inappreciatively
+inappreciativeness
+inapprehensive
+inapproachable
+inappropriate
+inappropriately
+inappropriateness
+inapt
+inaptitude
+inaptly
+inaptness
+inarch
+inarguable
+inarguably
+inarticulable
+inarticulate
+inarticulately
+inarticulateness
+inartificial
+inartistic
+inartistically
+inasmuch
+inattention
+inattentive
+inattentively
+inattentiveness
+inaudibility
+inaudible
+inaudibly
+inaugural
+inaugurate
+inaugurated
+inaugurating
+inauguration
+inaugurations
+inaugurator
+inaugurators
+inauspicious
+inauspiciously
+inauspiciousness
+inauthentic
+inauthenticity
+Inbal
+inbeing
+inboard
+inboards
+inborn
+inbound
+inbounds
+inbreathe
+inbred
+inbreed
+inbreeder
+inbreeding
+inbuilt
+Inc
+Inca
+incalculability
+incalculable
+incalculableness
+incalculably
+incalescence
+incalescences
+incalescent
+incandesce
+incandesced
+incandescence
+incandescent
+incandescently
+incandesces
+incandescing
+incant
+incantation
+incantational
+incantations
+incantatory
+incanted
+incapability
+incapable
+incapableness
+incapably
+incapacitate
+incapacitated
+incapacitates
+incapacitating
+incapacitation
+incapacitator
+incapacity
+incaparina
+incapsulate
+incarcerate
+incarcerated
+incarcerates
+incarcerating
+incarceration
+incardinate
+incardination
+incarnadine
+incarnate
+incarnation
+incarnation's
+incarnations
+Incas
+incase
+incaution
+incautious
+incautiously
+incautiousness
+incendiaries
+incendiarism
+incendiary
+incense
+incensed
+incenses
+incensing
+incensory
+incentive
+incentive's
+incentively
+incentives
+incept
+incepted
+incepting
+inception
+inceptions
+inceptive
+inceptively
+inceptor
+incepts
+incertitude
+incessancy
+incessant
+incessantly
+incest
+incestuous
+incestuously
+incestuousness
+inch
+inched
+inches
+inching
+inchmeal
+inchoate
+inchoately
+inchoateness
+inchoative
+inchoatively
+inchon
+inchworm
+inchworm's
+inchworms
+incidence
+incidences
+incident
+incident's
+incidental
+incidentally
+incidentals
+incidents
+incinerate
+incinerated
+incinerates
+incinerating
+incineration
+incinerations
+incinerator
+incinerators
+incipience
+incipiency
+incipient
+incipiently
+incipit
+incise
+incised
+incises
+incising
+incision
+incision's
+incisions
+incisive
+incisively
+incisiveness
+incisor
+incisor's
+incisors
+incisure
+incitant
+incitants
+incitation
+incitations
+incite
+incited
+incitement
+incitements
+inciter
+incites
+inciting
+incivility
+inclemency
+inclement
+inclemently
+inclinable
+inclination
+inclination's
+inclinational
+inclinations
+incline
+inclined
+incliner
+inclines
+inclining
+inclinometer
+inclinometer's
+inclinometers
+inclip
+inclose
+inclosed
+incloses
+inclosing
+includable
+include
+included
+includes
+includible
+including
+incluse
+inclusion
+inclusion's
+inclusions
+inclusive
+inclusively
+inclusiveness
+incoercible
+incog
+incogitable
+incogitant
+incognita
+incognito
+incognizance
+incognizant
+incoherence
+incoherences
+incoherent
+incoherently
+incombustibility
+incombustible
+income
+incomer
+incomers
+incomes
+incoming
+incommensurability
+incommensurable
+incommensurably
+incommensurate
+incommode
+incommodious
+incommodiously
+incommodiousness
+incommodity
+incommunicability
+incommunicable
+incommunicably
+incommunicado
+incommunicative
+incommutable
+incommutably
+incomparability
+incomparable
+incomparably
+incompatibilities
+incompatibility
+incompatibility's
+incompatible
+incompatibly
+incompetence
+incompetency
+incompetent
+incompetent's
+incompetently
+incompetents
+incomplete
+incompletely
+incompleteness
+incompletion
+incompliant
+incomprehensibility
+incomprehensible
+incomprehensibleness
+incomprehensibly
+incomprehension
+incomprehensive
+incompressibility
+incompressible
+incompressibly
+incomputable
+incomputably
+inconceivability
+inconceivable
+inconceivableness
+inconceivably
+inconcinnity
+inconclusive
+inconclusively
+inconclusiveness
+incondensable
+incondite
+inconformity
+incongruence
+incongruent
+incongruently
+incongruities
+incongruity
+incongruous
+incongruously
+incongruousness
+inconscient
+inconsecutive
+inconsequence
+inconsequent
+inconsequential
+inconsequentiality
+inconsequentially
+inconsequently
+inconsiderable
+inconsiderableness
+inconsiderably
+inconsiderate
+inconsiderately
+inconsiderateness
+inconsideration
+inconsistence
+inconsistencies
+inconsistency
+inconsistency's
+inconsistent
+inconsistently
+inconsolable
+inconsolableness
+inconsolably
+inconsonance
+inconsonant
+inconspicuous
+inconspicuously
+inconspicuousness
+inconstancy
+inconstant
+inconstantly
+inconsumable
+inconsumably
+incontestability
+incontestable
+incontestably
+incontinence
+incontinency
+incontinent
+incontinently
+incontrollable
+incontrovertible
+incontrovertibly
+inconvenience
+inconvenienced
+inconveniences
+inconveniencing
+inconveniency
+inconvenient
+inconveniently
+inconvertibility
+inconvertible
+inconvertibly
+inconvincible
+incoordinate
+incoordination
+incorporable
+incorporate
+incorporated
+incorporates
+incorporating
+incorporation
+incorporative
+incorporator
+incorporeal
+incorporeally
+incorporeity
+incorrect
+incorrectly
+incorrectness
+incorrigibility
+incorrigible
+incorrigibleness
+incorrigibly
+incorrupt
+incorrupted
+incorruptibility
+incorruptible
+incorruptibly
+incorruption
+incorruptly
+incorruptness
+increasable
+increase
+increased
+increaser
+increases
+increasing
+increasingly
+increate
+incredibility
+incredible
+incredibleness
+incredibly
+incredulity
+incredulous
+incredulously
+increment
+incremental
+incrementalism
+incrementalist
+incrementalists
+incrementally
+incrementation
+incremented
+incrementing
+increments
+increscent
+incriminate
+incriminated
+incriminates
+incriminating
+incrimination
+incriminatory
+incross
+incrossbred
+incrust
+incrustation
+incubate
+incubated
+incubates
+incubating
+incubation
+incubational
+incubative
+incubator
+incubator's
+incubators
+incubatory
+incubi
+incubus
+incudes
+inculcate
+inculcated
+inculcates
+inculcation
+inculcator
+inculpable
+inculpate
+inculpation
+inculpative
+inculpatory
+incult
+incumbency
+incumbent
+incumbents
+incumber
+incunabula
+incunabulum
+incur
+incurability
+incurable
+incurableness
+incurables
+incurably
+incuriosity
+incurious
+incuriously
+incuriousness
+incurred
+incurrence
+incurrent
+incurrer
+incurring
+incurs
+incursion
+incursions
+incurvate
+incurvated
+incurvates
+incurvating
+incurvation
+incurvature
+incurve
+incus
+incuse
+Ind
+indaba
+indagate
+indagation
+indagator
+indamine
+indebted
+indebtedness
+indecency
+indecent
+indecently
+indeces
+indecipherable
+indecision
+indecisive
+indecisively
+indecisiveness
+indeclinable
+indecomposable
+indecorous
+indecorously
+indecorousness
+indecorum
+indeed
+indefatigability
+indefatigable
+indefatigableness
+indefatigably
+indefeasibility
+indefeasible
+indefeasibly
+indefectibility
+indefectible
+indefectibly
+indefensibility
+indefensible
+indefensibly
+indefinability
+indefinable
+indefinableness
+indefinably
+indefinite
+indefinitely
+indefiniteness
+indefinity
+indehiscence
+indehiscent
+indelibility
+indelible
+indelibly
+indelicacy
+indelicate
+indelicately
+indelicateness
+indemnification
+indemnifier
+indemnify
+indemnity
+indemonstrable
+indemonstrably
+indene
+indent
+indentation
+indentation's
+indentations
+indented
+indenter
+indenting
+indention
+indents
+indenture
+indentured
+indentures
+indenturing
+independence
+independency
+independent
+independently
+independents
+indescribable
+indescribableness
+indescribably
+indestructibility
+indestructible
+indestructibleness
+indestructibly
+indeterminable
+indeterminableness
+indeterminably
+indeterminacies
+indeterminacy
+indeterminacy's
+indeterminate
+indeterminately
+indeterminateness
+indetermination
+indetermine
+indeterminism
+indeterminist
+indeterministic
+index
+indexable
+indexation
+indexed
+indexer
+indexers
+indexes
+indexical
+indexing
+India
+India's
+Indiaman
+Indian
+Indian's
+Indiana
+Indiana's
+Indianapolis
+Indians
+Indic
+indican
+indicant
+indicants
+indicate
+indicated
+indicates
+indicating
+indication
+indicational
+indications
+indicative
+indicatively
+indicatives
+indicator
+indicator's
+indicators
+indicatory
+indices
+indicia
+indict
+indictable
+indicted
+indicter
+indiction
+indictment
+indictment's
+indictments
+indictor
+Indies
+indifference
+indifferency
+indifferent
+indifferentism
+indifferentist
+indifferently
+indigen
+indigence
+indigene
+indigenes
+indigenous
+indigenously
+indigenousness
+indigent
+indigested
+indigestibility
+indigestible
+indigestion
+indigestive
+indign
+indignant
+indignantly
+indignation
+indignities
+indignity
+indigo
+indigoid
+indigotin
+Indira
+indirect
+indirected
+indirecting
+indirection
+indirections
+indirectly
+indirectness
+indirects
+indiscernability
+indiscernible
+indisciplinable
+indiscipline
+indisciplined
+indiscoverable
+indiscreet
+indiscreetly
+indiscreetness
+indiscrete
+indiscretion
+indiscriminate
+indiscriminately
+indiscriminateness
+indiscriminating
+indiscriminatingly
+indiscrimination
+indiscussible
+indispensability
+indispensable
+indispensableness
+indispensably
+indispose
+indisposed
+indisposes
+indisposing
+indisposition
+indisputable
+indisputableness
+indisputably
+indissociable
+indissociably
+indissolubility
+indissoluble
+indissolubleness
+indissolubly
+indistinct
+indistinctive
+indistinctly
+indistinctness
+indistinguishability
+indistinguishable
+indistinguishableness
+indistinguishably
+indite
+indited
+inditer
+inditing
+indium
+indivertible
+indivertibly
+individual
+individual's
+individualism
+individualist
+individualistic
+individualistically
+individualists
+individuality
+individualization
+individualization's
+individualizations
+individualize
+individualized
+individualizer
+individualizers
+individualizes
+individualizing
+individualizingly
+individually
+individuals
+individuate
+individuated
+individuates
+individuating
+individuation
+indivisibility
+indivisible
+indivisibleness
+indivisibly
+indo
+Indo
+Indochina
+Indochinese
+indocile
+indocility
+indoctrinate
+indoctrinated
+indoctrinates
+indoctrinating
+indoctrination
+indoctrinator
+Indoeuropean
+indole
+indoleacetic
+indolebutyric
+indolence
+indolent
+indolently
+Indologist
+indomethacin
+indomitability
+indomitable
+indomitableness
+indomitably
+Indonesia
+Indonesian
+indoor
+indoors
+indophenol
+indore
+indorsee
+indoxyl
+indra
+indraft
+indrawn
+indre
+Indris
+indubitability
+indubitable
+indubitableness
+indubitably
+induce
+induced
+inducement
+inducement's
+inducements
+inducer
+induces
+inducibility
+inducible
+inducing
+induct
+inductance
+inductances
+inducted
+inductee
+inductees
+inductile
+inducting
+induction
+induction's
+inductions
+inductive
+inductively
+inductiveness
+inductor
+inductor's
+inductors
+inducts
+indue
+indulge
+indulged
+indulgence
+indulgence's
+indulgences
+indulgent
+indulgently
+indulger
+indulges
+indulging
+indult
+induna
+induplicate
+indurate
+induration
+indurative
+Indus
+indusium
+industrial
+industrialism
+industrialist
+industrialist's
+industrialists
+industrialization
+industrialization's
+industrializations
+industrialize
+industrialized
+industrializes
+industrializing
+industrially
+industrials
+industries
+industrious
+industriously
+industriousness
+industry
+industry's
+indwell
+indweller
+indwelling
+indy
+Indy
+inearth
+inebriant
+inebriate
+inebriated
+inebriates
+inebriating
+inebriation
+inebriety
+inedible
+inedited
+ineducability
+ineducable
+ineffability
+ineffable
+ineffableness
+ineffably
+ineffaceability
+ineffaceable
+ineffaceably
+ineffective
+ineffectively
+ineffectiveness
+ineffectual
+ineffectuality
+ineffectually
+ineffectualness
+inefficacious
+inefficaciously
+inefficaciousness
+inefficacy
+inefficiencies
+inefficiency
+inefficient
+inefficiently
+inegalitarian
+inelastic
+inelastically
+inelasticity
+inelegance
+inelegant
+inelegantly
+ineligibility
+ineligible
+ineliminable
+ineloquent
+ineloquently
+ineluctability
+ineluctable
+ineluctably
+ineludible
+inenarrable
+inept
+ineptitude
+ineptly
+ineptness
+inequable
+inequalities
+inequality
+inequitable
+inequitably
+inequities
+inequity
+inequivalent
+inequivalve
+inequivalved
+ineradicability
+ineradicable
+ineradicably
+inerrable
+inerrancy
+inerrant
+inert
+inertance
+inertia
+inertial
+inertially
+inertias
+inertly
+inertness
+inescapable
+inescapably
+inescutcheon
+inessential
+inessive
+inestimable
+inestimably
+inevitabilities
+inevitability
+inevitable
+inevitableness
+inevitably
+inexact
+inexactitude
+inexactly
+inexactness
+inexcusable
+inexcusableness
+inexcusably
+inexhaustibility
+inexhaustible
+inexhaustibleness
+inexhaustibly
+inexistence
+inexistent
+inexorability
+inexorable
+inexorableness
+inexorably
+inexpedience
+inexpediency
+inexpedient
+inexpediently
+inexpensive
+inexpensively
+inexpensiveness
+inexperience
+inexperienced
+inexpert
+inexpertly
+inexpertness
+inexpiable
+inexpiably
+inexplainable
+inexplicability
+inexplicable
+inexplicableness
+inexplicably
+inexplicit
+inexpressibility
+inexpressible
+inexpressibleness
+inexpressibly
+inexpressive
+inexpressively
+inexpressiveness
+inexpugnable
+inexpugnableness
+inexpugnably
+inexpungible
+inextensible
+inextinguishable
+inextinguishably
+inextirpable
+inextricability
+inextricable
+inextricably
+infall
+infallibilism
+infallibility
+infallible
+infallibly
+infamous
+infamously
+infamy
+infancy
+infant
+infant's
+infanta
+infante
+infanticide
+infanticide's
+infantile
+infantilism
+infantility
+infantry
+infantryman
+infantrymen
+infants
+infarct
+infarcted
+infarction
+infare
+infatuate
+infatuated
+infatuation
+infatuations
+infauna
+infaunal
+infeasible
+infect
+infected
+infecting
+infection
+infection's
+infections
+infectious
+infectiously
+infectiousness
+infective
+infectivity
+infector
+infects
+infecund
+infecundibility
+infelicitous
+infelicitously
+infelicity
+infer
+inferable
+inference
+inference's
+inferencer
+inferences
+inferencing
+inferential
+inferentially
+inferior
+inferior's
+inferiority
+inferiorize
+inferiorizes
+inferiorly
+inferiors
+infernal
+infernalize
+infernalizes
+infernally
+inferno
+inferno's
+infernos
+inferred
+inferrer
+inferrible
+inferring
+infers
+infertile
+infertility
+infest
+infestant
+infestation
+infestations
+infested
+infester
+infesting
+infests
+infeudation
+infibulate
+infidel
+infidel's
+infidelity
+infidelize
+infidelizes
+infidels
+infield
+infield's
+infielder
+infielder's
+infielders
+infields
+infight
+infighter
+infighter's
+infighters
+infighting
+infill
+infiltrate
+infiltrated
+infiltrates
+infiltrating
+infiltration
+infiltrative
+infiltrator
+infiltrators
+infinite
+infinitely
+infiniteness
+infinitesimal
+infinitesimally
+infinities
+infinitival
+infinitive
+infinitive's
+infinitively
+infinitives
+infinitize
+infinitizes
+infinitude
+infinitum
+infinity
+infirm
+infirmary
+infirmed
+infirmity
+infirmly
+infix
+infix's
+infixes
+inflame
+inflamed
+inflamer
+inflaming
+inflammability
+inflammable
+inflammableness
+inflammably
+inflammation
+inflammatorily
+inflammatory
+inflatable
+inflate
+inflated
+inflater
+inflates
+inflating
+inflation
+inflationary
+inflationism
+inflationist
+inflator
+inflect
+inflected
+inflecting
+inflection
+inflectional
+inflectionally
+inflections
+inflective
+inflects
+inflexed
+inflexibility
+inflexible
+inflexibleness
+inflexibly
+inflexion
+inflict
+inflicted
+inflicter
+inflicting
+infliction
+inflictive
+inflictor
+inflicts
+inflorescence
+inflorescences
+inflorescent
+inflow
+inflows
+influence
+influenced
+influencer
+influences
+influencing
+influent
+influential
+influentially
+influenza
+influx
+info
+infold
+inform
+informal
+informality
+informalize
+informalizes
+informally
+informant
+informant's
+informants
+Informatica
+informatics
+information
+informational
+informations
+informative
+informatively
+informativeness
+informatory
+informed
+informer
+informers
+informing
+informs
+infra
+infracostal
+infract
+infraction
+infractions
+infractor
+infrahuman
+infralapsarian
+infrangibility
+infrangible
+infrangibleness
+infrangibly
+infrared
+infrasonic
+infraspecific
+infrastructural
+infrastructure
+infrastructures
+infrequence
+infrequency
+infrequent
+infrequently
+infringe
+infringed
+infringement
+infringement's
+infringements
+infringer
+infringes
+infringing
+infulae
+infundibular
+infundibulate
+infundibuliform
+infundibulum
+infuriate
+infuriated
+infuriately
+infuriates
+infuriating
+infuriatingly
+infuriation
+infuscate
+infuse
+infused
+infuser
+infuses
+infusibility
+infusible
+infusibleness
+infusing
+infusion
+infusionism
+infusions
+infusoria
+infusorial
+infusorian
+ingather
+ingathering
+inge
+ingeminate
+ingenerate
+ingenious
+ingeniously
+ingeniousness
+ingenue
+ingenuity
+ingenuous
+ingenuously
+ingenuousness
+Ingersoll
+ingest
+ingesta
+ingested
+ingestible
+ingestion
+ingestive
+ingle
+ingleborough
+inglenook
+inglorious
+ingloriously
+ingloriousness
+ingoing
+ingolstadt
+ingot
+ingraft
+ingrain
+ingrained
+ingrainedly
+ingrains
+Ingram
+ingrate
+ingratiate
+ingratiating
+ingratiatingly
+ingratiation
+ingratiatory
+ingratitude
+ingravescent
+ingredient
+ingredient's
+ingredients
+ingres
+ingress
+ingression
+ingressive
+ingressiveness
+ingrowing
+ingrown
+ingrownness
+ingrowth
+ingrowths
+inguinal
+ingulf
+ingurgitate
+ingurgitation
+Ingush
+inhabit
+inhabitable
+inhabitance
+inhabitancy
+inhabitant
+inhabitant's
+inhabitants
+inhabitation
+inhabited
+inhabiter
+inhabiting
+inhabits
+inhalant
+inhalation
+inhalational
+inhalator
+inhale
+inhaled
+inhaler
+inhales
+inhaling
+inhambane
+inharmonic
+inharmonious
+inharmoniously
+inharmoniousness
+inharmony
+inhaul
+inhere
+inhered
+inherence
+inherent
+inherently
+inheres
+inhering
+inherit
+inheritability
+inheritable
+inheritableness
+inheritance
+inheritance's
+inheritances
+inherited
+inheriting
+inheritor
+inheritor's
+inheritors
+inheritress
+inheritress's
+inheritresses
+inheritrices
+inheritrix
+inherits
+inhesion
+inhibit
+inhibited
+inhibiter
+inhibiting
+inhibition
+inhibition's
+inhibitions
+inhibitive
+inhibitor
+inhibitors
+inhibitory
+inhibits
+inholding
+inholdings
+inhomogeneities
+inhomogeneity
+inhomogeneous
+inhospitable
+inhospitableness
+inhospitably
+inhospitality
+inhuman
+inhumane
+inhumanely
+inhumanities
+inhumanity
+inhumanize
+inhumanizes
+inhumanly
+inhumanness
+inhumation
+inhume
+inhumed
+inhumes
+inhuming
+inimical
+inimically
+inimitable
+inimitableness
+inimitably
+inion
+iniquities
+iniquitous
+iniquitously
+iniquitousness
+iniquity
+iniquity's
+initial
+initialed
+initialer
+initialing
+initialism
+initializable
+initialization
+initialization's
+initializations
+initialize
+initialized
+initializer
+initializers
+initializes
+initializing
+initialness
+initials
+initiate
+initiated
+initiates
+initiating
+initiation
+initiations
+initiative
+initiative's
+initiatives
+initiator
+initiator's
+initiators
+initiatory
+initio
+inject
+injectable
+injectant
+injected
+injecting
+injection
+injection's
+injections
+injective
+injector
+injectors
+injects
+injudicious
+injudiciously
+injudiciousness
+injunct
+injunction
+injunction's
+injunctions
+injunctive
+injure
+injured
+injurer
+injures
+injuries
+injuring
+injurious
+injuriously
+injuriousness
+injury
+injury's
+injustice
+injustice's
+injustices
+ink
+inkberry
+inkblot
+inked
+inker
+Inkerman
+inkers
+inkhorn
+inkiness
+inking
+inkings
+inkle
+inkling
+inkling's
+inklings
+inks
+inkstand
+inkwell
+inky
+inlace
+inlaid
+inland
+inlander
+inlay
+inlayer
+inlaying
+inlet
+inlet's
+inlets
+inlier
+inly
+inlying
+Inman
+Inman's
+inmate
+inmate's
+inmates
+inmesh
+inmigrant
+inmost
+inn
+innard
+innards
+innate
+innately
+innateness
+inner
+innerly
+innermost
+innersole
+innerspring
+innervate
+innervated
+innervates
+innervating
+innervation
+innervational
+innerve
+inning
+innings
+inniskilling
+innkeeper
+innkeeper's
+innkeepers
+innocence
+innocency
+innocent
+innocently
+innocents
+innocuous
+innocuously
+innocuousness
+innominate
+innovate
+innovated
+innovates
+innovating
+innovation
+innovation's
+innovational
+innovations
+innovative
+innovativeness
+innovator
+innovators
+innovatory
+innoxious
+inns
+innsbruck
+innuendo
+innuendoes
+innuendos
+Innuit
+innumerability
+innumerable
+innumerableness
+innumerably
+innumerate
+innumerous
+innutrition
+inobservance
+inobservant
+inoculable
+inoculant
+inoculate
+inoculated
+inoculates
+inoculating
+inoculation
+inoculations
+inoculative
+inoculativity
+inoculator
+inoculum
+inodorous
+inoffensive
+inoffensively
+inoffensiveness
+inofficious
+inoperable
+inoperative
+inoperativeness
+inoperculate
+inopportune
+inopportunely
+inopportuneness
+inordinate
+inordinately
+inordinateness
+inorganic
+inorganically
+inosculate
+inosculated
+inosculates
+inosculating
+inosculation
+inositol
+inotropic
+inpatient
+inphase
+inpour
+input
+input's
+inputed
+inputer
+inputing
+inputs
+inputted
+inputting
+inqilab
+inquest
+inquietude
+inquire
+inquired
+inquirer
+inquirers
+inquires
+inquiries
+inquiring
+inquiringly
+inquiry
+inquiry's
+inquisition
+inquisition's
+inquisitional
+inquisitions
+inquisitive
+inquisitively
+inquisitiveness
+inquisitor
+inquisitorial
+inquisitorially
+inroad
+inroads
+inrush
+ins
+insalivate
+insalubrious
+insalubrity
+insane
+insanely
+insaneness
+insanitary
+insanitation
+insanity
+insatiability
+insatiable
+insatiableness
+insatiably
+insatiate
+insatiately
+insatiateness
+inscape
+inscribe
+inscribed
+inscriber
+inscribes
+inscribing
+inscription
+inscription's
+inscriptional
+inscriptions
+inscriptive
+inscriptively
+inscroll
+inscrutability
+inscrutable
+inscrutableness
+inscrutably
+insculp
+inseam
+insect
+insect's
+insectan
+insectarium
+insectary
+insecticidal
+insecticidally
+insecticide
+insecticides
+insectifuge
+insectile
+insectivore
+insectivore's
+insectivores
+insectivorous
+insectivory
+insects
+insecure
+insecurely
+insecureness
+insecurity
+Inselberg
+inseminate
+insemination
+inseminator
+insensate
+insensately
+insensateness
+insensibility
+insensible
+insensibleness
+insensibly
+insensitive
+insensitively
+insensitiveness
+insensitivity
+insentience
+insentient
+inseparability
+inseparable
+inseparableness
+inseparably
+insert
+inserted
+inserter
+inserting
+insertion
+insertion's
+insertional
+insertions
+inserts
+insessorial
+inset
+insets
+insetted
+insetting
+inshore
+inshrine
+inside
+insider
+insiders
+insides
+insidious
+insidiously
+insidiousness
+insight
+insight's
+insightful
+insightfully
+insights
+insignia
+insignias
+insignificance
+insignificances
+insignificancy
+insignificant
+insignificantly
+insincere
+insincerely
+insincerity
+insinuate
+insinuated
+insinuates
+insinuating
+insinuatingly
+insinuation
+insinuations
+insinuative
+insinuator
+insipid
+insipidity
+insipidly
+insipience
+insist
+insisted
+insistence
+insistency
+insistent
+insistently
+insisting
+insists
+insnare
+insobriety
+insociability
+insociable
+insociably
+insofar
+insolate
+insolation
+insole
+insolence
+insolent
+insolently
+insolubility
+insolubilization
+insolubilize
+insoluble
+insolubleness
+insolubly
+insolvable
+insolvably
+insolvency
+insolvent
+insomnia
+insomniac
+insomniacs
+insomuch
+insouciance
+insouciant
+insouciantly
+insoul
+inspan
+inspect
+inspected
+inspecting
+inspection
+inspection's
+inspections
+inspective
+inspector
+inspector's
+inspectorate
+inspectors
+inspectorship
+inspects
+insphere
+inspiration
+inspiration's
+inspirational
+inspirationally
+inspirations
+inspirator
+inspiratory
+inspire
+inspired
+inspirer
+inspires
+inspiring
+inspirit
+inspissate
+inspissated
+inspissation
+inspissator
+instabilities
+instability
+instable
+instalation
+install
+installant
+installation
+installation's
+installations
+installed
+installer
+installers
+installing
+installment
+installment's
+installments
+installs
+instalment
+instalments
+instance
+instanced
+instances
+instancing
+instancy
+instant
+instantaneity
+instantaneous
+instantaneously
+instantaneousness
+instanter
+instantiate
+instantiated
+instantiates
+instantiating
+instantiation
+instantiation's
+instantiations
+instantly
+instantness
+instants
+instar
+instate
+instated
+instates
+instating
+instauration
+instead
+instep
+insteps
+instigate
+instigated
+instigates
+instigating
+instigation
+instigative
+instigator
+instigator's
+instigators
+instil
+instill
+instillation
+instilled
+instiller
+instilling
+instillment
+instills
+instils
+instinct
+instinct's
+instinctive
+instinctively
+instincts
+instinctual
+institute
+instituted
+instituter
+instituters
+institutes
+instituting
+institution
+institution's
+institutional
+institutionalism
+institutionalist
+institutionalization
+institutionalization's
+institutionalizations
+institutionalize
+institutionalized
+institutionalizes
+institutionalizing
+institutionally
+institutionize
+institutionizes
+institutions
+institutive
+institutor
+instruct
+instructed
+instructing
+instruction
+instruction's
+instructional
+instructions
+instructive
+instructively
+instructiveness
+instructor
+instructor's
+instructors
+instructorship
+instructress
+instructs
+instrument
+instrumental
+instrumentalism
+instrumentalist
+instrumentalist's
+instrumentalists
+instrumentalities
+instrumentality
+instrumentalize
+instrumentalizes
+instrumentally
+instrumentals
+instrumentation
+instrumented
+instrumenting
+instruments
+insubordinate
+insubordinately
+insubordination
+insubstantial
+insubstantiality
+insufferable
+insufferableness
+insufferably
+insufficience
+insufficiencies
+insufficiency
+insufficient
+insufficiently
+insufflate
+insufflated
+insufflates
+insufflating
+insufflation
+insufflator
+insugently
+insulant
+insular
+insularism
+insularity
+insularize
+insularizes
+insularly
+insulate
+insulated
+insulates
+insulating
+insulation
+insulations
+insulator
+insulator's
+insulators
+insulin
+insult
+insulted
+insulter
+insulting
+insultingly
+insults
+insuperable
+insuperably
+insupportable
+insupportableness
+insupportably
+insuppressible
+insuppressibly
+insurability
+insurable
+insurance
+insurances
+insure
+insured
+insurer
+insurers
+insures
+insurgence
+insurgency
+insurgent
+insurgent's
+insurgents
+insuring
+insurmountable
+insurmountably
+insuror
+insurrection
+insurrection's
+insurrectional
+insurrectionary
+insurrectionist
+insurrectionize
+insurrectionizes
+insurrections
+insusceptibility
+insusceptible
+insusceptibly
+inswing
+intact
+intactness
+intaglio
+intake
+intakes
+intaking
+intangibility
+intangible
+intangible's
+intangibleness
+intangibles
+intangibly
+intarsia
+integer
+integer's
+integers
+integrability
+integrable
+integral
+integral's
+integrality
+integralization
+integralization's
+integralizations
+integralize
+integralizes
+integrally
+integrals
+integrand
+integrant
+integratable
+integrate
+integrated
+integrates
+integrating
+integration
+integrationist
+integrations
+integrative
+integrator
+integrity
+integument
+integumental
+integumentary
+Intel
+Intel's
+intellect
+intellect's
+intellection
+intellective
+intellectively
+intellects
+intellectual
+intellectualism
+intellectualist
+intellectualistic
+intellectuality
+intellectualization
+intellectualization's
+intellectualizations
+intellectualize
+intellectualized
+intellectualizer
+intellectualizers
+intellectualizes
+intellectualizing
+intellectually
+intellectualness
+intellectuals
+intellectus
+intelligence
+intelligencer
+intelligences
+intelligent
+intelligential
+intelligently
+intelligentsia
+intelligibility
+intelligible
+intelligibleness
+intelligibly
+Intelsat
+intemperance
+intemperate
+intemperately
+intemperateness
+intend
+intendance
+intendancy
+intendant
+intendants
+intended
+intendedly
+intendedness
+intender
+intending
+intendment
+intends
+intenerate
+inteneration
+intense
+intensely
+intenseness
+intensification
+intensified
+intensifier
+intensifiers
+intensifies
+intensify
+intensifying
+intension
+intensional
+intensionally
+intensities
+intensity
+intensive
+intensively
+intensiveness
+intent
+intention
+intentional
+intentionality
+intentionally
+intentioned
+intentions
+intently
+intentness
+intents
+intepupillary
+inter
+interact
+interactant
+interacted
+interacting
+interaction
+interaction's
+interactional
+interactions
+interactive
+interactively
+interactivity
+interacts
+interagency
+INTERAMA
+interatomic
+interaxial
+interbedded
+interbrain
+interbreed
+intercalary
+intercalate
+intercalated
+intercalates
+intercalating
+intercalation
+intercalative
+intercase
+intercaste
+intercede
+interceder
+intercedes
+intercellular
+intercellularly
+intercensal
+intercept
+intercepted
+intercepter
+intercepting
+interception
+interceptor
+intercepts
+intercession
+intercessional
+intercessor
+intercessory
+interchange
+interchangeability
+interchangeable
+interchangeableness
+interchangeably
+interchanged
+interchanger
+interchanges
+interchanging
+interchangings
+interchannel
+intercity
+intercivilization
+intercivilization's
+intercivilizations
+interclass
+interclavicle
+interclavicular
+intercohort
+intercollegiate
+intercolonization
+intercolonization's
+intercolonizations
+intercolumniation
+intercom
+intercommunicate
+intercommunicated
+intercommunicates
+intercommunicating
+intercommunication
+intercommunion
+intercomputer
+interconnect
+interconnectable
+interconnected
+interconnectedness
+interconnecting
+interconnection
+interconnection's
+interconnections
+interconnectivity
+interconnects
+interconsole
+intercontinental
+interconversion
+interconvert
+interconvertibility
+interconvertible
+intercooler
+intercorrelated
+intercostal
+intercostally
+intercourse
+intercrisis
+intercrop
+intercross
+intercrystallization
+intercrystallization's
+intercrystallizations
+intercrystallize
+intercrystallizes
+intercultural
+interculturally
+intercurrent
+intercurrently
+intercut
+interdenominational
+interdenominationalism
+interdental
+interdentally
+interdepartmental
+interdepartmentally
+interdepend
+interdependence
+interdependencies
+interdependency
+interdependent
+interdependently
+interdict
+interdiction
+interdictive
+interdictor
+interdictory
+interdiffuse
+interdiffusion
+interdigitate
+interdigitation
+interdisciplinary
+interest
+interested
+interestedly
+interesting
+interestingly
+interestingness
+interests
+interface
+interfaced
+interfacer
+interfaces
+interfacial
+interfacing
+interfaith
+interfascicular
+interfere
+interfered
+interference
+interferences
+interferential
+interferer
+interferes
+interfering
+interferingly
+interferogram
+interferogram's
+interferograms
+interferometer
+interferometer's
+interferometers
+interferometric
+interferometrically
+interferometry
+interferon
+interfertile
+interfertility
+interfile
+interflow
+interfluent
+interfluve
+interframe
+interfuse
+interfusion
+intergalactic
+intergeneration
+intergenerational
+intergeneric
+interglacial
+intergovernmental
+intergradation
+intergradational
+intergrade
+intergranal
+intergroup
+intergrowth
+interhemispheric
+interhybridize
+interhybridizes
+interim
+interindex
+interindustry
+interionic
+interior
+interior's
+interiority
+interiorization
+interiorize
+interiorized
+interiorizes
+interiorizing
+interiorly
+interiors
+Interisland
+interjacent
+interject
+interjected
+interjecting
+interjection
+interjectional
+interjectionalize
+interjectionalizes
+interjectionally
+interjectionize
+interjectionizes
+interjector
+interjectory
+interjects
+interjudgment
+interjudgment's
+interjudgments
+interlace
+interlaced
+interlacement
+interlaces
+interlacing
+interlaken
+interlaminate
+interlamination
+interlap
+interlard
+interlay
+interlayer
+interlayering
+interleaf
+interleave
+interleaved
+interleaves
+interleaving
+interlibrary
+interline
+interlinear
+interlinearly
+interlineation
+interlingua
+interlining
+interlink
+interlinked
+interlinking
+interlinks
+interlisp
+interlisp's
+interlobular
+interlocal
+interlocation
+interlock
+interlocked
+interlocker
+interlocking
+interlocks
+interlocution
+interlocutor
+interlocutory
+interlope
+interloped
+interloper
+interlopes
+interloping
+interlude
+interludes
+interlunar
+interlunary
+interlunation
+intermarriage
+intermarry
+intermeddle
+intermeddler
+intermediacy
+intermediaries
+intermediary
+intermediate
+intermediate's
+intermediated
+intermediately
+intermediateness
+intermediates
+intermediating
+intermediation
+intermembrane
+interment
+intermesh
+intermeshed
+intermetallic
+intermetrics
+intermezzo
+intermigration
+interminable
+interminableness
+interminably
+intermingle
+intermingled
+intermingles
+intermingling
+intermission
+intermissions
+intermit
+intermittence
+intermittency
+intermittent
+intermittently
+intermitter
+intermix
+intermixed
+intermixer
+intermixes
+intermixing
+intermixture
+intermodule
+intermolecular
+intermolecularly
+intern
+internal
+internality
+internalization
+internalization's
+internalizations
+internalize
+internalized
+internalizes
+internalizing
+internally
+internals
+international
+internationalism
+internationalist
+internationalists
+internationality
+internationalization
+internationalization's
+internationalizations
+internationalize
+internationalized
+internationalizes
+internationalizing
+internationally
+internationals
+interne
+internecine
+interned
+internee
+internescine
+Internet
+Internet's
+internetwork
+interneuron
+interneuronal
+interning
+internist
+internment
+internodal
+internode
+interns
+internship
+internuclear
+internuncial
+internuncially
+internuncio
+interoceptive
+interoceptor
+interoffice
+interorganizational
+interosculate
+interpage
+interparticle
+interpellant
+interpellate
+interpellation
+interpellator
+interpenetrate
+interpenetrates
+interpenetration
+interpersonal
+interpersonally
+interphase
+interphone
+interplanetary
+interplant
+interplay
+interplead
+interpleader
+interpol
+interpolant
+interpolate
+interpolated
+interpolates
+interpolating
+interpolation
+interpolations
+interpolative
+interpolator
+interpolatory
+interpose
+interposed
+interposer
+interposes
+interposing
+interposition
+interpret
+interpretability
+interpretable
+interpretation
+interpretation's
+interpretational
+interpretations
+interpretative
+interpretatively
+interprete
+interpreted
+interpreter
+interpreters
+interpretes
+interpreting
+interpretive
+interpretively
+interpretor
+interpretors
+interprets
+interprocess
+interprocessor
+interquartile
+interracial
+interradial
+interred
+interregional
+interregnum
+interrelate
+interrelated
+interrelatedly
+interrelatedness
+interrelates
+interrelating
+interrelation
+interrelations
+interrelationship
+interrelationship's
+interrelationships
+interreligious
+interrex
+interring
+interrobang
+interrogable
+interrogate
+interrogated
+interrogates
+interrogating
+interrogation
+interrogational
+interrogations
+interrogative
+interrogatively
+interrogatives
+interrogator
+interrogatories
+interrogators
+interrogatory
+interrogee
+interrogees
+interrupt
+interrupted
+interrupter
+interrupters
+interruptible
+interrupting
+interruption
+interruption's
+interruptions
+interruptive
+interrupts
+interscholastic
+intersect
+intersected
+intersecting
+intersection
+intersection's
+intersections
+intersectoral
+intersects
+interservice
+intersession
+intersex
+intersexual
+intersexuality
+intersexually
+interspace
+interspecies
+interspecific
+intersperse
+interspersed
+intersperses
+interspersing
+interspersion
+interspersions
+interstadial
+interstage
+interstate
+interstellar
+intersterile
+intersterility
+interstice
+interstices
+interstitial
+interstitially
+interstratify
+intersubjective
+intersubjectively
+intersubjectivity
+intersurvey
+intersystem
+intertask
+intertestamental
+intertexture
+intertidal
+intertidally
+intertie
+intertill
+intertillage
+intertrigo
+intertropical
+intertwine
+intertwined
+intertwinement
+intertwines
+intertwining
+intertwist
+interurban
+interval
+interval's
+intervale
+intervalometer
+intervalometer's
+intervalometers
+intervals
+intervene
+intervened
+intervener
+intervenes
+intervening
+intervenor
+intervention
+intervention's
+interventionism
+interventionist
+interventions
+intervertebral
+intervertebrally
+interview
+interviewed
+interviewee
+interviewee's
+interviewees
+interviewer
+interviewer's
+interviewers
+interviewing
+interviews
+intervocalic
+interwar
+interweave
+interweaves
+interweaving
+interwoven
+interzonal
+interzone
+intestacy
+intestate
+intestinal
+intestinally
+intestine
+intestine's
+intestines
+intima
+intimacy
+intimal
+intimate
+intimated
+intimately
+intimateness
+intimater
+intimates
+intimating
+intimation
+intimations
+intimidate
+intimidated
+intimidates
+intimidating
+intimidation
+intimidator
+intimidatory
+intinction
+intine
+intitule
+intl
+intnl
+into
+intolerability
+intolerable
+intolerableness
+intolerably
+intolerance
+intolerant
+intolerantly
+intolerantness
+intonate
+intonation
+intonation's
+intonational
+intonations
+intone
+intoned
+intoner
+intoning
+intorsion
+intoxicant
+intoxicate
+intoxicated
+intoxicatedly
+intoxicating
+intoxication
+intra
+intraarterial
+intraarterially
+intracardiac
+intracardial
+intracardially
+intracellular
+intracellularly
+intracity
+intraclass
+intracoastal
+intracohort
+intracranial
+intracranially
+intractability
+intractable
+intractableness
+intractably
+intracutaneous
+intracutaneously
+intradepartmental
+intradermal
+intradermally
+intrados
+intraepithelial
+intrafamily
+intragalactic
+intragenerational
+intraindustry
+intraline
+intrametropolitan
+intramolecular
+intramolecularly
+intramural
+intramurally
+intramuscular
+intramuscularly
+intranasal
+intranational
+intrans
+intransigeance
+intransigeant
+intransigeantly
+intransigence
+intransigent
+intransigently
+intransigents
+intransitive
+intransitively
+intransitiveness
+intrant
+intranuclear
+intraoffice
+intraorganization
+intraorganization's
+intraorganizations
+intraperitoneal
+intraperitoneally
+intrapersonal
+intrapopulation
+intraprocess
+intrapsychic
+intrapsychically
+intrapulmonary
+intraregional
+intrasectoral
+intrasocietal
+intraspecies
+intraspecific
+intraspecifically
+intrastate
+intratelluric
+intratissue
+intrauterine
+intravasation
+intravascular
+intravenous
+intravenously
+intravital
+intravitally
+intravitam
+intrazonal
+intreat
+intrench
+intrepid
+intrepidity
+intrepidly
+intrepidness
+intricacies
+intricacy
+intricate
+intricately
+intricateness
+intrigant
+intriguant
+intrigue
+intrigued
+intriguer
+intrigues
+intriguing
+intriguingly
+intrinsic
+intrinsical
+intrinsically
+intrinsicalness
+intrinsics
+intro
+introduce
+introduced
+introducer
+introduces
+introducing
+introduction
+introduction's
+introductions
+introductorily
+introductory
+introgressant
+introgression
+introgressive
+introit
+introject
+introjected
+introjection
+introjects
+intromission
+intromit
+intromittent
+intromitter
+introrse
+introrsely
+introspect
+introspection
+introspectional
+introspectionism
+introspectionist
+introspectionistic
+introspections
+introspective
+introspectively
+introspectiveness
+introversion
+introversive
+introversively
+introvert
+introverted
+intrude
+intruded
+intruder
+intruder's
+intruders
+intrudes
+intruding
+intrusion
+intrusion's
+intrusions
+intrusive
+intrusively
+intrusiveness
+intrust
+intrvascularly
+intsv
+intubate
+intubated
+intubates
+intubating
+intubation
+intuc
+intuit
+intuitable
+intuiting
+intuition
+intuition's
+intuitional
+intuitionism
+intuitionist
+intuitions
+intuitive
+intuitively
+intuitiveness
+intuitivism
+intumesce
+intumescence
+intumescent
+intussuscept
+intussusception
+intussusceptive
+intwine
+inuit
+inulin
+inunction
+inundate
+inundated
+inundates
+inundating
+inundation
+inundations
+inundator
+inundatory
+inurbane
+inure
+inured
+inurement
+inuring
+inurn
+inutile
+inutility
+inv
+invade
+invaded
+invader
+invaders
+invades
+invading
+invaginate
+invaginated
+invaginates
+invaginating
+invagination
+invalid
+invalidate
+invalidated
+invalidates
+invalidating
+invalidation
+invalidations
+invalidator
+invalidism
+invalidities
+invalidity
+invalidly
+invalidness
+invalids
+invaluable
+invaluableness
+invaluably
+Invar
+invariability
+invariable
+invariableness
+invariably
+invariance
+invariant
+invariantly
+invariants
+invasion
+invasion's
+invasions
+invasive
+invasiveness
+invective
+invectively
+invectiveness
+inveigh
+inveigher
+inveigle
+inveigled
+inveiglement
+inveigler
+inveigling
+invenit
+invent
+invented
+inventing
+invention
+invention's
+inventions
+inventive
+inventively
+inventiveness
+inventor
+inventor's
+inventorial
+inventorially
+inventories
+inventors
+inventory
+inventory's
+inventress
+invents
+inveracity
+invercalt
+invercargill
+Inverness
+inverse
+inversely
+inverses
+inversion
+inversions
+inversive
+invert
+invertase
+invertebrate
+invertebrate's
+invertebrates
+inverted
+inverter
+inverters
+invertible
+inverting
+inverts
+invest
+investable
+invested
+investigate
+investigated
+investigates
+investigating
+investigation
+investigational
+investigations
+investigative
+investigator
+investigator's
+investigators
+investigatory
+investing
+investiture
+investment
+investment's
+investments
+investor
+investor's
+investors
+invests
+inveteracy
+inveterate
+inveterately
+inviability
+inviable
+invictus
+invidious
+invidiously
+invidiousness
+invigorate
+invigorated
+invigorates
+invigorating
+invigoratingly
+invigoration
+invigorator
+inviible
+invincibility
+invincible
+invincibleness
+invincibly
+inviolability
+inviolable
+inviolableness
+inviolably
+inviolacy
+inviolate
+inviolately
+inviolateness
+inviscid
+invisibility
+invisible
+invisibleness
+invisibly
+invitation
+invitation's
+invitational
+invitations
+invitatory
+invite
+invited
+invitee
+invitees
+inviter
+invites
+inviting
+invitingly
+invocable
+invocate
+invocation
+invocation's
+invocational
+invocations
+invocatory
+invoice
+invoiced
+invoices
+invoicing
+invokable
+invoke
+invoked
+invoker
+invokers
+invokes
+invoking
+involucel
+involucral
+involucrate
+involucre
+involucred
+involucrum
+involuntarily
+involuntariness
+involuntary
+involute
+involutely
+involution
+involutional
+involutionary
+involutions
+involutorial
+involutory
+involve
+involved
+involvedly
+involvement
+involvement's
+involvements
+involver
+involves
+involving
+invulnerability
+invulnerable
+invulnerableness
+invulnerably
+invultuation
+inward
+inwardly
+inwardness
+inwards
+inweave
+inwrap
+inwrought
+inyala
+Io
+ioctl
+iodate
+iodated
+iodating
+iodation
+iodic
+iodide
+iodin
+iodinate
+iodinated
+iodinating
+iodination
+iodine
+iodism
+iodization
+iodize
+iodized
+iodizer
+iodizers
+iodizes
+iodizing
+iodoamino
+iodocompounds
+iodoform
+iodometry
+iodophor
+iodoprotein
+iodopsin
+iodothyronines
+iodotyrosines
+iodous
+iolite
+ion
+iona
+ione
+Ionesco
+Ionia
+Ionian
+ionic
+ionicity
+Ionicization
+Ionicization's
+Ionicizations
+Ionicize
+Ionicizes
+ionium
+ionizable
+ionizable's
+ionizables
+ionization
+ionization's
+ionizations
+ionize
+ionized
+ionizer
+ionizers
+ionizes
+ionizing
+ionizings
+ionizion
+ionizions
+ionone
+ionopause
+ionosphere
+ionospheric
+ionospherically
+ions
+iontophoresis
+iosola
+IOT
+iota
+iotacism
+Iowa
+ipecac
+ipecacuanha
+iphigenia
+ipoh
+Ipomoea
+iproniazid
+ipsambul
+ipsilateral
+ipsilaterally
+ipso
+ipsus
+ipswich
+IQ
+iqbal
+iquique
+iquitos
+IR
+Ira
+iracund
+irade
+IRAF
+Iran
+Iran's
+Iranian
+Iranian's
+Iranians
+Iranize
+Iranizes
+Iraq
+iraqi
+Iraqi
+Iraqi's
+Iraqis
+irascibility
+irascible
+irascibleness
+irascibly
+irate
+irately
+irateness
+irbid
+irbil
+ire
+ire's
+ireful
+Ireland
+Ireland's
+irenaeus
+Irene
+irenic
+irenically
+irenicon
+irenics
+ires
+Ireton
+irian
+irid
+iridaceous
+iridectomy
+irides
+iridescence
+iridescent
+iridescently
+iridic
+iridium
+irido
+iridosmine
+iridotomy
+irina
+iris
+irises
+Irish
+Irishism
+Irishize
+Irishizes
+Irishman
+Irishmen
+iritis
+irk
+irked
+irking
+irks
+irksome
+irksomely
+irksomeness
+Irkutsk
+Irma
+iron
+ironbark
+ironbound
+ironclad
+ironed
+ironer
+ironfisted
+ironfounding
+ironhanded
+ironhandedly
+ironhandedness
+ironhearted
+ironic
+ironical
+ironically
+ironicalness
+ironies
+ironing
+ironings
+ironist
+ironize
+ironizes
+ironmaster
+ironmonger
+ironmongery
+ironness
+Irons
+irons
+ironside
+ironsides
+ironstone
+ironware
+ironweed
+ironwood
+ironwork
+ironwork's
+ironworker
+ironworks
+irony
+Iroquoian
+Iroquois
+irradiance
+irradiant
+irradiate
+irradiated
+irradiation
+irradiative
+irradiator
+irradicable
+irradicably
+irrational
+irrationalism
+irrationalist
+irrationalistic
+irrationality
+irrationalize
+irrationalizes
+irrationally
+irrationalness
+irrationals
+Irrawaddy
+irreal
+irreality
+irreclaimable
+irreclaimably
+irreconcilability
+irreconcilable
+irreconcilableness
+irreconcilably
+irreconciliable
+irrecoverable
+irrecoverableness
+irrecoverably
+irrecusable
+irrecusably
+irred
+irredeemable
+irredeemably
+irredenta
+irredentism
+irredentist
+irreducibility
+irreducible
+irreducibly
+irreflexive
+irreformability
+irreformable
+irrefragability
+irrefragable
+irrefragably
+irrefrangible
+irrefutability
+irrefutable
+irrefutably
+irreg
+irregardless
+irregular
+irregularities
+irregularity
+irregularize
+irregularizes
+irregularly
+irregulars
+irrelative
+irrelatively
+irrelevance
+irrelevances
+irrelevancies
+irrelevancy
+irrelevant
+irrelevantly
+irrelievable
+irreligion
+irreligionist
+irreligious
+irreligiously
+irremeable
+irremediable
+irremediableness
+irremediably
+irremissible
+irremovability
+irremovable
+irremovably
+irreparable
+irreparableness
+irreparably
+irrepealability
+irrepealable
+irreplaceability
+irreplaceable
+irreplaceableness
+irreplaceably
+irrepressibility
+irrepressible
+irrepressibly
+irreproachability
+irreproachable
+irreproachableness
+irreproachably
+irreproducibility
+irreproducible
+irresistibility
+irresistible
+irresistibleness
+irresistibly
+irresoluble
+irresolute
+irresolutely
+irresoluteness
+irresolution
+irresolvable
+irrespective
+irrespectively
+irrespirable
+irresponsibility
+irresponsible
+irresponsibleness
+irresponsibly
+irresponsive
+irresponsiveness
+irretentive
+irretrievability
+irretrievable
+irretrievably
+irreverence
+irreverent
+irreverently
+irreversibility
+irreversible
+irreversibly
+irrevocability
+irrevocable
+irrevocableness
+irrevocably
+irrigate
+irrigated
+irrigates
+irrigating
+irrigation
+irrigational
+irrigationists
+irrigations
+irrigator
+irrigators
+irriguous
+irritability
+irritable
+irritableness
+irritably
+irritant
+irritants
+irritate
+irritated
+irritates
+irritating
+irritatingly
+irritation
+irritations
+irritative
+irrotational
+irrotationally
+irrupt
+irrupted
+irrupting
+irruption
+irruptions
+irruptive
+irruptively
+irrupts
+IRS
+irtysh
+Irvin
+Irvin's
+Irvine
+Irving
+Irwin
+Irwin's
+is
+Isaac
+Isaacs
+Isaacson
+Isaacson's
+Isabel
+Isabella
+Isabella's
+Isadore
+Isadore's
+isagoge
+isagogics
+Isaiah
+Isaiah's
+isallobar
+isar
+isarithmic
+isatin
+isauria
+Isbn
+Iscariot
+ischaemia
+ischia
+ischium
+isentropic
+isentropically
+isherwood
+Ishmael
+Ishmaelite
+Ishtar
+Isidore
+isinglass
+Isis
+Iskander
+Iskenderun
+Islam
+Islamabad
+Islamabad's
+Islamic
+Islamization
+Islamization's
+Islamizations
+Islamize
+Islamized
+Islamizes
+Islamizing
+island
+islander
+islanders
+Islandia
+islandia
+islands
+islay
+isle
+isle's
+isles
+islet
+islet's
+islets
+isling
+Islington
+ism
+Ismaili
+ismailia
+isn't
+iso
+ISO
+isoagglutination
+isoagglutinative
+isoagglutinin
+isoagglutinogen
+isoalloxazine
+isoamyl
+isoantibody
+isoantigen
+isoantigenic
+isoantigenicity
+isobar
+isobaric
+isobath
+isobutylene
+isocept
+Isocheim
+isochor
+isochromatic
+isochron
+isochronal
+isochronally
+isochrone
+isochronism
+isochronization
+isochronize
+isochronized
+isochronizes
+isochronizing
+isochronous
+isochronously
+isochroous
+isoclinal
+isoclinally
+isocline
+isoclinic
+isoclinically
+isocracy
+isocrates
+isocyanate
+isocyanic
+isocyanide
+isodiametric
+isodiaphere
+isodimorphism
+isodine
+isodynamic
+isoelectric
+isoelectronic
+isoenergetic
+isogamete
+isogenous
+isogeotherm
+isogloss
+isogon
+isogonic
+isogram
+isogram's
+isograms
+isohel
+isohyet
+isoimmunization
+isoimmunization's
+isoimmunizations
+isoimmunize
+isoimmunizes
+isolate
+isolated
+isolates
+isolating
+isolation
+isolationism
+isolationist
+isolationistic
+isolations
+isolator
+Isolde
+Isolde's
+isolecithal
+isoleucine
+isolex
+isoline
+isologous
+isologue
+isomagnetic
+isomer
+isomerase
+isomeric
+isomerism
+isomerization
+isomerization's
+isomerizations
+isomerize
+isomerized
+isomerizeparabolization
+isomerizes
+isomerizing
+isomerous
+isomers
+isometric
+isometrical
+isometrically
+isometrics
+isometry
+isomorph
+isomorphic
+isomorphically
+isomorphism
+isomorphism's
+isomorphisms
+isomorphous
+isoniazid
+isonomy
+isooctane
+isophone
+isophotal
+isophote
+isopiestic
+isopleth
+isopleths
+isopod
+isoprene
+isopropyl
+isorhythmic
+isosceles
+isoseismal
+isosmotic
+isospondylous
+isostasy
+isosteric
+isotactic
+isothere
+isotherm
+isothermal
+isothermally
+isotherms
+isotone
+isotonic
+isotonically
+isotonicity
+isotope
+isotope's
+isotopes
+isotopic
+isotopically
+isotopy
+isotron
+isotropic
+isotropical
+isotropically
+isotropy
+isozyme
+isozymic
+ispell
+ispell's
+Israel
+Israel's
+Israeli
+Israeli's
+Israelis
+Israelite
+Israelites
+Israelitize
+Israelitizes
+israfil
+issachar
+ISSN
+issuable
+issuably
+issuance
+issuant
+issue
+issued
+issueless
+issuer
+issuers
+issues
+issuing
+issus
+istana
+Istanbul
+isthmian
+isthmic
+isthmus
+istle
+istria
+Istvan
+Istvan's
+it
+it'd
+it'll
+it's
+itacolumite
+itaconic
+Italia
+Italian
+Italian's
+italianate
+Italianism
+Italianization
+Italianization's
+Italianizations
+Italianize
+Italianized
+Italianizer
+Italianizers
+Italianizes
+Italianizing
+Italians
+italic
+italicity
+italicization
+italicization's
+italicizations
+italicize
+italicized
+italicizes
+italicizing
+italics
+italicy
+Italy
+itch
+itches
+itchiness
+itching
+itchy
+ITcorp
+ITCorp
+ITcorp's
+ITCorp's
+item
+item's
+itemization
+itemization's
+itemizations
+itemize
+itemized
+itemizer
+itemizers
+itemizes
+itemizing
+items
+iterance
+iterant
+iterate
+iterated
+iterates
+iterating
+iteration
+iterations
+iterative
+iteratively
+iterator
+iterator's
+iterators
+Ithaca
+Ithacan
+ithunn
+ithyphallic
+itineracy
+itinerancy
+itinerant
+itinerantly
+itineraries
+itinerary
+itinerate
+itinerated
+itinerates
+itinerating
+itineration
+Ito
+Ito's
+its
+itself
+itsy
+ITT
+IUD
+iud
+IUDs
+iuds
+iulus
+iv
+Ivan
+Ivanhoe
+Ivanovo
+Ivanovsky
+Iverson
+Iverson's
+Ives
+ivied
+ivies
+iviza
+ivories
+Ivory
+ivory
+ivy
+ivy's
+ix
+Ixia
+Ixion
+Ixtaccihuatl
+ixtle
+iyar
+iyeyasu
+Izaak
+izaak
+Izhevsk
+izmir
+izmit
+iznik
+Iztaccihuatl
+Izvestia
+izzard
+j's
+jab
+jab's
+Jabalpur
+jabbed
+jabber
+jabbered
+jabberer
+jabbering
+jabberings
+jabbers
+jabberwocky
+jabbing
+Jabir
+Jabiru
+Jablonsky
+Jablonsky's
+Jaborandi
+jabot
+jabs
+jacamar
+Jacaranda
+jacdaw
+jack
+jackal
+jackal's
+jackals
+jackanapes
+jackass
+jackassery
+jackboot
+jackbooted
+jackboots
+jackdaw
+jackdaws
+jacked
+jacker
+jackeroo
+jacket
+jacketed
+jackets
+jacketted
+jacketting
+jackfish
+jackfruit
+jackhammer
+Jackie
+jacking
+jackknife
+Jackman
+jackpot
+jackpots
+jacks
+jackscrew
+jackshaft
+jacksmelt
+jacksnipe
+Jackson
+Jacksonian
+Jacksons
+Jacksonville
+jackstay
+jackstraws
+Jacky
+JACM
+Jacob
+Jacobean
+Jacobi
+Jacobi's
+Jacobian
+Jacobin
+Jacobinize
+jacobite
+Jacobite
+Jacobs
+Jacobsen
+Jacobson
+Jacobson's
+Jacobus
+Jacoby
+jacoby
+jaconet
+Jacquard
+Jacqueline
+jacquerie
+Jacques
+jactitation
+jade
+jaded
+jadedly
+jadedness
+jadeite
+jades
+jading
+Jadotville
+Jaeger
+Jaeger's
+jael
+jaffa
+jaffna
+jag
+Jaga
+jagged
+jaggedly
+jaggedness
+jagger
+jaggers
+jaggery
+jagging
+jaggy
+jaguar
+jaguarondi
+jahveh
+Jahvist
+jahweh
+jai
+jail
+jailbait
+jailbird
+jailbreak
+jailed
+jailer
+jailers
+jailhouse
+jailing
+jailor
+jails
+Jaime
+Jaime's
+Jain
+Jainism
+jaipur
+Jakarta
+Jake
+Jakes
+jalap
+jalapa
+jalisco
+jalopies
+jalopy
+jalousie
+jam
+Jamaica
+Jamaican
+jamb
+jambalaya
+jambeau
+jambi
+jambo
+jamboree
+James
+Jamesian
+Jameson
+Jamestown
+Jamie
+Jamie's
+jammed
+jammer
+jamming
+jammu
+jammy
+jamnagar
+jampan
+jams
+jamshedpur
+jamshid
+Jan
+jana
+Janacek
+janata
+Jane
+Jane's
+Janeiro
+Janesville
+Janet
+Janet's
+jangle
+jangled
+jangler
+jangles
+jangling
+Janice
+Janiculum
+Janigro
+janina
+janis
+Janis
+janissaries
+janissary
+janitor
+janitor's
+janitorial
+janitors
+janitress
+Janos
+Janowitz
+Jansen
+Jansenism
+Jansenist
+Jansenist's
+Januaries
+January
+January's
+Janus
+Jap
+Japan
+Japan's
+Japanese
+Japanese's
+Japanization
+Japanization's
+Japanizations
+Japanize
+Japanized
+Japanizes
+Japanizing
+japanned
+japanner
+japanning
+jape
+japer
+japery
+japes
+Japheth
+Japhetic
+japing
+japonica
+jar
+jar's
+jardiniere
+jarful
+jargon
+jargonistic
+jargonization
+jargonization's
+jargonizations
+jargonize
+jargonized
+jargonizes
+jargonizing
+jarl
+jarp
+jarrah
+jarred
+jarring
+jarringly
+jarrow
+jarry
+jars
+jarvey
+Jarvi
+Jarvin
+Jarvin's
+Jarvis
+jasmine
+Jason
+jasper
+jasperize
+jasperizes
+jaspers
+jassy
+Jastrow
+Jat
+jato
+jaundice
+jaundiced
+jaundices
+jaundicing
+jaunt
+jaunt's
+jaunted
+jauntier
+jauntily
+jauntiness
+jaunting
+jaunts
+jaunty
+Java
+java
+Javanese
+javanese
+javari
+javelin
+javelin's
+javelins
+jaw
+jaw's
+jawan
+jawara
+jawbone
+jawbreak
+jawbreaker
+jawed
+jawline
+jaws
+jaxartes
+jay
+jayawardena
+jaybird
+Jaycee
+Jaycees
+jaywalk
+jazz
+jazzier
+jazzily
+jazziness
+jazzman
+jazzmen
+jazzy
+JCL
+jealous
+jealousies
+jealously
+jealousness
+jealousy
+jean
+jean's
+Jeanette
+Jeanie
+jeanne
+Jeanne
+Jeannie
+jeans
+jebel
+Jed
+Jed's
+jedda
+jeep
+jeep's
+jeepable
+jeeped
+jeepers
+jeeping
+jeeps
+jeer
+jeer's
+jeerer
+jeeringly
+jeers
+jefe
+Jeff
+Jefferson
+Jefferson's
+Jeffersonian
+Jeffersonians
+Jeffrey
+Jeffreys
+jehad
+jehol
+jehoshaphat
+Jehovah
+Jehovist
+jehu
+jejune
+jejunely
+jejuneness
+jejunum
+jekyll
+jell
+jellaba
+jelled
+jellicoe
+jellied
+jellies
+jellify
+jelling
+Jello
+jello
+jells
+jelly
+jelly's
+jellybean
+jellyfish
+jellying
+jellylike
+jemadar
+jemappes
+jembe
+Jemmy
+Jena
+Jenghis
+Jenkins
+Jenner
+Jennie
+Jennifer
+Jennings
+jenny
+Jensen
+Jensen's
+jeopard
+jeopardies
+jeopardization
+jeopardize
+jeopardized
+jeopardizes
+jeopardizing
+jeopardy
+Jephthah
+jequirity
+jerba
+jerbil
+jerboa
+Jeremiad
+Jeremiah
+Jeremy
+Jeres
+jerez
+Jericho
+jerid
+jerk
+jerked
+jerker
+jerkier
+jerkily
+jerkin
+jerkiness
+jerking
+jerkings
+jerks
+jerkwater
+jerky
+jeroboam
+Jerome
+jerreed
+jerry
+Jerry's
+Jersey
+jersey
+jersey's
+jerseys
+Jerusalem
+Jervis
+Jespersen
+jess
+Jesse
+Jesse's
+Jesselton
+Jessica
+Jessie
+jessy
+Jessy
+jest
+jested
+jester
+jesting
+jests
+Jesu
+Jesuit
+jesuitic
+jesuitical
+jesuitically
+Jesuitism
+Jesuitize
+Jesuitized
+Jesuitizes
+Jesuitizing
+jesuitry
+Jesuits
+Jesus
+jet
+jet's
+jetbead
+Jethro
+jetliner
+jetliners
+jetport
+jets
+jetsam
+jetted
+jettied
+jetties
+jetting
+jettison
+jettisonable
+Jetton
+jetty
+jettying
+jeunes
+jevons
+Jew
+jewel
+jeweled
+jeweler
+jeweleries
+jewelers
+jewelery
+jewelfish
+jeweling
+Jewell
+Jewell's
+Jewelled
+jewelries
+jewelry
+jewels
+Jewess
+Jewett
+Jewett's
+jewfish
+Jewish
+Jewishness
+Jewry
+Jews
+Jezebel
+Jezreel
+jhansi
+jhelum
+jib
+jibber
+jibbers
+jibbing
+jibbons
+jibboom
+jibe
+jibed
+jibes
+jibing
+jibouti
+jidda
+jiff
+jiffies
+jiffy
+jig
+jig's
+jigged
+jigger
+jiggered
+jiggermast
+jigging
+jiggle
+jiggled
+jiggles
+jigglier
+jiggling
+jiggly
+jigs
+jigsaw
+jihad
+Jill
+Jill's
+jillaroo
+jillion
+jilolo
+jilt
+jilted
+jilter
+jilts
+Jim
+Jim's
+Jimenez
+jimjams
+Jimmie
+jimmied
+jimmies
+jimmy
+Jimmy's
+jimmying
+jinghis
+jingle
+jingled
+jingler
+jingles
+jingling
+jingly
+jingo
+jingoes
+jingoish
+jingoism
+jingoist
+jingoistic
+jingoistically
+jinja
+jink
+jinks
+jinn
+jinnah
+jinni
+jinny
+Jinny
+jinx
+jipijapa
+jissom
+jitney
+jitneys
+jitter
+jitterbug
+jitterbugger
+jitterbugging
+jitters
+jittery
+jiujitsu
+jiujutsu
+jive
+jived
+jives
+jiving
+Jo
+Jo's
+Joab
+Joan
+Joanna
+Joanne
+Joanne's
+Joannes
+Joaquin
+job
+job's
+jobbed
+jobber
+jobbers
+jobbery
+jobbing
+jobcentre
+jobcentres
+jobholder
+jobholders
+jobless
+joblessness
+jobname
+jobrel
+Jobrel
+jobs
+Jocasta
+Jochum
+jock
+jockey
+jockeyed
+jockeying
+jockeys
+jocko
+jocks
+jockstrap
+jockstraps
+jocose
+jocosely
+jocoseness
+jocosity
+jocular
+jocularity
+jocularly
+jocund
+jocundity
+jocundly
+jodhpur
+jodhpuri
+jodhpurs
+Jodi
+Jodi's
+Jodo
+jodrell
+Jody
+Joe
+Joel
+Joes
+joey
+joffre
+jog
+jogged
+jogger
+joggers
+jogging
+joggle
+joggled
+joggler
+joggles
+joggling
+jogjakarta
+jogs
+Johann
+Johanna
+Johanna's
+Johannes
+Johannesburg
+Johansen
+Johanson
+john
+john's
+Johnnie
+Johnnie's
+Johnny
+Johnny's
+johns
+Johnsen
+Johnson
+Johnsonian
+Johnston
+Johnston's
+Johnstown
+johore
+join
+joinable
+joinder
+joined
+joiner
+joiners
+joinery
+joining
+joins
+joint
+joint's
+jointed
+jointedly
+jointedness
+jointer
+jointing
+jointly
+jointness
+jointress
+joints
+jointure
+jointured
+jointures
+jointuring
+jointworm
+Joinville
+joist
+joists
+joke
+joked
+joker
+jokers
+jokes
+joking
+jokingly
+jokjakarta
+Joliet
+Jolla
+Jolla's
+jollied
+jollier
+jollies
+jollification
+jollifications
+jollify
+jollities
+jollity
+jolly
+jollying
+jolo
+Jolson
+jolt
+jolted
+jolter
+jolting
+jolts
+jolty
+Jon
+Jon's
+Jonah
+Jonas
+Jonathan
+Jonathanization
+Jonathanization's
+Jonathanizations
+Jones
+Joneses
+jongleur
+jonnock
+jonquil
+jonquils
+Jonson
+jook
+Joplin
+joppa
+jordaens
+Jordan
+Jorge
+Jorgensen
+Jorgenson
+jorum
+jos
+Jose
+Josef
+Joseph
+Josephine
+Josephson
+Josephus
+josh
+joshed
+josher
+joshes
+joshing
+Joshua
+Josiah
+josquin
+joss
+jostle
+jostled
+jostles
+jostling
+jot
+jota
+jots
+jotted
+jotter
+jotting
+jotun
+Jotunheim
+joual
+joule
+jounce
+jounced
+jounces
+jouncier
+jouncing
+jouncy
+jour
+journal
+journal's
+journalese
+journaleses
+journalism
+journalist
+journalist's
+journalistic
+journalistically
+journalists
+journalization
+journalization's
+journalizations
+journalize
+journalized
+journalizer
+journalizers
+journalizes
+journalizing
+journalled
+journals
+journey
+journeyed
+journeying
+journeyings
+journeyman
+journeymen
+journeys
+journeywork
+joust
+jousted
+jouster
+jousting
+jousts
+Jovanovich
+Jove
+jovial
+joviality
+jovialize
+jovializes
+jovially
+Jovian
+jow
+jowett
+jowl
+jowled
+jowlier
+jowls
+jowly
+joy
+joy's
+joyance
+Joyce
+joyful
+joyfully
+joyfulness
+joyless
+joylessly
+joylessness
+joyous
+joyously
+joyousness
+joypop
+joyride
+joyrider
+joyriding
+joys
+joystick
+joysticks
+Jr
+Juan
+Juanita
+Juantorena
+juba
+Jubal
+jubbah
+Jubbulpore
+jube
+jubilant
+jubilantly
+jubilarian
+jubilate
+jubilated
+jubilates
+jubilating
+jubilation
+jubilations
+jubilee
+Judaea
+Judah
+Judaic
+Judaica
+Judaism
+Judas
+Judd
+Judd's
+Judder
+Juddered
+Juddering
+Judders
+Jude
+Judea
+judezmo
+judge
+judged
+judger
+judges
+judgeship
+judging
+judgmatic
+judgmatical
+judgmatically
+judgment
+judgment's
+judgmental
+judgments
+judicable
+judicative
+judicator
+judicatory
+judicature
+judicatures
+judicial
+judicialize
+judicializes
+judicially
+judiciaries
+judiciary
+judicious
+judiciously
+judiciousness
+Judith
+judo
+judogi
+judoist
+judoka
+Judson
+Judson's
+Judy
+jug
+jug's
+jugal
+jugate
+jugfet
+jugful
+jugged
+juggernaut
+juggernaut's
+juggernauted
+juggernauting
+juggernauts
+jugging
+juggins
+juggle
+juggled
+juggler
+jugglers
+jugglery
+juggles
+juggling
+juglandaceous
+Jugoslavia
+jugs
+jugular
+jugulate
+jugulum
+jugum
+jugurtha
+juice
+juice's
+juiced
+juiceless
+juicer
+juicers
+juices
+juicier
+juiciest
+juicily
+juiciness
+juicing
+juicy
+Juilliard
+juiz
+jujitsu
+juju
+jujube
+jujutsu
+juke
+jukebox
+jukes
+juking
+Jul
+julep
+juleps
+Jules
+Julia
+Julian
+Juliana
+Julie
+Julie's
+julienne
+Julies
+Juliet
+Julio
+Julius
+jullundur
+July
+July's
+Julys
+Jumada
+jumble
+jumbled
+jumbles
+jumbling
+jumbo
+jumbos
+jumbuck
+jumna
+jump
+jumped
+jumper
+jumpers
+jumpier
+jumpiness
+jumping
+jumps
+jumpy
+Jun
+juncaceous
+junco
+junction
+junction's
+junctional
+junctions
+junctor
+juncture
+juncture's
+junctures
+June
+June's
+Juneau
+Juneberry
+Junes
+Jung
+Jung's
+jungfrau
+Jungian
+jungian
+jungle
+jungle's
+jungled
+jungles
+jungly
+junior
+junior's
+juniors
+juniper
+Junius
+junk
+junker
+junkerdom
+junkers
+junket
+junketed
+junketeer
+junketeering
+junketer
+junketing
+junkets
+junkie
+junkies
+junkman
+junks
+junky
+junkyard
+Juno
+Junoesque
+junta
+junto
+juntos
+Jupiter
+jupon
+Jura
+Jura's
+jural
+jurally
+Juras
+jurassic
+jurat
+juratory
+jure
+jurel
+juridic
+juridical
+juridically
+juries
+jurisconsult
+jurisconsults
+jurisdiction
+jurisdiction's
+jurisdictional
+jurisdictionally
+jurisdictions
+jurisprudence
+jurisprudent
+jurisprudential
+jurisprudentially
+jurist
+juristic
+juristically
+jurists
+juror
+juror's
+jurors
+jury
+jury's
+juryman
+jus
+jussive
+jussives
+just
+juste
+juster
+justice
+justice's
+justices
+justiceship
+justiciability
+justiciable
+justiciar
+justiciary
+justifiability
+justifiable
+justifiably
+justification
+justifications
+justificative
+justificatory
+justified
+justifier
+justifier's
+justifiers
+justifies
+justify
+justifying
+Justine
+justing
+Justinian
+justle
+justly
+justment
+justness
+jut
+jute
+jutes
+Jutish
+Jutland
+Jutland's
+jutted
+juttied
+jutties
+jutting
+jutty
+juttying
+juvenal
+juvenescence
+juvenescent
+juvenile
+juvenile's
+juveniles
+juvenilia
+juvenility
+juvenilize
+juvenilizes
+juvenocracy
+juxtapose
+juxtaposed
+juxtaposes
+juxtaposing
+juxtaposition
+juxtapositional
+Jylland
+k's
+Kaaba
+Kabaka
+kabalega
+kabaragoya
+kabbala
+kabob
+kaboom
+Kabuki
+Kabul
+Kabyle
+kachang
+kachina
+Kaddish
+kadi
+kadiyevka
+kaduna
+Kaffir
+kaffirs
+Kaffraria
+Kafir
+kafiristan
+Kafka
+Kafkaesque
+kaftan
+kagera
+kagoshima
+kagu
+Kahn
+Kahn's
+kaiak
+kaieteur
+kaif
+kaifeng
+kail
+kailyard
+kain
+kainogenesis
+kairouan
+kaiser
+Kaiserslautern
+Kajar
+Kajar's
+kaka
+kakapo
+kakemono
+kaki
+Kalahari
+Kalamazoo
+kalat
+kale
+kaleidescope
+kaleidoscope
+kaleidoscoped
+kaleidoscopes
+kaleidoscopic
+kaleidoscopical
+kaleidoscopically
+kaleidoscoping
+kalends
+Kalevala
+kaleyard
+kalgan
+kalgoorlie
+kali
+kalian
+kalidasa
+kalif
+kalimantan
+kalinin
+kaliningrad
+kalisz
+kaliyuga
+kalmar
+kalmia
+Kalmuck
+Kalmuk
+Kalmuk's
+kalong
+kalpa
+kalpak
+kalsomine
+kaluga
+kama
+kamakura
+kamala
+kamasutra
+Kamchatka
+kame
+kamerun
+kamet
+kami
+Kamikaze
+kamikaze
+Kamikaze's
+Kamikazes
+Kampala
+Kampala's
+kampong
+kampuchea
+Kampuchea
+Kampuchea's
+kamseen
+Kamu
+kana
+Kanaka
+kanamycin
+kananga
+kanara
+Kanarese
+Kanawa
+kanazawa
+kanchenjunga
+kanchipuram
+kandahar
+Kandinsky
+kandy
+Kane
+Kane's
+kanga
+kangaroo
+kangaroos
+kangwane
+Kanji
+Kankakee
+Kannada
+kannada
+kano
+kanpur
+Kansas
+kansu
+Kant
+kantar
+kanu
+kanzu
+kaohsiung
+kaolack
+kaoliang
+kaolin
+kaolinite
+kaolinization
+kaolinization's
+kaolinizations
+kaolinize
+kaolinizes
+kaon
+kapellmeister
+Kapfenberg
+kaph
+Kaplan
+Kaplan's
+kapok
+kappa
+kaput
+karabiner
+Karachi
+Karachi's
+karafuto
+karaganda
+Karaite
+Karajan
+karakoram
+karakorum
+Karakul
+karamanlis
+Karamazov
+Karamazov's
+karat
+karate
+karateist
+karbala
+Karczykowski
+karelia
+Karelian
+Karen
+kariba
+Karl
+Karloff
+Karlovy
+Karlsbad
+Karlsruhe
+karma
+karmic
+Karnak
+karnataka
+Karol
+karoo
+kaross
+Karp
+Karp's
+Karpov
+Karri
+Karst
+kart
+karyatid
+karyogamy
+karyokinesis
+karyolymph
+karyolysis
+karyoplasm
+karyosome
+karyotin
+karyotype
+kasai
+kasbah
+Kasha
+kasher
+kashgar
+Kashmir
+kashmir
+Kashmiri
+Kaskaskia
+Kaspszyk
+kassa
+kassala
+kassel
+kat
+katabasis
+katabolism
+katakana
+katanga
+katar
+Kate
+kathak
+katharevusa
+Katharine
+Katharine's
+katharsis
+Katherine
+kathiawar
+Kathleen
+Kathy
+Katie
+Katie's
+katmai
+Katmandu
+Katowice
+Katowice's
+Katrina
+Katrina's
+Katrine
+katsina
+kattegat
+katydid
+Katz
+katzenjammer
+kauai
+Kauffman
+Kauffman's
+Kaufman
+Kaufman's
+kaunas
+kaunda
+kauri
+kava
+kaveri
+kawasaki
+Kay
+kayak
+kayaker
+kayaks
+kayo
+kayoed
+kayoing
+kayseri
+kazachok
+kazakh
+kazan
+kazantzakis
+kazbek
+kazoo
+kazoos
+kcal
+kea
+kean
+kearney
+Keaton
+Keats
+kebab
+kebabs
+keble
+kebob
+Keck
+keck
+Keck's
+ked
+kedah
+keddah
+kedge
+kedgeree
+kediri
+kedron
+keef
+Keegan
+keegan
+keel
+keelboat
+keeled
+keeler
+keelhaul
+keeling
+Keeling
+keelless
+keels
+keelson
+keelung
+keen
+Keenan
+keener
+keenest
+keening
+keenly
+keenness
+keep
+keeper
+keepers
+keeping
+keepnet
+keeps
+keepsake
+keepsakes
+keeshond
+Keewatin
+kef
+keffiyeh
+keg
+kegful
+kegler
+kegs
+kegsful
+Keighley
+Keijo
+keister
+keitel
+Keith
+keitloa
+kekkonen
+kelantan
+Keller
+Kelley
+Kellogg
+Kelly
+Kelly's
+keloid
+kelp
+kelpie
+Kelsey
+Kelsey's
+Kelson
+kelt
+kelter
+kelts
+Kelvin
+kemal
+kemble
+kemerovo
+Kemp
+kempe
+Kempff
+kempis
+kempt
+Ken
+ken
+Ken's
+kenaf
+kendal
+Kendall
+Kendall's
+kendo
+Kenilworth
+Kennan
+Kennan's
+Kennecott
+Kennedy
+kennel
+kennel's
+kenneled
+kenneling
+Kennelly
+kennels
+Kenneth
+Kenney
+Kenney's
+Kennington
+Kenny
+keno
+kenogenesis
+Kenosha
+kenosis
+Kensington
+kenspeckle
+Kent
+kente
+Kentish
+kentledge
+Kenton
+Kenton's
+Kentucky
+Kenya
+kenyatta
+Kenyon
+Kenyon's
+keos
+kep
+Kepler
+Kepler's
+kept
+kerala
+keramic
+keramics
+keratin
+keratinization
+keratinize
+keratinized
+keratinizes
+keratinizing
+keratitis
+keratogenous
+keratoid
+keratoplasty
+keratose
+keratosis
+kerb
+kerbaya
+kerbela
+kerbing
+kerbstone
+kerch
+kerchief
+kerchief's
+kerchiefed
+kerchiefs
+kerchieves
+Kerenski
+kerf
+kerguelen
+kerkrade
+kerman
+Kermanshah
+kermes
+kermis
+Kermit
+kermits
+kern
+kerne
+kernel
+kernel's
+kerneled
+kerneling
+kernels
+Kernighan
+Kernighan's
+kernite
+kero
+kerosene
+kerosine
+Kerouac
+kerouac
+Kerouac's
+Kerr
+Kerr's
+kerry
+kersey
+kerseymere
+Kertesz
+kerygma
+kesselring
+Kessler
+Kessler's
+kesteven
+kestrel
+Keswick
+ketch
+ketches
+ketchup
+ketene
+keto
+ketogenesis
+ketogenic
+ketone
+ketonic
+ketonization
+ketonization's
+ketonizations
+ketonize
+ketonizes
+ketonuria
+ketose
+ketosis
+ketosteroid
+ketotic
+ketoxime
+Kettering
+kettle
+kettle's
+kettledrum
+kettles
+kevel
+Kevin
+kew
+kewaskum
+Kewaskum
+kewaunee
+Kewaunee
+kewpie
+kex
+key
+keyboard
+keyboard's
+keyboarder
+keyboarding
+keyboards
+keybutton
+keyclick
+keyclick's
+keyclicks
+keyed
+Keyes
+keyhole
+keyholes
+keying
+keyless
+Keynes
+Keynesian
+Keynesianism
+keynote
+keynoter
+keynotes
+keypad
+keypad's
+keypads
+keypunch
+keypunched
+keypuncher
+keypunches
+keypunching
+keys
+keystone
+keystones
+keystroke
+keystroke's
+keystrokes
+keytop
+keytops
+keyway
+keyways
+keyword
+keyword's
+keywords
+KGB
+Khabarovsk
+Khachaturian
+Khaddar
+Khakass
+khaki
+Khakis
+Khalid
+Khalif
+Khalkha
+Khalkidiki
+Khama
+Khamsin
+khan
+Khanate
+Khanga
+Khania
+Kharif
+Kharkov
+Khartoum
+Khartoum's
+Khat
+Khayal
+Khedive
+Khelat
+Kherson
+Khieu
+Khingan
+Khirbet
+Khiva
+Khmer
+Khoikhoi
+Khoisan
+Khojent
+Khotan
+khrush
+Khrushchev
+Khrushchevs
+Khufu
+Khulna
+Khuskhus
+Khyber
+kHz
+Kiaat
+Kiang
+Kiangsi
+Kiangsu
+Kiaochow
+kibble
+kibbled
+kibbles
+kibbling
+kibbutz
+kibbutzim
+kibbutznik
+kibe
+Kibitka
+kibitz
+kibitzer
+Kiblah
+kibosh
+kick
+Kickapoo
+kickapoo
+kickback
+kickbacks
+kickdown
+kicked
+kicker
+kickers
+kicking
+kickoff
+kickoffs
+kicks
+kickshaw
+kickshaws
+kicksorter
+kickstand
+kicktail
+kickup
+kickups
+kid
+kid's
+kidd
+Kidde
+Kidde's
+kidded
+kidder
+Kidderminster
+kiddie
+kiddies
+kidding
+kiddingly
+kiddish
+kiddle
+kiddush
+kiddy
+kidless
+kidnap
+kidnap's
+kidnaped
+kidnaper
+kidnaper's
+kidnapers
+kidnaping
+kidnaping's
+kidnapings
+kidnaps
+kidney
+kidney's
+kidneys
+kidron
+kids
+kidskin
+kief
+Kieffer
+Kieffer's
+Kiel
+kiel
+kielbasa
+Kielce
+Kier
+Kierkegaard
+Kieselguhr
+Kiev
+Kiewit
+Kiewit's
+Kif
+Kigali
+Kigali's
+kike
+Kikoi
+Kikumon
+Kikuyu
+Kikuyu's
+Kilauea
+Kildare
+Kilderkin
+Kilgore
+Kilgore's
+Kilimanjaro
+Kilimanjaro's
+Kilkenny
+kill
+killable
+Killarney
+killdeer
+Killebrew
+killebrew
+killed
+killer
+killers
+Killick
+Killiecrankie
+Killifish
+Killikinick
+killing
+killingly
+killings
+killjoy
+kills
+Kilmarnock
+kiln
+kilo
+kilobar
+kilobaud
+kilobit
+kilobits
+kilobuck
+kilobyte
+kilobytes
+kilocalorie
+kilocalories
+kilocurie
+kilocycle
+kilocycles
+kilogauss
+kilogram
+kilogram's
+kilograms
+kilohertz
+kilohm
+kilojoule
+kiloliter
+kiloliter's
+kiloliters
+kilometer
+kilometer's
+kilometers
+kilooersted
+kiloparsec
+kilorad
+kilos
+kiloton
+kilotons
+kilovolt
+kilovolts
+kilowatt
+kilowatts
+kiloword
+kilt
+kilter
+kilts
+kilung
+Kim
+Kimball
+Kimball's
+kimberley
+kimberlite
+Kimberly
+Kimberly's
+kimono
+kin
+kina
+kinabalu
+kinase
+kincardine
+kinchinjunga
+kincob
+kind
+kinder
+kindergarten
+kindergartner
+kindest
+kindhearted
+kindheartedly
+kindheartedness
+kindle
+kindled
+kindler
+kindles
+kindless
+kindlessly
+kindlier
+kindliness
+kindling
+kindly
+kindness
+kindnesses
+kindred
+kinds
+kine
+kinematic
+kinematical
+kinematically
+kinematics
+kinematograph
+kinescope
+kinescoped
+kinescopes
+kineses
+kinesic
+kinesics
+kinesiology
+kinesis
+kinesthesia
+kinesthesis
+kinesthetic
+kinesthetically
+kinesthetics
+kinetic
+kineticist
+kinetics
+kinetin
+kinetochore
+kinetonucleus
+kinetoplast
+kinetoplastic
+kinetoscope
+kinetosome
+kinfolk
+kinfolks
+King
+king
+kingbird
+kingbolt
+kingcraft
+kingcup
+kingdom
+Kingdom
+kingdom's
+kingdoms
+kingfish
+kingfisher
+kinglet
+kinglier
+kingliness
+kingly
+kingmaker
+Kingman
+kingpin
+kings
+Kingsbury
+kingship
+kingside
+Kingsley
+Kingston
+Kingstown
+kingwana
+Kingwood
+kingwood
+kinin
+kink
+kinkajou
+kinkajou's
+kinkier
+kinkiness
+kinky
+Kinney
+Kinney's
+Kinnickinnic
+kinnickinnic
+Kinnock
+kino
+Kinross
+kinsey
+Kinsey
+kinsfolk
+Kinshasa
+Kinshasha
+Kinshasha's
+kinship
+kinsman
+kinsmen
+kinsmen's
+kinswoman
+kiosk
+kiosks
+kioto
+Kiowa
+kip
+Kipling
+kipper
+kippered
+kippering
+kippers
+kips
+Kirby
+Kirchhoff
+Kirchner
+Kirchner's
+Kirchoff
+Kirghiz
+Kiribati
+Kirigami
+Kirin
+kirk
+Kirk
+Kirk's
+Kirkby
+Kirkcaldy
+Kirkcudbright
+Kirkland
+Kirkman
+Kirkpatrick
+Kirkuk
+Kirkwall
+kirkwood
+Kirkwood
+Kirman
+Kirmess
+Kirov
+Kirov's
+Kirovabad
+Kirovograd
+kirsch
+Kirshbaum
+kirtle
+Kiruna
+Kirundi
+Kisangani
+Kish
+Kishinev
+Kishke
+Kismayu
+kismet
+kiss
+kissable
+kissed
+Kissel
+kisser
+kissers
+kisses
+Kissin
+kissing
+Kissinger
+kissings
+Kist
+Kistna
+Kisumu
+kit
+kit's
+Kitakyushu
+Kitakyushu's
+kitbag
+kitbags
+kitchen
+kitchen's
+kitchener
+kitchenette
+kitchenettes
+kitchenless
+kitchens
+kitchenware
+kitchenwares
+kite
+kited
+kitenge
+kiter
+kites
+kith
+kithara
+kithe
+kithing
+kiting
+kits
+kitsch
+kitschy
+kitten
+kitten's
+kittened
+kittening
+kittenish
+kittenishly
+kittenishness
+kittens
+kitties
+kittiwake
+kittle
+kittled
+kittler
+kittles
+kittling
+Kitts
+kitty
+kitwe
+kiushu
+kiva
+kivu
+Kiwanis
+kiwi
+kiwi's
+kiwis
+kiz
+Kizil
+kizzie
+Klagenfurt
+klaipeda
+Klan
+Klangfarbe
+Klansman
+klatch
+klatsch
+klauber
+Klaus
+Klausenburg
+klaxon
+Klee
+kleenex
+Kleiber
+Klein
+Klein's
+Kleinrock
+Kleinrock's
+Kleist
+Klemperer
+klepht
+kleptomania
+kleptomaniac
+klieg
+Klimt
+Kline
+kline
+Kline's
+Klipspringer
+Klondike
+klong
+klootchman
+klopstock
+kludge
+kludge's
+kludged
+kludger
+kludger's
+kludgers
+kludges
+kludgey
+kludging
+klutz
+klutz's
+klutzes
+klutziness
+klutzy
+Klux
+klystron
+klystrons
+km
+knack
+knacker
+knackery
+knacks
+knackwurst
+knag
+knap
+Knapp
+Knapp's
+knapsack
+knapsack's
+knapsacks
+knar
+Knauer
+Knauer's
+knave
+knave's
+knavery
+knaves
+knavish
+knavishly
+knawel
+knead
+kneadable
+kneaded
+kneader
+kneading
+kneads
+knee
+kneecap
+kneecaps
+kneed
+kneehole
+kneeholes
+kneeing
+kneel
+kneeled
+kneeler
+kneeling
+kneels
+kneepad
+kneepads
+knees
+knell
+knell's
+Kneller
+knells
+knelt
+Knesset
+knew
+knick
+knicker
+knickerbocker
+knickers
+knickknack
+knickpoint
+knife
+knifed
+knifelike
+kniferest
+knifes
+knifing
+knight
+knighted
+Knighthead
+knighthood
+knighting
+knightliness
+knightly
+knights
+Knightsbridge
+Knightsbridge's
+Kniplova
+knish
+knit
+knits
+knitted
+knitter
+knitting
+knitwear
+knives
+knob
+knob's
+knobbed
+knobby
+Knobeloch
+knobeloch
+Knobkerrie
+knobs
+knock
+knockabout
+knockabouts
+knockdown
+knockdowns
+knocked
+knocker
+knockers
+knocking
+knockout
+knockouts
+knocks
+knockwurst
+knoll
+knoll's
+knolls
+knop
+Knossos
+knossos
+knot
+knot's
+knotgrass
+knothole
+knots
+Knott
+Knott's
+knotted
+knotter
+knottier
+knottiness
+knotting
+knotty
+knotweed
+knotwork
+knout
+know
+knowable
+knower
+knoweth
+knowhow
+knowily
+knowing
+knowingly
+knowledge
+knowledgeability
+knowledgeable
+knowledgeableness
+knowledgeably
+knowledges
+Knowles
+Knowlton
+Knowlton's
+known
+knows
+Knox
+Knoxville
+knuckle
+knuckleball
+knuckleballer
+knucklebone
+knucklebones
+knuckled
+knucklehead
+knuckleheaded
+knuckles
+knuckling
+Knudsen
+Knudson
+knurl
+knurly
+Knussen
+Knuth
+Knuth's
+Knutsen
+Knutson
+koa
+koala
+koan
+kob
+kobarid
+Kobayashi
+kobe
+Koblenz
+kobold
+Koch
+Kochab
+Kochab's
+kochi
+Kodachrome
+Kodak
+Kodaks
+Kodaly
+Kodiak
+kodok
+koel
+Koenig
+Koenigsberg
+Koestler
+kofta
+koftgar
+kofu
+Koheleth
+Kohima
+Kohl
+Kohler
+kohlrabi
+Kohn
+Kohoutek
+koine
+koinonia
+Kokand
+Kokanee
+Kokobeh
+Kokoschka
+kokura
+kola
+kolar
+kolding
+Kolhapur
+Kolinsky
+kolkhoz
+Kollo
+Kollwitz
+Kolmar
+Kolmogorov
+Kolo
+Kolomna
+Kolyma
+Komati
+Komatik
+kombu
+Komi
+Kommunarsk
+Kommunizma
+Komodo
+Komsomol
+Komsomolsk
+Konakry
+Kondo
+Kondrashin
+Kong
+konga
+koniology
+Konrad
+konrad
+Konrad's
+Konstanz
+konya
+koodoo
+kook
+kookaburra
+kookie
+kookier
+kookiness
+kooks
+kooky
+kooning
+Kootenay
+kopeck
+Kopeisk
+kopek
+koph
+Kopje
+Koppa
+Koppers
+Koran
+Koran's
+Korbut
+Korchnoi
+Kordofan
+Kordofanian
+Korea
+Korean
+Koreans
+korfball
+Korma
+Korngold
+Korsakov
+Kortrijk
+Koruna
+Korzybski
+Kos
+Kosciusko
+kosher
+koshered
+koshering
+Kossuth
+Kostroma
+Kosygin
+Kota
+Kotabaru
+koto
+Koulibiaca
+Koumis
+Kovacs
+Kovic
+Kovic's
+Kovno
+Kovrov
+Kowalewski
+Kowalewski's
+Kowalski
+Kowalski's
+Koweit
+Kowhai
+Kowloon
+kowtow
+Kozhikode
+kpc
+Kra
+Kraal
+Kraemer
+kraemer
+kraft
+Kragujevac
+Krait
+Krakatoa
+Krakau
+kraken
+Krakow
+Kramatorsk
+Kramer
+Krameria
+Kranj
+Krans
+Krasnodar
+Krasnoyarsk
+Krause
+kraut
+krauts
+Krebs
+Krefeld
+Kreisky
+Kreisler
+Kremenchug
+Kremer
+Kremlin
+kremlinologist
+kremlinology
+Krems
+Kreplach
+Kresge
+kretchmer
+Kreutzer
+Krieger
+Krieger's
+Kriegspiel
+Kriemhild
+krill
+Krimmer
+Krio
+Krips
+Kris
+Krishna
+Kriss
+Kristiansand
+Kristianstad
+Kristin
+Kristin's
+Kristina
+Krivoy
+Kromesky
+Krone
+Kronecker
+Kronecker's
+Kronig
+Kronos
+Kroon
+Kropotkin
+Krueger
+Kruger
+Krugersdorp
+Kruller
+krummholz
+Krummhorn
+Krupp
+Kruse
+Kruse's
+Kruysen
+Krym
+krypton
+KS
+Kshatriya
+Kuala
+Kuban
+Kubelik
+Kublai
+Kubrick
+Kuch
+Kuchen
+Kuching
+kudo
+kudos
+kudu
+kudzu
+Kueh
+Kuenlun
+Kuenning
+Kuenning's
+Kufic
+Kuhn
+Kuhn's
+Kuibyshev
+Kukri
+Kuku
+Kula
+kulak
+kultur
+Kulturkampf
+Kulun
+Kum
+Kumamoto
+Kumar
+Kumasi
+Kumbaloi
+kumquat
+Kung
+Kungur
+Kunming
+Kunzite
+Kuomintang
+Kuopio
+Kura
+kurchatovium
+Kurd
+kurdish
+Kurdish
+Kurgan
+Kuril
+Kurland
+Kurosawa
+Kuroshio
+Kurrajong
+Kursaal
+Kursk
+Kurt
+kurtosis
+Kurzeme
+Kuskokwim
+Kutaisi
+Kutch
+Kutuzov
+Kuwait
+Kuznetsk
+Kwa
+Kwacha
+Kwajalein
+Kwakiutl
+Kwangchow
+Kwangchowan
+Kwangju
+Kwangtung
+Kwantung
+Kwanza
+Kwara
+kwashiorkor
+Kwazulu
+Kweichow
+Kweilin
+Kweisui
+Kweiyang
+Kwela
+KWIC
+KWOC
+KY
+kyanite
+kyanize
+kyanized
+kyanizes
+kyanizing
+Kyle
+kylin
+kylix
+kyloe
+kymograph
+kymric
+kymry
+Kynewulf
+Kyongsong
+Kyoto
+kyphosis
+Kyprianou
+Kyrie
+kythera
+Kyushu
+l's
+L'vov
+la
+La
+Laager
+Laaland
+lab
+lab's
+Laban
+Laban's
+labarum
+labdanum
+labe
+labefaction
+label
+label's
+labelable
+labeled
+labeler
+labeler's
+labelers
+labeling
+labellate
+labellum
+labels
+labia
+labial
+labialization
+labialization's
+labializations
+labialize
+labialized
+labializes
+labializing
+labially
+labiate
+labiche
+labile
+lability
+labilization
+labilization's
+labilizations
+labilize
+labilizes
+labiodental
+labionasal
+labiovelar
+labium
+lablab
+labor
+laborabilities
+laborability
+laborability's
+laborable
+laborable's
+laborables
+laboratories
+laboratory
+laboratory's
+labored
+labored's
+laboredly
+laboredness
+laborer
+laborer's
+laborers
+laborhood
+laborhood's
+laborhoods
+laboring
+laboring's
+laboringly
+laborings
+laborious
+laboriously
+laboriousness
+laborism
+laborism's
+laborisms
+laborist
+laborist's
+laborists
+laborite
+laborite's
+laborites
+laborless
+laborlesses
+labors
+laborsaving
+labour's
+Labrador
+labradorite
+labret
+labroid
+labrum
+labs
+labuan
+Laburnum
+labyrinth
+labyrinthian
+labyrinthine
+labyrinthodont
+labyrinths
+laccolith
+lace
+laced
+lacedaemon
+Lacedaemonian
+laceless
+lacelike
+lacemaker
+lacer
+lacerant
+lacerate
+lacerated
+lacerates
+lacerating
+laceration
+lacerations
+lacerative
+Lacerta
+Lacerta's
+lacertilian
+laces
+lacewing
+lacework
+Lacey
+lacey
+laches
+Lachesis
+lachlan
+lachryma
+lachrymal
+lachrymator
+lachrymatory
+lachrymose
+lachrymosely
+lacier
+lacing
+laciniate
+laciniated
+laciniation
+lack
+lackadaisic
+lackadaisical
+lackadaisically
+lackaday
+Lackawanna
+lacked
+lacker
+lackey
+lackeyed
+lackeying
+lackeys
+lacking
+lackluster
+lacks
+laclos
+laconia
+laconic
+laconically
+laconics
+laconism
+laconisms
+laconize
+laconized
+laconizes
+laconizing
+lacquer
+lacquered
+lacquerer
+lacquerers
+lacquering
+lacquers
+lacrimal
+lacrimation
+lacrimator
+lacrosse
+lacrosses
+lactalbumin
+lactam
+lactary
+lactase
+lactate
+lactated
+lactates
+lactating
+lactation
+lactational
+lactationally
+lacteal
+lactescent
+lactic
+lactiferous
+lactiferousness
+Lactobacillus
+lactobionamide
+lactobionamides
+lactobionic
+lactobionyl
+lactoflavin
+lactogenic
+lactoglobulin
+lactometer
+lactone
+lactonic
+lactonized
+lactophenol
+lactoprotein
+lactoscope
+lactose
+lacuna
+lacunae
+lacunal
+lacunar
+lacunaria
+lacunary
+lacunas
+lacunate
+lacustrine
+lacy
+lad
+ladanum
+ladder
+ladders
+laddie
+lade
+laded
+laden
+ladened
+ladening
+ladies
+Ladin
+lading
+Ladino
+ladislaus
+ladle
+ladled
+ladles
+ladling
+ladoga
+ladrone
+lads
+lady
+lady's
+ladybird
+ladybird's
+ladybirds
+ladybug
+ladybug's
+ladybugs
+ladyfern
+ladyfinger
+ladyfy
+ladykin
+ladylike
+ladylove
+ladyship
+ladysmith
+ladysnow
+laertes
+laevogyrate
+laevorotatory
+laevulin
+laevulose
+Lafayette
+laforgue
+lag
+lagan
+lage
+lagena
+lager
+lagerkvist
+lagers
+laggard
+laggardly
+laggardness
+laggards
+lagged
+lagger
+lagging
+lagniappe
+lagomorph
+lagomorphic
+lagomorphous
+lagoon
+lagoon's
+lagoonal
+lagoons
+Lagos
+Lagrange
+Lagrangian
+Lagrangian's
+lags
+Lagting
+Laguerre
+laguna
+Laguna
+lah
+Lahnda
+Lahore
+Lahore's
+Lahti
+Laibach
+laic
+laical
+laically
+laicism
+laicization
+laicizations
+laicize
+laicized
+laicizes
+laicizing
+laid
+Laidlaw
+Laidlaw's
+laik
+lain
+laing
+lair
+lair's
+laird
+lairdly
+lairs
+lairy
+laissez
+laitance
+laitances
+laity
+laius
+lake
+lake's
+lakefront
+Lakehurst
+Lakeland
+laker
+Lakes
+lakes
+lakeshore
+lakeside
+Lakewood
+lakewood
+lakh
+laking
+Laksa
+Lakshadweep
+laky
+lala
+lalang
+lalapalooza
+lallans
+lallation
+lallygag
+lallygagged
+Lalo
+lam
+lama
+Lamaism
+Lamar
+Lamar's
+Lamarck
+Lamarckian
+Lamarckism
+lamartine
+lamas
+lamasery
+lamb
+lamb's
+lambast
+lambaste
+lambda
+lambda's
+lambdacism
+lambdas
+lambdoid
+lambency
+lambent
+lambently
+lamber
+lambert
+lambertian
+lambeth
+lambkill
+lambkin
+Lamborghini
+Lamborghini's
+Lamborghinis
+lambrequin
+lambs
+lambskin
+lame
+lamebrain
+lamebrained
+lamed
+lamella
+lamellae
+lamellar
+lamellarly
+lamellas
+lamellate
+lamellately
+lamellation
+lamellicorn
+lamelliform
+lamellirostral
+lamely
+lameness
+lament
+lamentable
+lamentableness
+lamentably
+lamentation
+lamentation's
+lamentations
+lamented
+lamenting
+laments
+lamer
+lames
+lamest
+lametedly
+lamia
+lamina
+laminal
+laminar
+laminaria
+laminarian
+laminarin
+laminate
+laminated
+laminates
+laminating
+lamination
+laminations
+laminator
+laming
+Lamington
+laminin
+laminitis
+Lammas
+Lammastide
+lammed
+lammergeier
+lamming
+lamp
+lamp's
+lampas
+lampblack
+lampedusa
+lamper
+lampern
+lampeter
+lampholder
+lampion
+lamplight
+lamplighter
+lampoon
+lampooned
+lampooner
+lampoonery
+lampooning
+lampoons
+Lamport
+Lamport's
+lamppost
+lampposts
+lamprey
+lampreys
+lamprophyre
+lamps
+lampshade
+lampshades
+lamster
+Lana
+Lana's
+lanai
+lanark
+lanate
+Lancashire
+Lancaster
+Lancastrian
+lance
+lanced
+lancejack
+lancelet
+lancelot
+Lancelot
+Lancelot's
+lanceolate
+lanceolately
+lancer
+lancers
+lances
+lancet
+lanceted
+lancewood
+lanchow
+lancinate
+lancinated
+lancinates
+lancinating
+lancination
+lancinations
+lancing
+land
+landammann
+Landau
+landau
+landaulet
+landed
+lander
+landers
+landes
+landeshauptmann
+landfall
+landfill
+landform
+landgrave
+landgraviate
+landgravine
+landhold
+landholder
+landholders
+landholding
+landholdings
+landing
+landings
+Landis
+landladies
+landlady
+landlady's
+landless
+landlocked
+landloper
+landlord
+landlord's
+landlordism
+landlords
+landlubber
+landlubberly
+landmark
+landmark's
+landmarks
+landmass
+landmasses
+landor
+landowner
+landowner's
+landowners
+landownership
+landowning
+landowska
+landrace
+lands
+landscape
+landscaped
+landscaper
+landscapes
+landscaping
+landscapist
+landscapists
+landseer
+landshark
+landshut
+landside
+landsknecht
+landslide
+landslides
+landslip
+landslips
+landsman
+landtag
+landwaiter
+landward
+landwards
+Landwehr
+lane
+lane's
+lanes
+lanesmanship
+lanfranc
+Lang
+Lang's
+Lange
+Langeland
+langeland
+Langford
+Langland
+langlauf
+Langley
+Langmuir
+Langmuir's
+Langobard
+Langobardic
+langouste
+langrage
+langres
+Langridge
+langsyne
+Langton
+Langtry
+language
+language's
+languages
+langue
+languedoc
+languet
+languid
+languidly
+languidness
+languish
+languished
+languisher
+languishes
+languishing
+languishingly
+languishment
+languor
+languorous
+languorously
+langur
+laniard
+laniary
+laniferous
+lank
+Lanka
+Lanka's
+lankester
+lankier
+lankily
+lankiness
+lankly
+lankness
+lanky
+lanner
+lanneret
+lanolin
+lanose
+Lansing
+lansquenet
+Lantana
+lantern
+lantern's
+lanterns
+lanthanide
+lanthanum
+lanthorn
+lanuginous
+lanuginousness
+lanugo
+lanyard
+Lao
+laoag
+Laocoon
+laodicea
+laodicean
+laomedon
+Laos
+Laotian
+Laotians
+laotze
+lap
+lap's
+laparotomy
+lapboard
+lapdog
+lapel
+lapel's
+lapeled
+lapels
+lapful
+lapidarian
+lapidary
+lapidate
+lapidify
+lapillus
+lapis
+Lapith
+Laplace
+Laplacian
+Lapland
+Lapp
+lapped
+lapper
+lappet
+lapping
+laps
+lapse
+lapsed
+lapser
+lapses
+lapsing
+lapstrake
+lapstreak
+lapsus
+laptev
+laptop
+laptop's
+laptops
+lapwing
+Lar
+Laramie
+larcener
+larcenist
+larcenous
+larcenously
+larceny
+larch
+lard
+larded
+larder
+larding
+lardon
+lards
+lardy
+Laredo
+lares
+large
+largehearted
+largely
+largemouth
+largen
+largeness
+larger
+largess
+largesse
+largest
+larghetto
+largish
+largo
+largos
+lariat
+larine
+larisa
+lark
+lark's
+larker
+larkier
+Larkin
+Larkin's
+larks
+larkspur
+larky
+larmor
+larn
+larnax
+larousse
+larrigan
+larrikin
+larrup
+Larry
+Larry's
+Lars
+Larsen
+Larson
+larum
+larva
+larvae
+larval
+larvas
+larvicidal
+larvicide
+larwood
+laryngeal
+laryngeally
+larynges
+laryngitis
+laryngology
+laryngoscope
+laryngoscopic
+laryngotomy
+larynx
+larynxes
+las
+lasagna
+lasagne
+lascar
+lascaux
+lascivious
+lasciviously
+lasciviousness
+lase
+laser
+laser's
+lasers
+lash
+lashed
+lasher
+lashes
+lashing
+lashings
+lashio
+lashkar
+lasing
+lasker
+lasket
+Laski
+lass
+lass's
+lassa
+lassalle
+Lassen
+lasses
+lassie
+lassies
+lassitude
+lassitudes
+lasso
+lassoed
+lassoer
+lassoes
+lassus
+last
+lasted
+laster
+lasting
+lastingly
+lastingness
+lastly
+lasts
+Laszlo
+Laszlo's
+lat
+Latakia
+latch
+latched
+latches
+latchet
+latching
+latchkey
+latchstring
+late
+latecomer
+latecomers
+lated
+lateen
+lateener
+lateiner
+lately
+latencies
+latency
+latency's
+latened
+lateness
+latening
+latensification
+latensifications
+latensified
+latensifies
+latensify
+latent
+latentize
+latentizes
+latently
+latents
+later
+latera
+lateral
+lateralization
+lateralization's
+lateralizations
+lateralize
+lateralizes
+laterally
+Lateran
+Lateran's
+laterite
+laterization
+laterization's
+laterizations
+lateroversion
+latest
+LaTeX
+latex
+LaTeX's
+latex's
+latexes
+lath
+lathe
+lather
+lathered
+latherer
+lathering
+lathery
+lathes
+lathi
+lathing
+Lathrop
+lathy
+latices
+laticiferous
+latifundium
+latimer
+Latimeria
+Latin
+Latin's
+Latina
+Latinate
+Latinism
+Latinist
+Latinity
+Latinization
+Latinization's
+Latinizations
+Latinize
+Latinized
+Latinizer
+Latinizers
+Latinizes
+Latinizing
+Latino
+latish
+latitude
+latitude's
+latitudes
+latitudinal
+latitudinally
+latitudinarian
+latitudinarianism
+latitudinary
+latium
+Latona
+Latour
+latria
+latrine
+latrine's
+latrines
+Latrobe
+Latrobe's
+latten
+latter
+latter's
+latterly
+lattermost
+lattice
+lattice's
+latticed
+lattices
+latticework
+latticing
+lattimer
+Lattimer
+latus
+Latvia
+Latvia's
+Latvian
+laud
+lauda
+laudability
+laudable
+laudableness
+laudably
+laudanum
+laudation
+laudations
+laudative
+laudatorily
+laudatory
+lauder
+Lauderdale
+Laudian
+lauds
+Laue
+Laue's
+laugh
+laughable
+laughableness
+laughably
+laughed
+laugher
+laughers
+laughing
+laughingly
+laughingstock
+laughingstocks
+Laughlin
+Laughlin's
+laughs
+laughter
+laughterful
+laughters
+Laughton
+Launce
+Launceston
+launch
+launched
+launcher
+launchers
+launches
+launching
+launchings
+launder
+launderability
+laundered
+launderer
+launderette
+launderettes
+laundering
+launderings
+launders
+laundress
+laundresses
+laundries
+Laundromat
+Laundromats
+laundry
+laundryman
+laundrymen
+laundrywoman
+laura
+Laura's
+lauraceous
+laurasia
+laurate
+laureate
+laureated
+laureates
+laureateship
+laureating
+laureation
+laurel
+laurel's
+laureled
+laureling
+laurels
+Lauren
+Laurence
+Laurent
+Laurent's
+Laurentian
+lauric
+Laurie
+Laurie's
+laurier
+laurustinus
+lauryl
+Lausanne
+Lausanne's
+lautrec
+lav
+lava
+lavabo
+lavage
+lavaged
+laval
+lavalava
+lavaliere
+lavalike
+lavallade
+lavalliere
+lavation
+lavational
+lavato
+lavatories
+lavatory
+lavatory's
+lave
+laveer
+lavender
+lavendered
+lavendering
+laver
+laverock
+laving
+lavish
+lavished
+lavishing
+lavishly
+lavishness
+Lavoisier
+Lavoisier's
+lavolta
+law
+law's
+lawbreak
+lawbreaker
+lawbreakers
+lawbreaking
+lawes
+Lawford
+lawful
+lawfully
+lawfulness
+lawgive
+lawgiver
+lawgivers
+lawgiving
+lawks
+Lawless
+lawless
+lawlessly
+lawlessness
+lawmake
+lawmaker
+lawmakers
+lawmaking
+lawman
+lawmen
+lawn
+lawn's
+lawns
+lawny
+Lawrence
+Lawrenceville
+lawrencium
+Lawrentian
+laws
+Lawson
+lawsuit
+lawsuit's
+lawsuits
+lawyer
+lawyer's
+lawyerly
+lawyers
+lax
+laxation
+laxative
+laxatively
+laxativeness
+laxatives
+laxey
+laxity
+laxly
+laxness
+lay
+layabout
+layabouts
+layamon
+layard
+layaway
+laycock
+layer
+layerage
+layered
+layering
+layers
+layette
+laying
+layman
+laymen
+layoff
+layoffs
+layout
+layout's
+layouts
+layover
+layovers
+laypeople
+layperson
+lays
+layshaft
+Layton
+Layton's
+layup
+layup's
+layups
+laywoman
+laywomen
+Lazar
+lazaretto
+Lazarus
+laze
+lazed
+lazes
+lazied
+lazier
+laziest
+lazily
+laziness
+lazing
+lazio
+lazuli
+lazulite
+lazurite
+lazy
+lazybones
+lazying
+lazyish
+lb
+lbs
+LDL
+lea
+leach
+leachable
+leachate
+leaches
+leaching
+Leacock
+lead
+leadbelly
+leaded
+leaden
+leadenly
+leadenness
+leader
+leader's
+leaderless
+leaders
+leadership
+leadership's
+leaderships
+leadeth
+leadier
+leading
+leadings
+leadless
+leadoff
+leads
+leadsman
+leadsmen
+leadwork
+leadwort
+leady
+leaf
+Leaf
+leafage
+leafcutter
+leafed
+leafhopper
+leafier
+leafiest
+leafing
+leafless
+leaflet
+leaflet's
+leaflets
+leafletting
+leaflike
+leafs
+leafstalk
+leafstalks
+leafy
+league
+leagued
+leaguer
+leaguers
+leagues
+leaguing
+Leah
+leak
+leakage
+leakage's
+leakages
+leaked
+leaker
+leakey
+leakier
+leakily
+leakiness
+leaking
+leaks
+leaky
+leal
+Leamington
+lean
+Leander
+Leander's
+leaned
+leaner
+leanest
+leaning
+leanings
+leanly
+leanness
+leans
+leant
+leap
+leaped
+leaper
+leapfrog
+leapfrogged
+leapfrogging
+leaping
+leaps
+leapt
+Lear
+learn
+learnable
+learned
+learnedly
+learnedness
+learner
+learners
+learning
+learnings
+learns
+leary
+Leary
+lease
+leaseback
+leased
+leasehold
+leaseholder
+leases
+leash
+leash's
+leashes
+leasing
+least
+leastways
+leastwise
+leasure
+leat
+leather
+leatherback
+leathered
+Leatherette
+leatherhead
+leathering
+leatherize
+leatherizes
+leatherjacket
+leatherlike
+leathern
+leatherneck
+leathers
+leatherwood
+leatherwork
+leathery
+leave
+leaved
+leaven
+leavened
+leavening
+Leavenworth
+leaver
+leavers
+leaves
+leaving
+leavings
+leavis
+Lebanese
+Lebanon
+leben
+lebensraum
+Lebesgue
+lebkuchen
+leblanc
+lebowa
+lebrun
+lecce
+lech
+lecher
+lecherous
+lecherously
+lecherousness
+lechery
+lecithin
+lecithinase
+lecky
+leconte
+lectern
+lectern's
+lecterns
+lectin
+lectin's
+lectins
+lection
+lectionary
+lector
+lecture
+lectured
+lecturer
+lecturers
+lectures
+lectureship
+lecturing
+lecythus
+led
+LED's
+Leda
+lederhosen
+ledge
+ledger
+ledgers
+ledges
+ledgy
+LEDs
+lee
+Lee's
+leeboard
+leech
+leech's
+leeches
+leeds
+leek
+leer
+leered
+leering
+leers
+leery
+lees
+leet
+leeuwarden
+Leeuwenhoek
+Leeuwenhoek's
+leeward
+leewards
+leeway
+Lefkowitz
+left
+lefthand
+lefthanded
+lefties
+leftism
+leftist
+leftist's
+leftists
+leftmost
+leftover
+leftover's
+leftovers
+lefts
+leftward
+leftwards
+leftwing
+leftwinger
+leftwingers
+lefty
+leg
+legacies
+legacy
+legacy's
+legal
+legalese
+legalism
+legalist
+legalistic
+legalistically
+legalities
+legality
+legalization
+legalization's
+legalizations
+legalize
+legalized
+legalizes
+legalizing
+legally
+legals
+legaspi
+legate
+legated
+legatee
+legates
+legateship
+legatine
+legating
+legation
+legations
+legato
+legator
+legend
+legend's
+legendarily
+legendary
+Legendre
+Legendre's
+legendry
+legends
+legerdemain
+legerity
+leges
+legged
+leggier
+legging
+leggings
+leggy
+leghorn
+legibility
+legible
+legibly
+legion
+legion's
+legionary
+legionnaire
+legionnaires
+legions
+legis
+legislate
+legislated
+legislates
+legislating
+legislation
+legislations
+legislative
+legislatively
+legislator
+legislator's
+legislatorial
+legislators
+legislatorship
+legislatress
+legislatrix
+legislature
+legislature's
+legislatures
+legist
+legit
+legitimacy
+legitimate
+legitimated
+legitimately
+legitimates
+legitimating
+legitimation
+legitimatize
+legitimatized
+legitimatizes
+legitimatizing
+legitimism
+legitimist
+legitimization
+legitimization's
+legitimizations
+legitimize
+legitimized
+legitimizer
+legitimizes
+legitimizing
+legless
+legman
+legnica
+legroom
+legs
+legume
+legumes
+legumin
+leguminous
+legwork
+Lehigh
+Lehman
+Lehman's
+lehmann
+lehmbruck
+lehr
+lei
+Leibnitz
+Leibniz
+Leicester
+Leicestershire
+Leichhardt
+Leiden
+Leif
+Leigh
+Leighton
+Leila
+Leinsdorf
+Leinster
+Leipzig
+Leipzig's
+leiria
+Leishmania
+leishmaniasis
+leister
+leisure
+leisured
+leisureliness
+leisurely
+leith
+leitmotif
+leitmotiv
+Leitner
+leitrim
+leix
+lek
+lekker
+Leland
+Leland's
+lely
+leman
+Lemberg
+lemke
+Lemke
+lemma
+lemma's
+lemmas
+Lemmens
+lemming
+lemmings
+lemniscate
+lemnos
+lemon
+lemon's
+lemonade
+lemons
+lemony
+lempira
+Lemuel
+lemur
+lemures
+lemuroid
+Len
+Len's
+Lena
+Lena's
+lend
+lender
+lenders
+lending
+lends
+lenglen
+length
+lengthen
+lengthened
+lengthener
+lengthening
+lengthens
+lengthier
+lengthily
+lengthiness
+lengthly
+lengthman
+lengths
+lengthways
+lengthwise
+lengthy
+lenience
+leniency
+lenient
+leniently
+Lenin
+Leninabad
+Leninakan
+Leningrad
+Leninism
+Leninist
+lenis
+lenitive
+lenitively
+lenity
+Lennon
+Lennon's
+Lennox
+Lennox's
+Lenny
+Leno
+Lenore
+Lenore's
+lens
+lens's
+lense
+lensed
+lenser
+lensers
+lenses
+lensing
+lensings
+lensless
+lent
+lentamente
+Lenten
+lentic
+lenticel
+lenticular
+lenticulate
+lenticulation
+lentigo
+lentil
+lentil's
+lentils
+lentissimo
+lento
+Lenya
+Leo
+leoben
+Leon
+Leona
+Leonard
+Leonardo
+Leoncavallo
+Leone
+Leonid
+Leonid's
+Leonidas
+leonine
+leopard
+leopard's
+leopardess
+Leopardi
+leopards
+Leopold
+Leopoldville
+leotard
+leotards
+Lepanto
+lepaya
+leper
+lepers
+lepidolite
+lepidopteran
+lepidopterist
+Lepidosiren
+lepidote
+lepidus
+lepontine
+leporid
+leporine
+leprechaun
+leprechauns
+leprosarium
+leprose
+leprosy
+leprotic
+leprous
+leprously
+leprousness
+Leptocephalus
+Lepton
+lepton
+lepton's
+leptons
+leptophyllous
+leptosome
+leptospiral
+leptospirosis
+leptotene
+Lepus
+Lermontov
+Leroy
+Lerwick
+les
+lesbian
+lesbianism
+lesbians
+lesbos
+lesion
+lesions
+Leslie
+Lesotho
+Lesotho's
+less
+lessee
+lessen
+lessened
+lessening
+lessens
+lesseps
+lesser
+lesses
+lessing
+lesson
+lesson's
+lessoned
+lessoning
+lessons
+lessor
+lest
+lester
+let
+let's
+letch
+letchworth
+letdown
+letdowns
+lethal
+lethality
+lethalize
+lethalizes
+lethally
+lethargic
+lethargically
+lethargies
+lethargy
+Lethbridge
+Lethe
+Lethe's
+Letitia
+Letitia's
+Leto
+lets
+Lett
+letted
+letter
+lettered
+letterer
+letterhead
+letterheads
+lettering
+letterman
+lettermen
+letterpress
+letters
+letterset
+letting
+Lettish
+lettuce
+letup
+leu
+leucas
+leucine
+Leucippus
+leucite
+leucitic
+leuco
+leucocratic
+leucocyte
+leucocytosis
+leucoderma
+leucoma
+leucomaine
+leucopenia
+leucoplast
+leucopoiesis
+leucorrhoea
+leucotomy
+leuctra
+leukas
+leukemia
+leukemic
+leukemoid
+leukocyte
+leukocytic
+leuven
+lev
+levalloisian
+Levant
+levanter
+Levantine
+levator
+levatores
+levators
+levee
+levee's
+leveed
+leveeing
+levees
+level
+leveled
+leveler
+levelers
+levelest
+levelheaded
+levelheadedness
+leveling
+levelly
+levelness
+levels
+leven
+lever
+lever's
+leverage
+leveraged
+leverages
+leveraging
+levered
+leveret
+Leverhulme
+levering
+Leverkusen
+leverrier
+levers
+Levi
+Leviable
+leviable
+leviathan
+leviathan's
+levied
+levier
+levies
+levigate
+levigated
+levigates
+levigating
+levigation
+Levin
+Levin's
+Levine
+levirate
+leviratic
+Levis
+levitate
+levitated
+levitates
+levitating
+levitation
+levitational
+Levite
+Levitical
+Leviticus
+levities
+Levitt
+Levitt's
+levity
+levkas
+Levko
+levorotation
+levorotatory
+levulose
+levy
+levying
+Lew
+Lew's
+lewd
+lewdly
+lewdness
+Lewellyn
+lewellyn
+lewes
+lewis
+Lewisham
+lewisite
+lex
+lexeme
+lexica
+lexical
+lexicality
+lexically
+lexicographer
+lexicographer's
+lexicographers
+lexicographic
+lexicographical
+lexicographically
+lexicography
+lexicology
+lexicon
+lexicon's
+lexiconize
+lexiconizes
+lexicons
+lexicostatistic
+lexicostatistics
+lexigraphy
+Lexington
+lexis
+ley
+Leyden
+Leyte
+Lhasa
+liabilities
+liability
+liability's
+liable
+liableness
+Liadov
+liaise
+liaised
+liaises
+liaising
+liaison
+liaison's
+liaisons
+liana
+Liao
+Liaoning
+Liaotung
+Liaoyang
+liar
+liar's
+liard
+liars
+Lias
+liase
+liason
+lib
+libation
+libationary
+libations
+libau
+libava
+Libby
+Libby's
+libeccio
+libel
+libelant
+libelants
+libeled
+libelee
+libelees
+libeler
+libelers
+libeling
+libelist
+libelous
+libelously
+libels
+liber
+liberace
+Liberace
+liberal
+liberalism
+liberalist
+liberalistic
+liberality
+liberalization
+liberalization's
+liberalizations
+liberalize
+liberalized
+liberalizer
+liberalizers
+liberalizes
+liberalizing
+liberally
+liberalness
+liberals
+liberate
+liberated
+liberates
+liberating
+liberation
+liberationist
+liberationists
+liberator
+liberator's
+liberators
+liberec
+Liberia
+libertarian
+libertarianism
+libertarians
+liberticide
+libertie
+liberties
+libertinage
+libertine
+libertines
+libertinism
+liberty
+liberty's
+libia
+libidinal
+libidinally
+libidinous
+libidinously
+libidinousness
+libido
+libra
+librae
+librarian
+librarian's
+librarians
+librarianship
+libraries
+library
+library's
+librate
+libration
+librational
+libratory
+libretti
+librettist
+librettists
+libretto
+libretto's
+librettos
+Libreville
+Libreville's
+libriform
+Libya
+Libyan
+licating
+lice
+licensable
+license
+license's
+licensed
+licensee
+licensee's
+licensees
+licenseless
+licenselesses
+licenser
+licenses
+licensing
+licensor
+licensure
+licentiate
+licentiateship
+licentious
+licentiously
+licentiousness
+lichee
+lichen
+lichen's
+lichened
+lichenin
+lichenization
+lichenization's
+lichenizations
+lichenize
+lichenizes
+lichenology
+lichenous
+lichens
+Lichfield
+lichi
+licht
+lichtenstein
+Lichtenstein
+Lichter
+lichter
+licit
+licitly
+lick
+licked
+licker
+lickerish
+lickerishly
+lickerishness
+licking
+licks
+lickspittle
+licorice
+lictor
+lid
+lid's
+lidded
+liddell
+lidding
+lidice
+lidless
+lido
+lidocaine
+lidos
+lids
+lie
+lieberman
+Lieberman
+Lieberman's
+Liebfraumilch
+liebig
+liebknecht
+Liechtenstein
+lied
+lieder
+lief
+liege
+liegeman
+liegnitz
+lien
+lien's
+lienal
+liens
+lientery
+lier
+lierne
+lies
+liestal
+lietuva
+lieu
+lieut
+lieutenancy
+lieutenant
+lieutenant's
+lieutenants
+lieve
+life
+life's
+lifeblood
+lifeboat
+lifeboats
+lifeful
+lifeguard
+lifeguards
+lifeless
+lifelessly
+lifelessness
+lifelike
+lifelikeness
+lifeline
+lifelines
+lifelong
+lifemanship
+lifer
+lifers
+lifesaver
+lifesaving
+lifespan
+lifespans
+lifestyle
+lifestyles
+lifetime
+lifetime's
+lifetimes
+lifeway
+lifework
+liffey
+LIFO
+lift
+liftable
+liftboy
+lifted
+lifter
+lifters
+lifting
+liftman
+liftoff
+lifts
+ligament
+ligamentary
+ligamentous
+ligaments
+ligan
+ligand
+ligands
+ligate
+ligated
+ligates
+ligating
+ligation
+ligations
+ligature
+ligatured
+ligatures
+ligaturing
+liger
+ligeti
+Ligget
+Ligget's
+Liggett
+Liggett's
+light
+lighted
+lighten
+lightened
+lightener
+lightening
+lightens
+lighter
+lighter's
+lighterage
+lighters
+lightest
+lightface
+lightfaced
+lightfooted
+lightfootedly
+lightfootedness
+lightful
+lighthanded
+lighthandedness
+lightheaded
+lighthearted
+lightheartedly
+lightheartedness
+lighthouse
+lighthouse's
+lighthouses
+lighting
+lightish
+lightless
+lightly
+lightness
+lightning
+lightning's
+lightninged
+lightnings
+lightproof
+lights
+lightship
+lightships
+lightsome
+lightsomely
+lightsomeness
+lightweight
+lightweights
+lightyear
+lightyears
+ligneous
+lignification
+lignified
+lignifies
+ligniform
+lignify
+lignifying
+lignin
+lignite
+lignitic
+lignitize
+lignitizes
+lignocaine
+lignocellulose
+lignum
+ligroin
+ligula
+ligulate
+ligule
+ligure
+liguria
+lii
+likability
+likable
+likableness
+likasi
+like
+likeable
+liked
+likelier
+likeliest
+likelihood
+likelihoods
+likeliness
+likely
+liken
+likened
+likeness
+likeness's
+likenesses
+likening
+likens
+liker
+likes
+likest
+likewise
+liking
+likings
+liklihood
+likuta
+Lila
+Lila's
+lilac
+lilac's
+lilacs
+lilburne
+liliaceous
+Lilian
+Lilian's
+lilied
+lilienthal
+lilies
+Lilith
+liliuokalani
+lille
+Lillian
+Lillian's
+lilliput
+Lilliputian
+lilliputian
+Lilliputianize
+Lilliputianizes
+Lilly
+lilo
+lilongwe
+lilt
+lilting
+liltingly
+liltingness
+lily
+lily's
+Lima
+limacine
+Liman
+limassol
+limb
+limba
+limbate
+limbed
+limber
+limbered
+limbering
+limberly
+limberness
+limbers
+limbic
+limbless
+limbo
+limbos
+Limbourg
+limbs
+Limburg
+Limburger
+limbus
+lime
+lime's
+limeade
+limed
+limekiln
+limelight
+limen
+limerick
+limerick's
+limericks
+limes
+limestone
+limewater
+limey
+limicoline
+limicolous
+limier
+liminal
+liming
+limit
+limitability
+limitable
+limitably
+limitarian
+limitary
+limitation
+limitation's
+limitational
+limitations
+limitative
+limited
+limitedly
+limitedness
+limiteds
+limiter
+limiters
+limiting
+limitless
+limitlessly
+limitlessness
+limitrophe
+limits
+limmer
+limn
+limner
+limnetic
+limnic
+limning
+limnological
+limnologically
+limnologist
+limnology
+limo
+limo's
+limoges
+limonene
+limonite
+limonitic
+limos
+limousin
+limousine
+limousines
+limp
+limped
+limper
+limpet
+limpid
+limpidity
+limpidly
+limpidness
+limping
+limpkin
+limply
+limpness
+Limpopo
+limps
+limpsy
+limulus
+limy
+Lin
+Lin's
+linac
+linacre
+linage
+linalool
+linares
+linate
+linated
+lination
+linchpin
+linchpin's
+linchpins
+Lincoln
+Lincolnshire
+lincrusta
+linctus
+Lind
+Lind's
+Linda
+lindane
+Lindberg
+Lindbergh
+Lindbergh's
+linden
+lindesnes
+Lindholm
+Lindholm's
+lindisfarne
+Lindquist
+Lindquist's
+Lindsay
+Lindsay's
+Lindsey
+Lindsey's
+Lindstrom
+Lindstrom's
+lindwall
+Lindy
+lindy
+line
+line's
+lineage
+lineages
+lineal
+lineality
+lineally
+lineament
+lineamental
+linear
+linearities
+linearity
+linearizable
+linearization
+linearization's
+linearizations
+linearize
+linearized
+linearizes
+linearizing
+linearizion
+linearly
+lineate
+lineation
+lineations
+linebacker
+linebackers
+linebacking
+linebreed
+linecaster
+linecasting
+lined
+linefeed
+linefeeds
+lineman
+linemen
+linen
+linen's
+linenize
+linenizer
+linenizers
+linenizes
+linens
+linenumber
+lineolate
+lineolated
+lineprinter
+lineprinter's
+lineprinters
+liner
+linerless
+liners
+lines
+linesman
+linestyle
+lineup
+lineups
+linewidth
+linga
+lingam
+lingayen
+lingcod
+linger
+lingered
+lingerer
+lingerie
+lingering
+lingeringly
+lingers
+lingo
+lingoes
+lingonberry
+lingua
+linguae
+lingual
+lingualize
+lingualizes
+lingually
+linguiform
+linguine
+linguini
+linguist
+linguist's
+linguistic
+linguistical
+linguistically
+linguistician
+linguistics
+linguists
+lingulate
+linhay
+liniment
+liniments
+linin
+lining
+linings
+link
+linkage
+linkage's
+linkages
+linkboy
+linked
+linker
+linkers
+linking
+linkings
+linkman
+links
+linksman
+linkup
+linkwork
+linlithgow
+linn
+Linnaean
+linnaeus
+Linnaeus
+linnet
+linnhe
+lino
+linocut
+linoleate
+linoleic
+linolenate
+linolenic
+linoleum
+linos
+Linotype
+Linsang
+linseed
+linstock
+lint
+lintel
+linter
+Linton
+lints
+lintwhite
+linty
+linum
+Linus
+linz
+lion
+lion's
+Lionel
+lioness
+lioness's
+lionesses
+lionfish
+lionhearted
+lionizable
+lionizable's
+lionizables
+lionization
+lionization's
+lionizations
+lionize
+lionized
+lionizer
+lionizers
+lionizes
+lionizing
+lionlike
+lions
+lip
+lip's
+lipari
+lipase
+lipchitz
+Lipetsk
+lipid
+lipid's
+lipide
+lipidic
+lipids
+lipless
+liplike
+lipography
+lipoid
+lipolysis
+lipolytic
+lipoma
+lipophilic
+lipoprotein
+lippe
+lipped
+lippen
+lippi
+lippie
+lippier
+Lippincott
+Lippincott's
+lipping
+Lippizaner
+lippy
+lipread
+lipreading
+lips
+Lipschitz
+Lipscomb
+Lipscomb's
+lipstick
+Lipton
+liquate
+liquated
+liquates
+liquating
+liquation
+liquations
+liquefacient
+liquefaction
+liquefactive
+liquefactive's
+liquefactives
+liquefiability
+liquefiable
+liquefied
+liquefier
+liquefiers
+liquefies
+liquefy
+liquefying
+liquesce
+liquescent
+liqueur
+liquid
+liquid's
+liquidate
+liquidated
+liquidates
+liquidating
+liquidation
+liquidation's
+liquidations
+liquidator
+liquidity
+liquidization
+liquidize
+liquidized
+liquidizer
+liquidizers
+liquidizes
+liquidizing
+liquidly
+liquidness
+liquids
+liquidus
+liquor
+liquor's
+liquored
+liquorice
+liquoring
+liquorish
+liquors
+lira
+liras
+lire
+Liriodendron
+liripipe
+Lisa
+Lisbon
+Lise
+Lise's
+lisieux
+lisle
+lisp
+lisp's
+lisped
+lisper
+lisping
+lisps
+liss
+Liss
+Lissajous
+lissom
+lissome
+lissomely
+lissomeness
+list
+liste
+listed
+listel
+listen
+listenable
+listened
+listener
+listeners
+listening
+listens
+lister
+listeriosis
+Listerism
+Listerize
+Listerizes
+listers
+listing
+listing's
+listings
+listless
+listlessly
+listlessness
+liston
+Liston
+lists
+Liszt
+lit
+litanies
+litany
+liter
+literacy
+literae
+literal
+literalism
+literalist
+literalistic
+literality
+literalization
+literalization's
+literalizations
+literalize
+literalized
+literalizer
+literalizers
+literalizes
+literally
+literalness
+literals
+literarily
+literariness
+literary
+literate
+literately
+literateness
+literati
+literatim
+literation
+literator
+literature
+literature's
+literatures
+literatus
+liters
+litharge
+lithe
+lithely
+litheness
+lithesome
+lithia
+lithiasis
+lithic
+lithically
+lithium
+litho
+lithograph
+lithographer
+lithographers
+lithographic
+lithographically
+lithographize
+lithographizes
+lithographs
+lithography
+lithoid
+lithologic
+lithological
+lithologically
+lithology
+lithomarge
+lithometeor
+lithophane
+lithophyte
+lithophytic
+lithopone
+lithos
+lithosol
+lithosphere
+lithospheric
+lithotomy
+lithotrity
+Lithuania
+lithuanian
+Lithuanian
+litigable
+litigant
+litigants
+litigate
+litigated
+litigates
+litigating
+litigation
+litigator
+litigious
+litigiously
+litigiousness
+litmus
+litotes
+litter
+litterateur
+litterbag
+litterbug
+littered
+litterer
+littering
+littermate
+littermate's
+littermates
+litters
+littery
+little
+littleneck
+littleness
+littler
+littlest
+Littleton
+Litton
+littoral
+littoria
+liturgic
+liturgical
+liturgically
+liturgics
+liturgiologist
+liturgiology
+liturgist
+liturgy
+litz
+liu
+Liv
+livability
+livable
+livableness
+livably
+live
+liveability
+liveable
+lived
+livelier
+liveliest
+livelihood
+livelily
+liveliness
+livelong
+lively
+liven
+livened
+liveness
+livening
+liver
+liveried
+liverish
+liverishness
+Livermore
+Liverpool
+Liverpudlian
+livers
+liverwort
+livery
+liveryman
+lives
+livest
+livestock
+liveth
+livid
+lividity
+lividness
+living
+livingly
+livingness
+livings
+Livingston
+livingstone
+livlihood
+livonia
+livorno
+livraison
+livy
+lix
+lixiviate
+lixiviated
+lixiviates
+lixiviating
+lixiviation
+lixivium
+Liz
+Liz's
+lizard
+lizard's
+lizards
+Lizzie
+lizzy
+Lizzy
+Ljubljana
+llama
+llama's
+llamas
+Llandaff
+Llandudno
+Llanelli
+Llangollen
+llano
+llanos
+Llewellyn
+Lleyn
+Lloyd
+lo
+loach
+loaches
+load
+loadable
+loaded
+loader
+loaders
+loading
+loadings
+loads
+loadstar
+loadstone
+loaf
+loafed
+loafer
+loafers
+loafing
+loafs
+loam
+loamy
+loan
+loanable
+loanda
+loaned
+loaner
+loaning
+loans
+loanword
+loanword's
+loanwords
+loath
+loathe
+loathed
+loather
+loathes
+loathing
+loathly
+loathness
+loathsome
+loathsomely
+loathsomeness
+loaves
+lob
+Lobachevsky
+lobar
+lobate
+lobated
+lobately
+lobation
+lobbied
+lobbies
+lobbing
+lobby
+lobbyer
+lobbying
+lobbyism
+lobbyist
+lobe
+lobe's
+lobectomy
+lobed
+lobelia
+lobeline
+lobengula
+lobes
+lobito
+loblolly
+lobo
+lobola
+lobos
+lobotomy
+lobscouse
+lobster
+lobster's
+lobsterman
+lobstermen
+lobsters
+lobular
+lobularity
+lobularly
+lobulate
+lobulated
+lobulation
+lobule
+lobules
+lobulose
+lobworm
+local
+locale
+locales
+localism
+localisms
+localite
+localities
+locality
+locality's
+localizable
+localizable's
+localizables
+localization
+localization's
+localizations
+localize
+localized
+localizer
+localizers
+localizes
+localizing
+locally
+locals
+Locarno
+locatable
+locate
+located
+locater
+locates
+locating
+location
+locational
+locationally
+locations
+locative
+locatives
+locator
+locator's
+locators
+loch
+lochia
+loci
+lock
+lockable
+lockage
+lockbox
+Locke
+locked
+locker
+lockers
+locket
+Lockhart
+Lockheed
+Lockian
+lockies
+locking
+lockings
+lockjaw
+locknut
+lockout
+lockout's
+lockouts
+locks
+locksmith
+locksmithing
+lockstep
+lockstitch
+lockup
+lockup's
+lockups
+Lockwood
+lockyer
+locl
+loco
+locoes
+locofoco
+locoism
+locoman
+locomote
+locomoted
+locomotes
+locomoting
+locomotion
+locomotive
+locomotive's
+locomotively
+locomotives
+locomotor
+locomotory
+locoweed
+locris
+locular
+loculate
+loculated
+loculation
+locule
+loculed
+loculus
+locum
+locus
+locus's
+locust
+locust's
+locusts
+locution
+locutor
+lod
+lode
+loden
+lodestar
+lodestone
+lodge
+lodged
+lodgement
+lodgepole
+lodger
+lodger's
+lodgers
+lodges
+lodging
+lodgings
+lodgment
+lodi
+lodicule
+Lodowick
+Lodowick's
+Loeb
+Loeb's
+loess
+Loewe
+loewi
+lofoten
+loft
+loft's
+lofter
+loftier
+loftily
+loftiness
+lofts
+lofty
+log
+log's
+Logan
+loganberry
+loganiaceous
+logaoedic
+logarithm
+logarithm's
+logarithmic
+logarithmically
+logarithms
+logbook
+loge
+logged
+logger
+logger's
+loggerhead
+loggers
+loggets
+loggia
+loggie
+logging
+loggy
+logia
+logic
+logic's
+logical
+logicality
+logicalization
+logicalization's
+logicalizations
+logicalize
+logicalizes
+logically
+logicalness
+logicals
+logician
+logician's
+logicians
+logicism
+logicize
+logicized
+logicizes
+logicizing
+logics
+login
+logins
+logion
+logions
+logistic
+logistical
+logistically
+logistician
+logistics
+logjam
+loglog
+lognormal
+lognormality
+lognormally
+logo
+logoff
+logogram
+logogram's
+logogrammatic
+logograms
+logograph
+logographic
+logographically
+logography
+logogriph
+logomachy
+logopaedics
+logorrhea
+logorrhea's
+logorrheas
+logorrheic
+logos
+logotype
+logout
+logroll
+logroller
+logrolling
+logs
+logwood
+logy
+lohengrin
+loin
+loin's
+loincloth
+loins
+Loire
+loiret
+Lois
+loiter
+loitered
+loiterer
+loitering
+loiters
+Loki
+Loki's
+Lola
+loll
+Lolland
+lollapalooza
+Lollard
+loller
+lollies
+lolling
+lollipop
+lollop
+lolly
+lollygag
+lollypop
+lomax
+Lomb
+Lomb's
+Lombard
+Lombardy
+Lombardy's
+lombok
+Lombrosian
+lombroso
+Lome
+loment
+lomond
+London
+Londonderry
+londonderry
+Londoner
+Londonization
+Londonization's
+Londonizations
+Londonize
+Londonizes
+londrina
+lone
+lonelier
+loneliest
+lonelily
+loneliness
+lonely
+loneness
+loner
+loners
+lonesome
+lonesomely
+lonesomeness
+long
+longan
+longanimity
+longanimous
+Longbenton
+longboat
+longboats
+longbow
+longbowman
+longcase
+longcloth
+longe
+longed
+longer
+longeron
+longest
+longevity
+longevous
+Longfellow
+Longford
+longhair
+longhaired
+longhand
+longhead
+longheaded
+longheadedness
+longhorn
+longhorns
+longhouse
+longicorn
+longing
+longingly
+longings
+longinus
+longish
+longitude
+longitude's
+longitudes
+longitudinal
+longitudinally
+longlasting
+longleaf
+longlegs
+longline
+longly
+longness
+Longobard
+longs
+longship
+longshore
+longshoreman
+longshoremen
+longshoring
+longsome
+longsomely
+longsomeness
+longspur
+longstanding
+Longstreet
+longstreet
+longterm
+longtime
+longue
+longueuil
+longueur
+longus
+longways
+longwinded
+longword
+longword's
+longwords
+longyearbyen
+Lonicera
+loo
+loobies
+looby
+loofah
+look
+lookahead
+looked
+looker
+lookers
+lookin
+looking
+lookout
+lookouts
+looks
+lookup
+lookup's
+lookups
+loom
+loomed
+looming
+Loomis
+looms
+loon
+looney
+loonier
+looniness
+loony
+loop
+looped
+looper
+loophole
+loophole's
+loopholed
+loopholes
+loopholing
+looping
+loops
+loopy
+loose
+loosebox
+loosed
+looseleaf
+loosely
+loosen
+loosened
+loosener
+looseness
+loosening
+loosens
+looser
+looses
+loosest
+loosestrife
+loosing
+loot
+looted
+looter
+looting
+loots
+lop
+lope
+loped
+loper
+Lopez
+lophobranch
+lophophore
+loping
+lopped
+lopper
+loppier
+lopping
+loppy
+lops
+lopseed
+lopsided
+lopsidedly
+lopsidedness
+loquacious
+loquaciously
+loquaciousness
+loquacity
+loquat
+lor
+loran
+lorans
+lorca
+lord
+lord's
+lording
+lordlier
+lordliness
+lordling
+lordly
+lordosis
+lordotic
+lords
+lordship
+lordy
+lore
+loreal
+Lorelei
+Loren
+Loren's
+Lorengar
+lorentz
+Lorentzian
+Lorenz
+Lorenz's
+Loretta
+lorgnette
+lorgnettes
+lorgnon
+lorgnons
+Lori
+Lori's
+lorica
+loricate
+loricated
+lorient
+lorikeet
+lorimer
+Lorinda
+Lorinda's
+loris
+lorn
+lornness
+lorrain
+Lorraine
+lorries
+lorris
+lorry
+lory
+los
+losable
+losableness
+lose
+losel
+loser
+losers
+loses
+losey
+losing
+losings
+loss
+loss's
+lossage
+losses
+lossier
+lossiest
+lossless
+lossy
+lost
+lostness
+lot
+lot's
+Lota
+loth
+lothair
+lothario
+Lothario
+lotharios
+lothian
+lothians
+lothringen
+lotic
+lotion
+lotions
+lotos
+lots
+Lotte
+Lotte's
+lotted
+lotteries
+lottery
+Lottie
+lotting
+lotto
+lotus
+Lou
+Lou's
+louche
+loud
+louden
+loudened
+loudening
+louder
+loudest
+loudish
+loudly
+loudmouth
+loudmouthed
+loudness
+loudspeak
+loudspeaker
+loudspeaker's
+loudspeakers
+loudspeaking
+lough
+Loughborough
+Louis
+Louisa
+Louisburg
+Louise
+Louisiana
+Louisianan
+Louisville
+lounge
+lounged
+lounger
+loungers
+lounges
+lounging
+Lounsbury
+Lounsbury's
+loup
+loupe
+louping
+Lourdes
+louse
+loused
+louses
+lousewort
+lousier
+lousily
+lousiness
+lousing
+lousy
+lout
+louth
+loutish
+loutishly
+loutishness
+louts
+louvain
+louvar
+louver
+louvered
+louvers
+Louvre
+lovable
+lovableness
+lovably
+lovage
+lovat
+love
+love's
+loveable
+lovebird
+lovebirds
+loved
+Lovejoy
+lovejoy
+Lovelace
+Loveland
+loveless
+lovelessly
+lovelessness
+lovelier
+lovelies
+loveliest
+lovelily
+loveliness
+lovell
+lovelock
+lovelocks
+lovelorn
+lovelornness
+lovely
+lovemaking
+lover
+lover's
+lovering
+loverly
+lovers
+loves
+lovesick
+lovesickness
+lovesome
+lovey
+loving
+lovingly
+lovingness
+low
+lowan
+lowborn
+lowboy
+lowbred
+lowbrow
+lowdown
+Lowe
+Lowe's
+Lowell
+lower
+lowercase
+lowercased
+lowercases
+lowercasing
+lowerclassman
+lowered
+lowering
+lowermost
+lowers
+lowery
+lowest
+lowestoft
+lowing
+lowland
+lowlander
+lowlands
+lowlier
+lowliest
+lowlight
+lowlight's
+lowlights
+lowlihead
+lowlily
+lowliness
+lowly
+lown
+lowness
+Lowry
+Lowry's
+lows
+lowveld
+lox
+loxes
+loxodrome
+loxodromic
+loxodromically
+loxodromics
+Loy
+loy
+loyal
+loyalist
+loyalists
+loyalize
+loyalizes
+loyally
+loyalties
+loyalty
+loyalty's
+loyang
+loyola
+Loyola
+lozenge
+lozenged
+lozenges
+lozengy
+lozi
+LPG
+LSI
+Ltd
+LTV
+lualaba
+luanda
+luang
+luau
+Luba
+lubber
+lubberland
+lubberlanders
+lubberliness
+lubberly
+lubbers
+Lubbock
+lube
+Lubell
+Lubell's
+lublin
+lubra
+lubric
+lubrical
+lubricant
+lubricant's
+lubricants
+lubricate
+lubricated
+lubricates
+lubricating
+lubrication
+lubrications
+lubricative
+lubricator
+lubricious
+lubriciously
+lubricity
+lubricous
+lubritorium
+lubumbashi
+Lucan
+Lucania
+lucarne
+Lucas
+lucca
+luce
+lucency
+lucent
+lucently
+Lucerne
+Lucia
+Lucian
+lucid
+lucidity
+lucidly
+lucidness
+lucien
+Lucien
+Lucifer
+luciferin
+luciferous
+lucilius
+Lucille
+Lucina
+Lucius
+luck
+lucked
+luckier
+luckiest
+luckily
+luckiness
+luckless
+Lucknow
+lucks
+lucky
+lucrative
+lucratively
+lucrativeness
+lucre
+Lucretia
+Lucretius
+lucubrate
+lucubrated
+lucubrates
+lucubrating
+lucubration
+lucubrations
+lucubrator
+luculent
+luculently
+lucullus
+Lucy
+lud
+Luddite
+Ludendorff
+ludhiana
+ludicrous
+ludicrously
+ludicrousness
+Ludlow
+Ludlow's
+ludmilla
+Ludmilla
+ludo
+Ludwig
+Ludwigsburg
+Ludwigshafen
+lues
+luetic
+luetically
+luff
+Luffa
+luffed
+luffing
+luffs
+Lufthansa
+Luftwaffe
+lug
+Luganda
+Lugansk
+luge
+luger
+luggage
+luggageless
+lugged
+lugger
+lugging
+lugo
+lugs
+lugsail
+lugubrious
+lugubriously
+lugubriousness
+lugworm
+luichow
+luik
+Luis
+Luke
+Luke's
+lukemia
+lukewarm
+lukewarmly
+lukewarmness
+lull
+lullaby
+lulled
+lulls
+lulu
+Luluabourg
+lum
+lumbago
+lumbar
+lumbarization
+lumbarization's
+lumbarizations
+lumber
+lumbered
+lumberer
+lumbering
+lumberjack
+lumberjack's
+lumberjacket
+lumberjacks
+lumberman
+lumbermen
+lumbers
+lumberyard
+lumbian
+lumbricalis
+lumbricoid
+lumen
+lumenal
+lumens
+lumiere
+lumina
+luminaire
+luminal
+luminance
+luminaries
+luminary
+luminesce
+luminesced
+luminescence
+luminescent
+luminescing
+luminiferous
+luminist
+luminosity
+luminous
+luminously
+luminousness
+lumisterol
+lumme
+lummox
+lummus
+lump
+lumped
+lumpen
+lumpenproletariat
+lumper
+lumpier
+lumpily
+lumpiness
+lumping
+lumpish
+lumpishly
+lumpishness
+lumps
+Lumpur
+lumpy
+lumumba
+luna
+Luna
+Luna's
+lunacy
+lunar
+lunarian
+lunary
+lunate
+lunated
+lunately
+lunatic
+lunatics
+lunation
+lunatize
+lunatizes
+lunch
+lunched
+luncheon
+luncheon's
+luncheonette
+luncheons
+luncher
+lunches
+lunching
+lunchroom
+lunchrooms
+lunchtime
+Lund
+Lund's
+Lundberg
+Lundberg's
+Lundquist
+Lundquist's
+lune
+lunes
+lunette
+lung
+lungan
+lunge
+lunged
+lunger
+lungfish
+lungi
+lunging
+lungki
+lungs
+lungworm
+lungwort
+lunik
+lunisolar
+lunitidal
+lunker
+lunkhead
+lunkheaded
+luns
+lunt
+lunula
+lunulate
+lunule
+luny
+Luo
+lupanar
+Lupercalia
+lupin
+lupine
+lupulin
+lupus
+Lur
+Lura
+lurch
+lurched
+lurcher
+lurches
+lurching
+lurdan
+lurdane
+lure
+lured
+lurer
+lures
+lurex
+lurid
+luridly
+luridness
+luring
+lurk
+lurked
+lurker
+lurkers
+lurking
+lurks
+Lusaka
+Lusaka's
+lusatia
+Lusatian
+luscious
+lusciously
+lusciousness
+lush
+lushes
+lushly
+lushness
+lusion
+Lusitania
+lust
+luster
+lustered
+lustering
+lusterless
+lusters
+lusterware
+lustful
+lustfully
+lustfulness
+lustier
+lustihood
+lustily
+lustiness
+lusting
+lustra
+lustral
+lustrate
+lustrated
+lustrates
+lustrating
+lustration
+lustrations
+lustrous
+lustrously
+lustrousness
+lustrum
+lusts
+lusty
+lusus
+lutanist
+lute
+lute's
+luteal
+luted
+luteinization
+luteinize
+lutenist
+luteolin
+luteous
+lutes
+lutestring
+Lutetia
+lutetium
+Luther
+Lutheran
+Lutheranize
+Lutheranizer
+Lutheranizers
+Lutheranizes
+luthern
+luthuli
+lutihaw
+lutine
+luting
+lutist
+Luton
+Lutoslawski
+Lutyens
+Lutz
+lux
+luxate
+luxated
+luxates
+luxating
+luxation
+luxations
+luxe
+Luxembourg
+Luxemburg
+luxes
+Luxon
+luxor
+luxulianite
+luxuriance
+luxuriant
+luxuriantly
+luxuriate
+luxuriated
+luxuriating
+luxuries
+luxurious
+luxuriously
+luxuriousness
+luxury
+luxury's
+Luzon
+Luzon's
+lvi
+lvii
+Lvov
+lxi
+lxii
+lxiv
+lxix
+lxvi
+lxvii
+lyallpur
+lyautey
+lycanthrope
+lycanthropic
+lycanthropy
+lycaon
+lycaonia
+lycee
+lyceum
+lychee
+lychnis
+lycia
+Lycian
+lycidas
+lycopod
+lycopodium
+lycurgus
+lydda
+lyddite
+lydgate
+Lydia
+Lydian
+lye
+lyell
+lying
+lyingly
+lyings
+Lykes
+Lyle
+Lyle's
+lyly
+Lyman
+Lyman's
+Lyme
+Lymington
+lymph
+lymphadenitis
+lymphangial
+lymphangitis
+lymphatic
+lymphatically
+lymphoadenoma
+lymphoblast
+lymphoblastic
+lymphocyte
+lymphocytes
+lymphocytic
+lymphocytosis
+lymphoid
+lymphoma
+lymphomatoid
+lymphomatosis
+lymphomatous
+lymphopoiesis
+lyncean
+lynch
+Lynchburg
+lynched
+lyncher
+lynches
+lynchet
+Lyndon
+lyndon
+Lynn
+lynx
+lynx's
+lynxes
+Lyon
+Lyonnais
+lyonnaise
+Lyonnesse
+lyophile
+lyophilic
+lyophilization
+lyophilize
+lyophilized
+lyophilizer
+lyophobic
+lyotropic
+Lyra
+Lyra's
+lyrate
+lyrated
+lyrately
+lyre
+lyre's
+lyrebird
+lyrebird's
+lyrebirds
+lyres
+lyric
+lyrical
+lyrically
+lyricalness
+lyricism
+lyricist
+lyricists
+lyricize
+lyricized
+lyricizes
+lyricizing
+lyrics
+lyrism
+lyrist
+Lysander
+lysate
+lyse
+Lysenko
+Lysenko's
+Lysenkoism
+lysergic
+lyses
+lysias
+Lysimachus
+lysimeter
+lysimeter's
+lysimeters
+lysimetric
+lysin
+lysine
+lysing
+lysippus
+lysis
+lysogen
+lysogenic
+lysogenicity
+lysogenization
+lysogenize
+lysogeny
+lysol
+lysolecithin
+lysosomal
+lysosomally
+lysosome
+lysozyme
+lyssa
+Lytham
+Lythraceous
+lytic
+lytically
+lytta
+lytton
+Lyublin
+m's
+Ma
+ma
+ma'am
+Maag
+Maar
+Maarianhamina
+Maas
+Maastricht
+Maazel
+Mab
+Mabel
+Mabel's
+mabela
+mabuse
+Mac
+macabre
+macabrely
+macaco
+macadam
+Macadamia
+macadamization
+macadamize
+macadamized
+macadamizes
+macadamizing
+Macao
+macaque
+macarize
+macarized
+macarizes
+macarizing
+macaroni
+macaroni's
+macaronic
+macaronically
+macaronies
+macaroon
+MacArthur
+Macarthur
+Macaskill
+Macassar
+Macau
+Macaulay
+Macaulayan
+Macaulayism
+Macaulayisms
+macaw
+macaw's
+macaws
+Macbeth
+Maccabean
+Maccabees
+maccaroni
+Macclesfield
+Macdonald
+MacDonald
+Macdonnell
+MacDougall
+Macdougall
+MacDougall's
+Macdougall's
+MacDraw
+MacDraw's
+mace
+macebearer
+maced
+macedoine
+Macedon
+Macedonia
+Macedonian
+macer
+macerate
+macerated
+macerates
+macerating
+maceration
+macerations
+macerator
+macerators
+maces
+Macgregor
+MacGregor
+Mach
+machado
+machan
+machel
+machete
+Machiavelli
+Machiavellian
+machicolate
+machicolation
+machin
+machinability
+machinable
+machinate
+machinated
+machinates
+machinating
+machination
+machination's
+machinations
+machinator
+machine
+machine's
+machineable
+machined
+machinelike
+machineries
+machinery
+machines
+machining
+machinist
+machinists
+machinization
+machinization's
+machinizations
+machinize
+machinizes
+machismo
+machmeter
+macho
+machree
+machu
+macing
+macintosh
+MacIntosh
+MacIntosh's
+mack
+Mackay
+MacKenzie
+Mackenzie
+mackerel
+mackerels
+Mackerras
+MacKerras
+Mackey
+Mackey's
+Mackinac
+mackinaw
+mackintosh
+mackle
+mackled
+mackles
+macklin
+mackling
+macle
+Maclean
+macled
+Macleod
+MacMahon
+Macmahon
+MacMahon's
+MacMillan
+Macmillan
+Macneice
+Macon
+MacPaint
+MacPaint's
+Macpherson
+macrame
+Macready
+macro
+macro's
+macroaggregate
+macroaggregated
+macrobiotic
+macrobiotics
+macrocephalic
+macrocephalous
+macrocephaly
+macroclimate
+macrocosm
+macrocosmic
+macrocosmically
+macrocyte
+macrocytic
+macrocytosis
+macrodynamic
+macroeconomic
+macroeconomics
+macroencephaly
+macroevolution
+macroevolutionary
+macrofossil
+macrogamete
+macrograph
+macroinstruction
+macromolecular
+macromolecule
+macromolecule's
+macromolecules
+macron
+macronucleus
+macronutrient
+macropathological
+macropathology
+macrophage
+macrophages
+macrophagic
+macrophysics
+macrophyte
+macrophytic
+macroprocessor
+macropterous
+macros
+macroscale
+macroscopic
+macroscopical
+macroscopically
+macrosimulation
+macrosocioeconomic
+macrosporangium
+macrospore
+macrostructural
+macrostructure
+macrostructure's
+macrosystem
+macruran
+macula
+maculate
+maculated
+maculates
+maculating
+maculation
+maculations
+macule
+macumba
+mad
+madafu
+Madagascar
+madam
+Madame
+Madames
+madams
+madcap
+Maddalena
+madded
+madden
+maddened
+maddening
+maddeningly
+madder
+maddest
+madding
+maddish
+Maddox
+made
+Madeira
+Madeleine
+Madeleine's
+Madeline
+Madeline's
+mademoiselle
+mademoiselles
+madhouse
+Madhya
+madhya
+madina
+Madison
+madly
+madman
+madmen
+madness
+Madonna
+Madonnas
+madras
+madre
+madrepore
+Madrid
+madrigal
+madrigalian
+madrigaling
+madrigalist
+madrigals
+madrilene
+madrona
+madrone
+Madsen
+Madsen's
+madstone
+madstones
+madura
+madurai
+maduro
+madwoman
+madwomen
+madwort
+Mae
+Mae's
+maebashi
+Maecenas
+Maelstrom
+maelstrom
+maelstrom's
+maelstroms
+maenad
+maenadic
+maestoso
+maestricht
+maestro
+maeterlinck
+maewo
+mafeking
+maffick
+mafia
+Mafia
+Mafia's
+Mafiosi
+mafioso
+mag
+MAG
+magallanes
+magazine
+magazine's
+magazined
+magazines
+magazining
+magazinism
+magazinist
+magazinists
+Magdalen
+magdalena
+Magdalene
+Magdalenian
+Magdeburg
+mage
+Magellan
+Magellanic
+magen
+magenta
+Maggie
+maggiore
+maggot
+maggot's
+maggotries
+maggotry
+maggots
+maggoty
+Maghreb
+magi
+magic
+magical
+magicalize
+magicalizes
+magically
+magician
+magician's
+magicians
+magicked
+magicking
+Magill
+magill
+magilp
+maginot
+magisterial
+magisterially
+magisterium
+magistery
+magistracy
+magistral
+magistrally
+magistrate
+magistrate's
+magistrates
+magistrateship
+magistratical
+magistratically
+magistrature
+Maglemosian
+magma
+magmatic
+magna
+magnanimity
+magnanimous
+magnanimously
+magnanimousness
+magnate
+magnates
+magnesia
+magnesian
+magnesite
+magnesium
+magnesiums
+magnet
+magnet's
+magnetic
+magnetically
+magnetics
+magnetism
+magnetism's
+magnetisms
+magnetite
+magnetitic
+magnetizabilities
+magnetizability
+magnetizability's
+magnetizable
+magnetizable's
+magnetizables
+magnetization
+magnetization's
+magnetizations
+magnetize
+magnetized
+magnetizer
+magnetizers
+magnetizes
+magnetizing
+magneto
+magnetochemistry
+magnetodynamo
+magnetoelectric
+magnetoelectrical
+magnetoelectricity
+magnetofluidmechanic
+magnetofluidmechanics
+magnetogasdynamic
+magnetogasdynamics
+magnetogram
+magnetogram's
+magnetograms
+magnetograph
+magnetohydrodynamic
+magnetohydrodynamics
+magnetometer
+magnetometer's
+magnetometers
+magnetometric
+magnetometry
+magnetomotive
+magneton
+magnetooptic
+magnetooptical
+magnetooptics
+magnetopause
+magnetos
+magnetoscope
+magnetosheath
+magnetosphere
+magnetospheric
+magnetostatic
+magnetostriction
+magnetostrictive
+magnetostrictively
+magnetron
+magnetrons
+magnets
+magnific
+magnifical
+magnifically
+Magnificat
+magnification
+magnifications
+magnificats
+magnificence
+magnificent
+magnificently
+magnifico
+magnified
+magnifier
+magnifiers
+magnifies
+magnify
+magnifying
+magniloquence
+magniloquent
+magniloquently
+magnitude
+magnitude's
+magnitudes
+magnolia
+magnoliaceous
+magnolias
+magnum
+magnums
+magnus
+Magnuson
+Magnuson's
+Magog
+Magog's
+magot
+magpie
+magpies
+magritte
+Magruder
+magtape
+magtapes
+maguey
+Maguire
+maguire
+Maguires
+maguires
+magus
+Magyar
+mahabharata
+mahalla
+mahanadi
+maharaja
+maharaja's
+maharajah
+maharanee
+maharani
+maharashtra
+Maharashtra
+maharishi
+mahatma
+mahatmaism
+Mahayana
+Mahayanist
+Mahdi
+mahewu
+Mahican
+mahjong
+Mahler
+mahler
+Mahler's
+mahlstick
+mahoganize
+mahoganized
+mahoganizes
+mahoganizing
+mahogany
+Mahomet
+mahometan
+Mahoney
+Mahoney's
+Mahonia
+Mahound
+mahout
+mahratta
+mahseer
+Maia
+maid
+maid's
+maidan
+maiden
+maidenhair
+maidenhead
+maidenhood
+maidenliness
+maidenly
+maidens
+maidhood
+maidish
+maids
+maidservant
+maidstone
+maiduguri
+maier
+maieutic
+maieutical
+maieutics
+maigre
+maihem
+maikop
+mail
+mailability
+mailable
+mailbag
+mailbags
+mailboat
+mailboats
+mailbox
+mailbox's
+mailboxes
+mailcoach
+mailed
+mailer
+mailer's
+mailers
+mailing
+mailings
+maillol
+maillot
+mailman
+mailmen
+mailplane
+mailplanes
+mails
+mailsack
+mailsacks
+maim
+maimed
+maimedness
+maimer
+maimers
+maiming
+maimonides
+maims
+main
+mainbrace
+Maine
+mainframe
+mainframe's
+mainframes
+mainland
+mainlander
+mainlanders
+mainline
+mainlined
+mainliner
+mainliners
+mainlines
+mainlining
+mainly
+mainmast
+mains
+mainsail
+mainsheet
+mainspring
+mainstay
+mainstream
+maintain
+maintainability
+maintainable
+maintained
+maintainer
+maintainer's
+maintainers
+maintaining
+maintains
+maintenance
+maintenance's
+maintenances
+maintenence
+Maintenon
+maintop
+maintopsail
+mainz
+maiolica
+maisonette
+maisonettes
+Maitland
+maitre
+maitres
+maize
+maizer
+maizers
+maizes
+majestic
+majestical
+majestically
+majesties
+majesty
+majesty's
+Majlis
+majolica
+major
+Majorca
+Majorca's
+majordomo
+majordomos
+majored
+majorette
+majorettes
+majoring
+majorities
+majority
+majority's
+majorize
+majorizes
+majors
+majunga
+majuscular
+majuscule
+makable
+makalu
+makarios
+make
+makeable
+makebate
+makefast
+makefile
+makefiles
+makepeace
+maker
+makers
+makes
+makeshift
+makeshifts
+makeshifty
+makeup
+makeups
+makeweight
+makeyevka
+makhachkala
+making
+makings
+makkah
+mako
+makos
+makurdi
+makuta
+mal
+Malabar
+Malabar's
+malabo
+Malacca
+malachi
+malachite
+malacologic
+malacological
+malacologist
+malacology
+malacophyllous
+malacopterygian
+malacostracan
+maladapt
+maladaptation
+maladapted
+maladaptive
+maladdress
+maladies
+maladjust
+maladjusted
+maladjustive
+maladjustment
+maladjustments
+maladminister
+maladministration
+maladroit
+maladroitly
+malady
+malady's
+Malagasy
+Malagasy's
+malaise
+malam
+Malamud
+malamud
+malamute
+malang
+malapert
+malapertly
+malapertness
+malapportioned
+malapportionment
+malappropriate
+malappropriated
+malappropriates
+malappropriating
+malaprop
+malapropian
+malapropism
+malapropos
+malar
+malaria
+malarial
+malarian
+malariated
+malariologist
+malariology
+malarious
+malarkey
+malassimilation
+malate
+malatesta
+malathion
+malatya
+Malawi
+Malawi's
+malaxate
+malaxated
+malaxates
+malaxating
+Malay
+Malaya
+Malayize
+Malayizes
+Malaysia
+Malaysian
+Malcolm
+malconduct
+malconformation
+malcontent
+malcontent's
+malcontented
+malcontentedly
+malcontentedness
+malcontents
+Malden
+Malden's
+maldevelopment
+maldistribute
+maldistribution
+Maldive
+Maldive's
+Maldives
+maldon
+male
+male's
+maleable
+malebranche
+maledict
+malediction
+maledictory
+malefaction
+malefactor
+malefactor's
+malefactors
+malefic
+maleficence
+maleficent
+maleic
+malemute
+maleness
+malentendu
+males
+malevich
+malevolence
+malevolencies
+malevolent
+malevolently
+malfeasance
+malfeasant
+malformation
+malformations
+malformed
+malfunction
+malfunctioned
+malfunctioning
+malfunctions
+malgovernment
+malherbe
+Mali
+Mali's
+Malibu
+Malibu's
+malic
+malice
+malicious
+maliciously
+maliciousness
+maliferous
+malign
+malignance
+malignancies
+malignancy
+malignant
+malignantly
+maligned
+malignity
+malignly
+malihini
+malimprinted
+malines
+malinger
+malingered
+malingerer
+malingering
+malinke
+Malinowski
+malism
+Malison
+malkin
+mall
+mall's
+mallam
+mallard
+mallards
+malleability
+malleable
+malleableness
+malleablize
+malleablizes
+mallee
+mallemuck
+mallenders
+malleolus
+mallet
+mallet's
+mallets
+malleus
+mallorca
+Mallory
+mallow
+malls
+malm
+malmsey
+malnourished
+malnutrition
+malocclusion
+malodor
+malodorous
+malodorously
+malodorousness
+malolactic
+Malone
+Maloney
+Maloney's
+malonic
+malonylurea
+malory
+malpighi
+malpighiaceous
+Malpighian
+malposed
+malposition
+malpractice
+malpractitioner
+Malraux
+malt
+Malta
+maltase
+malted
+Maltese
+maltha
+malthus
+Malthus
+Malthusian
+malting
+maltman
+maltobionic
+Malton
+Malton's
+maltose
+maltreat
+maltreatment
+malts
+maltster
+malty
+maluku
+malvaceous
+malvasia
+malvasian
+malvern
+malversation
+malvoisie
+malwa
+Mam
+mama
+mamaguy
+mamba
+mambo
+mambos
+mamelon
+Mameluke
+mamilla
+mamillate
+mamma
+mamma's
+mammal
+mammal's
+mammalian
+mammalogist
+mammalogy
+mammals
+mammary
+mammas
+mammee
+mammer
+mammet
+mammies
+mammiferous
+mammilla
+mammillar
+mammillary
+mammillate
+mammillated
+mammock
+mammography
+mammon
+mammonism
+mammonist
+mammonite
+mammoth
+mammy
+mampara
+man
+man's
+mana
+manacle
+manacled
+manacles
+manacling
+manado
+manage
+manageability
+manageable
+manageableness
+manageably
+managed
+management
+management's
+managemental
+managements
+manager
+manager's
+manageress
+managerial
+managerialism
+managerially
+managers
+managership
+manages
+managing
+Managua
+manakin
+manassas
+manasseh
+manatee
+manaus
+manche
+Manchester
+manchet
+manchineel
+Manchu
+manchukuo
+manchuria
+Manchuria
+mancipation
+mancipatory
+manciple
+manciples
+Mancunian
+Mandaean
+mandala
+Mandalay
+mandamus
+mandamused
+mandamuses
+mandamusing
+mandarin
+mandarinate
+mandarinates
+mandarinic
+mandarinism
+mandarinize
+mandarinizes
+mandarins
+mandataries
+mandatary
+mandate
+mandated
+mandates
+mandating
+mandator
+mandatorial
+mandatories
+mandatorily
+mandatory
+Mande
+Mandelbrot
+Mandelbrot's
+Mandeville
+mandi
+mandible
+mandibular
+mandibulate
+Mandingo
+mandir
+mandola
+mandolin
+mandolin's
+mandolinist
+mandolinists
+mandolins
+mandorla
+mandragora
+mandrake
+mandrakes
+mandrel
+mandril
+mandrill
+manducate
+manducated
+manducates
+manducating
+mane
+mane's
+maned
+manege
+manes
+manet
+maneuver
+maneuverability
+maneuverable
+maneuvered
+maneuverer
+maneuvering
+maneuvers
+Manfred
+manful
+manfully
+manfulness
+mangabey
+mangalore
+manganate
+manganese
+manganesian
+manganic
+manganin
+manganite
+manganous
+mange
+mangel
+mangelwurzel
+manger
+manger's
+mangers
+mangier
+mangily
+manginess
+mangle
+mangled
+mangler
+mangles
+mangling
+mango
+mango's
+mangonel
+mangos
+mangosteen
+mangrove
+mangy
+manhandle
+manhandled
+manhandles
+manhandling
+Manhattan
+Manhattan's
+Manhattanize
+Manhattanizes
+manhole
+manholes
+manhood
+manhunt
+manhunts
+mani
+mania
+maniac
+maniac's
+maniacal
+maniacally
+maniacs
+manic
+manically
+Manichaeism
+manichaeus
+manicotti
+manicure
+manicured
+manicures
+manicuring
+manicurist
+manicurists
+manifest
+manifestant
+manifestation
+manifestation's
+manifestations
+manifested
+manifesting
+manifestly
+manifestness
+manifesto
+manifesto's
+manifestoed
+manifestoes
+manifestoing
+manifestos
+manifests
+manifold
+manifold's
+manifolder
+manifoldly
+manifoldness
+manifolds
+manikin
+manikins
+Manila
+Manila's
+manilla
+manille
+maninke
+manioc
+maniple
+manipulability
+manipulable
+manipular
+manipulatable
+manipulate
+manipulated
+manipulates
+manipulating
+manipulation
+manipulations
+manipulative
+manipulativeness
+manipulator
+manipulator's
+manipulators
+manipulatory
+manipur
+manisa
+Manitoba
+manitoulin
+manitowoc
+Manitowoc
+manizales
+mankind
+Mankowski
+mankowski
+manky
+manless
+Manley
+Manley's
+manlier
+manliest
+manlike
+manliness
+manly
+Mann
+Mann's
+manna
+mannar
+manned
+mannequin
+mannequins
+manner
+mannered
+Mannerheim
+mannerism
+mannerisms
+mannerist
+manneristic
+mannerize
+mannerizes
+mannerless
+mannerliness
+mannerly
+manners
+Mannheim
+mannikin
+manning
+mannish
+mannishly
+mannishness
+mannitic
+mannitol
+mannopyranosyl
+mannosyl
+manolete
+manometer
+manometer's
+manometers
+manometric
+manometrical
+manometrically
+manometry
+manor
+manor's
+manorial
+manorialism
+manors
+manpower
+manque
+manresa
+manrope
+manropes
+mans
+mansard
+mansarded
+mansart
+manse
+manservant
+Mansfield
+manship
+mansholt
+mansion
+mansion's
+mansions
+manslaughter
+manslayer
+mansuete
+mansuetude
+manteau
+mantegna
+mantel
+mantel's
+mantelet
+mantelletta
+mantelpiece
+mantels
+mantelshelf
+manteltree
+mantic
+mantilla
+mantinea
+mantis
+mantises
+mantissa
+mantissa's
+mantissas
+mantle
+mantle's
+mantled
+mantlepiece
+Mantler
+mantles
+mantling
+mantoux
+mantova
+mantra
+mantrap
+mantua
+manual
+manual's
+manually
+manuals
+manubrium
+manuduction
+manuductory
+Manuel
+Manuel's
+manufactory
+manufacturable
+manufacture
+manufactured
+manufacturer
+manufacturer's
+manufacturers
+manufactures
+manufacturing
+Manuguerra
+manuka
+manukau
+manumission
+manumit
+manumitted
+manumitting
+manure
+manured
+manurer
+manurers
+manures
+manurial
+manuring
+manus
+manuscript
+manuscript's
+manuscriptal
+manuscripts
+manutius
+Manville
+manward
+manwards
+manwise
+Manx
+Manxman
+many
+manyfold
+manyplies
+manzanilla
+manzanita
+manzoni
+Mao
+maoism
+Maori
+map
+map's
+maple
+maple's
+maplecrest
+Maplecrest
+maples
+mapmaker
+mapmakers
+mapmaking
+mappable
+mapped
+mapper
+mappery
+mapping
+mapping's
+mappings
+mappist
+mappists
+maps
+maputo
+maquette
+maquillage
+maquis
+Mar
+mar
+mara
+marabou
+Marabout
+marabunta
+maraca
+Maracaibo
+maracanda
+maracay
+maraging
+marasca
+maraschino
+marasmic
+marasmus
+marat
+Maratha
+Marathi
+marathon
+marathons
+maraud
+marauder
+marauders
+marauding
+marauds
+maravedi
+marble
+marbled
+marbleize
+marbleized
+marbleizes
+marbleizing
+marbler
+marbles
+marbling
+marbly
+Marburg
+Marc
+Marc's
+marcasite
+Marceau
+Marceau's
+Marcel
+marcelled
+marcelling
+Marcello
+Marcello's
+marcellus
+marcescent
+march
+marche
+marched
+marcher
+marches
+marchesa
+marchese
+marching
+marchioness
+Marchland
+marchpane
+Marcia
+Marcia's
+Marciano
+Marcie
+Marcie's
+Marcionism
+Marco
+Marco's
+Marconi
+marconigram
+marconigram's
+marconigrams
+marcos
+marcotte
+Marcotte
+Marcus
+marcuse
+Marcy
+Mardi
+Mardis
+marduk
+mardy
+mare
+mare's
+maremma
+Marengo
+Marenzio
+mares
+marg
+Margaret
+Margaret's
+margaric
+margarine
+margarita
+margarite
+margate
+Margaux
+Margay
+Marge
+Margery
+Margery's
+margin
+margin's
+marginal
+marginalia
+marginality
+marginalization
+marginalize
+marginalized
+marginalizes
+marginalizing
+marginally
+marginals
+marginate
+marginated
+marginates
+marginating
+margination
+marginations
+margined
+margining
+margins
+Margo
+Margo's
+margravate
+margrave
+margravine
+margrethe
+Marguerite
+maria
+Maria's
+mariachi
+Marian
+Marian's
+Mariana
+marianao
+Marianne
+Marianne's
+maribor
+mariculture
+Marie
+Marie's
+Mariehamn
+Marienbad
+Marietta
+marigold
+marigold's
+marigolds
+marijuana
+marijuana's
+Marilyn
+marimba
+Marin
+marina
+marinade
+marinades
+marinas
+marinate
+marinated
+marinates
+marinating
+Marinduque
+marine
+mariner
+marines
+Marinetti
+Marino
+Mario
+Mariolatry
+Mariology
+Marion
+marionette
+marionettes
+mariposa
+marish
+Marissa
+Marissa's
+Marist
+maritage
+maritain
+marital
+maritally
+maritime
+maritimer
+maritsa
+Mariupol
+Marius
+Marivaux
+marjoram
+Marjorie
+Marjory
+Marjory's
+mark
+Mark's
+markable
+markdown
+marked
+markedly
+marker
+markers
+market
+marketability
+marketable
+marketed
+marketeer
+marketeer's
+marketeering
+marketeers
+marketer
+marketing
+marketings
+marketplace
+marketplace's
+marketplaces
+markets
+marketwise
+Markevitch
+Markham
+Markham's
+Markhor
+marking
+markings
+Markism
+Markism's
+Markka
+Markov
+Markova
+Markovian
+Markovitz
+markovitz
+marks
+marksman
+marksmanship
+marksmen
+markswoman
+markswomen
+markup
+markups
+marl
+Marlborough
+Marlene
+Marley
+marlin
+marline
+marlite
+Marlow
+Marlowe
+marmalade
+marmalades
+marmara
+marmite
+marmolada
+marmoreal
+marmoreally
+marmorean
+marmoset
+marmoset's
+marmosets
+marmot
+maroc
+marocain
+Maronite
+maroon
+marooned
+maroquin
+maros
+marplot
+marprelate
+marquand
+marque
+marquee
+marquees
+Marquesan
+marquesas
+marquess
+marquessate
+marquesses
+marquet
+Marquette
+marquis
+marquisate
+marquise
+marquises
+marquisette
+Marrakech
+Marrakesh
+marram
+marrano
+marred
+marriage
+marriage's
+marriageability
+marriageable
+marriages
+married
+marries
+Marriner
+marring
+Marriott
+marron
+marrow
+marrowbone
+marrowbones
+marrowfat
+marrowless
+marrows
+marrowy
+marry
+marryat
+marrying
+mars
+Marsala
+marse
+Marseillaise
+Marseille
+Marseilles
+marsh
+marsh's
+Marsha
+marshal
+marshalcy
+marshaled
+marshaler
+marshalers
+marshaling
+Marshall
+Marshalled
+Marshalling
+marshals
+Marshalsea
+marshalship
+marshes
+marshier
+marshiness
+marshland
+marshlands
+marshmallow
+marshmallows
+marshmallowy
+marshy
+marsilius
+marsipobranch
+Marston
+marsupial
+marsupial's
+marsupialization
+marsupialization's
+marsupializations
+marsupialize
+marsupializes
+marsupials
+marsupium
+mart
+martaban
+martagon
+martel
+martellato
+martello
+marten
+martens
+martensite
+martensitic
+martensitically
+Martha
+martial
+martialization
+martialization's
+martializations
+martialize
+martializes
+martially
+Martian
+Martians
+Martin
+martin
+martineau
+martinet
+Martinez
+martingale
+martini
+Martinique
+martinis
+Martinmas
+Martinon
+Martinson
+martlet
+Marton
+marts
+Marty
+martyr
+martyr's
+martyrdom
+martyrization
+martyrization's
+martyrizations
+martyrize
+martyrized
+martyrizer
+martyrizers
+martyrizes
+martyrizing
+martyrologies
+martyrologist
+martyrologists
+martyrology
+martyrs
+martyry
+marvel
+marveled
+marveler
+marveling
+marvell
+marvelous
+marvelously
+marvelousness
+marvels
+Marvin
+Marx
+Marxian
+Marxism
+Marxisms
+Marxist
+marxists
+Mary
+Mary's
+Maryland
+Maryland's
+Marylanders
+marzipam
+marzipan
+masaccio
+Masai
+masan
+masaryk
+masbate
+Mascagni
+mascara
+mascaras
+mascarene
+mascle
+mascon
+mascot
+mascot's
+mascots
+masculine
+masculinely
+masculineness
+masculinity
+masculinization
+masculinization's
+masculinizations
+masculinize
+masculinized
+masculinizes
+masculinizing
+Masefield
+maser
+Maserati
+Maserati's
+Maseratis
+mash
+masharbrum
+mashed
+masher
+mashers
+mashes
+mashhad
+mashie
+mashing
+mashings
+masinissa
+masjid
+mask
+maskable
+maskanonge
+masked
+masker
+masking
+maskings
+masks
+masochism
+masochist
+masochist's
+masochistic
+masochistically
+masochists
+mason
+mason's
+masoned
+Masonic
+masoning
+Masonite
+masonry
+masons
+masqat
+masque
+masquer
+masquerade
+masquerader
+masquerades
+masquerading
+masquers
+masques
+mass
+massa
+massachuset
+Massachusetts
+massacre
+massacred
+massacrer
+massacres
+massacring
+massage
+massaged
+massager
+massages
+massaging
+massasauga
+massasoit
+Massawa
+massbus
+massed
+Massenet
+masses
+masseter
+masseteric
+masseur
+masseurs
+masseuse
+Massey
+Massey's
+massicot
+massif
+massifs
+massine
+massing
+massinger
+massinissa
+massive
+massively
+massiveness
+massless
+massorete
+massotherapy
+massy
+mast
+mastaba
+mastectomies
+mastectomy
+masted
+master
+master's
+mastered
+masterful
+masterfully
+masterfulness
+mastering
+masterings
+masterliness
+masterly
+mastermind
+masterminded
+masterminding
+masterminds
+masterpiece
+masterpiece's
+masterpieces
+masters
+mastership
+mastersinger
+mastersingers
+masterstroke
+masterstrokes
+masterwork
+mastery
+masthead
+mastic
+masticate
+masticated
+masticates
+masticating
+mastication
+mastications
+masticator
+masticators
+masticatory
+mastiff
+mastigophoran
+mastitic
+mastitis
+mastodon
+mastodonic
+mastodons
+mastodont
+mastoid
+mastoidectomy
+mastoideus
+mastoiditis
+masts
+masturbate
+masturbated
+masturbates
+masturbating
+masturbation
+masturbational
+masturbatory
+masuria
+masurium
+mat
+mat's
+Matabele
+Matabeleland
+matadi
+matador
+matamoros
+matanzas
+matapan
+match
+matchable
+matchboard
+matchboarding
+matchbook
+matchbox
+matched
+matcher
+matchers
+matches
+matching
+matchings
+matchless
+matchlessly
+matchlock
+matchmake
+matchmaker
+matchmaker's
+matchmakers
+matchmaking
+matchmaking's
+matchmark
+matchstick
+matchwood
+mate
+mate's
+mated
+matelote
+Mateo
+Mateo's
+mater
+materfamilias
+material
+materialism
+materialism's
+materialist
+materialistic
+materialistically
+materiality
+materialization
+materialization's
+materializations
+materialize
+materialized
+materializer
+materializers
+materializes
+materializing
+materially
+materialness
+materials
+materiel
+maternal
+maternalize
+maternalizes
+maternally
+maternity
+mates
+matey
+math
+mathematic
+mathematical
+mathematically
+mathematician
+mathematician's
+mathematicians
+mathematicize
+mathematicizes
+mathematics
+mathematization
+Mathews
+Mathewson
+Mathias
+Mathieu
+Mathis
+maths
+mathura
+Matilda
+matinal
+matinee
+mating
+matings
+matins
+Matisse
+Matisses
+matlo
+matlock
+mato
+matoke
+matopo
+Matorin
+matozinhos
+matrass
+matriarch
+matriarchal
+matriarchate
+matriarchy
+matric
+matrices
+matricidal
+matricide
+matriclinous
+matriculant
+matriculate
+matriculated
+matriculates
+matriculating
+matriculation
+matrilineal
+matrilineally
+matrilocal
+matrimonial
+matrimonially
+matrimony
+matrix
+matrixes
+matroclinous
+matroid
+matron
+matronage
+matronize
+matronized
+matronizes
+matronizing
+matronly
+matronymic
+mats
+Matson
+Matson's
+matsu
+Matsumoto
+Matsumoto's
+matsuyama
+matt
+Matt
+Matt's
+mattamore
+matte
+matted
+mattei
+matter
+mattered
+matterhorn
+mattering
+matters
+mattery
+Matthew
+Matthews
+matthias
+Mattie
+mattie
+Mattila
+matting
+mattins
+mattock
+mattoid
+mattrass
+mattress
+mattress's
+mattresses
+Mattson
+Mattson's
+maturate
+maturated
+maturates
+maturating
+maturation
+maturational
+maturations
+maturative
+mature
+matured
+maturely
+matureness
+maturer
+matures
+maturing
+maturities
+maturity
+matutinal
+matutinally
+matzo
+matzoon
+matzos
+maubeuge
+mauby
+Mauceri
+Maud
+maude
+Maude
+maudlin
+maudlinism
+maudlinisms
+maudlinize
+maudlinizes
+maudlinly
+Maugham
+maugre
+maui
+maul
+maulana
+mauler
+maulers
+mauling
+maulmain
+mauls
+maulstick
+maumet
+mauna
+maund
+maunder
+maundy
+maungy
+maupassant
+maupertuis
+Maureen
+mauretania
+mauriac
+Maurice
+mauricio
+Mauricio
+Maurine
+Maurine's
+Maurist
+Mauritania
+Mauritius
+maurois
+maury
+maurya
+Mauser
+mausoleum
+mausoleums
+mauve
+maverick
+mavericks
+Mavis
+Mavourneen
+maw
+mawger
+mawkin
+mawkish
+mawkishly
+mawkishness
+Mawr
+mawsie
+Mawson
+max
+maxi
+maxilla
+maxillae
+maxillary
+maxillas
+maxilliped
+maxillipede
+maxim
+Maxim
+maxim's
+maxima
+maximal
+maximalist
+maximally
+Maximilian
+maximin
+maximization
+maximization's
+maximizations
+maximize
+maximized
+maximizer
+maximizers
+maximizes
+maximizing
+maxims
+maximum
+maximumly
+maximums
+maximus
+Maxine
+maxint
+maxisingle
+maxixe
+Maxtor
+Maxtor's
+maxwell
+Maxwellian
+May
+may
+Maya
+Mayakovski
+Mayan
+Mayans
+mayapple
+maybe
+mayday
+Mayen
+mayence
+Mayer
+mayer
+Mayer's
+mayest
+Mayfair
+mayflower
+Mayflower
+mayfly
+mayhap
+mayhem
+maying
+Maynard
+Mayo
+Mayo's
+mayon
+mayonnaise
+mayor
+mayor's
+mayoral
+mayoralty
+mayoress
+mayors
+mayorship
+Mayotte
+maypole
+mays
+mayst
+mazard
+mazarin
+Mazda
+Mazdaism
+maze
+maze's
+mazed
+mazedly
+mazedness
+mazednesses
+mazer
+mazes
+mazing
+mazuma
+mazurka
+mazurka's
+mazurkas
+mazy
+mazzard
+mazzini
+MBA
+Mbujimayi
+McAdams
+Mcadams
+McAllister
+Mcallister
+Mcallister's
+McAllister's
+McBride
+Mcbride
+McBride's
+Mcbride's
+Mccabe
+McCabe
+Mccabe's
+McCabe's
+Mccall
+McCall
+McCall's
+Mccall's
+McCallum
+Mccallum
+Mccallum's
+McCallum's
+Mccann
+McCann
+Mccann's
+McCann's
+Mccarthy
+McCarthy
+McCarthy's
+Mccarthy's
+Mccarthyism
+Mccartney
+McCarty
+Mccarty
+McCarty's
+Mccarty's
+McCauley
+Mccauley
+McCauley's
+Mccauley's
+Mcclain
+McClain
+Mcclain's
+McClain's
+McClellan
+Mcclellan
+McClellan's
+Mcclellan's
+Mcclure
+McClure
+Mcclure's
+McClure's
+McCluskey
+Mccluskey
+Mccluskey's
+McCluskey's
+McConnel
+Mcconnel
+Mcconnel's
+McConnel's
+McConnell
+Mcconnell
+McConnell's
+Mcconnell's
+Mccormack
+McCormick
+Mccormick
+Mccormick's
+McCormick's
+McCoy
+Mccoy
+Mccoy's
+McCoy's
+McCracken
+Mccracken
+McCracken's
+Mccracken's
+Mccullers
+McCullough
+Mccullough
+Mccullough's
+McCullough's
+Mcdaniel
+McDaniel
+McDaniel's
+Mcdaniel's
+McDermott
+Mcdermott
+McDermott's
+Mcdermott's
+Mcdiarmid
+McDonald
+Mcdonald
+Mcdonald's
+McDonald's
+McDonnell
+Mcdonnell
+McDonnell's
+Mcdonnell's
+Mcdougall
+McDougall
+Mcdougall's
+McDougall's
+McDowell
+Mcdowell
+McDowell's
+Mcdowell's
+McElhaney
+McElhaney's
+McElroy
+Mcelroy
+McElroy's
+Mcelroy's
+Mcfadden
+McFadden
+Mcfadden's
+McFadden's
+Mcfarland
+McFarland
+McFarland's
+Mcfarland's
+McGee
+Mcgee
+Mcgee's
+McGee's
+McGill
+Mcgill
+McGill's
+Mcgill's
+McGillicuddy
+McGillicuddy's
+Mcginnis
+McGinnis
+McGinty
+McGinty's
+Mcgonagall
+Mcgovern
+McGovern
+Mcgovern's
+McGovern's
+Mcgowan
+McGowan
+Mcgowan's
+McGowan's
+Mcgrath
+McGrath
+McGrath's
+Mcgrath's
+McGraw
+Mcgraw
+McGraw's
+Mcgraw's
+Mcgregor
+McGregor
+Mcgregor's
+McGregor's
+McGuire
+Mcguire
+Mcguire's
+McGuire's
+Mchugh
+McHugh
+McHugh's
+Mchugh's
+McIntosh
+Mcintosh
+Mcintosh's
+McIntosh's
+Mcintyre
+McIntyre
+McIntyre's
+Mcintyre's
+McKay
+Mckay
+Mckay's
+McKay's
+Mckee
+McKee
+Mckee's
+McKee's
+Mckenna
+McKenna
+Mckenna's
+McKenna's
+McKenzie
+Mckenzie
+Mckenzie's
+McKenzie's
+Mckeon
+McKeon
+McKeon's
+Mckeon's
+McKesson
+Mckesson
+Mckesson's
+McKesson's
+McKinley
+Mckinley
+Mckinley's
+McKinley's
+McKinney
+Mckinney
+McKinney's
+Mckinney's
+Mcknight
+McKnight
+Mcknight's
+McKnight's
+McLanahan
+Mclaughlin
+McLaughlin
+McLaughlin's
+Mclaughlin's
+Mclean
+McLean
+Mclean's
+McLean's
+Mcleod
+McLeod
+Mcleod's
+McLeod's
+Mcluhan
+Mclure
+Mcmahon
+McMahon
+McMahon's
+Mcmahon's
+McMartin
+McMartin's
+McMillan
+Mcmillan
+Mcmillan's
+McMillan's
+Mcmullen
+McMullen
+McMullen's
+Mcmullen's
+Mcmunn
+Mcmurdo
+McNair
+McNally
+Mcnally
+Mcnally's
+McNally's
+Mcnaughten
+McNaughton
+Mcnaughton
+Mcnaughton's
+McNaughton's
+Mcneil
+McNeil
+Mcneil's
+McNeil's
+McNulty
+Mcnulty
+McNulty's
+Mcnulty's
+Mcpherson
+McPherson
+Mcpherson's
+McPherson's
+Mcqueen
+MD
+MDs
+MDT
+me
+mea
+mead
+Meade
+meadow
+meadow's
+meadowland
+meadowlark
+meadowlark's
+meadowlarks
+meadows
+meadowsweet
+meads
+meager
+meagerly
+meagerness
+meagre
+meal
+meal's
+mealie
+mealier
+mealies
+meals
+mealtime
+mealworm
+mealy
+mealymouth
+mealymouthed
+mealymouthedly
+mealymouthedness
+mealymouthednesses
+mean
+meander
+meandered
+meandering
+meanderings
+meanders
+meandrous
+meaner
+meanest
+meaning
+meaning's
+meaningful
+meaningfully
+meaningfulness
+meaningless
+meaninglessly
+meaninglessness
+meanings
+meanly
+meanness
+means
+meant
+meantime
+meanwhile
+meany
+measle
+measled
+measles
+measlier
+measly
+measurability
+measurable
+measurably
+measure
+measured
+measuredly
+measureless
+measurement
+measurement's
+measurements
+measurer
+measures
+measuring
+meat
+meat's
+meatball
+meatballs
+meath
+meatier
+meatiest
+meatiness
+meatman
+meatmen
+meats
+meatus
+meaty
+mecamylamine
+mecca
+Meccano
+mech
+mechanic
+mechanic's
+mechanical
+mechanicalization
+mechanicalization's
+mechanicalizations
+mechanicalize
+mechanicalizes
+mechanically
+mechanicals
+mechanician
+mechanics
+mechanism
+mechanism's
+mechanisms
+mechanist
+mechanistic
+mechanistically
+mechanizable
+mechanization
+mechanization's
+mechanizations
+mechanize
+mechanized
+mechanizer
+mechanizers
+mechanizes
+mechanizing
+mechanochemically
+mechanoreceptor
+mechanotherapy
+mechelen
+Mechem
+Mechlin
+mecholyl
+meck
+Mecklenburg
+meconium
+mecum
+med
+medal
+medal's
+medaled
+medaling
+medalist
+medalists
+medalize
+medalizes
+medallic
+medallion
+medallion's
+medallions
+medals
+medan
+medawar
+meddle
+meddled
+meddler
+meddles
+meddlesome
+meddlesomeness
+meddling
+Mede
+Medea
+Medfield
+Medford
+Medford's
+media
+mediacy
+mediad
+mediae
+medial
+medialization
+medialization's
+medializations
+medialize
+medializes
+medially
+median
+median's
+medianly
+medians
+mediant
+medias
+mediastinum
+mediate
+mediated
+mediately
+mediateness
+mediates
+mediating
+mediation
+mediational
+mediations
+mediative
+mediatization
+mediatization's
+mediatizations
+mediatize
+mediatized
+mediatizes
+mediatizing
+mediator
+mediatorial
+mediators
+mediatorship
+mediatory
+mediatress
+mediatresses
+mediatrice
+mediatrix
+medic
+medic's
+medicable
+medicably
+Medicaid
+medicaid
+medical
+medically
+medicament
+medicamented
+medicamenting
+medicamentous
+medicaments
+medicare
+Medicare
+medicate
+medicated
+medicates
+medicating
+medication
+medications
+medicative
+Medici
+medicinable
+medicinal
+medicinally
+medicine
+medicine's
+medicines
+Medicis
+medico
+medicolegal
+medicos
+medics
+medieval
+medieval's
+medievalise
+medievalises
+medievalism
+medievalism's
+medievalisms
+medievalist
+medievalist's
+medievalistic
+medievalistics
+medievalists
+medievalize
+medievalizes
+medievally
+medievals
+Medina
+mediocre
+mediocrities
+mediocrity
+meditate
+meditated
+meditates
+meditating
+meditation
+meditations
+meditative
+meditatively
+meditativeness
+meditator
+Mediterranean
+Mediterraneanization
+Mediterraneanization's
+Mediterraneanizations
+Mediterraneanize
+Mediterraneanizes
+medium
+medium's
+mediumistic
+mediumization
+mediumization's
+mediumizations
+mediumize
+mediumizes
+mediums
+mediumship
+medlar
+medlars
+medley
+medleys
+medulla
+medullary
+medullated
+Medusa
+Medusa's
+medusae
+Medusan
+medusoid
+medway
+mee
+meed
+meek
+meeker
+meekest
+meekly
+meekness
+meerkat
+meerschaum
+meerut
+meet
+meeter
+meeting
+meetinghouse
+meetings
+meetly
+meets
+Meg
+Meg's
+mega
+megabit
+megabits
+megabuck
+megabyte
+megabytes
+megacephaly
+megacycle
+megadeath
+Megaera
+megaflop
+megaflops
+megagamete
+megagametophyte
+megahertz
+megakaryocyte
+megakaryocytic
+megalith
+megalithic
+megaloblast
+megaloblastic
+megalocardia
+megalocephaly
+megalomania
+megalomaniac
+megalomaniacal
+megalomaniacally
+megalomanic
+megalopolis
+megalopolises
+megalopolistic
+megalopolitan
+megalopolitanism
+megalopteran
+megalopterous
+megalosaur
+megaparsec
+megaphone
+megaphonic
+megapode
+megapolis
+megapolitan
+megara
+megarians
+megaron
+megascopic
+megascopically
+megasporangium
+megaspore
+megasporic
+megasporogenesis
+megasporophyll
+megathere
+megaton
+megatons
+megavolt
+megawatt
+megaword
+megawords
+megger
+meghalaya
+megiddo
+megillah
+megilp
+megohm
+megohms
+megrim
+megrims
+mehemet
+Mehta
+Meier
+Meier's
+Meiji
+meilhac
+meiny
+meiosis
+meiotic
+meiotically
+meir
+Meissen
+Meister
+meister
+Meistersinger
+meitner
+mekka
+Mekong
+Mel
+Melaleuca
+melamine
+Melampus
+melancholia
+melancholiac
+melancholic
+melancholically
+melancholy
+melanchthon
+Melanesia
+Melanesian
+melange
+melanic
+Melanie
+melanin
+melanism
+melanist
+melanistic
+melanite
+melanitic
+melanization
+melanize
+melanized
+melanizes
+melanizing
+melanoblast
+melanoblastic
+melanoblastoma
+Melanochroi
+melanochroic
+melanocyte
+melanogenesis
+melanoid
+melanoma
+melanophore
+melanosis
+melanotic
+melanous
+melaphyre
+melatonin
+melba
+Melbourne
+Melcher
+Melcher's
+melchior
+Melchite
+Melchizedek
+meld
+melding
+melds
+Meleager
+melee
+meliaceous
+melic
+melies
+melilla
+melilot
+Melinda
+melinite
+meliorate
+meliorated
+meliorates
+meliorating
+melioration
+meliorations
+meliorative
+meliorator
+meliorism
+meliorist
+melioristic
+Melisande
+melisma
+Melissa
+Melitopol
+mell
+melliferous
+mellifluent
+mellifluently
+mellifluous
+mellifluously
+mellifluousness
+mellitin
+Mellon
+mellophone
+mellow
+mellowed
+mellowing
+mellowly
+mellowness
+mellows
+melodeon
+melodic
+melodically
+melodies
+melodious
+melodiously
+melodiousness
+melodist
+melodization
+melodize
+melodized
+melodizer
+melodizes
+melodizing
+melodrama
+melodrama's
+melodramas
+melodramatic
+melodramatically
+melodramatics
+melodramatist
+melodramatization
+melodramatize
+melodramatized
+melodramatizes
+melodramatizing
+melody
+melody's
+meloid
+melon
+melon's
+melons
+melos
+Melpomene
+Melpomene's
+melt
+meltability
+meltable
+meltage
+meltdown
+meltdown's
+melted
+melter
+melting
+meltingly
+Melton
+melts
+meltwater
+meltwaters
+Melungeon
+Melville
+Melvin
+mem
+member
+member's
+membered
+members
+membership
+membership's
+memberships
+membranal
+membrane
+membrane's
+membraned
+membraneless
+membranes
+membranous
+membranously
+meme
+memel
+memento
+mementoes
+mementos
+memling
+Memnon
+memo
+memo's
+memoir
+memoire
+memoirs
+memorabilia
+memorability
+memorable
+memorableness
+memorably
+memoranda
+memorandum
+memorandums
+memorex
+memorial
+memorialist
+memorialization
+memorialization's
+memorializations
+memorialize
+memorialized
+memorializer
+memorializers
+memorializes
+memorializing
+memorially
+memorials
+memoriam
+memories
+memoriter
+memorizable
+memorizable's
+memorizables
+memorization
+memorization's
+memorizations
+memorize
+memorized
+memorizer
+memorizers
+memorizes
+memorizing
+memory
+memory's
+memoryless
+memos
+Memphian
+Memphis
+memphremagog
+memsahib
+men
+men's
+menace
+menaced
+menaces
+menacing
+menacingly
+menadione
+menado
+menagerie
+menageries
+menai
+menam
+menander
+menaquinone
+menarche
+menarcheal
+menarches
+mencius
+Mencken
+mencken
+menckenese
+mend
+mendable
+mendacious
+mendaciously
+mendaciousness
+mendacity
+mended
+Mendel
+Mendel's
+mendelevium
+Mendeleyev
+Mendelian
+Mendelism
+Mendelize
+Mendelizes
+Mendelssohn
+mender
+menderes
+mendicancies
+mendicancy
+mendicant
+mendicants
+mendicities
+mendicity
+mending
+mendips
+Mendoza
+mendoza
+mends
+Menelaus
+Menelik
+menes
+menfolk
+menfolks
+Mengelberg
+mengistu
+menhaden
+menhir
+menial
+menially
+menials
+meningeal
+meninges
+meningitic
+meningitis
+meningocele
+meningococcal
+meningococcic
+meninx
+menisci
+meniscus
+meniscuses
+menispermaceous
+Menlo
+Mennonite
+Mennonites
+meno
+menology
+Menominee
+menominee
+menomini
+menon
+menopausal
+menopause
+menorah
+Menorca
+menorrhagia
+menorrhagic
+menotti
+mens
+mensa
+mensal
+mensch
+Mensch
+mense
+mensed
+menseful
+menseless
+menservants
+menses
+Menshevik
+mensing
+menstrual
+menstruate
+menstruated
+menstruates
+menstruating
+menstruation
+menstruations
+menstruous
+menstruum
+mensurability
+mensurable
+mensurableness
+mensural
+mensuration
+mensurational
+mensurations
+menswear
+mental
+mentalism
+mentalist
+mentalities
+mentality
+mentalization
+mentalization's
+mentalizations
+mentalize
+mentalizes
+mentally
+mentation
+mentations
+menthol
+mentholated
+mention
+mentionable
+mentioned
+mentioner
+mentioners
+mentioning
+mentions
+Menton
+mentor
+mentor's
+mentors
+mentorship
+mentum
+menu
+menu's
+menuhin
+menus
+Menzies
+meow
+meow's
+meowed
+meowing
+meows
+mepacrine
+meperidine
+Mephistopheles
+mephitic
+mephitis
+meprobamate
+mer
+merano
+merbromin
+merca
+mercantile
+mercantilism
+mercantilist
+mercantilistic
+mercaptan
+mercaptide
+mercaptopurine
+Mercator
+Mercedes
+mercenaries
+mercenarily
+mercenariness
+mercenary
+mercenary's
+mercer
+mercerization
+mercerization's
+mercerizations
+mercerize
+mercerized
+mercerizer
+mercerizers
+mercerizes
+mercerizing
+mercers
+mercery
+merchandise
+merchandised
+merchandiser
+merchandises
+merchandising
+merchant
+merchant's
+merchantability
+merchantable
+merchantman
+merchantmen
+merchants
+merchet
+mercia
+Mercian
+mercians
+mercies
+merciful
+mercifully
+mercifulness
+merciless
+mercilessly
+mercilessness
+Merck
+Merck's
+Mercouri
+mercurate
+mercurated
+mercurates
+mercurating
+mercuration
+mercurations
+mercurial
+mercurialization
+mercurialization's
+mercurializations
+mercurialize
+mercurializes
+mercurially
+mercurialness
+Mercurian
+mercuric
+mercuries
+Mercurochrome
+mercurous
+mercury
+mercy
+mere
+Meredith
+merely
+merengue
+merest
+meretricious
+meretriciously
+meretriciousness
+merganser
+merge
+merged
+mergence
+mergences
+merger
+mergers
+merges
+merging
+mergui
+meridian
+meridians
+meridional
+meridionally
+meringue
+meringues
+merino
+Merionethshire
+meristem
+meristic
+meristically
+merit
+merited
+meriting
+meritocracy
+meritocratic
+meritorious
+meritoriously
+meritoriousness
+merits
+Meriwether
+meriwether
+merkin
+Merle
+merlin
+merlon
+mermaid
+mermaid's
+mermaids
+merman
+merman's
+mermen
+meroblastic
+meroblastically
+merocrine
+meromorphic
+meromyosin
+meroplankton
+Merovingian
+merozoite
+Merriam
+Merrick
+merrick
+merrier
+merriest
+Merrill
+merrily
+merrimac
+Merrimac
+Merrimack
+merriment
+merriments
+merriness
+Merritt
+Merritt's
+merry
+merrymake
+merrymaker
+merrymaking
+merryman
+merrythought
+merse
+Merseburg
+Mersey
+Merseyside
+mersin
+merthyr
+Merton
+Mervin
+Mervin's
+mesa
+mesarch
+mescal
+mescaline
+mesdames
+mesdemoiselles
+meseems
+Mesembryanthemum
+mesencephalon
+mesenchyme
+mesenteric
+mesenteritis
+mesenteron
+mesentery
+mesh
+meshach
+meshed
+meshes
+meshing
+meshuga
+meshwork
+meshy
+mesial
+mesially
+mesic
+mesically
+mesitylene
+mesmeric
+mesmerically
+mesmerism
+mesmerisms
+mesmerist
+mesmerists
+mesmerizabilities
+mesmerizability
+mesmerizability's
+mesmerizable
+mesmerizable's
+mesmerizables
+mesmerization
+mesmerization's
+mesmerizations
+mesmerize
+mesmerized
+mesmerizer
+mesmerizers
+mesmerizes
+mesmerizing
+mesnalty
+mesne
+mesobenthos
+mesoblast
+mesoblastic
+mesocarp
+mesocephalic
+mesocratic
+mesoderm
+mesodermal
+mesodermic
+mesogastrium
+mesoglea
+mesognathous
+mesolithic
+mesolonghi
+mesomeric
+mesomerism
+mesomorph
+mesomorphic
+mesomorphism
+mesomorphy
+meson
+mesonephric
+mesonephros
+mesonic
+mesopause
+mesopelagic
+mesophase
+mesophases
+mesophyll
+mesophyte
+Mesopotamia
+mesosome
+mesosphere
+mesospheric
+mesothelioma
+mesothelium
+mesothoracic
+mesothorax
+mesothorium
+mesotron
+mesotronic
+mesotrophic
+Mesozoic
+Mesple
+mesquite
+mess
+message
+message's
+messaged
+messages
+messaging
+messalina
+messaline
+Messapian
+messed
+messene
+messenger
+messenger's
+messengers
+messenia
+messes
+messiaen
+messiah
+messiahs
+messiahship
+messianic
+messianism
+messier
+messiest
+messieurs
+messily
+messina
+messiness
+messing
+messmate
+messmates
+Messrs
+messuage
+messuages
+messy
+mestee
+mester
+mestizo
+mestranol
+met
+meta
+metabole
+metabolic
+metabolically
+metabolism
+metabolisms
+metabolite
+metabolites
+metabolizable
+metabolizable's
+metabolizables
+metabolize
+metabolized
+metabolizes
+metabolizing
+metacarpal
+metacarpus
+metacenter
+metacentres
+metacentric
+metacharacter
+metacharacters
+metachromatic
+metachromatism
+metacinnabarite
+metacircular
+metacircularity
+metaethical
+metaethics
+metafemale
+metagalactic
+metagalaxies
+metagalaxy
+metagenesis
+metagenetic
+metagenetically
+metagnathous
+metagram
+metagram's
+metagrams
+metal
+metal's
+metalanguage
+metalanguages
+metaled
+metalicities
+metalicity
+metalicity's
+metaling
+metalization
+metalization's
+metalizations
+metalize
+metalized
+metalizes
+metalizing
+metallic
+metallically
+metallicize
+metallicizes
+metalliferous
+metallike
+metalline
+metallist
+metallists
+metallocene
+metallographer
+metallographic
+metallographically
+metallographist
+metallography
+metalloid
+metalloidal
+metallophone
+metallurgic
+metallurgical
+metallurgically
+metallurgist
+metallurgists
+metallurgy
+metals
+metalsmith
+metalsmithes
+metalware
+metalwork
+metalworker
+metalworking
+metalworkings
+metamale
+metamathematical
+metamathematician
+metamathematics
+metamer
+metamere
+metameric
+metamerically
+metamerism
+metamerization
+metamerization's
+metamerizations
+metamerized
+metamerized's
+metamerizeds
+metamorphic
+metamorphically
+metamorphism
+metamorphose
+metamorphosed
+metamorphosis
+metanephric
+metanephros
+metanotion
+metanotions
+metaperiodate
+metaph
+metaphase
+metaphonize
+metaphonizes
+metaphor
+metaphor's
+metaphoric
+metaphorical
+metaphorically
+metaphorize
+metaphorizes
+metaphors
+metaphosphate
+metaphosphoric
+metaphrase
+metaphrast
+metaphysic
+metaphysical
+metaphysically
+metaphysician
+metaphysicize
+metaphysicizes
+metaphysics
+metaplasia
+metaplasm
+metaplasmic
+metaplastic
+metapolitics
+metaproduction
+metaproductions
+metaprotein
+metapsychological
+metapsychology
+metasomatic
+metasomatically
+metasomatism
+metastability
+metastable
+metastably
+metastasis
+metastasize
+metastasized
+metastasizes
+metastasizing
+metastatic
+metastatically
+metasymbol
+metasymbols
+metasyntax
+metasyntaxes
+metatarsal
+metatarsally
+metatarsus
+metate
+metatheory
+metatherian
+metathesis
+metathetic
+metathetical
+metathetically
+metathoracic
+metathorax
+metavariable
+metaxylem
+metazoa
+metazoal
+metazoan
+Metcalf
+Metcalf's
+metchnikoff
+mete
+meted
+metempirical
+metempirics
+metempsychosis
+metencephalic
+metencephalon
+meteor
+meteor's
+meteoric
+meteorically
+meteorite
+meteorites
+meteoritic
+meteoritical
+meteoritics
+meteorization
+meteorization's
+meteorizations
+meteorize
+meteorizes
+meteorograph
+meteorographic
+meteoroid
+meteoroid's
+meteoroidal
+meteoroids
+meteorol
+meteorologic
+meteorological
+meteorologicaly
+meteorologist
+meteorology
+meteors
+meter
+meter's
+metered
+metering
+meters
+metes
+metestrus
+methacrylate
+methacrylic
+methadon
+methadone
+methaemoglobin
+methamphetamine
+methane
+methanol
+methanolic
+metheglin
+methenamine
+methinks
+methionine
+metho
+method
+method's
+methodic
+methodical
+methodically
+methodicalness
+methodism
+methodist
+methodist's
+methodistic
+methodists
+methodius
+methodization
+methodization's
+methodizations
+methodize
+methodized
+methodizer
+methodizers
+methodizes
+methodizing
+methodological
+methodologically
+methodologies
+methodologist
+methodologists
+methodology
+methodology's
+methods
+methotrexate
+methought
+methoxide
+meths
+Methuen
+Methuen's
+Methuselah
+Methuselahs
+methyl
+methylal
+methylamine
+methylase
+methylate
+methylated
+methylation
+methylator
+methylcholanthrene
+methylcyclohexane
+methyldopa
+methylene
+methylic
+methylnaphthalene
+methylphenidate
+methylphthalate
+methylthionine
+metic
+meticulosity
+meticulous
+meticulously
+meticulousness
+metier
+meting
+metis
+metoestrus
+Metol
+metonic
+metonym
+metonymic
+metonymical
+metonymically
+metonymy
+metope
+metopic
+metopon
+metrazol
+Metrecal
+metric
+metric's
+metrical
+metrically
+metricate
+metrication
+metricize
+metricized
+metricizes
+metricizing
+metrics
+metrify
+metrist
+metritis
+metro
+metrological
+metrologically
+metrologist
+metrology
+metronidazole
+metronome
+metronomes
+metronomic
+metronomical
+metronomically
+metronymic
+metropolis
+metropolitan
+metropolitanization
+metropolitanize
+metropolitanizes
+metrorrhagia
+metros
+mets
+Metternich
+mettle
+mettled
+mettles
+mettlesome
+metz
+Metzler
+Metzler's
+meu
+meung
+meuse
+mew
+mewed
+mewl
+mews
+Mexicali
+Mexican
+Mexicanize
+Mexicanizes
+Mexicans
+Mexico
+Meyer
+Meyerbeer
+Meyerhof
+Meyers
+mezcal
+mezcaline
+mezereon
+mezereum
+mezuza
+mezuzah
+mezzanine
+mezzanines
+mezzo
+mezzos
+mezzotint
+MFD
+mho
+MHz
+Miami
+miaou
+miasma
+miasmal
+miasmatic
+miasmic
+miaul
+mica
+micaceous
+Micah
+micawber
+mice
+micellar
+micelle
+micelle's
+micelles
+Michael
+Michael's
+Michaelangelo
+Michaelmas
+Michaels
+Michaelson
+Michel
+Michel's
+Michelangelo
+Michele
+Michele's
+Michelin
+Michelle
+Michelle's
+michelozzo
+Michelson
+Michigan
+Michigan's
+Mick
+mick
+Mickelson
+mickery
+Mickey
+Mickey's
+Mickie
+mickiewicz
+mickle
+Micky
+Micmac
+micra
+micro
+microamp
+microampere
+microamperes
+microanalysis
+microanalyst
+microanalytic
+microanalytical
+microanatomical
+microanatomy
+microbalance
+microbalances
+microbarograph
+microbarographs
+microbe
+microbe's
+microbeless
+microbes
+microbial
+microbic
+microbicidal
+microbicide
+microbiologic
+microbiological
+microbiologically
+microbiologist
+microbiology
+microbodies
+microbody
+microbrailler
+microbus
+microcalorimetric
+microcephalic
+microcephaly
+microchemistry
+microchip
+microchips
+microcircuit
+microcircuitry
+microcircuits
+microcirculation
+microcirculatory
+microclimate
+microclimates
+microclimatic
+microclimatological
+microclimatologist
+microclimatology
+microcline
+microclines
+micrococcal
+micrococcus
+microcode
+microcoded
+microcodes
+microcoding
+microcomputer
+microcomputer's
+microcomputers
+microconcrete
+microconsumer
+microcontroller
+microcopier
+microcopy
+microcosm
+microcosmic
+microcosmically
+microcrack
+microcracked
+microcracking
+microcracks
+microcrystal
+microcrystalline
+microcrystallinity
+microcyte
+microcytic
+microdensitometer
+microdensitometer's
+microdensitometers
+microdensitometric
+microdensitometry
+microdetector
+microdissection
+microdomain
+microdomains
+microdont
+microdot
+microeconomic
+microeconomics
+microelectrode
+microelectronic
+microelectronically
+microelectronics
+microelectrophoresis
+microelectrophoretic
+microelectrophoretical
+microelectrophoretically
+microelement
+microencapsulate
+microencapsulation
+microenvironment
+microenvironmental
+microevolution
+microevolutionary
+microfabric
+microfarad
+microfarads
+microfauna
+microfaunal
+microfibril
+microfibrillar
+microfiche
+microfiches
+microfilaria
+microfilarial
+microfilm
+microfilm's
+microfilmed
+microfilmer
+microfilms
+microfine
+microflash
+microflora
+microfloral
+microform
+microfossil
+microfossils
+microfungal
+microfungus
+microgamete
+microgametocyte
+microgel
+microgram
+microgram's
+micrograms
+micrograph
+micrographer
+micrographers
+micrographs
+micrography
+microgroove
+microhabitat
+microhardness
+microinch
+microinjection
+microinstruction
+microinstruction's
+microinstructions
+microjoule
+microkink
+microkinking
+microlevel
+microliter
+microliter's
+microliters
+microlith
+microlithic
+micromania
+micromanipulation
+micromanipulator
+micromere
+micrometeorite
+micrometeorites
+micrometeoritic
+micrometeoroid
+micrometeorological
+micrometeorologist
+micrometeorology
+micrometer
+micrometer's
+micrometers
+micromethod
+micrometric
+micrometry
+micromicrofarad
+micromicrofarads
+micromicron
+micromillimeter
+micromillimeter's
+micromillimeters
+microminiature
+microminiaturization
+microminiaturize
+microminiaturized
+microminiaturizer
+microminiaturizers
+microminiaturizes
+microminiaturizing
+micromixing
+micron
+Micronesia
+Micronesian
+micronization
+micronization's
+micronizations
+micronize
+micronizes
+microns
+micronuclear
+micronucleate
+micronucleus
+micronutrient
+micronutrients
+microorganic
+microorganism
+microorganisms
+micropalaeontology
+micropaleontologic
+micropaleontological
+micropaleontologist
+micropaleontology
+microparasite
+microparasites
+microparasitic
+microphage
+microphone
+microphones
+microphonic
+microphonics
+microphoning
+microphotograph
+microphotographer
+microphotographic
+microphotography
+microphotometer
+microphotometer's
+microphotometers
+microphotometric
+microphotometrically
+microphotometry
+microphyll
+microphyllous
+microphysical
+microphysically
+microphysics
+microphyte
+micropipet
+micropipette
+microplankton
+micropolarization
+micropolarization's
+micropolarizations
+micropore
+microporosity
+microporous
+Microport
+Microport's
+microprint
+microprobe
+microprocessing
+microprocessor
+microprocessor's
+microprocessors
+microprogram
+microprogram's
+microprogrammable
+microprogrammed
+microprogramming
+microprograms
+microprojection
+microprojector
+micropulsation
+micropump
+micropylar
+micropyle
+micropyrometer
+microradiograph
+microradiographic
+microradiography
+microreader
+microrelief
+microreproduction
+micros
+microscale
+microscope
+microscope's
+microscopes
+microscopic
+microscopical
+microscopically
+microscopist
+Microscopium
+microscopize
+microscopizes
+microscopy
+microsecond
+microsecond's
+microseconds
+microsection
+microseism
+microseismic
+microseismicity
+microsimulation
+microsimulations
+Microsoft
+Microsoft's
+microsomal
+microsome
+microsomes
+microspectrophotometer
+microspectrophotometer's
+microspectrophotometers
+microspectrophotometric
+microspectrophotometrical
+microspectrophotometrically
+microspectrophotometry
+microsphere
+microspheric
+microsporangium
+microspore
+microsporic
+microsporophyll
+microstate
+microstomatous
+microstore
+microstructural
+microstructurally
+microstructure
+microstructures
+microsurgery
+microsurgical
+microswitch
+microswitches
+microsystem
+microsystems
+microtechnic
+microtechnique
+microtherm
+microtome
+microtomes
+microtomy
+microtonal
+microtonality
+microtonally
+microtone
+microtones
+microtubular
+microtubule
+microtubules
+microvolt
+microvolts
+microwatt
+microwatts
+microwave
+microwave's
+microwaves
+microword
+microwords
+microwriter
+microwriters
+micrurgy
+micturate
+micturated
+micturates
+micturating
+micturition
+micturitions
+mid
+midafternoon
+midair
+midas
+midband
+midbrain
+midcapacity
+midcourse
+midday
+Middelburg
+midden
+middens
+middies
+middle
+middlebreaker
+middlebrow
+middlebrowism
+middlebrows
+Middlebury
+middled
+middleman
+middlemen
+middlemost
+middler
+middles
+Middlesbrough
+Middlesex
+Middleton
+Middletown
+middleweight
+middleweights
+Middlewood
+middling
+middlingly
+middlings
+middorsal
+middy
+mideast
+midfield
+midfielder
+midge
+midges
+midget
+midgut
+midheaven
+midi
+midian
+midinette
+midiron
+midland
+midlander
+Midlandize
+Midlandizes
+midlands
+midlife
+midline
+midlothian
+midmorn
+midmorning
+midmost
+midnight
+midnightly
+midnights
+midplane
+midpoint
+midpoint's
+midpoints
+midportion
+midrange
+midrash
+midrashic
+midrashim
+midrib
+midribbed
+midriff
+midriffs
+midscale
+midsection
+midsemester
+midship
+midshipman
+midshipmen
+midships
+midsole
+midspan
+midst
+midstream
+midsts
+midsummer
+midsummery
+midterm
+midterm's
+midterms
+midtown
+midwatch
+midwatches
+Midway
+midway
+midways
+midweek
+midweekly
+Midwest
+Midwestern
+Midwesterner
+Midwesterners
+midwife
+midwifed
+midwifery
+midwifing
+midwing
+midwinter
+midwinterly
+midwintry
+midwived
+midwives
+midwiving
+midyear
+mien
+miens
+mieres
+mies
+miff
+miffed
+miffing
+miffs
+miffy
+MIG
+mig
+might
+mightier
+mightiest
+mightily
+mightiness
+mightless
+mights
+mighty
+mignon
+mignonette
+migraine
+migraines
+migrainous
+migrancy
+migrant
+migrant's
+migrants
+migrate
+migrated
+migrates
+migratetic
+migratetics
+migrating
+migration
+migrational
+migrationist
+migrationists
+migrations
+migrative
+migrator
+migratorial
+migratories
+migratory
+MIGs
+migs
+Miguel
+mihrab
+mikado
+mike
+mikhail
+Mikhail
+Mikoyan
+mikoyan
+mil
+mila
+milacre
+milady
+milage
+Milan
+milanese
+Milashkina
+milazzo
+milch
+mild
+milden
+milder
+mildest
+mildew
+mildewcide
+mildewproof
+mildews
+mildewy
+mildhearted
+mildish
+mildly
+mildness
+Mildred
+mile
+mile's
+mileage
+mileages
+mileometer
+milepost
+miler
+miles
+milesian
+milestone
+milestone's
+milestones
+miletus
+milfoil
+milfoils
+Milford
+Milhaud
+milia
+miliaria
+miliarial
+miliarias
+miliary
+milieu
+milieus
+milieux
+milinch
+militance
+militances
+militancies
+militancy
+militant
+militantly
+militantness
+militants
+militaries
+militarily
+militarism
+militarisms
+militarist
+militaristic
+militaristically
+militarization
+militarizations
+militarize
+militarized
+militarizes
+militarizing
+military
+militaryism
+militaryisms
+militate
+militated
+militates
+militating
+militia
+militiaman
+militiamen
+militias
+milium
+milk
+milked
+milker
+milkers
+milkfish
+milkhouse
+milkier
+milkily
+milkiness
+milking
+milkless
+milklike
+milkmaid
+milkmaid's
+milkmaids
+milkman
+milkmen
+milks
+milksop
+milksopping
+milksoppy
+milkstone
+milkweed
+milkwort
+milky
+mill
+millable
+millage
+millais
+Millard
+millboard
+millcourse
+milldam
+milled
+millefleurs
+millenarian
+millenarianism
+millenaries
+millenary
+millenia
+millennia
+millennial
+millennialism
+millennium
+millepede
+millepore
+miller
+millerite
+millers
+millesimal
+millesimally
+millet
+millhouse
+milli
+milliammeter
+milliammeter's
+milliammeters
+milliamp
+milliampere
+milliamperes
+milliard
+milliary
+millibar
+millibarn
+millicron
+millicurie
+millicycle
+millidarcy
+millidegree
+millidegrees
+Millie
+millieme
+milliemes
+milliequivalent
+millifarad
+milligal
+milligan
+milligram
+milligram's
+milligrams
+millihenry
+millihertz
+millihg
+millijoule
+millijoules
+Millikan
+millilambert
+milliliter
+milliliter's
+milliliters
+millilux
+millime
+millimeter
+millimeter's
+millimeters
+millimetric
+millimicrofarad
+millimicrofarads
+millimicron
+millimicrosecond
+millimolar
+millimolarity
+millimole
+milline
+milliner
+milliners
+millinery
+milling
+Millington
+million
+millionaire
+millionaire's
+millionairedom
+millionaires
+millionairess
+millionary
+millioned
+millionfold
+millionize
+millionizes
+millions
+millionth
+millipede
+millipede's
+millipedes
+milliphot
+millipoise
+millirad
+milliroentgen
+millisecond
+milliseconds
+millivolt
+millivoltmeter
+millivoltmeter's
+millivoltmeters
+millivolts
+milliwatt
+milliwatts
+millman
+millmen
+millowner
+millpond
+millponds
+millrace
+millraces
+millrun
+mills
+millsite
+millstone
+millstone's
+millstones
+millstream
+millstreams
+millwheel
+millwheels
+millwork
+millwright
+millwrights
+Milne
+milne
+Milnes
+milo
+milometer
+milometers
+milord
+milquetoast
+Milquetoast
+Milquetoasts
+milquetoasts
+milreis
+Milstein
+milt
+milter
+miltiades
+Milton
+Miltonian
+Miltonic
+Miltonism
+Miltonist
+Miltonize
+Miltonized
+Miltonizes
+Miltonizing
+Milwaukee
+mim
+mimas
+MIMD
+mime
+mimeograph
+mimeographed
+mimeographes
+mimeographing
+mimer
+mimesis
+mimetic
+mimetically
+mimetism
+mimetite
+Mimi
+mimic
+mimical
+mimicked
+mimicking
+mimicry
+mimics
+miming
+mimir
+mimosa
+mimosaceous
+min
+Mina
+minable
+minacious
+minaret
+minareted
+minarets
+minas
+minatory
+mince
+minced
+mincemeat
+mincer
+mincers
+minces
+minch
+mincing
+mincingly
+mincy
+mind
+Mindanao
+Mindanao's
+minded
+mindedness
+Mindel
+minder
+minders
+mindful
+mindfully
+mindfulness
+minding
+mindless
+mindlessly
+mindlessness
+mindoro
+minds
+mindszenty
+mine
+mineable
+mined
+minefield
+minelayer
+miner
+mineral
+mineral's
+mineralizable
+mineralizable's
+mineralizables
+mineralization
+mineralization's
+mineralizations
+mineralize
+mineralized
+mineralizer
+mineralizers
+mineralizes
+mineralizing
+mineralocorticoid
+mineralogical
+mineralogies
+mineralogist
+mineralogists
+mineralogy
+minerals
+miners
+Minerva
+mines
+minestrone
+minesweeper
+minesweepers
+minesweeping
+mineworker
+mineworkers
+ming
+Ming
+minge
+mingle
+mingled
+mingles
+mingling
+Mingrelian
+mingus
+mingy
+minho
+mini
+miniature
+miniature's
+miniatured
+miniatures
+miniaturing
+miniaturist
+miniaturistic
+miniaturists
+miniaturization
+miniaturizations
+miniaturize
+miniaturized
+miniaturizes
+miniaturizing
+minibike
+minibus
+minibuses
+minicab
+minicabs
+minicam
+minicamera
+minicar
+minicartridge
+minicomputer
+minicomputer's
+minicomputers
+minidress
+minidresses
+minified
+minifies
+minify
+minifying
+minikin
+minim
+minima
+minimal
+minimalism
+minimalist
+minimalist's
+minimalists
+minimally
+minimax
+minimization
+minimization's
+minimizations
+minimize
+minimized
+minimizer
+minimizers
+minimizes
+minimizing
+minimum
+minimums
+minimus
+mining
+minion
+minions
+minipill
+minis
+miniscule
+miniskirt
+minister
+minister's
+ministered
+ministerial
+ministerialist
+ministerially
+ministering
+ministerium
+ministers
+ministrable
+ministrant
+ministration
+ministrations
+ministries
+ministry
+ministry's
+minitab
+minitrack
+minium
+miniver
+minivet
+mink
+mink's
+Minkowski
+minks
+minna
+Minneapolis
+minnesinger
+Minnesota
+Minnesota's
+Minnie
+minnow
+minnow's
+minnows
+Minoan
+minor
+minor's
+Minorca
+minored
+minoring
+Minorite
+minorities
+minority
+minority's
+minors
+Minos
+minot
+Minot's
+Minotaur
+Minotaur's
+minous
+Minsk
+Minsk's
+Minsky
+Minsky's
+minster
+minstrel
+minstrel's
+minstrels
+minstrelsy
+mint
+mintage
+minted
+minter
+minting
+mintoff
+Minton
+mints
+minuend
+minuends
+minuet
+minus
+minuscular
+minuscule
+minuses
+minute
+minuted
+minutely
+minuteman
+minutemen
+minuteness
+minuter
+minutes
+minutest
+minutia
+minutiae
+minutial
+minuting
+minx
+minxes
+Minya
+Miocene
+miocrystalline
+miombo
+mioses
+miosis
+miotic
+MIPS
+Miquelon
+Mira
+mirabeau
+mirabilite
+miracidium
+miracle
+miracle's
+miracles
+miracular
+miraculism
+miraculisms
+miraculist
+miraculists
+miraculize
+miraculized
+miraculizes
+miraculizing
+miraculous
+miraculously
+miraculousness
+mirador
+miraflores
+mirage
+miraged
+mirages
+miraging
+Miranda
+mirate
+mirated
+mirates
+mirating
+miration
+mirations
+mire
+mired
+mirepoix
+mires
+Mirfak
+Mirfak's
+Miriam
+miring
+mirk
+mirky
+mirror
+mirrored
+mirroring
+mirrorize
+mirrorizes
+mirrorlike
+mirrors
+mirrory
+mirth
+mirthful
+mirthfully
+mirthfulness
+mirthless
+mirthlessly
+mirthlessness
+mirths
+MIRV
+miry
+mirza
+misaddress
+misaddressed
+misadjustment
+misadventure
+misadventured
+misadventures
+misadventurous
+misadvise
+misaim
+misalign
+misaligned
+misaligning
+misalignment
+misalignment's
+misalignments
+misaligns
+misalliance
+misallocate
+misallocated
+misallocates
+misallocating
+misallocation
+misally
+misalphabetize
+misalphabetizes
+misandry
+misanthrope
+misanthropic
+misanthropically
+misanthropism
+misanthropist
+misanthropists
+misanthropize
+misanthropized
+misanthropizes
+misanthropizing
+misanthropy
+misapplication
+misapplied
+misapplier
+misapplies
+misapply
+misapplying
+misapplys
+misappreciate
+misappreciation
+misapprehend
+misapprehended
+misapprehending
+misapprehendingly
+misapprehends
+misapprehension
+misapprehensions
+misapprehensive
+misapprehensively
+misapprehensiveness
+misappropriate
+misappropriates
+misappropriation
+misarranged
+misarrangement
+misarray
+misascription
+misassignment
+misattribution
+misauthorization
+misauthorization's
+misauthorizations
+misauthorize
+misauthorizes
+misbaptize
+misbaptizes
+misbecome
+misbecoming
+misbeget
+misbegotten
+misbehadden
+misbehave
+misbehaved
+misbehaver
+misbehaves
+misbehaving
+misbehavior
+misbehavior's
+misbehaviors
+misbeholden
+misbelief
+misbelieve
+misbeliever
+misbelieving
+misbelievingly
+misbeseem
+misbestow
+misbirth
+misbrand
+misbranded
+misbranding
+misbrands
+misc
+miscalculate
+miscalculated
+miscalculates
+miscalculating
+miscalculation
+miscalculation's
+miscalculations
+miscalculator
+miscall
+miscaller
+miscanonize
+miscanonizes
+miscarriage
+miscarriages
+miscarried
+miscarries
+miscarry
+miscarrying
+miscarrys
+miscast
+miscasting
+miscasts
+miscegenation
+miscegenational
+miscegenations
+miscellanea
+miscellaneity
+miscellaneous
+miscellaneously
+miscellaneousness
+miscellanies
+miscellanist
+miscellanists
+miscellany
+mischance
+mischaracterization
+mischaracterization's
+mischaracterizations
+mischaracterize
+mischaracterizes
+mischief
+mischiefful
+mischievous
+mischievously
+mischievousness
+miscibility
+miscible
+misclassification
+misclassifications
+misclassified
+misclassify
+misclassifying
+miscode
+miscoded
+miscodes
+miscoding
+miscolor
+miscolor's
+miscolored
+miscoloring
+miscolors
+miscommunicate
+miscommunicated
+miscommunicates
+miscommunication
+miscomprehend
+miscomprehension
+misconceit
+misconceive
+misconceived
+misconceiver
+misconceives
+misconceiving
+misconception
+misconception's
+misconceptions
+misconduct
+misconducted
+misconducting
+misconducts
+misconstruction
+misconstructions
+misconstrue
+misconstrued
+misconstrues
+misconstruing
+miscontent
+miscontentment
+miscook
+miscopy
+miscorrect
+miscorrected
+miscounsel
+miscounseled
+miscount
+miscounted
+miscounting
+miscounts
+miscreance
+miscreances
+miscreant
+miscreants
+miscreate
+miscreation
+miscreative
+miscreator
+miscue
+miscue's
+miscues
+misdate
+misdeal
+misdealing
+misdeclared
+misdeed
+misdeeds
+misdeem
+misdeems
+misdefined
+misdeliver
+misdelivered
+misdelivery
+misdemean
+misdemeanant
+misdemeanants
+misdemeanor
+misdemeanor's
+misdemeanors
+misdescribe
+misdescription
+misdescriptive
+misdirect
+misdirected
+misdirection
+misdirector
+misdirectors
+misdirects
+misdo
+misdoer
+misdoing
+misdoubt
+mise
+miseducated
+miseducation
+misemphasis
+misemphasization
+misemphasize
+misemphasized
+misemphasizes
+misemphasizing
+misemploy
+misemployment
+misendeavor
+misendeavor's
+misendeavors
+miseno
+miser
+miserable
+miserableness
+miserably
+Miserere
+misericord
+misericorde
+miseries
+miserliness
+miserly
+misers
+misery
+misery's
+mises
+misesteem
+misestimate
+misestimation
+misfeasance
+misfeasor
+misfeature
+misfeed
+misfile
+misfiled
+misfiles
+misfiling
+misfire
+misfired
+misfires
+misfiring
+misfit
+misfit's
+misfits
+misfortune
+misfortune's
+misfortunes
+misgauge
+misgauged
+misgauges
+misgauging
+misgive
+misgives
+misgiving
+misgivingly
+misgivings
+misgovern
+misgovernment
+misguidance
+misguide
+misguided
+misguidedly
+misguidedness
+misguider
+misguides
+misguiding
+mishandle
+mishandled
+mishandles
+mishandling
+mishap
+mishap's
+mishaps
+mishear
+Mishima
+mishmash
+Mishnah
+misidentification
+misidentified
+misidentifies
+misidentify
+misidentifying
+misimpression
+misimprove
+misinform
+misinformation
+misinformative
+misinformed
+misinforming
+misinforms
+misintelligence
+misinterpret
+misinterpretable
+misinterpretation
+misinterpretations
+misinterpreted
+misinterpreter
+misinterpreters
+misinterpreting
+misinterprets
+misjoinder
+misjudge
+misjudged
+misjudges
+misjudging
+misjudgingly
+misjudgment
+misjudgment's
+misjudgments
+misknow
+misknowledge
+misknows
+miskolc
+mislabel
+mislabeled
+mislabeling
+mislabor
+mislabor's
+mislabored
+mislaboring
+mislabors
+mislaid
+mislay
+mislaying
+mislays
+mislead
+misleader
+misleading
+misleadingly
+misleadings
+misleads
+misleared
+misled
+mislike
+mismachine
+mismanage
+mismanaged
+mismanagement
+mismanages
+mismanaging
+mismarriage
+mismatch
+mismatched
+mismatches
+mismatching
+mismate
+misname
+misnamed
+misnames
+misnaming
+misnomer
+misnomered
+misogamic
+misogamist
+misogamists
+misogamy
+misogynic
+misogynist
+misogynist's
+misogynistic
+misogynists
+misogyny
+misologist
+misology
+misoneism
+misorder
+misorganization
+misorganization's
+misorganizations
+misorganize
+misorganizes
+misperceive
+misperceived
+misperceives
+misperception
+misperceptions
+misplace
+misplaced
+misplacement
+misplacements
+misplaces
+misplacing
+misplay
+misplead
+mispleading
+mispoint
+misposition
+mispositioned
+mispositioning
+mispositions
+mispraise
+misprint
+misprision
+misprisions
+misprize
+misprized
+misprizes
+misprizing
+mispronounce
+mispronounced
+mispronounces
+mispronouncing
+mispronunciation
+mispunctuate
+mispunctuation
+misquotation
+misquote
+misquoted
+misquotes
+misread
+misreader
+misreading
+misreads
+misrealize
+misrealizes
+misreckon
+misrecognize
+misrecognizes
+misrecollect
+misrecollection
+misregister
+misregistration
+misrelated
+misremember
+misreport
+misreporting
+misrepresent
+misrepresentation
+misrepresentation's
+misrepresentations
+misrepresentative
+misrepresented
+misrepresenter
+misrepresenting
+misrepresents
+misroute
+misrouted
+misroutes
+misrouting
+misrule
+misruled
+misruler
+misrules
+misruling
+miss
+missal
+missals
+missed
+missel
+missend
+misses
+misshape
+misshapen
+misshapenly
+misshapenness
+misshapennesses
+misshapes
+missile
+missile's
+missileer
+missileers
+missileman
+missilemen
+missilery
+missiles
+missilry
+missing
+mission
+missionaries
+missionarize
+missionarizes
+missionary
+missionary's
+missionate
+missioned
+missioner
+missioning
+missionization
+missionize
+missionized
+missionizer
+missionizers
+missionizes
+missionizing
+missions
+missis
+mississauga
+mississipi
+Mississippi
+Mississippian
+Mississippians
+missive
+missives
+missolonghi
+missort
+Missoula
+Missouri
+missout
+misspeak
+misspecification
+misspecified
+misspell
+misspelled
+misspelling
+misspellings
+misspells
+misspelt
+misspend
+misspended
+misspender
+misspending
+misspends
+misstate
+misstated
+misstatement
+misstatements
+misstater
+misstates
+misstating
+misstep
+misstrike
+missus
+Missy
+mist
+mistakable
+mistake
+mistaken
+mistakenly
+mistaker
+mistakes
+mistaking
+mistakingly
+mistal
+mistassini
+misted
+mister
+mistered
+mistering
+misterm
+misters
+mistful
+misthink
+misti
+mistier
+mistiest
+mistigris
+mistily
+mistime
+mistimed
+mistiness
+misting
+mistle
+mistletoe
+mistook
+mistrain
+mistral
+mistrals
+mistranslate
+mistranslation
+mistreat
+mistreated
+mistreating
+mistreatment
+mistreats
+mistress
+mistressly
+mistrial
+mistrust
+mistrusted
+mistruster
+mistrustful
+mistrustfully
+mistrustfulness
+mistrusting
+mistrusts
+mists
+misty
+mistype
+mistyped
+mistypes
+mistyping
+misunderstand
+misunderstander
+misunderstanders
+misunderstanding
+misunderstanding's
+misunderstandings
+misunderstands
+misunderstood
+misusage
+misuse
+misused
+misuser
+misuses
+misusing
+misvalue
+misventure
+miswrite
+miswrites
+miswriting
+miswritten
+MIT
+MIT's
+Mitch
+mitch
+Mitch's
+Mitchell
+Mitchell's
+mite
+miter
+mitered
+miterer
+mitering
+miterwort
+mites
+mither
+mithgarthr
+Mithraism
+Mithras
+mithridate
+mithridates
+mithridatism
+miticide
+mitigate
+mitigated
+mitigates
+mitigating
+mitigation
+mitigations
+mitigative
+mitigator
+mitigators
+mitigatory
+mitis
+mitochondria
+mitochondrion
+mitogenesis
+mitogenetic
+mitogenic
+mitoinhibitory
+mitosis
+mitotic
+mitotically
+mitrailleuse
+mitral
+mitrewort
+Mitropolous
+Mitropoulos
+mitt
+mitted
+Mittelland
+mitten
+mitten's
+mittens
+Mitterrand
+mittimus
+mitts
+mitzvah
+mitzvah's
+mitzvahes
+mitzvahs
+mix
+mixable
+mixed
+mixer
+mixers
+mixes
+mixing
+mixologist
+mixologists
+mixology
+mixolydian
+Mixtec
+mixture
+mixture's
+mixtures
+mixup
+mizanthropise
+mizanthropises
+Mizar
+Mizar's
+Mizoguchi
+mizoram
+mizzen
+mizzenmast
+mizzle
+mizzled
+mizzles
+mizzling
+mizzly
+MKS
+MKSA
+ml
+mlea
+Mlle
+mm
+Mme
+MN
+mnemonic
+mnemonic's
+mnemonically
+mnemonics
+Mnemosyne
+MO
+moa
+moab
+moan
+moaned
+moanful
+moanfully
+moaning
+moans
+moat
+moat's
+moats
+mob
+mob's
+mobbed
+mobbing
+mobbish
+mobbishly
+mobbishness
+mobbism
+mobcap
+mobcaps
+Mobil
+mobile
+mobiles
+mobility
+mobilizable
+mobilizable's
+mobilizables
+mobilization
+mobilization's
+mobilizations
+mobilize
+mobilized
+mobilizer
+mobilizes
+mobilizing
+mobocracy
+mobocrat
+mobocratic
+mobs
+mobster
+mobsters
+mobutu
+moccasin
+moccasin's
+moccasins
+mocha
+mock
+mocked
+mocker
+mockernut
+mockers
+mockery
+mocking
+mockingbird
+mockingly
+mocks
+mockup
+mockups
+mod
+modal
+modalities
+modality
+modality's
+modalize
+modalizes
+modally
+mode
+model
+model's
+modeled
+modeler
+modelers
+modeling
+modelings
+models
+modem
+modems
+modena
+moderate
+moderated
+moderately
+moderateness
+moderates
+moderating
+moderation
+moderationist
+moderations
+moderatism
+moderato
+moderator
+moderator's
+moderators
+moderatorship
+modern
+moderne
+modernism
+modernist
+modernistic
+modernists
+modernity
+modernizable
+modernizable's
+modernizables
+modernization
+modernization's
+modernizations
+modernize
+modernized
+modernizer
+modernizers
+modernizes
+modernizing
+modernly
+modernness
+moderns
+modes
+modest
+modestly
+Modesto
+modesty
+modge
+modicity
+modicum
+modifiability
+modifiable
+modifiableness
+modification
+modifications
+modificative
+modified
+modifier
+modifiers
+modifies
+modify
+modifying
+modigliani
+modillion
+Modiolus
+modish
+modishly
+modishness
+modiste
+Modred
+mods
+modulability
+modular
+modularities
+modularity
+modularization
+modularize
+modularized
+modularizes
+modularizing
+modularly
+modulate
+modulated
+modulates
+modulating
+modulation
+modulations
+modulator
+modulator's
+modulators
+modulatory
+module
+module's
+modules
+moduli
+modulo
+modulus
+modus
+Moe
+Moe's
+Moen
+Moen's
+mofette
+mog
+Mogadiscio
+mogador
+mogen
+Moghul
+Mogilev
+mogul
+mohair
+Mohammed
+Mohammedan
+Mohammedanism
+Mohammedanization
+Mohammedanization's
+Mohammedanizations
+Mohammedanize
+Mohammedanized
+Mohammedanizes
+Mohammedanizing
+Mohave
+Mohawk
+Mohican
+mohm
+moho
+Mohock
+mohole
+Mohr
+mohs
+mohur
+moidore
+moieties
+moiety
+moil
+moiler
+moiling
+moilingly
+Moines
+moirai
+moire
+Moiseyev
+Moiseyev's
+moist
+moisten
+moistened
+moistener
+moistening
+moistly
+moistness
+moisture
+moistureless
+moistures
+moisturization
+moisturize
+moisturized
+moisturizer
+moisturizers
+moisturizes
+moisturizing
+Mojave
+moke
+mokha
+mokpo
+molal
+molality
+molar
+molarity
+molarization
+molarizations
+molars
+molasses
+mold
+moldable
+Moldau
+Moldavia
+Moldavian
+Moldavite
+moldboard
+molded
+molder
+moldered
+moldering
+molders
+moldier
+moldiness
+molding
+molds
+moldy
+mole
+Molech
+molecular
+molecularity
+molecularly
+molecule
+molecule's
+molecules
+molehill
+moles
+moleskin
+moleskins
+molest
+molestation
+molestations
+molested
+molester
+molesters
+molesting
+molests
+Moliere
+molina
+Moline
+molise
+Moll
+moll
+mollah
+mollescent
+Mollet
+mollie
+mollification
+mollifications
+mollified
+mollifies
+mollify
+mollifying
+mollusc
+molluscan
+molluscoid
+molluscs
+mollusk
+molluskan
+mollusks
+mollweide
+Molly
+mollycoddle
+mollycoddled
+mollycoddler
+mollycoddles
+mollycoddling
+Moloch
+Molochize
+Molochizes
+Molokai
+molopo
+molotov
+Molotov
+molt
+molten
+molter
+moltke
+molto
+molts
+molucca
+Moluccas
+moly
+molybdate
+molybdenite
+molybdenous
+molybdenum
+molybdic
+molybdous
+mom
+mom's
+mombasa
+moment
+moment's
+momenta
+momental
+momentaneous
+momentarily
+momentariness
+momentary
+momently
+momentous
+momentously
+momentousness
+moments
+momentum
+momentums
+momism
+momma
+Mommsen
+mommy
+moms
+Momus
+Mon
+Mona
+Mona's
+monachal
+monachism
+monacid
+Monaco
+monad
+monadelphous
+monadic
+monadism
+monadnock
+monads
+monaghan
+monal
+monandrous
+monandry
+monanthous
+monarch
+monarchal
+monarchial
+monarchic
+monarchical
+monarchically
+monarchies
+monarchism
+monarchist
+monarchistic
+monarchists
+monarchize
+monarchizer
+monarchizers
+monarchizes
+monarchs
+monarchy
+monarchy's
+monas
+Monash
+monasterial
+monasteries
+monastery
+monastery's
+monastic
+monastical
+monastically
+monasticism
+monasticize
+monasticizes
+monatomic
+monaural
+monaurally
+monaxial
+monazite
+monck
+Moncton
+Mondale
+Monday
+Monday's
+Mondays
+monde
+Mondial
+mondrian
+monecious
+Monegasque
+monel
+moneme
+moner
+monestrous
+Monet
+monet
+monetarily
+monetarism
+monetarist
+monetary
+monetization
+monetize
+monetized
+monetizes
+monetizing
+money
+money's
+moneybags
+moneychanger
+moneyed
+moneyer
+moneylender
+moneylenders
+moneylending
+moneyless
+moneymake
+moneymaker
+moneymaking
+moneys
+moneywort
+Monfort
+mong
+monger
+mongered
+mongering
+mongers
+Mongo
+Mongol
+Mongolia
+Mongolian
+Mongolianism
+Mongolic
+mongolism
+mongoloid
+mongoose
+mongooses
+mongrel
+mongrelism
+mongrelization
+mongrelizations
+mongrelize
+mongrelized
+mongrelizer
+mongrelizes
+mongrelizing
+mongrelly
+mongrelness
+monic
+Monica
+monicker
+monied
+monies
+moniker
+monilia
+moniliform
+monish
+monism
+monist
+monistic
+monistical
+monition
+monitions
+monitor
+monitored
+monitorial
+monitorially
+monitoring
+monitors
+monitorship
+monitory
+monitress
+monk
+monk's
+monkeries
+monkery
+monkey
+monkeyed
+monkeyflower
+monkeying
+monkeypot
+monkeys
+monkeyshine
+monkfish
+monkhood
+monkish
+monks
+monkshood
+Monmouth
+Monmouth's
+Monmouthshire
+monnet
+mono
+mono's
+monoacid
+monoacidic
+monoamine
+monoatomic
+monobasic
+monocarp
+monocarpellary
+monocarpic
+monocausal
+Monoceros
+monochasial
+monochasium
+monochloride
+monochloroethanol
+monochord
+monochordize
+monochordizes
+monochromat
+monochromatic
+monochromatically
+monochromaticity
+monochromatism
+monochromator
+monochrome
+monochromes
+monochromic
+monochromist
+monocle
+monocled
+monocles
+monocline
+monoclinic
+monoclinous
+monocoque
+monocracy
+monocrat
+monocratic
+monocular
+monocularly
+monocultural
+monoculture
+monocycle
+monocyclic
+monocycly
+monocyte
+monocytic
+monodisperse
+monodispersity
+monodist
+monodrama
+monodramatic
+monody
+monoecious
+monoeciously
+monoecism
+monoenergetic
+monoester
+monofilament
+monofuel
+monogamic
+monogamist
+monogamists
+monogamous
+monogamously
+monogamousness
+monogamy
+monogastric
+monogenean
+monogenesis
+monogenetic
+monogenic
+monogenically
+monogerm
+monogram
+monogram's
+monogrammatic
+monograms
+monograph
+monograph's
+monographes
+monographic
+monographical
+monographs
+monography
+monogynous
+monogyny
+monohull
+monohybrid
+monohydrate
+monohydric
+monohydroxy
+monoicous
+monoid
+monolatry
+monolayer
+monolingual
+monolingualism
+monolinguals
+monolith
+monolithic
+monolithically
+monoliths
+monologist
+monologists
+monologize
+monologized
+monologizes
+monologizing
+monologue
+monologues
+monologuist
+monomania
+monomaniac
+monomark
+monomer
+monomer's
+monomeric
+monomerous
+monomers
+monometalism
+monometalist
+monometallic
+monometer
+monometer's
+monometers
+monomial
+monomolecular
+monomolecularly
+monomorphemic
+monomorphic
+monomorphism
+monomorphous
+Monongahela
+Monongahela's
+mononuclear
+mononucleosis
+monopetalous
+monophagous
+monophobia
+monophonic
+monophonically
+monophony
+monophthong
+monophthongal
+monophyletic
+monophyletism
+monophyllous
+Monophysite
+monoplane
+monoplegia
+monoploid
+monopode
+monopodial
+monopodially
+monopodium
+monopolies
+monopolist
+monopolistic
+monopolistically
+monopolists
+monopolizable
+monopolizable's
+monopolizables
+monopolization
+monopolization's
+monopolizations
+monopolize
+monopolized
+monopolizer
+monopolizers
+monopolizes
+monopolizing
+monopoly
+monopoly's
+monopropellant
+monopsony
+monopteros
+monopulse
+monorail
+monorail's
+monorails
+monosaccharide
+monosaccharides
+monosemy
+monosepalous
+monosized
+monosodium
+monosome
+monosomic
+monospermous
+monostat
+monostatic
+monostich
+monostichous
+monostome
+monostrophe
+monostylous
+monosyllabic
+monosyllabically
+monosyllabicity
+monosyllable
+monosyllables
+monosymmetric
+monosymmetry
+monosynaptic
+monosynaptically
+monotheism
+monotheist
+monotheistic
+monotheistical
+monotheistically
+monothetic
+monotint
+monotone
+monotonic
+monotonically
+monotonicity
+monotonize
+monotonizes
+monotonous
+monotonously
+monotonousness
+monotony
+monotower
+monotrematous
+monotreme
+monotrichous
+monotropism
+monotype
+monotypic
+monovalent
+monovular
+monoxide
+monozygotic
+Monroe
+Monrovia
+mons
+Monsanto
+monsieur
+monsignor
+monsoon
+monsoonal
+monsoons
+monster
+monster's
+monsters
+monstrance
+monstrances
+monstrosities
+monstrosity
+monstrous
+monstrously
+monstrousness
+montage
+montaged
+montages
+montaging
+montagnard
+montagu
+Montague
+montagues
+Montaigne
+montaigne
+montale
+Montana
+Montana's
+Montanan
+Montanan's
+montane
+montauban
+montbretia
+montcalm
+Montclair
+monte
+montefiore
+montego
+monteith
+Montenegrin
+Montenegrin's
+montenegro
+Monterey
+montero
+monterrey
+montesquieu
+montessori
+Monteux
+Monteverdi
+Monteverdi's
+Montevideo
+Montezuma
+montfort
+montgolfier
+Montgomery
+Montgomeryshire
+month
+month's
+montherlant
+monthlies
+monthly
+months
+Monticello
+monticule
+Montmartre
+Montmartre's
+montmorillonite
+montparnasse
+Montpelier
+montpellier
+Montrachet
+Montrachet's
+Montreal
+montreuil
+montreux
+montrose
+Montserrat
+Monty
+monument
+monument's
+monumental
+monumentality
+monumentalization
+monumentalization's
+monumentalizations
+monumentalize
+monumentalized
+monumentalizes
+monumentalizing
+monumentally
+monumentless
+monuments
+monza
+monzonite
+moo
+mooch
+moocher
+mooches
+mooching
+mood
+mood's
+moodier
+moodily
+moodiness
+moods
+moody
+mooed
+moog
+moola
+moolah
+moolvie
+moon
+moonbeam
+moonbeam's
+moonbeams
+moonbow
+mooncalf
+mooned
+Mooney
+mooneye
+moonfish
+moonflower
+mooning
+moonish
+moonishly
+moonless
+moonlet
+moonlight
+moonlighted
+moonlighter
+moonlighting
+moonlights
+moonlit
+moonquake
+moonraker
+moonrise
+moons
+moonscape
+moonseed
+moonset
+moonshine
+moonshiner
+moonshot
+moonstone
+moonstruck
+moonward
+moonwort
+moony
+moor
+moor's
+moorage
+Moorcock
+Moore
+moored
+moorfowl
+moorhen
+mooring
+moorings
+Moorish
+Moorland
+moors
+moorwort
+moos
+moose
+moot
+mooted
+mop
+mopboard
+mope
+moped
+moper
+mopes
+moping
+mopoke
+mopped
+mopper
+moppet
+mopping
+mops
+moquette
+mor
+mora
+moraceous
+Moradabad
+morainal
+moraine
+morainic
+moral
+moral's
+morale
+morales
+moralism
+moralist
+moralistic
+moralistically
+moralities
+morality
+moralization
+moralization's
+moralizations
+moralize
+moralized
+moralizer
+moralizers
+moralizes
+moralizing
+moralizinglies
+moralizingly
+morally
+morals
+Moran
+Moran's
+morar
+morass
+morasses
+morassy
+moratorium
+moratoriums
+morava
+Moravia
+Moravian
+Moravianized
+Moravianized's
+Moravianizeds
+moray
+morbid
+morbidity
+morbidize
+morbidizes
+morbidly
+morbidness
+morbific
+morbihan
+morbilli
+morcha
+mordacious
+mordaciously
+mordacity
+mordancy
+mordant
+mordantly
+mordecai
+mordent
+mordred
+Mordvin
+Mordvinian
+more
+morea
+moreau
+morecambe
+mored
+moreen
+morehouse
+Morehouse
+moreish
+morel
+Moreland
+morelia
+morello
+morelos
+moreover
+morepork
+mores
+Moresby
+Moresby's
+moresco
+moresque
+Moreton
+Morgan
+morganatic
+morganatically
+morganite
+morgen
+morgue
+morgues
+Moriarty
+moribund
+moribundity
+morion
+Morisco
+morish
+Morley
+Morley's
+Mormon
+morn
+mornay
+morning
+mornings
+Moro
+Moroccan
+morocco
+Morocco
+moron
+moroni
+moronic
+moronically
+moronism
+moronity
+morose
+morosely
+moroseness
+morosity
+morph
+morphallaxis
+morpheme
+morphemic
+Morpheus
+morphine
+morphines
+morphinic
+morphinism
+morphinization
+morphinization's
+morphinizations
+morphinize
+morphinizes
+morphism
+morphism's
+morphisms
+morpho
+morphogenesis
+morphologic
+morphological
+morphologically
+morphology
+morphophoneme
+morphophonemic
+morphophonemics
+morphosis
+morphotype
+morphotypes
+morphy
+Morrill
+Morrill's
+Morris
+morris
+Morrison
+Morrissey
+Morrissey's
+Morristown
+morro
+morrow
+mors
+Morse
+morsel
+morsel's
+morseled
+morseling
+morselization
+morselization's
+morselizations
+morselize
+morselizes
+morsels
+mort
+mortal
+mortality
+mortalize
+mortalizes
+mortally
+mortals
+mortar
+mortarboard
+mortared
+mortaring
+mortarize
+mortarizes
+mortars
+mortem
+mortgage
+mortgage's
+mortgaged
+mortgagee
+mortgagees
+mortgager
+mortgages
+mortgaging
+mortgagor
+mortgagors
+mortician
+morticians
+mortification
+mortifications
+mortified
+mortifiedly
+mortifier
+mortifies
+mortify
+mortifying
+mortimer
+Mortimer
+mortise
+mortising
+mortmain
+Morton
+Morton's
+mortuaries
+mortuary
+mortuary's
+morula
+morwong
+mos
+mosaic
+mosaic's
+mosaically
+mosaicism
+mosaicist
+mosaics
+mosasaur
+moschatel
+moscone
+Moscone
+Moscow
+moseley
+Moselle
+Moser
+Moser's
+Moses
+mosey
+moseyed
+moseying
+moshav
+moshesh
+moskva
+Moslem
+Moslem's
+Moslemize
+Moslemizes
+Moslems
+mosley
+mosotho
+mosque
+mosques
+mosquito
+mosquitoes
+mosquitoey
+mosquitos
+moss
+moss's
+mossback
+mossbacked
+Mossberg
+mossbunker
+mosses
+Mossi
+mossie
+mossier
+mosslike
+mosso
+mosstrooper
+mossy
+most
+mostly
+Mosul
+mot
+mote
+motel
+motel's
+motels
+motet
+moth
+mothball
+mother
+mother's
+motherboard
+motherboard's
+motherboards
+mothered
+motherer
+motherers
+motherfucker
+motherhood
+motherhouse
+mothering
+motherland
+motherless
+motherlessness
+motherliness
+motherly
+mothers
+motherwell
+motherwort
+mothproof
+mothproofer
+moths
+mothy
+motif
+motif's
+motifs
+motile
+motility
+motion
+motional
+motioned
+motioner
+motioning
+motionless
+motionlessly
+motionlessness
+motions
+motivate
+motivated
+motivates
+motivating
+motivation
+motivational
+motivationally
+motivations
+motivative
+motivator
+motive
+motived
+motives
+motivic
+motiving
+motivity
+motley
+motmot
+motocross
+motoneuron
+motor
+motorable
+motorbicycle
+motorbike
+motorboat
+motorboater
+motorboating
+motorbus
+motorcade
+motorcade's
+motorcades
+motorcar
+motorcar's
+motorcars
+motorcoach
+motorcycle
+motorcycle's
+motorcycles
+motorcyclist
+motordrome
+motored
+motoric
+motorically
+motoring
+motorist
+motorist's
+motorists
+motorization
+motorization's
+motorizations
+motorize
+motorized
+motorizes
+motorizing
+motorless
+motorman
+motormen
+Motorola
+Motorola's
+motors
+motortruck
+motorway
+motown
+mots
+motte
+mottle
+mottled
+mottler
+mottles
+mottling
+motto
+mottoes
+mottos
+motu
+mouflon
+moujik
+moulage
+mould
+mouldboard
+moulded
+moulder
+mouldering
+moulding
+moulds
+mouldy
+moulin
+moulins
+moulmein
+moult
+Moulton
+Moulton's
+mound
+mounded
+mounds
+mount
+mountable
+mountain
+mountain's
+mountaineer
+mountaineering
+mountaineers
+mountainous
+mountainously
+mountainousness
+mountains
+mountainside
+mountainsides
+mountaintop
+mountaintop's
+mountaintops
+mountainy
+Mountbatten
+mountebank
+mountebankery
+mounted
+mounter
+Mountie
+mounting
+mountings
+mounts
+mourn
+mourned
+mourner
+mourners
+mournful
+mournfully
+mournfulness
+mourning
+mourningly
+mourns
+mouse
+mousebird
+mouser
+mouses
+mousetail
+mousetrap
+mousey
+mousier
+mousily
+mousiness
+mousing
+moussaka
+mousse
+mousseline
+Moussorgsky
+Mousterian
+mousy
+mouth
+mouthbrooder
+mouthed
+mouther
+mouthes
+mouthful
+mouthier
+mouthing
+mouthlike
+mouthpart
+mouthpiece
+mouthpieces
+mouths
+mouthwash
+mouthwatering
+mouthy
+Mouton
+movability
+movable
+movableness
+movably
+move
+moved
+moveless
+movelessly
+movelessness
+movement
+movement's
+movements
+mover
+movers
+moves
+movie
+movie's
+moviedom
+moviegoer
+moviemaker
+movies
+movietone
+moving
+movingly
+movings
+moviola
+mow
+mowburnt
+mowed
+mower
+mowers
+mowing
+mown
+mows
+moxa
+moxie
+Moyer
+Moyer's
+Mozambique
+Mozarab
+Mozart
+Mozart's
+mozzarella
+Mpc
+MPH
+Mr
+MRI
+Mridang
+Mrs
+Ms
+MSC
+MST
+Mt
+MTS
+MTV
+mu
+much
+muchness
+muciferous
+mucilage
+mucilaginous
+mucilaginously
+mucin
+muck
+muckamuck
+mucked
+mucker
+mucking
+muckle
+muckrake
+muckraker
+muckraking
+mucks
+mucksweat
+muckworm
+mucky
+mucoid
+mucopolysaccharide
+mucoprotein
+mucopurulent
+mucosa
+mucous
+mucro
+mucronate
+mucus
+mud
+mudcat
+Mudd
+Mudd's
+mudded
+muddied
+muddier
+muddily
+muddiness
+mudding
+muddle
+muddled
+muddlehead
+muddleheaded
+muddleheadedness
+muddleheads
+muddler
+muddlers
+muddles
+muddling
+muddy
+muddying
+mudfish
+mudguard
+mudhole
+mudhole's
+mudholes
+mudir
+mudlark
+mudpack
+mudra
+muds
+mudsill
+mudskipper
+mudskippers
+mudsling
+mudslinger
+mudslingers
+mudslinging
+mudstone
+mudstones
+Mueller
+Mueller's
+Muenster
+muenster
+muesli
+muezzin
+muff
+muff's
+muffin
+muffin's
+muffins
+muffle
+muffled
+muffler
+mufflers
+muffles
+muffling
+muffs
+mufti
+muftis
+mufulira
+mug
+mug's
+mugabe
+mugged
+mugger
+muggers
+muggier
+muggily
+mugginess
+mugging
+muggings
+muggins
+muggy
+mugho
+mugs
+mugwort
+mugwump
+muhammad
+Muhammad
+muhammadan
+Muharram
+Muir
+mujik
+Mukden
+Mukden's
+mukluk
+mulatto
+mulattoes
+mulattos
+mulberries
+mulberry
+mulberry's
+mulch
+mulched
+mulches
+mulching
+Mulciber
+mulct
+muldoon
+mule
+mule's
+mules
+muleta
+muleteer
+muley
+mulga
+mulhouse
+muliebrity
+muling
+mulish
+mulishly
+mulishness
+mulki
+mull
+mullah
+mullein
+mullen
+muller
+mullet
+mullets
+mulley
+mulligan
+Mulligan's
+mulligatawny
+mulliken
+mulling
+mullion
+mullite
+mullock
+mulloway
+multan
+multangular
+multeity
+multi
+multiaperture
+Multibus
+Multibus's
+multicavity
+multicellular
+multicellularity
+multichannel
+multichip
+multicide
+multicollector
+multicollinearity
+multicolor
+multicolor's
+multicolored
+multicolors
+multicolumn
+multicompletion
+multicomponent
+multicomputer
+multicomputer's
+multicomputers
+multicoupler
+Multics
+multicycle
+multideck
+multidimensional
+multidimensionality
+multidisciplinary
+multidrop
+multielectrode
+multiengine
+multifaceted
+multifactorial
+multifactrially
+multifarious
+multifariously
+multifariousness
+multifibered
+multifibered's
+multifibereds
+multifid
+multifigure
+multifile
+multiflora
+multifoil
+multifold
+multifoliate
+multiform
+multiformity
+multifunctioned
+multigravida
+multihop
+multihued
+multihull
+multihulls
+multikey
+multikeys
+multilane
+multilaned
+multilateral
+multilateralist
+multilateralists
+multilaterally
+multilayer
+multilayered
+multilayers
+multilevel
+multileveled
+multilingual
+multilingualism
+multilingualist
+multilingually
+multimedia
+multimegaton
+multimembered
+multimeter
+multimeter's
+multimeters
+multimillionaire
+multinational
+multinomial
+multinuclear
+multinucleate
+multinucleated
+multipacket
+multipactor
+multipara
+multiparous
+multipartite
+multiped
+multiphase
+multiphasic
+multiphastic
+multiplane
+multiple
+multiple's
+multiplepoinding
+multiples
+multiplet
+multiplets
+multiplex
+multiplexed
+multiplexer
+multiplexers
+multiplexes
+multiplexing
+multiplexor
+multiplexor's
+multiplexors
+multipliable
+multiplicable
+multiplicand
+multiplicand's
+multiplicands
+multiplicate
+multiplicates
+multiplication
+multiplications
+multiplicative
+multiplicatively
+multiplicatives
+multiplicity
+multiplied
+multiplier
+multipliers
+multiplies
+multiply
+multiplying
+multipolar
+multipolarity
+multiprocess
+multiprocessing
+multiprocessor
+multiprocessor's
+multiprocessors
+multiprogram
+multiprogrammed
+multiprogramming
+multiprogrammings
+multipronged
+multipunch
+multipunched
+multipurpose
+multiracial
+multiracialism
+multireel
+multirole
+multiscreen
+multisectoral
+multisegment
+multispectral
+multistage
+multistatic
+multistorey
+multistory
+multisubject
+multisyllabic
+multitasking
+multitude
+multitude's
+multitudes
+multitudinous
+multitudinously
+multitudinousness
+multiuser
+multivalence
+multivalent
+multivalued
+multivariable
+multivariate
+multiversity
+multivibrator
+multivocal
+multivolume
+multivolumed
+multiway
+multiword
+multure
+mum
+mumble
+mumbled
+mumbler
+mumblers
+mumbles
+mumbling
+mumblings
+mumbo
+mumchance
+Mumford
+mummer
+mummery
+mummies
+mummification
+mummifications
+mummified
+mummify
+mumming
+mummy
+mummy's
+mump
+mumper
+mumps
+Munch
+munch
+munched
+muncher
+munches
+munching
+Muncie
+Munda
+mundane
+mundanely
+mundaneness
+Mundt
+mundt
+mung
+munga
+munge
+munged
+munger
+mungers
+munges
+munging
+mungings
+mungo
+Munich
+municipal
+municipalities
+municipality
+municipality's
+municipalization
+municipalization's
+municipalizations
+municipalize
+municipalized
+municipalizer
+municipalizers
+municipalizes
+municipalizing
+municipally
+munificence
+munificent
+munificently
+muniment
+muniments
+munist
+munition
+munitions
+munnion
+munro
+munroe
+Munroe
+munsell
+Munsey
+Munsey's
+Munson
+munster
+munt
+muntin
+muntjac
+muntz
+muon
+Muong
+Muong's
+muonic
+murage
+mural
+muralist
+murals
+murasaki
+murat
+murcia
+Murdabad
+murder
+murdered
+murderee
+murderer
+murderers
+murderess
+murdering
+murderous
+murderously
+murderousness
+murders
+Murdoch
+mure
+murex
+muriate
+muriatic
+muricate
+Muriel
+Murillo
+murine
+murk
+murkier
+murkily
+murkiness
+murky
+murman
+Murmansk
+murmur
+murmured
+murmurer
+murmuring
+murmurous
+murmurously
+murmurs
+Murphy
+murra
+murrain
+Murray
+murre
+murrelet
+murrey
+murrhine
+Murrow
+murrow
+murrumbidgee
+murther
+musaceous
+Musca
+muscadel
+muscadine
+muscae
+muscarine
+Muscat
+muscatel
+muscid
+muscle
+muscled
+muscleman
+musclemen
+muscles
+muscling
+muscly
+muscovado
+muscovite
+muscovites
+Muscovy
+muscular
+muscularity
+muscularize
+muscularizes
+muscularly
+musculature
+musculoskeletal
+muse
+mused
+musee
+museology
+muser
+muses
+musette
+musettes
+museum
+museum's
+museumize
+museumizes
+museums
+mush
+musher
+mushier
+mushily
+mushiness
+mushroom
+mushroomed
+mushrooming
+mushrooms
+mushy
+music
+musical
+musicale
+musicality
+musicalization
+musicalization's
+musicalizations
+musicalize
+musicalizes
+musically
+musicals
+musician
+musicianly
+musicians
+musicianship
+musicological
+musicologist
+musicologists
+musicology
+musics
+musil
+musing
+musingly
+musings
+musjid
+musk
+muskeg
+Muskegon
+muskellunge
+musket
+musket's
+musketeer
+musketry
+muskets
+Muskhogean
+muskie
+muskier
+muskies
+muskiness
+muskmelon
+muskox
+muskoxen
+muskrat
+muskrat's
+muskrats
+musks
+musky
+Muslim
+Muslim's
+Muslims
+muslin
+muso
+musquash
+muss
+mussed
+mussel
+mussel's
+mussels
+musses
+musset
+mussier
+mussily
+mussiness
+mussing
+Mussolini
+Mussolini's
+Mussolinis
+Mussorgsky
+Mussorgsky's
+Mussulman
+mussy
+must
+must've
+mustache
+mustached
+mustaches
+mustachio
+mustachioed
+mustachios
+mustafa
+mustang
+mustangs
+mustard
+mustards
+mustee
+musteline
+muster
+mustered
+mustering
+musters
+musth
+mustier
+mustily
+mustiness
+mustn't
+musts
+musty
+mutability
+mutable
+mutableness
+mutably
+mutafacient
+mutagen
+mutagenesis
+mutagenic
+mutagenically
+mutagenicity
+mutandis
+mutant
+mutants
+mutase
+mutate
+mutated
+mutates
+mutating
+mutation
+mutational
+mutationally
+mutations
+mutatis
+mutative
+mutator
+mutators
+mutch
+mutchkin
+mute
+muted
+mutedly
+mutely
+muteness
+muter
+mutes
+mutest
+Muti
+muticous
+mutilate
+mutilated
+mutilates
+mutilating
+mutilation
+mutilations
+mutilator
+mutine
+mutined
+mutineer
+muting
+mutinies
+mutining
+mutinous
+mutinously
+mutinousness
+mutiny
+mutiny's
+mutism
+mutsuhito
+mutt
+mutter
+muttered
+mutterer
+mutterers
+muttering
+mutters
+mutton
+muttonchops
+muttonhead
+muttony
+muttra
+mutual
+mutualism
+mutualist
+mutualistic
+mutuality
+mutualization
+mutualization's
+mutualizations
+mutualize
+mutualized
+mutualizes
+mutualizing
+mutually
+mutuel
+mutule
+muumuu
+Muzak
+Muzo
+Muzo's
+muzorewa
+muzz
+muzzier
+muzzily
+muzziness
+muzzle
+muzzle's
+muzzled
+muzzler
+muzzles
+muzzling
+muzzy
+MVS
+MVT
+Mwalimu
+Mweru
+my
+myalgia
+myalism
+myall
+myasthenia
+mycelium
+Mycenae
+Mycenaean
+mycetoma
+mycetozoan
+mycin
+mycobacteria
+Mycobacterium
+mycology
+mycoplasma
+mycorrhiza
+mycosis
+mycostatin
+mycotic
+mydriasis
+mydriatic
+myel
+myelencephalon
+myelin
+myeline
+myelinization
+myelinization's
+myelinizations
+myelitis
+myeloid
+myeloma
+myers
+myiasis
+mylar
+mylonite
+myna
+mynah
+Mynheer
+myocardial
+myocardiograph
+myocarditis
+myocardium
+myofibril
+myogenic
+myoglobin
+myograph
+myology
+myoma
+myope
+myopia
+myopic
+myopically
+myosin
+myosotis
+myotic
+myotome
+myotonia
+Myra
+Myra's
+myriad
+myriameter
+myriameter's
+myriameters
+myriapod
+Myrica
+myriopod
+myristate
+myrmecological
+myrmecology
+myrmecophagous
+myrmecophile
+Myrmidon
+myrobalan
+Myron
+myrrh
+myrtaceous
+myrtle
+myself
+mysia
+Mysore
+mystagogue
+mystagogy
+mysteries
+mysterious
+mysteriously
+mysteriousness
+mystery
+mystery's
+mystic
+mystic's
+mystical
+mystically
+mysticism
+mysticisms
+mysticize
+mysticizes
+mystics
+mystification
+mystified
+mystifier
+mystifies
+mystify
+mystifying
+mystifyingly
+mystique
+myth
+myth's
+mythes
+mythic
+mythical
+mythically
+mythicization
+mythicize
+mythicized
+mythicizer
+mythicizers
+mythicizes
+mythicizing
+mythize
+mythizes
+mythmaker
+mythmaking
+mythographer
+mythographers
+mythography
+mythologer
+mythologic
+mythological
+mythologically
+mythologies
+mythologist
+mythologization
+mythologize
+mythologized
+mythologizer
+mythologizes
+mythologizing
+mythology
+mythology's
+mythomania
+mythomaniac
+mythopoeia
+mythopoeic
+mythopoetic
+mythopoetical
+mythos
+myths
+mytilene
+myxoedema
+myxoma
+myxomatosis
+myxomycete
+myxovirus
+mzee
+mzungu
+n's
+NAACP
+Naafi
+nab
+Nabataean
+nabbed
+nabbing
+nabis
+Nabisco
+nabla
+nablas
+nablus
+nabob
+Nabokov
+Nabonidus
+naboth
+nacelle
+NaCl
+nacre
+nacreous
+Nadia
+Nadine
+Nadine's
+nadir
+nae
+naevus
+nag
+nag's
+Naga
+Nagaland
+Nagana
+Nagano
+Nagari
+Nagasaki
+nagged
+nagger
+nagging
+naggingly
+nagor
+Nagoya
+Nagoya's
+Nagpur
+nags
+Nagy
+Nagy's
+Nagyszeben
+naha
+Nahuatl
+Nahum
+naiad
+nail
+nailbrush
+nailed
+nailer
+nailfile
+nailhead
+nailing
+nails
+nainsook
+Nair
+Nair's
+naira
+nairn
+Nairobi
+naissant
+naive
+naively
+naiveness
+naiver
+naivete
+naivety
+nakamura
+Nakamura
+Nakayama
+naked
+nakedize
+nakedizes
+nakedly
+nakedness
+naker
+nakhichevan
+nakoma
+Nakoma
+nakuru
+nalchik
+nalgo
+Nama
+namable
+namangan
+Namaqualand
+namas
+name
+name's
+nameable
+named
+nameless
+namelessly
+namelessness
+namelist
+namelists
+namely
+namen
+nameplate
+nameplates
+namer
+namers
+names
+namesake
+namesake's
+namesakes
+nametape
+namhoi
+Namibia
+naming
+namur
+Nan
+Nana
+nanak
+nanchang
+Nancy
+Nancy's
+nanda
+Nanette
+nanga
+nankeen
+Nanking
+nannies
+nanning
+nanny
+nanogram
+nanograms
+nanometer
+nanometers
+nanometric
+Nanook
+nanook
+nanoplankton
+nanosecond
+nanoseconds
+Nansen
+nanterre
+nantes
+Nantucket
+nantung
+Naomi
+nap
+nap's
+napalm
+nape
+napery
+napes
+naphtali
+naphtha
+naphthalene
+naphthalenic
+naphthene
+naphthenic
+naphthol
+naphthyl
+Napier
+Napierian
+napiform
+napkin
+napkin's
+napkins
+Naples
+napless
+Napoleon
+Napoleonic
+Napoleonize
+Napoleonizes
+Napoli
+nappa
+napped
+napper
+nappier
+nappies
+napping
+nappy
+Napravnik
+naps
+nara
+Narayanganj
+narbada
+Narbonne
+Narbonne's
+narc
+narceine
+narcism
+narcissi
+narcissism
+narcissist
+narcissistic
+narcissus
+narcissuses
+narcist
+narcoanalysis
+narcolepsy
+narcoleptic
+narcos
+narcosis
+narcosynthesis
+narcotic
+narcotically
+narcotics
+narcotism
+narcotization
+narcotize
+narcotized
+narcotizes
+narcotizing
+nardoo
+nares
+narial
+nark
+narmada
+Narraganset
+Narragansett
+Narragansett's
+narrate
+narrated
+narrates
+narrating
+narration
+narrational
+narrations
+narrative
+narrative's
+narratively
+narratives
+narrator
+narrators
+narrow
+narrowed
+narrower
+narrowest
+narrowing
+narrowingness
+narrowly
+narrowminded
+narrowness
+narrows
+narthex
+narva
+narvik
+narwal
+narwhal
+narwhal's
+narwhals
+nary
+NASA
+nasal
+nasality
+nasalization
+nasalization's
+nasalizations
+nasalize
+nasalized
+nasalizes
+nasalizing
+nasally
+nascence
+nascency
+nascent
+naseberry
+naseby
+Nash
+nashe
+nasho
+Nashua
+Nashville
+nasion
+nasofrontal
+nasopharynx
+Nassau
+nasser
+nastase
+nastic
+nastier
+nasties
+nastiest
+nastily
+nastiness
+nasturtium
+nasty
+Nat
+natal
+Natalie
+Natalie's
+natalist
+natality
+natant
+natation
+natations
+natatorial
+natatorium
+natatory
+natch
+Natchez
+nate
+Nate
+Nate's
+nates
+Nathan
+Nathanael
+Nathaniel
+natheless
+nation
+nation's
+national
+nationalism
+nationalisms
+nationalist
+nationalist's
+nationalistic
+nationalistically
+nationalists
+nationalities
+nationality
+nationality's
+nationalization
+nationalization's
+nationalizations
+nationalize
+nationalized
+nationalizer
+nationalizers
+nationalizes
+nationalizing
+nationally
+nationals
+nationhood
+nations
+nationwide
+native
+natively
+nativeness
+natives
+nativism
+nativist
+nativistic
+nativity
+NATO
+natrium
+natrolite
+natron
+natsopa
+natter
+natterjack
+nattier
+nattily
+nattiness
+natty
+natural
+naturalism
+naturalist
+naturalistic
+naturalistically
+naturalization
+naturalization's
+naturalizations
+naturalize
+naturalized
+naturalizer
+naturalizers
+naturalizes
+naturalizing
+naturally
+naturalness
+naturals
+naturam
+nature
+nature's
+natured
+natures
+naturism
+naturize
+naturizes
+naturopath
+naturopathy
+nauch
+naucratis
+naught
+naught's
+naughtier
+naughtily
+naughtiness
+naughts
+naughty
+naumachia
+nauplius
+naur
+Nauru
+nausea
+nauseant
+nauseas
+nauseate
+nauseated
+nauseates
+nauseating
+nauseatingly
+nauseous
+nauseously
+nauseousness
+nauseum
+naut
+nautch
+nautical
+nautically
+nautiloid
+nautilus
+navaho
+Navaho
+Navajo
+naval
+navally
+navar
+navarin
+navarino
+navarre
+Navassa
+nave
+navel
+navels
+naves
+navew
+navicert
+navicular
+navies
+navigability
+navigable
+navigableness
+navigably
+navigate
+navigated
+navigates
+navigating
+navigation
+navigational
+navigationally
+navigations
+navigator
+navigator's
+navigators
+navona
+Navona
+navratilova
+navtas
+navvy
+navy
+navy's
+naw
+nawab
+naxalite
+naxos
+nay
+Nayarit
+Nazarene
+Nazareth
+Nazarite
+naze
+Nazi
+Nazi's
+nazification
+nazifications
+nazified
+nazifies
+nazify
+nazifying
+Nazis
+Nazism
+NBC
+NBS
+NC
+NCAA
+NCAR
+NCC
+NCO
+NCR
+nd
+ndola
+NE
+neagh
+Neal
+Neal's
+Neanderthal
+neap
+Neapolitan
+near
+nearby
+Nearctic
+neared
+nearer
+nearest
+nearing
+nearly
+nearness
+nears
+nearside
+nearsighted
+nearsightedly
+nearsightedness
+neat
+neaten
+neater
+neatest
+neath
+neatly
+neatness
+neats
+neb
+nebbish
+Neblett
+nebo
+Nebraska
+Nebraska's
+Nebraskan
+Nebraskan's
+nebuchadnezzar
+Nebuchadnezzar
+Nebuchadnezzar's
+nebula
+nebulae
+nebular
+nebularization
+nebularization's
+nebularizations
+nebularize
+nebularizes
+nebulization
+nebulizations
+nebulize
+nebulized
+nebulizer
+nebulizes
+nebulizing
+nebulosity
+nebulous
+nebulously
+nebulousness
+necessaries
+necessarily
+necessary
+necessitarian
+necessitarianism
+necessitate
+necessitated
+necessitates
+necessitating
+necessitation
+necessitations
+necessities
+necessitous
+necessitously
+necessitousness
+necessity
+neck
+neckar
+neckband
+neckcloth
+necked
+necker
+neckerchief
+necking
+necklace
+necklace's
+necklaces
+neckline
+neckpiece
+necks
+necktie
+necktie's
+neckties
+neckwear
+necrobiosis
+necrolatry
+necrological
+necrologist
+necrologists
+necrology
+necromancer
+necromancers
+necromancy
+necromania
+necromantic
+necromantically
+necrophagia
+necrophagous
+necrophagy
+necrophilia
+necrophilic
+necrophilism
+necrophobia
+necropolis
+necropsy
+necrose
+necroses
+necrosis
+necrotic
+necrotize
+necrotized
+necrotizes
+necrotizing
+necrotomy
+nectar
+nectareous
+nectaries
+nectarine
+nectarize
+nectarizes
+nectarous
+nectary
+Ned
+Ned's
+neddy
+Nederland
+nee
+need
+needed
+needer
+needful
+needfully
+needfulness
+Needham
+needier
+neediness
+needing
+needle
+needlecord
+needlecraft
+needled
+needlefish
+needleful
+needlelike
+needlepoint
+needler
+needlers
+needles
+needless
+needlessly
+needlessness
+needlewoman
+needlewomen
+needlework
+needleworker
+needling
+needly
+needn't
+needs
+needy
+neep
+nefarious
+nefariously
+nefariousness
+nefertiti
+Neff
+Neff's
+negate
+negated
+negater
+negates
+negating
+negation
+negational
+negations
+negative
+negatived
+negatively
+negativeness
+negatives
+negativing
+negativism
+negativisms
+negativist
+negativistic
+negativists
+negativity
+negaton
+negator
+negators
+negatron
+negev
+neglect
+neglected
+neglecter
+neglectful
+neglectfully
+neglectfulness
+neglecting
+neglects
+negligee
+negligees
+negligence
+negligent
+negligently
+negligibility
+negligible
+negligibly
+negotiability
+negotiable
+negotiant
+negotiate
+negotiated
+negotiates
+negotiating
+negotiation
+negotiations
+negotiator
+negotiators
+negotiatory
+Negress
+negresses
+negrillo
+Negritic
+Negrito
+negritude
+Negro
+Negro's
+Negroes
+negroid
+Negroization
+Negroization's
+Negroizations
+Negroize
+Negroizes
+Negrophil
+negrophile
+negrophilism
+Negrophobe
+negropont
+negros
+Negus
+Nehemiah
+Nehru
+Nehru's
+neigh
+neighbor
+neighbor's
+neighbored
+neighborer
+neighborer's
+neighborers
+neighborhood
+neighborhood's
+neighborhoods
+neighboring
+neighborings
+neighborless
+neighborlesses
+neighborlike
+neighborlike's
+neighborlikes
+neighborliness
+neighborly
+neighbors
+neighborship
+neighborship's
+neighborships
+Neil
+Neil's
+neisse
+neither
+Nejd
+nek
+Nekrasov
+nekton
+Nell
+Nell's
+Nellie
+Nellie's
+Nelly
+Nelsen
+Nelsen's
+Nelson
+nelson
+neman
+nemathelminth
+nematic
+nematicidal
+nematicide
+nematocyst
+nematode
+nematodes
+Nembutal
+nemea
+Nemean
+nemertean
+nemery
+nemeses
+Nemesia
+nemesis
+nemophila
+nene
+neo
+neoanthropic
+neoarsphenamine
+Neocene
+neoclassic
+neoclassical
+neoclassicism
+neoclassicist
+neocolonialism
+neoconservative
+neocortex
+neocosmic
+neodymium
+neofascism
+Neogaea
+Neogene
+neogenesis
+neogenetic
+neoglycolipid
+neoglycolipids
+neoimpressionism
+neoliberalism
+neolith
+neolithic
+neological
+neologism
+neologism's
+neologisms
+neologistic
+neologization
+neologize
+neologized
+neologizes
+neologizing
+neology
+neomycin
+neon
+neonatal
+neonatally
+neonate
+neoned
+neoorthodox
+neoorthodoxy
+neophyte
+neophytes
+neoplasia
+neoplasm
+neoplasms
+neoplastic
+neoplasticism
+neoplasticist
+neoplasticists
+neoplasty
+neoprene
+neoscholasticism
+neostigmine
+neotenic
+neoteny
+neoteric
+Neotropical
+neotype
+Neozoic
+Nepal
+Nepal's
+Nepali
+nepenthe
+nepenthean
+neper
+nephanalysis
+nepheline
+nephelinic
+nephelinite
+nephelinitic
+nephelite
+nephelometer
+nephelometer's
+nephelometers
+nephelometric
+nephelometry
+nephew
+nephew's
+nephews
+nephogram
+nephograph
+nephology
+nephometer
+nephometer's
+nephometers
+nephoscope
+nephralgia
+nephrectomy
+nephridium
+nephrite
+nephritic
+nephritis
+nephron
+nephrosis
+nephrotomy
+nepos
+nepotism
+nepotist
+nepotistic
+nepotists
+Neptune
+Neptunian
+neptunium
+neral
+nereid
+Nereis
+nereus
+Neri
+neritic
+nernst
+Nero
+neroli
+neruda
+nerva
+nerval
+nervate
+nervation
+nervations
+nerve
+nerve's
+nerved
+nerveless
+nervelessly
+nervelessness
+nerves
+nervier
+nervine
+nerviness
+nerving
+nervosity
+nervous
+nervously
+nervousness
+nervure
+nervy
+nescience
+nesciences
+nescient
+nesh
+Ness
+nesselrode
+nessus
+nest
+nested
+nester
+nesting
+nestle
+nestled
+nestler
+nestles
+nestling
+Nestor
+Nestorianism
+nestorius
+nests
+net
+net's
+netaji
+netball
+nether
+Netherlands
+nethermost
+netherworld
+netkeeper
+netless
+netlike
+neto
+nets
+netsuke
+nett
+netted
+netter
+netting
+nettle
+nettled
+nettles
+nettlesome
+nettling
+netty
+network
+network's
+networked
+networking
+networks
+Neubrandenburg
+Neumann
+neumatic
+neume
+neural
+neuralgia
+neuralgic
+neurally
+neurasthenia
+neurasthenic
+neurectomy
+neurilemma
+neuritic
+neuritis
+neuro
+neuroanatomic
+neuroanatomy
+neuroanotomy
+neurobiology
+neurobiology's
+neuroblast
+neuroblastoma
+neurochemistry
+neurocirculatory
+neurocoele
+neuroendocrine
+neuroepithelial
+neurofibril
+neurofibrillary
+neurogenic
+neurogenically
+neuroglia
+neuroglial
+neurogram
+neurohypophysis
+neurolemma
+neurological
+neurologically
+neurologist
+neurologists
+neurology
+neuroma
+neuromuscular
+neuron
+neuron's
+neuronal
+neuronic
+neurons
+neuropath
+neuropathic
+neuropathically
+neuropathology
+neuropathy
+neurophysiology
+neuropsychiatric
+neuropsychiatry
+neuropteran
+neuropterous
+neuroses
+neurosis
+neurospora
+neurosurgeon
+neurosurgery
+neurosurgical
+neurotic
+neurotically
+neuroticism
+neuroticize
+neuroticizes
+neurotomy
+neurotoxic
+neurotoxicity
+neurotoxin
+neurotransmitter
+neurotransmitters
+neurotropic
+neurovascular
+neusatz
+neuss
+neustria
+neuter
+neutercane
+neutered
+neuterer
+neuterers
+neutering
+neuterings
+neuters
+neutral
+neutralism
+neutralist
+neutralistic
+neutralists
+neutralities
+neutrality
+neutralization
+neutralization's
+neutralizations
+neutralize
+neutralized
+neutralizer
+neutralizers
+neutralizes
+neutralizing
+neutrally
+neutralness
+neutrals
+neutretto
+neutrino
+neutrino's
+neutrinos
+neutron
+neutronium
+neutrons
+neutrophil
+neutrophile
+neutrophilic
+neutrophilis
+neutrophils
+Neva
+Neva's
+Nevada
+neve
+never
+nevermore
+nevers
+nevertheless
+Neville
+Nevins
+Nevis
+Nevski
+nevus
+New
+new
+Newark
+Newbold
+Newbold's
+newborn
+newborns
+Newburg
+Newbury
+newbury
+Newburyport
+Newcastle
+Newcombe
+Newcomen
+newcomer
+newcomer's
+newcomers
+newel
+Newell
+newer
+newest
+newfangled
+newfangledness
+Newfie
+newfound
+newfoundland
+Newgate
+Newham
+Newhaven
+newish
+newline
+newline's
+newlines
+newly
+newlywed
+newlyweds
+Newman
+Newmanize
+Newmanizes
+Newmarket
+newness
+Newport
+news
+NeWS
+newsagent
+newsagents
+newsboy
+newsboys
+newsbreak
+newscast
+newscaster
+newscasters
+newscasting
+newscasts
+newsgroup
+newsgroup's
+newsgroups
+newshawk
+newsier
+newsiness
+newsless
+newsletter
+newsletter's
+newsletters
+newsmagazine
+newsman
+newsmen
+newsmonger
+newspaper
+newspaper's
+newspaperized
+newspaperized's
+newspaperizeds
+newspaperman
+newspapermen
+newspapers
+newspeak
+newsprint
+newsreel
+newsroom
+newsstand
+Newsweek
+Newsweekly
+newswire
+newsworthiness
+newsworthy
+newsy
+newt
+newton
+Newton
+Newton's
+Newtonabbey
+Newtonian
+Newtown
+newts
+next
+nexus
+nexuses
+ney
+nez
+NFS
+Ngaio
+Ngaliema
+NGK
+Ngoma
+Nguni
+Nguyen
+Nguyen's
+Ngwee
+NH
+Nha
+niacin
+Niagara
+Niamey
+Niamey's
+nib
+nibble
+nibbled
+nibbler
+nibblers
+nibbles
+nibbling
+Nibelung
+nibelungenlied
+niblick
+nibs
+Nicaea
+Nicaean
+Nicaragua
+niccolo
+Niccolo
+nice
+Nice
+nicely
+Nicene
+niceness
+nicer
+nicest
+niceties
+nicety
+niche
+niches
+niching
+Nicholas
+Nicholls
+Nichols
+Nicholson
+nichrome
+Nicias
+nick
+nicked
+nickel
+nickel's
+nickeled
+nickelic
+nickeliferous
+nickeling
+nickelization
+nickelization's
+nickelizations
+nickelize
+nickelizes
+nickelodeon
+nickelous
+nickels
+nicker
+nickered
+nickering
+nicking
+Nicklaus
+nicklaus
+nicknack
+nickname
+nicknamed
+nicknameless
+nicknamer
+nicknames
+nickpoint
+nicks
+Nicobar
+Nicodemus
+Nicol
+Nicola
+Nicolai
+Nicolesco
+Nicolson
+Nicosia
+Nicosia's
+Nicotiana
+nicotinamide
+nicotine
+nicotinic
+nicotinism
+nicotinize
+nicotinizes
+nictheroy
+nictitate
+nictitating
+nidaros
+niddering
+nide
+nidicolous
+nidification
+nidifugous
+nidify
+nidus
+niebuhr
+niece
+niece's
+nieces
+Niedersachsen
+niello
+Nielsen
+Nielson
+niemen
+Niersteiner
+Nietszche
+Nietzsche
+nietzschean
+nieve
+niff
+Niflheim
+niftier
+nifties
+nifty
+Niger
+Niger's
+Nigeria
+Nigerian
+niggard
+niggardliness
+niggardly
+nigger
+niggle
+niggled
+niggler
+niggles
+niggling
+nigglingly
+nigh
+night
+night's
+nightcap
+nightclothes
+nightclub
+nightclubber
+nightclubs
+nightdress
+nighted
+nighters
+nightfall
+nightglow
+nightgown
+nighthawk
+nightie
+nighties
+nightingale
+nightingale's
+nightingales
+nightingalize
+nightingalizes
+nightlife
+nightlong
+nightly
+nightmare
+nightmare's
+nightmares
+nightmarish
+nightmarishly
+nightrider
+nights
+nightshade
+nightshirt
+nightside
+nightspot
+nightstand
+nightstick
+nighttide
+nighttime
+nightwalker
+nightwear
+nighty
+nigrescent
+nigrify
+nigritude
+NIH
+nihilianism
+nihilism
+nihilisms
+nihilist
+nihilistic
+nihilistically
+nihility
+nihon
+niigata
+nijinsky
+Nijinsky
+Nijmegen
+Nikaria
+Nike
+Nikko
+Nikko's
+Nikolai
+Nikolai's
+Nikolainkaupunki
+Nikolayev
+nil
+Nile
+nilgai
+nilgiri
+nill
+nilly
+nilmanifold
+Nilotic
+nilpotent
+Nilsen
+Nilsson
+nim
+nimble
+nimbleness
+nimbler
+nimblest
+nimblewit
+nimbly
+nimbostratus
+nimbus
+nimbused
+nimbuses
+NIMH
+nimiety
+Nimitz
+nimming
+nimonic
+Nimrod
+Nimwegen
+Nina
+nincompoop
+nincompoopery
+nine
+ninebark
+ninefold
+ninepin
+ninepins
+nines
+nineteen
+nineteens
+nineteenth
+nineties
+ninetieth
+ninety
+ninetyfold
+Nineveh
+Ningpo
+ningsia
+ninnies
+ninny
+ninnyhammer
+Ninon
+ninth
+ninus
+Niobe
+niobic
+niobium
+niobous
+niort
+nip
+nipa
+nipigon
+Nipissing
+nipped
+nipper
+nippers
+nippier
+nippily
+nippiness
+nipping
+nippingly
+nipple
+nipples
+nipplewort
+Nippon
+Nipponize
+Nipponizes
+nippur
+nippy
+nips
+nirvana
+nisei
+Nisei
+niseis
+Nishapur
+nishinomiya
+Nissen
+nisus
+nit
+nite
+niter
+nitid
+niton
+nitpick
+nitramine
+nitrate
+nitrated
+nitrates
+nitrating
+nitration
+nitrations
+nitrator
+nitric
+nitride
+nitriding
+nitridization
+nitridization's
+nitridizations
+nitridize
+nitridizes
+nitrification
+nitrifications
+nitrify
+nitrile
+nitrite
+nitro
+nitrobacteria
+nitrobenzene
+nitrocellulose
+nitrocellulosic
+nitrochloroform
+nitrofuran
+nitrogen
+nitrogenization
+nitrogenization's
+nitrogenizations
+nitrogenize
+nitrogenized
+nitrogenizes
+nitrogenizing
+nitrogenous
+nitroglycerin
+nitroglycerine
+nitrohydrochloric
+nitrometer
+nitromethane
+nitroparaffin
+nitros
+nitrosamine
+nitroso
+nitrosoamine
+nitrosyl
+nitrous
+nitty
+nitwit
+nitwitted
+Niue
+nival
+nivation
+niven
+niveous
+nivernais
+nix
+nixed
+nixer
+nixes
+nixie
+nixing
+Nixon
+Nizam
+nizhni
+NJ
+njord
+nkomo
+nkrumah
+NM
+nm
+NMR
+NNE
+NNW
+no
+NOAA
+Noachian
+Noah
+nob
+nobbier
+nobble
+nobbled
+nobbling
+nobbut
+nobby
+Nobel
+nobelium
+nobiliary
+nobilities
+nobility
+noble
+Noble
+nobleman
+noblemen
+nobleness
+nobler
+nobles
+noblesse
+noblest
+noblewoman
+nobly
+nobodies
+nobody
+nobody's
+nocent
+noces
+nociceptive
+nock
+nocking
+noctambulation
+noctambulism
+noctambulist
+Noctiluca
+noctilucent
+noctuid
+noctule
+nocturn
+nocturnal
+nocturnally
+nocturne
+nocuous
+nocuously
+nod
+nod's
+nodal
+nodality
+nodally
+nodded
+nodder
+noddies
+nodding
+noddle
+noddy
+node
+node's
+nodes
+nodi
+nodical
+nodose
+nodosity
+nods
+nodular
+nodulation
+nodule
+nodules
+nodulize
+nodulizes
+nodus
+Noel
+noes
+noesis
+Noetherian
+noetic
+nofretete
+nog
+noggin
+nogging
+Noguchi
+noh
+nohow
+noil
+noise
+noised
+noiseless
+noiselessly
+noisemake
+noisemaker
+noisemakers
+noisemaking
+noises
+noisette
+noisier
+noisily
+noisiness
+noising
+noisome
+noisomely
+noisomeness
+noisy
+Nolan
+Nolan's
+nolde
+Noll
+Noll's
+nolle
+nolo
+noma
+nomad
+nomadic
+nomadism
+nomadization
+nomadization's
+nomadizations
+nomadize
+nomadized
+nomadizes
+nomadizing
+nomads
+nomarch
+nomarchy
+nombles
+nombril
+nome
+nomen
+nomenclator
+nomenclatorial
+nomenclatural
+nomenclature
+nomenclatures
+nomic
+nomina
+nominal
+nominalism
+nominalist
+nominalistic
+nominalize
+nominalized
+nominalizes
+nominalizing
+nominally
+nominate
+nominated
+nominates
+nominating
+nomination
+nomination's
+nominations
+nominative
+nominatively
+nominator
+nominators
+nominee
+nominees
+nomism
+nomocracy
+nomogram
+nomogram's
+nomograms
+nomograph
+nomographer
+nomographic
+nomographically
+nomographies
+nomography
+nomological
+nomology
+nomothetic
+non
+nonacid
+nonacknowledgment
+nonacknowledgment's
+nonacknowledgments
+nonactive
+nonadjacent
+nonage
+nonagenarian
+nonaggression
+nonagon
+nonagricultural
+nonaligned
+nonallelic
+nonanalytic
+nonanesthetized
+nonanoic
+nonapostatizing
+nonapostatizing's
+nonapostatizings
+nonappearance
+nonbank
+nonblank
+nonblanks
+nonblocking
+nonbook
+nonbusiness
+noncalcareous
+noncanonization
+noncanonization's
+noncanonizations
+noncarbohydrate
+noncartelized
+noncartelized's
+noncartelizeds
+noncatechizable
+noncatechizable's
+noncatechizables
+noncausal
+nonce
+nonchalance
+nonchalant
+nonchalantly
+nonchalantness
+noncharitable
+noncivilized
+noncivilized's
+noncivilizeds
+noncoloring
+noncoloring's
+noncolorings
+noncom
+noncombatant
+noncommissioned
+noncommittal
+noncommittally
+noncompliance
+noncomputable
+nonconcurrence
+nonconcurrency
+noncondensing
+nonconducting
+nonconductor
+nonconductors
+nonconfidence
+nonconform
+nonconformable
+nonconformably
+nonconformance
+nonconformer
+nonconforming
+nonconformism
+nonconformist
+nonconformists
+nonconformity
+nonconservative
+noncontiguous
+noncontributory
+noncooperation
+noncooperationist
+noncooperative
+noncooperator
+noncritical
+noncrossing
+noncrystallizable
+noncrystallizable's
+noncrystallizables
+noncrystallized
+noncrystallized's
+noncrystallizeds
+noncrystallizing
+noncrystallizing's
+noncrystallizings
+noncurrent
+noncyclic
+nondecreasing
+nondeductibility
+nondeductible
+nondefense
+nondefense's
+nondefenses
+nondeforming
+nondegenerate
+nondemobilization
+nondemobilization's
+nondemobilizations
+nondemocratic
+nondescript
+nondescriptly
+nondestructive
+nondestructively
+nondeterminacy
+nondeterminate
+nondeterminately
+nondeterminism
+nondeterministic
+nondeterministically
+nondialyzing
+nondialyzing's
+nondialyzings
+nondimensionalize
+nondimensionalized
+nondirected
+nondirectional
+nondirective
+nondisclosure
+nondisclosures
+nondiscriminatory
+nondisjunction
+nondisjunctional
+nondispersive
+nondistinctive
+nondivided
+nondormant
+nondramatic
+nondrying
+nondurable
+none
+noneconomic
+noneconomist
+noneffective
+nonego
+nonelectrolyte
+nonemergency
+nonempty
+nonentities
+nonentity
+nonequivalence
+nonequivalent
+nones
+nonessential
+nonesuch
+nonet
+nonetheless
+noneuclidean
+nonevent
+nonexecutable
+nonexistence
+nonexistent
+nonextensible
+nonfat
+nonfavorite
+nonfavorite's
+nonfavorites
+nonfeasance
+nonferrous
+nonfiction
+nonfictional
+nonfigurative
+nonflammable
+nonflowering
+nonfragmenting
+nonfulfillment
+nonfulfillment's
+nonfulfillments
+nonfunctional
+nong
+nongalvanized
+nongalvanized's
+nongalvanizeds
+nongelatinizing
+nongelatinizing's
+nongelatinizings
+nongovernment
+nongovernmental
+nonharmonic
+nonhierarchic
+nonhierarchical
+nonhuman
+nonhydrolyzable
+nonhydrolyzable's
+nonhydrolyzables
+nonidentical
+nonillion
+nonimmunized
+nonimmunized's
+nonimmunizeds
+nonimpact
+nonimpinging
+noninductive
+noninteger
+noninteracting
+noninterference
+nonintersecting
+nonintervention
+noninterventionist
+nonintuitive
+noninvertible
+noninverting
+noninvolvement
+nonionic
+nonionized
+nonionized's
+nonionizeds
+nonionizing
+nonionizing's
+nonionizings
+nonjoinder
+nonjuring
+nonjuror
+nonlinear
+nonlinearities
+nonlinearity
+nonlinearity's
+nonlinearly
+nonlinguist
+nonlinguistic
+nonliterary
+nonliterate
+nonloaded
+nonlocal
+nonlocalized
+nonlocalized's
+nonlocalizeds
+nonmagical
+nonmagnetizable
+nonmagnetizable's
+nonmagnetizables
+nonmatching
+nonmetal
+nonmetallic
+nonmoral
+nonmultiple
+nonnegative
+nonnitrogenized
+nonnitrogenized's
+nonnitrogenizeds
+nonnucleated
+nonnumeric
+nono
+nonobjective
+nonobjectivism
+nonobjectivist
+nonobjectivity
+nonobservance
+nonoccurrence
+nonogenarian
+nonorganization
+nonorganization's
+nonorganizations
+nonorthogonal
+nonorthogonality
+nonowner
+nonowners
+nonoxidizable
+nonoxidizable's
+nonoxidizables
+nonoxidizing
+nonoxidizing's
+nonoxidizings
+nonparallel
+nonparametric
+nonparametrical
+nonparametrics
+nonpareil
+nonparlor
+nonparlor's
+nonparlors
+nonparous
+nonparticipant
+nonparticipating
+nonparticipation
+nonpartisan
+nonpartisanship
+nonparty
+nonpast
+nonpaternity
+nonpathogenic
+nonpayment
+nonpenalized
+nonpenalized's
+nonpenalizeds
+nonperishable
+nonpermanent
+nonpersonal
+nonperturbing
+nonphosphorized
+nonphosphorized's
+nonphosphorizeds
+nonplus
+nonpluses
+nonpoisonous
+nonpolar
+nonpolarizable
+nonpolarizable's
+nonpolarizables
+nonpolarized
+nonpolarizing
+nonpolarizing's
+nonpolarizings
+nonpolitical
+nonporous
+nonpositive
+nonpossession
+nonpossessor
+nonprescription
+nonprint
+nonprinting
+nonprocedural
+nonprocedurally
+nonproducer
+nonproductive
+nonproductively
+nonproductiveness
+nonprofessional
+nonprofessionally
+nonprofit
+nonprofitable
+nonprogrammable
+nonprogrammer
+nonprogressive
+nonproliferation
+nonpros
+nonprossed
+nonprossing
+nonprotein
+nonracial
+nonrandom
+nonrationalized
+nonrationalized's
+nonrationalizeds
+nonreactive
+nonreader
+nonrealistic
+nonrealization
+nonrealization's
+nonrealizations
+nonreclosing
+nonrecognized
+nonrecognized's
+nonrecognizeds
+nonrecording
+nonrecursive
+nonrecursively
+nonreducing
+nonredundant
+nonregulation
+nonreimbursable
+nonrelativistic
+nonrelevance
+nonrelevant
+nonreligious
+nonremovable
+nonrenewable
+nonrepresentational
+nonrepresentationalism
+nonrepresentative
+nonresidence
+nonresidency
+nonresident
+nonresidential
+nonresistance
+nonresistant
+nonrespondent
+nonrespondents
+nonresponse
+nonrestraint
+nonrestricted
+nonrestrictive
+nonretractable
+nonreturnable
+nonrigid
+nonscheduled
+nonschematized
+nonschematized's
+nonschematizeds
+nonscientific
+nonseasonal
+nonsecretor
+nonsectarian
+nonsegregated
+nonsegregation
+nonsense
+nonsensical
+nonsensically
+nonsensicalness
+nonsensitized
+nonsensitized's
+nonsensitizeds
+nonsequenced
+nonsignificant
+nonsignificantly
+nonsingular
+nonskid
+nonslip
+nonsmoker
+nonsmokers
+nonsocial
+nonspecialist
+nonspecialist's
+nonspecialists
+nonspecialized
+nonspecialized's
+nonspecializeds
+nonspecific
+nonsporting
+nonstandard
+nonstandardized
+nonstandardized's
+nonstandardizeds
+nonstarter
+nonstative
+nonstick
+nonstop
+nonstriated
+nonstylized
+nonstylized's
+nonstylizeds
+nonsuch
+nonsuit
+nonsupervisory
+nonsupport
+nonsyllabic
+nonsympathizer
+nonsympathizer's
+nonsympathizers
+nonsynchronous
+nonsynthesized
+nonsynthesized's
+nonsynthesizeds
+nontechnical
+nontechnically
+nontemporal
+nontemporizing
+nontemporizing's
+nontemporizings
+nontenure
+nonterminal
+nonterminal's
+nonterminals
+nonterminating
+nontermination
+nontrivial
+nonuniform
+nonunion
+nonunionism
+nonuse
+nonuser
+nonutilized
+nonutilized's
+nonutilizeds
+nonverbal
+nonverbally
+nonveteran
+nonveterans
+nonviable
+nonviolence
+nonviolent
+nonviolently
+nonvisualized
+nonvisualized's
+nonvisualizeds
+nonvocal
+nonvolatile
+nonvolatilized
+nonvolatilized's
+nonvolatilizeds
+nonvolunteer
+nonvolunteers
+nonvoter
+nonvoting
+nonvulcanizable
+nonvulcanizable's
+nonvulcanizables
+nonwhite
+nonworker
+nonzero
+noodle
+noodled
+noodles
+noodling
+nook
+nook's
+nooks
+noon
+noonday
+nooning
+noons
+noontide
+noontime
+noordbrabant
+Noordholland
+noose
+nooses
+noosing
+nopal
+nope
+nor
+Nora
+Nora's
+noradrenalin
+noradrenaline
+nord
+nordau
+Nordhoff
+Nordhoff's
+Nordic
+Nordkyn
+Nordstrom
+Nordstrom's
+Noreen
+Noreen's
+norepinephrine
+Norfolk
+norge
+noria
+noricum
+norite
+nork
+Norland
+norm
+norm's
+Norma
+normal
+normalcy
+normality
+normalizable
+normalization
+normalization's
+normalizations
+normalize
+normalized
+normalizer
+normalizers
+normalizes
+normalizing
+normally
+normals
+Norman
+Normandy
+Normanization
+Normanization's
+Normanizations
+Normanize
+Normanized
+Normanizer
+Normanizers
+Normanizes
+Normanizing
+Normanton
+normative
+normatively
+normativeness
+normed
+normotensive
+norms
+Norn
+norodom
+Norris
+Norristown
+Norse
+Norseman
+north
+north's
+Northallerton
+Northampton
+Northamptonshire
+northbound
+Northcliffe
+Northcountryman
+northeast
+northeaster
+northeasterly
+northeastern
+northeasternmost
+northeastward
+northeastwards
+norther
+northerly
+northern
+northerner
+northerners
+northernize
+northernizes
+northernly
+northernmost
+northers
+Northfield
+northing
+northland
+Northman
+Northmen
+northmost
+Northrop
+Northrop's
+Northrup
+Northrup's
+norths
+Northumberland
+Northumbria
+Northumbrian
+Northumbrians
+northward
+northwards
+northwest
+northwester
+northwesterly
+northwestern
+northwestward
+northwestwards
+Northwich
+Norton
+Norwalk
+Norway
+Norwegian
+Norwich
+nose
+nosebag
+nosebag's
+nosebags
+noseband
+nosebleed
+nosebleed's
+nosebleeds
+nosed
+nosegay
+nosepiece
+noses
+nosey
+noseying
+nosh
+nosher
+nosier
+nosily
+nosiness
+nosing
+nosize
+nosography
+nosologic
+nosological
+nosologically
+nosology
+nostalgia
+nostalgic
+nostalgically
+Nostoc
+nostology
+Nostradamus
+Nostrand
+Nostrand's
+nostril
+nostril's
+nostrils
+nostrum
+nosy
+not
+nota
+notability
+notable
+notableness
+notables
+notably
+notarial
+notarially
+notarius
+notarization
+notarizations
+notarize
+notarized
+notarizes
+notarizing
+notary
+notate
+notated
+notates
+notating
+notation
+notation's
+notational
+notationally
+notations
+notative
+notch
+notched
+notches
+notching
+note
+notebook
+notebook's
+notebooks
+notecase
+noted
+notedly
+notedness
+noteless
+notelet
+notepaper
+noter
+notes
+noteworthily
+noteworthiness
+noteworthy
+nothing
+nothingize
+nothingizes
+nothingness
+nothings
+notice
+noticeable
+noticeably
+noticeboard
+noticeboards
+noticed
+notices
+noticing
+notifiable
+notification
+notifications
+notified
+notifier
+notifiers
+notifies
+notify
+notifying
+noting
+notion
+notional
+notionality
+notionally
+notions
+notitia
+notochord
+notocord
+Notogaea
+notoriety
+notorious
+notoriously
+notoriousness
+Notornis
+Nototherium
+Notour
+Notre
+Nottingham
+Nottinghamshire
+notum
+Notus
+notwithstanding
+nougat
+noumenon
+noun
+noun's
+nouncing
+nounize
+nounizes
+nouns
+nourish
+nourished
+nourisher
+nourishes
+nourishing
+nourishment
+nous
+nouveau
+nouvelle
+Nov
+nova
+nova's
+novaculite
+novae
+Novak
+Novak's
+novalis
+novara
+novas
+novation
+novaya
+novel
+novel's
+novelese
+novelette
+novelettish
+novelist
+novelist's
+novelistic
+novelists
+novelization
+novelization's
+novelizations
+novelize
+novelized
+novelizer
+novelizers
+novelizes
+novelizing
+novella
+novelle
+novello
+novels
+novelties
+novelty
+novelty's
+November
+November's
+Novembers
+novemdecillion
+novena
+novercal
+Novgorod
+novice
+novice's
+novices
+novitiate
+novitiates
+novocaine
+Novokuznetsk
+Novosibirsk
+Novosibirsk's
+now
+nowaday
+nowadays
+noway
+noways
+nowel
+nowhence
+nowhere
+nowheres
+nowhither
+nowise
+nows
+nowt
+nox
+noxious
+noxiously
+noxiousness
+noyade
+noyau
+noyes
+Noyes
+noyon
+nozzle
+nozzles
+NRC
+nroff
+nroff's
+NSF
+nth
+NTIS
+NTP
+nu
+nuance
+nuanced
+nuances
+nub
+Nuba
+nubbin
+nubble
+nubbles
+nubbly
+nubecula
+Nubia
+Nubia's
+Nubian
+nubians
+nubile
+nubility
+Nucci
+nucellar
+nucelli
+nucellus
+nucha
+nuchal
+nucleant
+nuclear
+nuclease
+nucleate
+nucleated
+nucleation
+nucleator
+nuclei
+nucleic
+nuclein
+nucleocapsid
+nucleolar
+nucleoli
+nucleolus
+nucleon
+nucleon's
+nucleonic
+nucleonics
+nucleons
+nucleophile
+nucleophilic
+nucleophilically
+nucleophilicity
+nucleoplasm
+nucleoplasmatic
+nucleoplasmic
+nucleoprotein
+nucleoside
+nucleosynthesis
+nucleotidase
+nucleotide
+nucleotide's
+nucleotides
+nucleus
+nucleuses
+nuclide
+nuclidic
+nuddy
+nude
+nudely
+nudeness
+nuder
+nudes
+nudest
+nudge
+nudged
+nudger
+nudges
+nudging
+nudibranch
+nudicaul
+nudism
+nudist
+nudists
+nudity
+nudum
+nuevo
+Nuffield
+nugatory
+Nugent
+nugent
+nuggar
+nugget
+nuggets
+nuggety
+nuisance
+nuisance's
+nuisances
+nuissance
+nuke
+nukus
+null
+nullah
+nullarbor
+nulled
+nullification
+nullificationist
+nullifidian
+nullified
+nullifier
+nullifiers
+nullifies
+nullify
+nullifying
+nullipara
+nulliparous
+nullity
+nulls
+Nullstellensatz
+numantia
+numb
+numbat
+numbed
+number
+numberable
+numbered
+numberer
+numbering
+numberless
+numberplate
+numbers
+numbfish
+numbing
+numbingly
+numbles
+numbly
+numbness
+numbs
+numbskull
+numdah
+numen
+numerable
+numeral
+numeral's
+numerally
+numerals
+numerary
+numerate
+numerated
+numerates
+numerating
+numeration
+numerations
+numerator
+numerator's
+numerators
+numeric
+numerical
+numerically
+numerics
+numerological
+numerology
+numerous
+numerously
+numerousness
+numia
+numidia
+numinous
+numis
+numismatic
+numismatically
+numismatics
+numismatist
+nummary
+nummular
+nummulite
+numnah
+numskull
+nun
+nun's
+nunatak
+nunc
+nunciation
+nunciature
+nuncio
+nuncle
+nuncupate
+nuncupation
+nuncupative
+Nuneaton
+nunes
+nunhood
+nunnery
+nunny
+nuns
+nuovo
+Nupe
+nuptial
+nuptiality
+nuptialize
+nuptializes
+nuptials
+Nuremberg
+nureyev
+nuri
+nuristan
+nurmi
+nurse
+nurse's
+nursed
+nursemaid
+nurser
+nurseries
+nursery
+nursery's
+nurserymaid
+nurseryman
+nurses
+nursing
+nursling
+nurtural
+nurturant
+nurture
+nurtured
+nurturer
+nurtures
+nurturing
+nusa
+nut
+nut's
+nutant
+nutate
+nutated
+nutates
+nutating
+nutation
+nutational
+nutbrown
+nutcase
+nutcrack
+nutcracker
+nutgall
+nuthatch
+nuthouse
+nutlet
+nutlike
+nutmeg
+nutria
+nutrient
+nutrients
+nutriment
+nutrition
+nutrition's
+nutritional
+nutritionally
+nutritionist
+nutritionists
+nutritious
+nutritiously
+nutritiousness
+nutritive
+nutritively
+nuts
+nutshell
+nutted
+nutter
+nuttier
+nuttiness
+nutting
+nutty
+nutwood
+nux
+nuzzle
+nuzzled
+nuzzles
+nuzzling
+NV
+NW
+NY
+nyala
+Nyanja
+nyanza
+nyasa
+Nyasaland
+NYC
+nyctaginaceous
+nyctalopia
+nyctinasty
+nyctitropism
+nyctophobia
+nye
+nyeman
+nyerere
+nylghau
+nylon
+nylons
+nymph
+nympha
+nymphaeaceous
+nymphal
+nymphalid
+nymphet
+nymphette
+nympho
+nympholepsy
+nympholept
+nymphomania
+nymphomaniac
+nymphomaniacal
+nymphomaniacs
+nymphs
+Nynorsk
+Nyoro
+Nyquist
+Nyquist's
+NYSE
+nystagmic
+nystagmus
+nystatin
+NYT
+NYU
+nyx
+O'Brien
+O'Brien's
+o'clock
+O'Clock
+O'Connell
+O'Connell's
+O'Connor
+O'Connor's
+O'Dell
+O'Dell's
+O'Donnell
+O'Donnell's
+O'Dwyer
+O'Dwyer's
+o'er
+O'Er
+O'Hare
+O'Hare's
+O'Leary
+O'Leary's
+O'Neill
+O'Neill's
+o's
+O'Shea
+O'Shea's
+O'Sullivan
+O'Sullivan's
+oaf
+oafish
+oafishly
+oafishness
+oafs
+Oahu
+oak
+oaken
+Oakham
+Oakland
+Oakley
+Oakmont
+oaks
+oakum
+Oakville
+oakwood
+oar
+oar's
+oared
+oarfish
+oaring
+oarlock
+oars
+oarsman
+oarsmanship
+oases
+oasis
+oast
+oat
+oatcake
+oatcake's
+oatcakes
+oaten
+oater
+oates
+oath
+oaths
+oatmeal
+oats
+Oaxaca
+oba
+Obadiah
+oban
+obasanjo
+obbligato
+obconic
+obcordate
+obduracy
+obdurate
+obdurately
+obdurateness
+obeah
+obedience
+obediences
+obedient
+obedientiary
+obediently
+obeisance
+obeisant
+obeisantly
+obelisk
+obelize
+obelized
+obelizes
+obelizing
+Oberammergau
+Oberhausen
+Oberland
+Oberlin
+Oberon
+obese
+obesity
+obey
+obeyed
+obeyer
+obeying
+obeys
+obfuscate
+obfuscated
+obfuscater
+obfuscates
+obfuscating
+obfuscation
+obfuscations
+obfuscatory
+obi
+obit
+obiter
+obituaries
+obituary
+object
+object's
+objected
+objectification
+objectifications
+objectified
+objectifies
+objectify
+objectifying
+objecting
+objection
+objection's
+objectionable
+objectionableness
+objectionably
+objections
+objective
+objectively
+objectiveness
+objectives
+objectivism
+objectivist
+objectivistic
+objectivity
+objectivize
+objectivizes
+objectization
+objectization's
+objectizations
+objectize
+objectizes
+objectless
+objectlessness
+objector
+objector's
+objectors
+objects
+objurgate
+objurgated
+objurgates
+objurgating
+objurgation
+objurgations
+objurgatory
+oblanceolate
+oblast
+oblate
+oblately
+oblateness
+oblation
+oblations
+obligate
+obligated
+obligately
+obligates
+obligating
+obligation
+obligation's
+obligational
+obligations
+obligato
+obligator
+obligatorily
+obligatory
+oblige
+obliged
+obligee
+obliger
+obliges
+obliging
+obligingly
+obligingness
+obligor
+obligors
+oblique
+obliquely
+obliqueness
+obliquity
+obliterate
+obliterated
+obliterates
+obliterating
+obliteration
+obliterations
+obliterative
+obliteratively
+obliterator
+obliviated
+obliviates
+obliviating
+oblivion
+oblivionize
+oblivionizes
+oblivions
+oblivious
+obliviously
+obliviousness
+oblong
+oblongatal
+oblongated
+oblongish
+oblongly
+oblongness
+obloquious
+obloquy
+obmutescence
+obnoxious
+obnoxiously
+obnoxiousness
+obnubilate
+obnubilated
+obnubilates
+obnubilating
+obnubilation
+obnubilations
+oboe
+oboes
+oboist
+obolus
+obote
+obovate
+obovoid
+Obraztsova
+obreption
+obscene
+obscenely
+obscenities
+obscenity
+obscurant
+obscurantic
+obscurantism
+obscurantist
+obscuration
+obscurations
+obscure
+obscured
+obscurely
+obscureness
+obscurer
+obscures
+obscuring
+obscurities
+obscurity
+obscurum
+obsecrate
+obsequent
+obsequies
+obsequious
+obsequiously
+obsequiousness
+obsequy
+observable
+observably
+observance
+observance's
+observances
+observant
+observantly
+observation
+observation's
+observational
+observationally
+observations
+observatories
+observatory
+observe
+observed
+observer
+observers
+observes
+observing
+observingly
+obsess
+obsessed
+obsesses
+obsession
+obsession's
+obsessional
+obsessionally
+obsessions
+obsessive
+obsessively
+obsessiveness
+obsidian
+obsolesce
+obsolescence
+obsolescent
+obsolescently
+obsolete
+obsoleted
+obsoletely
+obsoleteness
+obsoletes
+obsoleting
+obstacle
+obstacle's
+obstacles
+obstetric
+obstetrical
+obstetrically
+obstetrician
+obstetrician's
+obstetricians
+obstetrics
+obstinacy
+obstinate
+obstinately
+obstinateness
+obstipation
+obstreperous
+obstreperously
+obstreperousness
+obstruct
+obstructed
+obstructer
+obstructing
+obstruction
+obstruction's
+obstructionism
+obstructionist
+obstructionistic
+obstructions
+obstructive
+obstructively
+obstructiveness
+obstructor
+obstructs
+obstruent
+obtain
+obtainability
+obtainable
+obtainably
+obtained
+obtainer
+obtaining
+obtainment
+obtains
+obtect
+obtected
+obtest
+obtestation
+obtrude
+obtruded
+obtruder
+obtrudes
+obtruding
+obtrusion
+obtrusive
+obtrusively
+obtrusiveness
+obtund
+obturate
+obturated
+obturates
+obturating
+obturation
+obturator
+obtuse
+obtusely
+obtuseness
+obtuser
+obtusest
+obverse
+obversely
+obvert
+obviate
+obviated
+obviates
+obviating
+obviation
+obviations
+obvious
+obviously
+obviousness
+obvolute
+oca
+ocarina
+Occam
+Occam's
+occas
+occasion
+occasional
+occasionalism
+occasionally
+occasioned
+occasioning
+occasionings
+occasions
+occident
+occidental
+Occidentalization
+Occidentalization's
+Occidentalizations
+Occidentalize
+Occidentalized
+Occidentalizes
+Occidentalizing
+occidentally
+occipital
+occipitally
+occiput
+occlude
+occluded
+occludent
+occludes
+occluding
+occlusal
+occlusion
+occlusion's
+occlusions
+occlusive
+occular
+occult
+occultate
+occultation
+occultations
+occulter
+occultism
+occultist
+occultly
+occupancies
+occupancy
+occupant
+occupant's
+occupants
+occupation
+occupation's
+occupational
+occupationally
+occupations
+occupied
+occupier
+occupiers
+occupies
+occupy
+occupying
+occur
+occurred
+occurrence
+occurrence's
+occurrences
+occurrent
+occurring
+occurs
+ocean
+ocean's
+oceana
+oceanarium
+oceanfront
+oceangoing
+Oceania
+oceanic
+oceanid
+oceanographer
+oceanographer's
+oceanographers
+oceanographic
+oceanographical
+oceanographically
+oceanography
+oceanologic
+oceanological
+oceanologically
+oceanologist
+oceanology
+oceans
+oceanside
+oceanus
+ocellar
+ocellate
+ocellated
+ocellation
+ocelli
+ocellus
+ocelot
+och
+ocher
+ocher's
+ocherous
+ochers
+ochlocracy
+ochlocrat
+ochlocratic
+ochlocratical
+ochlophobia
+Ochman
+ochone
+ochrea
+ockeghem
+ocker
+Ockham
+ocode
+oconomowoc
+Oconomowoc
+ocotillo
+Ocrea
+Oct
+octachord
+octad
+octadecyl
+octagon
+octagonal
+octagonally
+octagons
+octahedra
+octahedral
+octahedrally
+octahedrite
+octahedron
+octal
+octals
+octamerous
+octameter
+octameter's
+octameters
+octandrious
+octane
+octanedioic
+octangle
+octangular
+Octans
+octant
+octant's
+octants
+octarchy
+octaroon
+octavalent
+octave
+octaves
+Octavia
+Octavian
+octavo
+octennial
+octet
+octile
+octillion
+October
+October's
+Octobers
+Octobrist
+octocentenary
+octodecillion
+octodecimo
+octogenarian
+octonary
+octoploid
+octoploidy
+octopod
+octopodan
+octopodous
+octopus
+octoroon
+octosyllabic
+octosyllable
+octroi
+octu
+octuple
+octylphenylether
+ocular
+ocularist
+oculist
+oculomotor
+odalisque
+odd
+oddball
+oddball's
+oddballs
+odder
+oddest
+oddfellow
+oddities
+oddity
+oddity's
+oddly
+oddment
+oddness
+odds
+ode
+ode's
+odea
+oded
+Odelsting
+odense
+oder
+Oderberg
+Oderberg's
+Oderbergs
+odes
+Odessa
+odeum
+odic
+odilo
+Odin
+odious
+odiously
+odiousness
+odium
+odoacer
+odograph
+odometer
+odometer's
+odometers
+odontalgia
+odontoblast
+Odontoglossum
+odontograph
+odontoid
+odontologst
+odontology
+odontophore
+odor
+odor's
+odorant
+odored
+odorful
+odoriferous
+odoriferously
+odoriferousness
+odorize
+odorized
+odorizer
+odorizes
+odorizing
+odorless
+odorlesses
+odorous
+odorously
+odorousness
+odors
+odovacar
+odra
+odyl
+Odysseus
+odyssey
+oecology
+Oedipal
+oedipal
+Oedipally
+Oedipus
+oeillade
+OEM
+OEM's
+OEMS
+oenology
+oenomel
+oenone
+oersted
+oestrin
+oestrogen
+oestrone
+oestrous
+oestrus
+oeuvre
+oeuvres
+of
+ofay
+off
+offa
+offal
+offaly
+offbeat
+offcast
+offcut
+offcuts
+Offenbach
+offend
+offended
+offender
+offenders
+offending
+offends
+offense
+offense's
+offenseless
+offenselesses
+offenselessly
+offenses
+offensive
+offensively
+offensiveness
+offensives
+offer
+offered
+offerer
+offerers
+offering
+offerings
+offers
+offertories
+offertory
+offhand
+offhanded
+offhandedly
+offhandedness
+office
+office's
+officeholder
+officeholders
+officemate
+officemates
+officer
+officer's
+officered
+officers
+offices
+official
+official's
+officialdom
+officialese
+officialism
+officialization
+officialization's
+officializations
+officialize
+officializes
+officially
+officials
+officiant
+officiary
+officiate
+officiated
+officiates
+officiating
+officiation
+officiations
+officinal
+officio
+officious
+officiously
+officiousness
+offing
+offish
+offishly
+offishness
+offline
+offload
+offloaded
+offloading
+offloads
+offprint
+offprints
+offramp
+offs
+offsaddle
+offscour
+offscouring
+offscreen
+offset
+offset's
+offsets
+offsetting
+offshoot
+offshore
+offside
+offspring
+offsprings
+offstage
+oft
+often
+oftener
+oftentimes
+ofttimes
+ogaden
+ogasawara
+ogbomosho
+Ogden
+ogdoad
+ogee
+ogeographically
+Ogham
+ogive
+ogle
+ogled
+ogler
+ogles
+Oglethorpe
+ogling
+Ogpu
+ogre
+ogreish
+ogress
+ogun
+Ogygian
+oh
+Ohio
+Ohio's
+ohm
+ohmage
+ohmic
+ohmically
+ohmmeter
+ohmmeter's
+ohmmeters
+ohms
+oho
+ohs
+Oidium
+oil
+oilbird
+oilcan
+oilcloth
+oilcup
+oiled
+oiler
+oilers
+oilfield
+oilfired
+oilier
+oiliest
+oilily
+oiliness
+oiling
+oilman
+oilmen
+oils
+oilseed
+oilseeds
+oilskin
+oilstone
+oily
+oink
+ointment
+ointments
+Oireachtas
+oise
+Oistrakh
+oita
+Ojibwa
+OK
+OK's
+oka
+okamoto
+Okamoto
+okapi
+okavango
+okay
+okay's
+Okayama
+okays
+oke
+Okeechobee
+Okefenokee
+Okhotsk
+Okie
+Okinawa
+Oklahoma
+Oklahoma's
+Oklahoman
+Oklahoman's
+okra
+okta
+Olaf
+olasticism
+Olav
+Olav's
+Olcott
+old
+Oldcastle
+olden
+Oldenburg
+older
+oldest
+oldfangled
+Oldham
+oldie
+oldies
+oldish
+oldness
+Oldsmobile
+oldster
+oldsters
+Olduvai
+oldwife
+oldy
+oleaceous
+oleaginous
+oleaginously
+oleaginousness
+oleander
+oleanders
+oleaster
+oleate
+olecranon
+olefin
+olefine
+olefinic
+Oleg
+oleg
+oleic
+olein
+oleograph
+oleomargarine
+oleophilic
+oleophobic
+oleoresin
+oleum
+olfaction
+olfactions
+olfactive
+olfactology
+olfactometer
+olfactometer's
+olfactometers
+olfactorily
+olfactory
+Olga
+olibanum
+olid
+oligarch
+oligarchic
+oligarchical
+oligarchy
+Oligocene
+oligochaete
+oligoclase
+oligomer
+oligomer's
+oligomers
+oligopolistic
+oligopoly
+oligopsony
+oligosaccharide
+oligosaccharide's
+oligosaccharides
+oligotrophic
+oliguria
+Olin
+Olin's
+olio
+oliphant
+olivaceous
+olivary
+olive
+olive's
+Oliveira
+olivenite
+oliver
+Oliver's
+Olivers
+olives
+Olivetti
+Olivia
+Olivier
+olivier
+Olivier's
+olivine
+olla
+olm
+ology
+olomouc
+oloroso
+Olsen
+Olson
+olszyn
+Olympia
+olympiad
+Olympian
+Olympianize
+Olympianizes
+Olympic
+Olympics
+Olympus
+Olynthus
+om
+omadhaun
+omagh
+Omaha
+Oman
+omar
+omasum
+omayyad
+ombre
+ombudsman
+ombudsman's
+ombudsperson
+omdurman
+omega
+omegas
+omelet
+omelets
+omelette
+omen
+omen's
+omens
+omental
+omentum
+omer
+omicron
+ominous
+ominously
+ominousness
+omissible
+omission
+omission's
+omissions
+omit
+omits
+omitted
+omitting
+ommatidial
+ommatidium
+ommatophore
+Ommiad
+ommission
+omni
+omnibus
+omnicompetent
+omnidirectional
+omnifarious
+omnifariously
+omnifariousness
+omnific
+omnificence
+omnificences
+omnificent
+omnify
+omnipotence
+omnipotency
+omnipotent
+omnipotently
+omnipresence
+omnipresent
+omnipresently
+omnirange
+omniscience
+omnisciency
+omniscient
+omnisciently
+omnist
+omnivore
+omnivorous
+omnivorously
+omnivorousness
+omophagia
+omphale
+omphalos
+Omsk
+omuta
+on
+onager
+onagraceous
+onanism
+onanistic
+onassis
+once
+oncer
+oncogene
+oncogene's
+oncogenes
+oncogenic
+oncology
+oncoming
+ondes
+ondo
+ondograph
+ondometer
+one
+one's
+onefold
+onega
+Oneida
+oneiric
+oneirocritic
+oneirocritical
+oneirocritically
+oneiromancy
+oneness
+oner
+onerous
+onerously
+onerousness
+ones
+oneself
+onetime
+oneupmanship
+ongoing
+onion
+onionized
+onionized's
+onionizeds
+onions
+onionskin
+onitsha
+onium
+online
+onliness
+onload
+onlook
+onlooker
+onlookers
+onlooking
+only
+onomasiology
+onomastic
+onomastics
+onomatology
+onomatopoeia
+onomatopoeia's
+onomatopoeic
+Onondaga
+Onondaga's
+onrush
+onrushing
+ons
+onset
+onset's
+onsets
+onsetting
+onshore
+onside
+onslaught
+onslaughts
+onstage
+Ontario
+ontically
+onto
+ontogenesis
+ontogenetic
+ontogenetically
+ontogeny
+ontological
+ontologically
+ontologist
+ontology
+onus
+onward
+onwards
+onychophoran
+onymous
+onyx
+oocyte
+oodles
+oof
+oogamy
+oogenesis
+oogonium
+ooh
+oolite
+oology
+oolong
+oomiak
+oompah
+oomph
+oont
+oophorectomy
+oophoritis
+oophyte
+oops
+oose
+oosperm
+oosphere
+oospore
+oostende
+ootheca
+ootid
+ooze
+oozed
+oozes
+oozier
+oozing
+oozy
+op
+opacities
+opacity
+opah
+opal
+opal's
+opaled
+opalesce
+opalescence
+opalescences
+opalescent
+opalescently
+opaline
+opalize
+opalizes
+opals
+opaque
+opaquely
+opaqueness
+opcode
+opcode's
+opcodes
+ope
+OPEC
+Opel
+open
+openability
+openable
+opencast
+opened
+openendedness
+opener
+openers
+openest
+openhanded
+openhandedly
+openhandedness
+openhearted
+openheartedly
+openheartedness
+opening
+opening's
+openings
+openly
+openmouthed
+openmouthedly
+openmouthedness
+openness
+opens
+openwork
+opera
+opera's
+operability
+operable
+operably
+operand
+operand's
+operandi
+operands
+operant
+operantly
+operants
+operas
+operate
+operated
+operates
+operatic
+operatically
+operating
+operation
+operational
+operationalism
+operationalist
+operationalistic
+operationalization
+operationalizations
+operationalize
+operationalized
+operationally
+operationism
+operationist
+operations
+operative
+operatively
+operativeness
+operatives
+operatize
+operatizes
+operator
+operator's
+operators
+opercular
+operculate
+operculated
+operculum
+operetta
+operettist
+operon
+operose
+ophicleide
+ophidian
+ophiology
+ophiophagous
+ophir
+ophite
+ophitic
+Ophiuchus
+Ophiucus
+ophthalmia
+ophthalmic
+ophthalmitis
+ophthalmologic
+ophthalmologically
+ophthalmologist
+ophthalmology
+ophthalmoscope
+ophthalmoscopic
+ophthalmoscopical
+ophthalmoscopy
+opiate
+opiates
+opine
+opined
+opines
+oping
+opining
+opinion
+opinion's
+opinionate
+opinionated
+opinionatedly
+opinionatedness
+opinionative
+opinionatively
+opinionativeness
+opinions
+opisometer
+opisthobranch
+opisthognathous
+opium
+opiumism
+Oporto
+opossum
+Oppenheimer
+Oppens
+oppidan
+oppilate
+opponent
+opponent's
+opponents
+opportune
+opportunely
+opportunism
+opportunist
+opportunistic
+opportunistically
+opportunities
+opportunity
+opportunity's
+opposability
+opposable
+oppose
+opposed
+opposeless
+opposer
+opposes
+opposing
+opposite
+oppositely
+oppositeness
+opposites
+opposition
+oppositional
+oppositions
+oppress
+oppressed
+oppresses
+oppressing
+oppression
+oppressive
+oppressively
+oppressiveness
+oppressor
+oppressor's
+oppressors
+opprobrious
+opprobriously
+opprobriousness
+opprobrium
+oppugn
+oppugnant
+oppugner
+ops
+opsimath
+opsonic
+opsonin
+opt
+optacon
+optacons
+optative
+optatively
+opted
+opthalmic
+opthalmologic
+opthalmology
+optic
+optical
+optically
+optician
+opticians
+optics
+optima
+optimal
+optimality
+optimally
+optimism
+optimist
+optimistic
+optimistical
+optimistically
+optimists
+optimization
+optimization's
+optimizations
+optimize
+optimized
+optimizer
+optimizer's
+optimizers
+optimizes
+optimizing
+optimo
+optimum
+opting
+option
+option's
+optional
+optionality
+optionalize
+optionalizes
+optionally
+options
+optoacoustic
+optoelectronic
+optoisolate
+optokinetic
+optometer
+optometric
+optometrical
+optometrist
+optometrists
+optometry
+opts
+opulence
+opulent
+opulently
+opuntia
+opus
+opuscule
+opusculum
+opuses
+or
+or's
+ora
+orach
+orache
+oracle
+oracle's
+oracles
+oracular
+oracularity
+oracularly
+oracy
+oradea
+oral
+orality
+oralization
+oralization's
+oralizations
+oralize
+oralizes
+orally
+orals
+oran
+orange
+orange's
+orangeade
+Orangeism
+Orangeman
+orangeroot
+orangery
+oranges
+orangewood
+orangey
+orangish
+orangize
+orangizes
+orangoutan
+orangutan
+orangy
+orate
+orated
+orates
+orating
+oratio
+oration
+oration's
+orations
+orator
+orator's
+Oratorian
+oratoric
+oratorical
+oratorically
+oratories
+oratorio
+oratorios
+oratorize
+oratorizes
+orators
+oratory
+oratory's
+orb
+orbicular
+orbicularity
+orbicularly
+orbiculate
+orbiculately
+orbit
+orbital
+orbitally
+orbitals
+orbited
+orbiter
+orbiters
+orbiting
+orbits
+orc
+orca
+orca's
+Orcadian
+orcas
+orcein
+orch
+orchard
+orchard's
+orchardist
+orchardman
+orchards
+orchesis
+orchestra
+orchestra's
+orchestral
+orchestrally
+orchestras
+orchestrate
+orchestrated
+orchestrater
+orchestrates
+orchestrating
+orchestration
+orchestrational
+orchestrations
+orchestrator
+orchestre
+orchestrina
+orchid
+orchid's
+orchidaceous
+orchids
+orchil
+orchis
+orchitis
+orcinol
+orczy
+ordain
+ordained
+ordainer
+ordaining
+ordainment
+ordains
+ordeal
+ordeals
+order
+ordered
+orderer
+ordering
+orderings
+orderless
+orderlies
+orderliness
+orderly
+orders
+ordinal
+ordinance
+ordinance's
+ordinances
+ordinand
+ordinaries
+ordinarily
+ordinariness
+ordinary
+ordinate
+ordinated
+ordinates
+ordinating
+ordination
+ordinations
+ordinator
+ordinators
+ordines
+ordnance
+ordnances
+ordonnance
+Ordovician
+ordure
+ordzhonikidze
+ore
+ore's
+oread
+orectic
+oregano
+Oregon
+Oregonians
+orel
+Orenburg
+orense
+ores
+Oresteia
+Oresteia's
+Orestes
+orfe
+Orff
+orfray
+organ
+organ's
+organdie
+organdy
+organelle
+organic
+organically
+organicism
+organicist
+organics
+organism
+organism's
+organismal
+organismic
+organismically
+organisms
+organist
+organist's
+organists
+organizabilities
+organizability
+organizability's
+organizable
+organizable's
+organizables
+organization
+organization's
+organizational
+organizational's
+organizationally
+organizationals
+organizationist
+organizationist's
+organizationists
+organizations
+organize
+organized
+organizer
+organizers
+organizes
+organizing
+organogenesis
+organography
+organoleptic
+organology
+organometallic
+organon
+organotherapy
+organs
+organum
+organza
+organzine
+orgasm
+orgasmic
+orgasms
+orgastic
+orgeat
+orgiastic
+orgiastically
+orgies
+orgulous
+orgy
+orgy's
+oribi
+oriel
+orient
+orientable
+oriental
+orientalism
+orientalist
+orientalization
+orientalization's
+orientalizations
+orientalize
+orientalized
+orientalizes
+orientalizing
+orientally
+orientation
+orientation's
+orientational
+orientationally
+orientations
+oriente
+oriented
+orienteering
+orienting
+orientization
+orientization's
+orientizations
+orientize
+orientizes
+orients
+orifice
+orifice's
+orifices
+orificial
+oriflamme
+origami
+origanum
+origen
+origin
+origin's
+original
+originality
+originally
+originals
+originate
+originated
+originates
+originating
+origination
+originations
+originative
+originatively
+originator
+originator's
+originators
+origins
+Orin
+orinasal
+Orinoco
+oriole
+orioles
+Orion
+orion
+Orion's
+orismological
+orismology
+orison
+orissa
+Oriya
+orizaba
+orjonikidze
+Orkney
+Orkney's
+orkneys
+Orlando
+orle
+Orleanist
+Orleans
+Orlick
+orlon
+orlop
+Orly
+orly
+Ormandy
+Ormazd
+ormer
+ormolu
+ormuz
+ornament
+ornamental
+ornamentalize
+ornamentalizes
+ornamentally
+ornamentation
+ornamentations
+ornamented
+ornamenting
+ornaments
+ornate
+ornately
+ornateness
+orne
+orneriness
+ornery
+orney
+ornis
+ornith
+ornithic
+ornithine
+ornithischian
+ornithology
+ornithology's
+ornithomancy
+ornithopod
+ornithopter
+Ornithorhynchus
+ornithoscopy
+ornithosis
+orobanchaceous
+orogenic
+orogeny
+orographic
+orographical
+orographically
+orography
+oroide
+orometer
+Orono
+Orono's
+orontes
+orotund
+orotundity
+orozco
+orphan
+orphanage
+orphanages
+orphaned
+orphanhood
+orphaning
+orphanize
+orphanizes
+orphans
+orpharion
+Orphean
+Orpheus
+Orphic
+Orphically
+Orphism
+orphrey
+orpiment
+orpine
+Orpington
+Orr
+Orr's
+orrery
+orris
+orsini
+Orsk
+ort
+Ortega
+ortegal
+orthant
+orthicon
+ortho
+orthocenter
+orthocephalic
+orthocephalous
+orthocephaly
+orthochromatic
+orthoclase
+orthoclastic
+orthodontia
+orthodontic
+orthodontics
+orthodontist
+orthodontists
+orthodox
+orthodoxes
+orthodoxly
+orthodoxy
+orthoepic
+orthoepical
+orthoepically
+orthoepist
+orthoepy
+orthogenesis
+orthogenetic
+orthogenetically
+orthogenic
+orthognathism
+orthognathous
+orthognathy
+orthogonal
+orthogonality
+orthogonalization
+orthogonalize
+orthogonalized
+orthogonalizes
+orthogonalizing
+orthogonally
+orthograde
+orthographic
+orthographical
+orthographically
+orthographies
+orthography
+orthohydrogen
+orthonormal
+orthopedic
+orthopedically
+orthopedics
+orthopedist
+orthophosphate
+orthophosphates
+orthophosphoric
+orthophosphorous
+orthopsychiatric
+orthopsychiatrist
+orthopsychiatry
+orthopter
+orthopteran
+orthopterist
+orthopteroid
+orthopteron
+orthopterous
+orthoptic
+orthoptics
+orthorhombic
+orthoscope
+orthoscopes
+orthoscopic
+orthostichy
+orthotic
+orthotics
+orthotist
+orthotone
+orthotropic
+orthotropically
+orthotropism
+orthotropous
+ortles
+ortolan
+orts
+oruro
+Orvieto
+Orville
+Orville's
+Orwell
+Orwellian
+oryol
+oryx
+oryxes
+orzae
+OS
+OS's
+Osage
+Osaka
+Osbert
+Osborn
+Osborne
+Oscan
+Oscar
+oscillate
+oscillated
+oscillates
+oscillating
+oscillation
+oscillation's
+oscillational
+oscillations
+oscillator
+oscillator's
+oscillators
+oscillatory
+oscillogram
+oscillogram's
+oscillograms
+oscillograph
+oscillographic
+oscillographically
+oscillography
+oscilloscope
+oscilloscope's
+oscilloscopes
+oscilloscopic
+oscilloscopically
+oscine
+oscitancy
+osculant
+oscular
+osculate
+osculated
+osculates
+osculating
+osculation
+osculations
+osculatory
+osculum
+OSF
+OSF'S
+Osgood
+Osgood's
+OSHA
+Oshawa
+Oshkosh
+Oshogbo
+osier
+Osijek
+Osiris
+Oslo
+osman
+Osmanli
+osmatic
+osmeterium
+osmic
+osmious
+osmiridium
+osmium
+osmolal
+osmolality
+osmolar
+osmolarity
+osmometer
+osmometer's
+osmometers
+osmometric
+osmometry
+osmoregulation
+osmoregulatory
+osmose
+osmosed
+osmosing
+osmosis
+osmotic
+osmotically
+osmous
+osmunda
+Osnaburg
+oso
+osprey
+ospreys
+osram
+osric
+ossa
+ossein
+osseous
+osseously
+Osset
+ossetia
+Ossetic
+Ossian
+ossicle
+ossicular
+ossiculate
+ossiculated
+ossie
+ossietzky
+ossiferous
+ossification
+ossifications
+ossificatory
+ossified
+ossifrage
+ossify
+osso
+ossuary
+osteal
+osteitis
+ostend
+ostensible
+ostensibly
+ostensive
+ostensively
+ostensorium
+ostensory
+ostentation
+ostentations
+ostentatious
+ostentatiously
+ostentatiousness
+osteoarthritic
+osteoarthritis
+osteoblast
+osteoblastic
+osteoclasis
+osteoclast
+osteoclastic
+osteocyte
+osteogenesis
+osteoid
+osteological
+osteologically
+osteologist
+osteology
+osteoma
+osteomalacia
+osteomyelitis
+osteopath
+osteopathic
+osteopathically
+osteopaths
+osteopathy
+osteophyte
+osteophytic
+osteoplastic
+osteoplasty
+osteoporosis
+osteotome
+osteotomy
+ostia
+ostinato
+ostiole
+ostium
+ostler
+ostmark
+ostosis
+ostracism
+ostracizable
+ostracizable's
+ostracizables
+ostracization
+ostracization's
+ostracizations
+ostracize
+ostracized
+ostracizer
+ostracizers
+ostracizes
+ostracizing
+ostracod
+ostracoderm
+ostracon
+Ostrander
+ostrava
+ostrich
+ostrich's
+ostriches
+Ostrogoth
+ostwald
+Ostyak
+Oswald
+otalgia
+Othello
+other
+other's
+othergates
+otherguess
+otherness
+others
+otherwhere
+otherwhile
+otherwhiles
+otherwise
+otherworld
+otherworldliness
+otherworldly
+Othin
+othman
+otho
+otic
+otiose
+Otis
+otitis
+otocyst
+otolaryngology
+otology
+otoscope
+otranto
+Ott
+Ott's
+ottar
+ottava
+Ottawa
+otter
+otter's
+otterburn
+otters
+Ottley
+Otto
+Otto's
+Ottoman
+Ottomanization
+Ottomanization's
+Ottomanizations
+Ottomanize
+Ottomanizes
+otway
+ouabain
+ouachita
+Ouagadougou
+ouan
+ouananiche
+oubangui
+oubliette
+ouch
+oudh
+ouessant
+ough
+ought
+oughtn't
+oughts
+oui
+Ouija
+oujda
+oulu
+ounce
+ounces
+our
+ours
+ourself
+ourselves
+ouse
+ousel
+oust
+ousted
+ouster
+ousting
+out
+outage
+outage's
+outages
+outasight
+outback
+outbalance
+outbid
+outboard
+outboards
+outbound
+outbrave
+outbreak
+outbreak's
+outbreaks
+outbreed
+outbreeding
+outbuilding
+outburst
+outburst's
+outbursts
+outby
+outbye
+outcast
+outcast's
+outcaste
+outcasts
+outcaviled
+outcaviling
+outclamor
+outclamor's
+outclamors
+outclass
+outclassed
+outcome
+outcome's
+outcomes
+outcries
+outcrop
+outcrops
+outcross
+outcry
+outdate
+outdated
+outdatedness
+outdazzle
+outdistance
+outdistanced
+outdistancing
+outdo
+outdoor
+outdoors
+outdoorsman
+outdoorsmanship
+outdoorsy
+outdraw
+outdrew
+outed
+outer
+outercoat
+outermost
+outface
+outfall
+outfield
+outfielder
+outfielders
+outfight
+outfighting
+outfit
+outfit's
+outfits
+outfitted
+outfitter
+outfitting
+outflank
+outflanker
+outflow
+outflows
+outfoot
+outfought
+outfox
+outgas
+outgeneral
+outgeneraled
+outgiving
+outgo
+outgoes
+outgoing
+outgoingness
+outgoings
+outgrew
+outgrip
+outgrow
+outgrowing
+outgrown
+outgrows
+outgrowth
+outguess
+outgun
+outhaul
+outhouse
+outhumor
+outhumor's
+outhumored
+outhumoring
+outhumors
+outhyperbolize
+outhyperbolizes
+outing
+outing's
+outings
+outjockey
+outlabor
+outlabor's
+outlabors
+outland
+outlander
+outlanders
+outlandish
+outlandishly
+outlandishness
+outlast
+outlasts
+outlaw
+outlawed
+outlawing
+outlawry
+outlaws
+outlay
+outlay's
+outlays
+outlet
+outlet's
+outlets
+outlier
+outliers
+outline
+outlined
+outlines
+outlining
+outlist
+outlive
+outlived
+outlives
+outliving
+outlook
+outlying
+outman
+outmaneuver
+outmaneuvered
+outmaneuvering
+outmaneuvers
+outmatch
+outmatched
+outmigration
+outmode
+outmoded
+outmoding
+outmost
+outness
+outnumber
+outnumbered
+outnumbering
+outnumbers
+outpace
+outpaced
+outpatient
+outpatients
+outperform
+outperformed
+outperforming
+outperforms
+outplay
+outplayed
+outpoint
+outport
+outporter
+outpost
+outpost's
+outposts
+outpour
+outpouring
+outpourings
+outpull
+output
+output's
+outputs
+outputted
+outputting
+outrace
+outrage
+outraged
+outrageous
+outrageously
+outrageousness
+outrages
+outraging
+outrance
+outrange
+outrank
+outreach
+outride
+outrider
+outrigger
+outriggers
+outright
+outrightly
+outrival
+outrivaled
+outrivaling
+outrun
+outrunner
+outruns
+outrush
+outs
+outsavor
+outsavor's
+outsavoring
+outsavors
+outscore
+outscoring
+outsell
+outsert
+outset
+outshine
+outshone
+outshoot
+outshout
+outside
+outsider
+outsider's
+outsiderness
+outsiders
+outsight
+outsit
+outsize
+outsized
+outskirt
+outskirts
+outsleep
+outsmart
+outsmarted
+outsmarting
+outsmarts
+outsmell
+outsoar
+outsole
+outspeak
+outspeed
+outspend
+outspent
+outspin
+outsplendor
+outsplendor's
+outsplendors
+outspoken
+outspokenly
+outspokenness
+outspread
+outstand
+outstanding
+outstandingly
+outstare
+outstart
+outstate
+outstation
+outstay
+outstretch
+outstretched
+outstrip
+outstripped
+outstripping
+outstrips
+outswing
+outtake
+outtalk
+outthink
+outturn
+outtyrannize
+outtyrannizes
+outvote
+outvoted
+outvotes
+outvoting
+outward
+outwardly
+outwardness
+outwards
+outwash
+outwear
+outweigh
+outweighed
+outweighing
+outweighs
+outwit
+outwith
+outwits
+outwitted
+outwitting
+outwork
+outworn
+ouvre
+ouzel
+ouzo
+ova
+oval
+oval's
+ovalization
+ovalization's
+ovalizations
+ovalize
+ovalizes
+ovally
+ovalness
+ovals
+Ovambo
+ovarial
+ovarian
+ovariectomized
+ovariectomy
+ovaries
+ovariole
+ovariotomy
+ovaritis
+ovary
+ovary's
+ovate
+ovates
+ovation
+ovationed
+ovationing
+ovations
+oven
+oven's
+ovenbird
+ovenbirds
+ovenproof
+ovenproofed
+ovenproofing
+ovenproofs
+ovens
+ovenware
+over
+overabundance
+overabundant
+overachieve
+overachieved
+overachiever
+overachieves
+overachieving
+overact
+overaction
+overactive
+overactivity
+overage
+overaggressive
+overagonize
+overagonizes
+overall
+overall's
+overalls
+overarch
+overarching
+overarm
+overawe
+overbalance
+overbear
+overbearance
+overbearing
+overbearingly
+overbearingness
+overbid
+overbite
+overblew
+overblouse
+overblow
+overblowing
+overblown
+overblows
+overboard
+overboot
+overbought
+overbrutalize
+overbrutalizes
+overbuild
+overburden
+overburdened
+overburdening
+overburdeningly
+overburdens
+overbuy
+overcall
+overcalled
+overcalling
+overcalls
+overcame
+overcapacity
+overcapitalization
+overcapitalization's
+overcapitalizations
+overcapitalize
+overcapitalized
+overcapitalizes
+overcapitalizing
+overcareful
+overcarefully
+overcast
+overcasting
+overcautious
+overcentralization
+overcentralization's
+overcentralizations
+overcentralize
+overcentralizes
+overcerebral
+overcharge
+overcheck
+overcivilization
+overcivilization's
+overcivilizations
+overcivilize
+overcivilizes
+overclamor
+overclamor's
+overclamors
+overcloud
+overcoat
+overcoat's
+overcoating
+overcoats
+overcolor
+overcolor's
+overcolors
+overcome
+overcomer
+overcomes
+overcoming
+overcompensate
+overcompensation
+overcompensatory
+overcompetence
+overconfidence
+overconfident
+overconfidently
+overconsolidate
+overconsolidated
+overconsolidates
+overconsolidating
+overconsolidation
+overconsumption
+overcooked
+overcooled
+overcorrection
+overcriticize
+overcriticizes
+overcrop
+overcrowd
+overcrowded
+overcrowding
+overcrowds
+overcurious
+overcurrent
+overcurrents
+overdetermination
+overdetermine
+overdetermined
+overdetermines
+overdetermining
+overdevelop
+overdeveloped
+overdevelopment
+overdo
+overdoctrinize
+overdoctrinizes
+overdoing
+overdominance
+overdominant
+overdone
+overdose
+overdose's
+overdosed
+overdoses
+overdosing
+overdraft
+overdraft's
+overdrafts
+overdraw
+overdrawing
+overdrawn
+overdraws
+overdress
+overdrew
+overdrive
+overdriving
+overdue
+overdye
+overeager
+overeagerly
+overeagerness
+overeat
+overeaten
+overeater
+overeating
+overeducated
+overemotionalize
+overemotionalizes
+overemphasis
+overemphasization
+overemphasization's
+overemphasizations
+overemphasize
+overemphasized
+overemphasizer
+overemphasizers
+overemphasizes
+overemphasizing
+overestimate
+overestimated
+overestimates
+overestimating
+overestimation
+overestimations
+overet
+overexcite
+overexcited
+overexcitement
+overexploitation
+overexploited
+overexpose
+overexposure
+overextend
+overextended
+overextending
+overextends
+overextension
+overfall
+overfastidious
+overfavor
+overfavor's
+overfavorable
+overfavorable's
+overfavorables
+overfavorablies
+overfavorably
+overfavors
+overfed
+overfeed
+overfertilization
+overfill
+overfilled
+overfilling
+overfills
+overfish
+overfleshed
+overflight
+overflow
+overflowed
+overflowing
+overflown
+overflows
+overfly
+overfold
+overgarment
+overgeneralize
+overgeneralizes
+overgenerous
+overglaze
+overgraze
+overgrazing
+overground
+overgrow
+overgrown
+overgrowth
+overhand
+overhanded
+overhang
+overhanging
+overhangs
+overhaul
+overhauled
+overhauler
+overhauling
+overhaulings
+overhauls
+overhead
+overheads
+overhear
+overheard
+overhearer
+overhearing
+overhears
+overheat
+overheated
+overheating
+overheats
+overhonor
+overhonor's
+overhonors
+overhumanize
+overhumanizes
+overhype
+overhyped
+overhypes
+overhyping
+Overijssel
+overily
+overindulge
+overindulged
+overindulgence
+overindulgent
+overindustrialization
+overindustrialization's
+overindustrializations
+overindustrialize
+overindustrializes
+overing
+overissue
+overissued
+overissues
+overissuing
+overjoy
+overjoyed
+overjudgment
+overjudgment's
+overjudgments
+overkill
+overkill's
+overlabor
+overlabor's
+overlabors
+overlaid
+overland
+overlap
+overlap's
+overlapped
+overlapping
+overlaps
+overlay
+overlaying
+overlays
+overleaf
+overleap
+overlearn
+overlie
+overlive
+overload
+overloaded
+overloading
+overloads
+overlong
+overlook
+overlooked
+overlooking
+overlooks
+overlord
+overlords
+overlordship
+overloud
+overly
+overlying
+overman
+overmantel
+overmaster
+overmatch
+overmatter
+overmuch
+overnationalization
+overnationalization's
+overnationalizations
+overnice
+overnight
+overnighter
+overnighters
+overnights
+overoptimism
+overoptimist
+overoptimistic
+overoptimistically
+overpaid
+overpass
+overpay
+overpayment
+overpersuade
+overpersuasion
+overpitch
+overplay
+overplayed
+overplaying
+overplus
+overpopulate
+overpopulated
+overpopulation
+overpower
+overpowered
+overpowering
+overpoweringly
+overpowers
+overpraise
+overpressure
+overprice
+overpriced
+overprint
+overprinted
+overprinting
+overprints
+overprize
+overproduce
+overproduced
+overproduces
+overproducing
+overproduction
+overpronounce
+overproof
+overproportion
+overprotect
+overprotection
+overprotective
+overran
+overrapturize
+overrapturizes
+overrate
+overrated
+overrationalize
+overrationalizes
+overreach
+overreached
+overreacher
+overreaches
+overreact
+overreaction
+overrefine
+overrefinement
+overrepresent
+overrepresented
+overridden
+override
+overrider
+overrides
+overriding
+overripe
+overrode
+overrule
+overruled
+overrules
+overruling
+overrun
+overrunning
+overruns
+overs
+oversample
+oversampled
+oversampling
+oversanguine
+oversaturate
+overscale
+overscore
+oversea
+overseas
+oversee
+overseeing
+overseen
+overseer
+overseers
+oversees
+oversell
+overselling
+oversells
+oversensitive
+oversensitiveness
+oversentimentalize
+oversentimentalizes
+overset
+oversew
+oversexed
+overshadow
+overshadowed
+overshadowing
+overshadows
+overshoe
+overshoes
+overshoot
+overshooting
+overshoots
+overshot
+overside
+oversight
+oversight's
+oversights
+oversimplification
+oversimplifications
+oversimplified
+oversimplifies
+oversimplify
+oversimplifying
+oversize
+oversized
+oversizes
+overskirt
+overslaugh
+oversleep
+oversleeve
+overslip
+oversoft
+oversoftness
+oversold
+oversoul
+overspecialization
+overspecialization's
+overspecializations
+overspecialize
+overspecialized
+overspecializes
+overspeculate
+overspeculation
+overspeed
+overspend
+overspender
+overspending
+overspends
+overspent
+overspill
+overspread
+overstaff
+overstaffed
+overstaffing
+overstaffs
+overstate
+overstated
+overstatement
+overstatement's
+overstatements
+overstates
+overstating
+overstay
+oversteepen
+oversteer
+overstep
+overstepped
+overstepping
+oversteps
+overstock
+overstocks
+overstory
+overstrain
+overstraining
+overstress
+overstressed
+overstrew
+overstride
+overstrike
+overstrikes
+overstriking
+overstruck
+overstrung
+overstuff
+overstuffed
+overstuffing
+overstuffs
+oversubscribe
+oversubscribed
+oversubscribes
+oversubscribing
+oversubscription
+oversubtle
+oversubtlety
+oversupply
+oversystematize
+oversystematizes
+overt
+overtake
+overtaken
+overtaker
+overtakers
+overtakes
+overtaking
+overtask
+overtax
+overtaxation
+overtaxed
+overthrew
+overthrow
+overthrowing
+overthrown
+overthrows
+overthrust
+overtime
+overtly
+overtness
+overtone
+overtone's
+overtones
+overtook
+overtop
+overtrade
+overtrain
+overtrick
+overtrump
+overture
+overture's
+overtures
+overturn
+overturned
+overturning
+overturns
+overtype
+overtyping
+overunionized
+overunionized's
+overunionizeds
+overurbanization
+overurbanization's
+overurbanizations
+overuse
+overvalue
+overview
+overview's
+overviews
+overvoltage
+overvoltages
+overwatch
+overwear
+overweary
+overween
+overweening
+overweigh
+overweight
+overwhelm
+overwhelmed
+overwhelming
+overwhelmingly
+overwhelms
+overwind
+overwinter
+overwomanize
+overwomanizes
+overword
+overwork
+overworked
+overworking
+overworks
+overwrap
+overwrite
+overwrites
+overwriting
+overwritten
+overwrote
+overwrought
+overzealous
+overzealousness
+ovicidal
+ovicide
+Ovid
+oviduct
+oviductal
+oviedo
+oviferous
+oviform
+ovine
+oviparous
+oviparously
+oviparousness
+oviposit
+oviposition
+ovipositional
+ovipositor
+ovisac
+ovoid
+ovoidal
+ovonic
+ovotestis
+ovoviviparous
+ovoviviparously
+ovoviviparousness
+ovular
+ovulate
+ovulated
+ovulates
+ovulating
+ovulation
+ovulations
+ovulatory
+ovule
+ovum
+ow
+owe
+owed
+owelty
+Owen
+Owens
+owerless
+owerri
+owes
+owing
+owl
+owl's
+owler
+owlet
+owlish
+owlishly
+owlishness
+owls
+owly
+own
+owned
+owner
+owner's
+owners
+ownership
+ownerships
+owning
+owns
+owt
+ox
+oxacillin
+oxalacetate
+oxalacetic
+oxalate
+oxalic
+oxalis
+oxaloacetate
+oxaloacetic
+oxazine
+oxblood
+oxbow
+Oxbridge
+oxcart
+oxen
+oxenstierna
+oxeye
+Oxford
+Oxfordshire
+oxheart
+oxhide
+oxidant
+oxidase
+oxidasic
+oxidate
+oxidation
+oxidations
+oxidative
+oxidatively
+oxide
+oxide's
+oxides
+oxidic
+oxidimetry
+oxidizabilities
+oxidizability
+oxidizability's
+oxidizable
+oxidizable's
+oxidizables
+oxidization
+oxidization's
+oxidizations
+oxidize
+oxidized
+oxidizement
+oxidizement's
+oxidizements
+oxidizer
+oxidizers
+oxidizes
+oxidizing
+oxidizings
+oxime
+Oxnard
+oxon
+oxonian
+oxonium
+oxpecker
+oxtail
+oxter
+oxtongue
+oxus
+oxyacetylene
+oxyacid
+oxycephaly
+oxychloride
+oxygen
+oxygenate
+oxygenated
+oxygenates
+oxygenating
+oxygenation
+oxygenations
+oxygenator
+oxygenic
+oxygenicity
+oxygenizable
+oxygenizable's
+oxygenizables
+oxygenize
+oxygenizement
+oxygenizement's
+oxygenizements
+oxygenizer
+oxygenizers
+oxygenizes
+oxygenless
+oxygens
+oxyhaemoglobin
+oxyhemoglobin
+oxyhydrogen
+oxyhydroxides
+oxymoron
+oxyphil
+oxyphile
+oxyphilic
+oxysalt
+oxysome
+oxysulfide
+oxysulphide
+oxytetracycline
+oxytocic
+oxytocin
+oxytone
+oyer
+oyez
+oyo
+oystchers
+oyster
+oyster's
+oystercatcher
+oystering
+oysterman
+oystermen
+oysters
+Oz
+oz
+ozagen
+ozagenians
+ozalid
+Ozark
+Ozarks
+Ozawa
+ozocerite
+ozokerite
+ozone
+ozonic
+ozonide
+ozoniferous
+ozonization
+ozonization's
+ozonizations
+ozonize
+ozonized
+ozonizer
+ozonizers
+ozonizes
+ozonizing
+ozonolysis
+ozonosphere
+ozonous
+ozs
+Ozzie
+ozzie
+p's
+pa
+Paal
+PABA
+Pablo
+Pabst
+pabulum
+paca
+pace
+pace's
+paced
+pacem
+pacemaker
+pacemaking
+pacer
+pacers
+paces
+pacesetter
+pacesetting
+paceway
+pacha
+pachalic
+Pachisi
+Pachouli
+pachuca
+pachuco
+pachyderm
+pachydermal
+pachydermatous
+pachydermatously
+pachysandra
+pachytene
+pacifiable
+Pacific
+pacific
+pacifically
+pacification
+pacifications
+pacificator
+pacificators
+pacificatory
+pacificist
+pacified
+pacifier
+pacifies
+pacifism
+pacifist
+pacifistic
+pacifistically
+pacify
+pacifying
+pacing
+pack
+packability
+packable
+package
+packaged
+packager
+packagers
+packages
+packaging
+packagings
+Packard
+Packard's
+Packards
+packboard
+packed
+packer
+packers
+packet
+packet's
+packeted
+packeting
+packetization
+packetize
+packetized
+packetizer
+packetizer's
+packetizers
+packetizes
+packetizing
+packets
+packhorse
+packing
+packinghouse
+packman
+packs
+packsack
+packsaddle
+packthread
+packwood
+Packwood
+pact
+pact's
+pacts
+pad
+pad's
+padang
+padauk
+padded
+paddies
+padding
+paddings
+paddle
+paddleboard
+paddled
+paddlefish
+paddler
+paddles
+paddling
+paddock
+paddy
+Paddywhack
+pademelon
+paderborn
+Paderewski
+padishah
+padlock
+padlocked
+padlocks
+padma
+padouk
+padova
+padre
+padrone
+pads
+padsaw
+padua
+paduasoy
+Padus
+paean
+paeanize
+paeanizes
+paeans
+paederast
+paediatrician
+paediatrics
+paedogenesis
+paedology
+paedomorphosis
+paedophilia
+paella
+paeon
+paeony
+paestum
+pagan
+pagan's
+paganini
+Paganini
+paganish
+paganism
+paganization
+paganization's
+paganizations
+paganize
+paganized
+paganizer
+paganizers
+paganizes
+paganizing
+pagans
+page
+page's
+pageant
+pageant's
+pageantry
+pageants
+pageboy
+paged
+pageful
+pagefuls
+pager
+pager's
+pagers
+pages
+paginal
+paginate
+paginated
+paginates
+paginating
+pagination
+paginations
+paging
+pagoda
+pagodas
+pagurian
+pah
+pahang
+Pahari
+Pahlavi
+pahsien
+paid
+paigle
+Paignton
+pail
+pail's
+pailful
+paillasse
+paillette
+pails
+pain
+Paine
+pained
+painful
+painfuller
+painfullest
+painfully
+painfulness
+paining
+painkiller
+painless
+painlessly
+painlessness
+pains
+painstaking
+painstakingly
+paint
+paintbox
+paintbrush
+painted
+painter
+painterliness
+painterly
+painters
+painting
+paintings
+paints
+pair
+paired
+pairing
+pairings
+pairs
+pairwise
+paisa
+paisano
+paisley
+Paiute
+paix
+pajama
+pajama's
+pajamaed
+pajamas
+pakeha
+paki
+Pakistan
+Pakistani
+Pakistanis
+pal
+pal's
+palace
+palace's
+palaces
+Palacio
+paladin
+palaeanthropic
+Palaearctic
+palaeethnology
+palaeoanthropic
+palaeoanthropology
+palaeobotany
+Palaeocene
+palaeoclimatology
+palaeoecological
+palaeoecology
+palaeoethnobotany
+palaeogene
+palaeography
+palaeolith
+palaeolithic
+palaeomagnetism
+palaeontography
+palaeontology
+palaeontology's
+Palaeozoic
+palaeozoology
+palaestra
+palais
+palanquin
+palasts
+palatability
+palatable
+palatableness
+palatably
+palatal
+palatalization
+palatalize
+palatalized
+palatalizes
+palatalizing
+palatally
+palate
+palate's
+palates
+palatial
+palatially
+palatialness
+palatinate
+Palatine
+palatization
+palatization's
+palatizations
+palatize
+palatizes
+Palau
+palaver
+palavered
+palavering
+palawan
+palazzo
+palazzos
+pale
+palea
+paled
+paleface
+palefaces
+palely
+palembang
+palencia
+paleness
+Palenque
+paleoanthropology
+paleoanthropology's
+paleoecologic
+paleoecological
+paleoecologist
+paleoecology
+paleogeographic
+paleogeographical
+paleogeographically
+paleogeography
+paleographer
+paleographic
+paleographical
+paleographically
+paleography
+paleolith
+Paleolithic
+paleoliths
+paleologist
+paleologists
+paleomagnetics
+paleontologic
+paleontological
+paleontologist
+paleontology
+Paleozoic
+paleozoological
+paleozoology
+paler
+Palermo
+pales
+palest
+Palestine
+Palestinian
+palestra
+palestrina
+paletot
+palette
+paley
+palfrey
+Pali
+palikar
+palimpsest
+palindrome
+palindromes
+palindromic
+palindromicity
+paling
+palingenesis
+palingenetic
+palinode
+palisade
+palisades
+palish
+palk
+pall
+palladia
+Palladian
+palladic
+palladio
+palladium
+palladiumize
+palladiumizes
+palladous
+Pallas
+pallbearer
+pallet
+pallete
+palletization
+palletizations
+palletize
+palletized
+palletizer
+palletizes
+palletizing
+pallette
+pallial
+palliasse
+palliate
+palliation
+palliative
+palliatively
+palliatives
+palliator
+pallid
+pallidly
+pallidness
+palling
+pallium
+pallor
+pallor's
+pallors
+pally
+palm
+palma
+palmaceous
+palmar
+palmary
+palmate
+palmated
+palmately
+palmation
+palmed
+palmer
+Palmerston
+palmetto
+palmier
+palming
+palmira
+palmist
+palmistry
+palmitate
+palmlike
+Palmolive
+palms
+palmy
+Palmyra
+Palo
+palolo
+Palomar
+palomino
+palooka
+palos
+palour
+palp
+palpability
+palpable
+palpably
+palpal
+palpate
+palpated
+palpates
+palpating
+palpation
+palpations
+palpebral
+palpebrate
+palpi
+palpitant
+palpitate
+palpitated
+palpitates
+palpitating
+pals
+palsgrave
+palsied
+palsies
+palstave
+palsy
+palsying
+palter
+paltered
+palterer
+paltering
+paltrier
+paltriness
+paltry
+paludal
+paludism
+palynologic
+palynological
+palynologically
+palynologist
+palynology
+Pam
+Pam's
+Pamela
+pamirs
+pampa
+pampas
+pamper
+pampered
+pamperer
+pampering
+pamperize
+pamperizes
+pampero
+pampers
+pamphlet
+pamphlet's
+pamphleteer
+pamphleteers
+pamphletize
+pamphletizes
+pamphlets
+pamphrey
+pamphylia
+pamplona
+pan
+pan's
+panacea
+panacea's
+panacean
+panaceas
+panache
+panada
+panama
+Panama
+Panamanian
+panatela
+panatella
+panatellas
+Panathenaea
+panay
+pancake
+pancake's
+pancaked
+pancakes
+pancaking
+panchax
+panchayat
+panchen
+Pancho
+panchromatic
+pancosmism
+pancratium
+pancreas
+pancreatic
+pancreatin
+panda
+panda's
+pandanaceous
+Pandanus
+Pandarus
+pandas
+Pandean
+pandect
+pandects
+pandemic
+pandemonium
+pander
+pandered
+panderer
+pandering
+panderize
+panderizes
+panders
+pandied
+pandit
+Pandora
+pandore
+pandour
+pandowdy
+pandurate
+pandy
+pandybat
+pane
+pane's
+panegyric
+panegyrical
+panegyrically
+panegyrist
+panel
+paneled
+paneling
+panelings
+panelist
+panelist's
+panelists
+panelization
+panelized
+panellist
+panellists
+panels
+panes
+panetela
+panetella
+panettone
+panful
+pang
+pang's
+panga
+Pangaea
+pangenesis
+pangenetic
+pangolin
+pangs
+panhandle
+panhandled
+panhandler
+panhandles
+panhandling
+Panhellenic
+Panhellenism
+panhuman
+panic
+panic's
+panicked
+panicking
+panicky
+panicle
+panicmonger
+panics
+paniculate
+Panjabi
+panjandrum
+panjim
+pankhurst
+panmixia
+panmunjom
+pannage
+panne
+panned
+pannier
+pannikin
+panning
+pannonia
+panocha
+panoplied
+panoply
+panoptic
+panorama
+panoramas
+panoramic
+panoramically
+panpipe
+panpipes
+pans
+pansies
+pansophy
+pansy
+pansy's
+pant
+Pantagruel
+pantalets
+pantalettes
+pantaloon
+pantaloons
+pantas
+pantechnicon
+panted
+pantelleria
+pantheism
+pantheist
+pantheistic
+pantheistical
+pantheistically
+pantheon
+pantheonization
+pantheonization's
+pantheonizations
+pantheonize
+pantheonizes
+panther
+panther's
+panthers
+pantie
+panties
+pantihose
+pantile
+pantiled
+panting
+pantisocracies
+pantisocracy
+pantisocratic
+pantisocratical
+pantisocratist
+panto
+pantograph
+pantographic
+pantomime
+pantomimed
+pantomimic
+pantomimist
+pantothenate
+pantothenic
+pantoum
+pantries
+pantropic
+pantry
+pantry's
+pantryman
+pantrymen
+pants
+pantsuit
+panty
+pantywaist
+panza
+panzer
+Paoli
+Paoli's
+paoting
+paotow
+pap
+papa
+papacy
+papadopoulos
+papain
+papal
+papalization
+papalization's
+papalizations
+papalize
+papalizer
+papalizers
+papalizes
+papally
+papandreou
+papaveraceous
+papaverine
+papaw
+papaya
+papeete
+papen
+paper
+paper's
+paperback
+paperback's
+paperbacks
+paperbark
+paperboard
+paperbound
+paperboy
+paperboys
+paperclip
+paperclips
+papered
+paperer
+paperers
+paperhanger
+paperhangers
+paperhanging
+paperiness
+papering
+paperings
+paperknife
+paperknives
+paperless
+papermaker
+papermakers
+papermaking
+papers
+paperthrow
+paperweight
+paperweights
+paperwork
+papery
+papeterie
+Paphian
+paphlagonia
+paphos
+Papiamento
+papier
+papiers
+papilionaceous
+papilla
+papillae
+papillary
+papillate
+papillated
+papilloma
+papillomatous
+papillon
+papillose
+papillote
+papist
+papistry
+papoose
+Pappas
+pappies
+pappose
+pappus
+pappy
+paprika
+Papua
+Papua's
+Papuan
+papule
+papyraceous
+papyri
+papyrology
+papyrus
+papyruses
+par
+para
+parabasis
+parabiosis
+parabiotic
+parabiotically
+parablast
+parable
+parables
+parabola
+parabolic
+parabolically
+parabolize
+parabolized
+parabolizes
+parabolizing
+paraboloid
+paraboloidal
+parabrake
+paracasein
+Paracel
+Paracelsus
+paracetamol
+parachronism
+parachute
+parachute's
+parachuted
+parachuter
+parachutes
+parachutic
+parachuting
+parachutist
+paraclete
+parade
+paraded
+parader
+parades
+paradigm
+paradigm's
+paradigmatic
+paradigmatical
+paradigms
+parading
+paradisaic
+paradisaical
+paradisaically
+paradisal
+paradise
+paradisiac
+paradisiacal
+paradisiacally
+paradox
+paradox's
+paradoxes
+paradoxic
+paradoxical
+paradoxically
+paradoxicalness
+paradrop
+paraesthesia
+paraffin
+paraffinic
+paraffinize
+paraffinizes
+paraffins
+paraformaldehyde
+paragenesis
+paragenetic
+paragenetically
+paraginase
+paragoge
+paragon
+paragon's
+paragonite
+paragons
+paragraph
+paragraphed
+paragrapher
+paragraphic
+paragraphing
+paragraphize
+paragraphizes
+paragraphs
+Paraguay
+Paraguayan
+Paraguayan's
+Paraguayans
+parahydrogen
+parakeet
+parakeets
+paralanguage
+paraldehyde
+paralinguistic
+paralipomena
+parallactic
+parallax
+parallax's
+parallel
+paralleled
+parallelepiped
+parallelepipeds
+paralleling
+parallelism
+parallelization
+parallelization's
+parallelizations
+parallelize
+parallelized
+parallelizer
+parallelizers
+parallelizes
+parallelizing
+parallelogram
+parallelogram's
+parallelograms
+parallels
+paralogism
+paralysis
+paralytic
+paralyzation
+paralyze
+paralyzed
+paralyzedlies
+paralyzedly
+paralyzer
+paralyzer's
+paralyzers
+paralyzes
+paralyzing
+paralyzinglies
+paralyzingly
+paramagnet
+paramagnetic
+paramagnetically
+paramagnetism
+paramaribo
+paramatta
+paramecium
+paramedic
+paramedical
+parament
+parameter
+parameter's
+parameterizable
+parameterization
+parameterization's
+parameterizations
+parameterize
+parameterized
+parameterizes
+parameterizing
+parameterless
+parameters
+parametric
+parametrical
+parametrically
+paramilitary
+paramnesia
+paramo
+paramorph
+paramorphine
+paramorphism
+paramount
+paramountcy
+paramour
+Paramus
+parang
+paranoia
+paranoiac
+paranoiacs
+paranoid
+paranormal
+paranormality
+paranormally
+paranymph
+paraoxon
+parapet
+parapet's
+parapeted
+parapets
+paraph
+paraphernalia
+paraphrasable
+paraphrase
+paraphrased
+paraphraser
+paraphrases
+paraphrasing
+paraphrastic
+paraphrastically
+paraphysis
+paraplegia
+paraplegic
+parapodial
+parapodium
+parapraxis
+paraprofessional
+paraprofessionals
+parapsychology
+paraquat
+pararosaniline
+parasang
+paraselene
+paraselenic
+parasexual
+parasexuality
+parashah
+parasite
+parasite's
+parasites
+parasitic
+parasitical
+parasitically
+parasiticidal
+parasiticide
+parasitics
+parasitism
+parasitization
+parasitize
+parasitized
+parasitizes
+parasitizing
+parasitology
+parasol
+parasols
+parastichy
+parasympathetic
+parasympathomimetic
+parasynthesis
+parasynthetic
+parasyntheton
+paratactic
+paratactical
+paratactically
+parataxis
+parathion
+parathyroid
+parathyroidectomize
+parathyroidectomized
+parathyroidectomizes
+parathyroidectomizing
+parathyroidectomy
+paratroop
+paratrooper
+paratroopers
+paratroops
+paratyphoid
+paravane
+paraxial
+parboil
+parboiled
+parbuckle
+parbuckled
+parbuckling
+parcae
+parcel
+parceled
+parceler
+parceling
+parcels
+parcenary
+parcener
+parch
+parched
+parcheesi
+parchment
+parchmentize
+parchmentizes
+parclose
+pard
+pardalote
+pardner
+pardners
+pardon
+pardonable
+pardonableness
+pardonably
+pardoned
+pardoner
+pardoners
+pardoning
+pardons
+pardubice
+pare
+paregoric
+pareira
+parella
+parenchyma
+parenchymal
+parent
+parent's
+parentage
+parental
+parentally
+parenteral
+parenterally
+parentheses
+parenthesis
+parenthesization
+parenthesize
+parenthesized
+parenthesizes
+parenthesizing
+parenthetic
+parenthetical
+parenthetically
+parenthood
+parenting
+parents
+parer
+parergon
+pares
+paresis
+paresthesia
+Pareto
+Pareto's
+pareu
+pareve
+parfait
+parfleche
+parfocalization
+parfocalize
+parget
+parhelic
+parhelion
+pariah
+parian
+paries
+parietal
+parietes
+parimutuel
+parimutuels
+paring
+parings
+parioli
+paripinnate
+Paris
+parish
+parish's
+parishad
+parishes
+parishioner
+parishioners
+Parisian
+Parisianization
+Parisianization's
+Parisianizations
+Parisianize
+Parisianizes
+parisina
+parisology
+parison
+parisyllabic
+parities
+parity
+park
+parka
+parka's
+parkas
+Parke
+Parke's
+parked
+parker
+parkers
+Parkersburg
+Parkhouse
+parkin
+parking
+Parkinson
+Parkinsonian
+parkinsonism
+parkish
+parkland
+parklike
+parks
+parkway
+parky
+parlance
+parlando
+parlante
+parlay
+parlayed
+parle
+parley
+parleys
+parleyvoo
+parliament
+parliament's
+parliamentarian
+parliamentarianism
+parliamentarians
+parliamentary
+parliaments
+parling
+parlor
+parlor's
+parlors
+parlous
+parlously
+parm
+Parma
+parmenides
+parmentier
+Parmesan
+parmigiana
+parmigianino
+parmigiano
+Parnassian
+Parnassus
+parnell
+parochial
+parochialism
+parochialism's
+parochialisms
+parochialization
+parochialization's
+parochializations
+parochialize
+parochializes
+parochially
+parodic
+parodied
+parodies
+parodist
+parodistic
+parody
+paroicous
+parol
+parole
+paroled
+parolee
+parolees
+paroles
+paroling
+paronomasia
+paronomastic
+paronym
+paronymous
+parotic
+parotid
+parotitis
+parotoid
+parous
+parousia
+paroxysm
+paroxysmal
+paroxytone
+parquet
+parqueted
+parqueting
+parquetry
+Parr
+Parr's
+parrakeet
+parramatta
+parrel
+parricidal
+parricide
+parried
+parrillo
+parring
+parris
+Parrish
+parrot
+parrotfish
+parroting
+parrotize
+parrotizes
+parrotlike
+parrots
+Parrs
+parry
+parrying
+pars
+parse
+parsec
+parsecs
+parsed
+Parsee
+parser
+parser's
+parsers
+parses
+Parsi
+Parsifal
+Parsifal's
+parsimonious
+parsimoniously
+parsimony
+parsing
+parsings
+parsley
+parsnip
+parson
+parson's
+parsonage
+parsonize
+parsonizes
+parsons
+part
+partake
+partaker
+partakes
+partaking
+partan
+parted
+parter
+parterre
+parters
+parthenocarpic
+parthenocarpically
+parthenocarpy
+parthenogenesis
+parthenogenetic
+parthenogenetically
+Parthenon
+Parthenopaeus
+Parthenope
+Parthenos
+Parthia
+parthia
+Parthian
+parti
+partial
+partiality
+partialize
+partializes
+partially
+partials
+partible
+participant
+participant's
+participants
+participate
+participated
+participates
+participating
+participation
+participations
+participative
+participator
+participatory
+participial
+participially
+participle
+participles
+particlar
+particle
+particle's
+particles
+particular
+particularism
+particularist
+particularistic
+particularity
+particularization
+particularization's
+particularizations
+particularize
+particularized
+particularizes
+particularizing
+particularly
+particulars
+particulate
+particulates
+partied
+parties
+parting
+partings
+partisan
+partisan's
+partisanize
+partisanizes
+partisans
+partisanship
+partita
+partite
+partition
+partitioned
+partitioner
+partitioning
+partitionist
+partitions
+partitive
+partitively
+partizan
+partlet
+partly
+partner
+partner's
+partnered
+partnering
+partners
+partnership
+partnerships
+partook
+partridge
+partridge's
+partridges
+parts
+parturient
+parturifacient
+parturition
+partway
+party
+party's
+partying
+parulis
+parure
+parve
+parvenu
+parvenue
+parvis
+parvise
+parzival
+pas
+Pasadena
+pasargadae
+pasay
+Pascal
+Pascal's
+Pasch
+paschal
+pase
+pash
+pasha
+pashalik
+pashka
+pashm
+Pashto
+pasionaria
+Paso
+pasolini
+pasqueflower
+pasquinade
+pass
+passable
+passably
+passacaglia
+passade
+passage
+passage's
+passaged
+passages
+passageway
+passaging
+Passaic
+Passamaquoddy
+passant
+passarine
+passavant
+passband
+passbook
+passbook's
+passbooks
+passe
+passed
+passel
+passementerie
+passenger
+passenger's
+passengerly
+passengers
+passepied
+passer
+passerby
+passerine
+passers
+passersby
+passes
+passible
+passifloraceous
+passim
+passing
+passion
+passional
+passionate
+passionately
+passionateness
+passionflower
+passionless
+passions
+Passiontide
+passivate
+passivated
+passivates
+passivating
+passivation
+passivations
+passive
+passively
+passiveness
+passives
+passivism
+passivist
+passivists
+passivity
+passkey
+Passover
+passport
+passport's
+passports
+password
+password's
+passworded
+passwords
+past
+past's
+pasta
+paste
+pasteboard
+pasted
+pastel
+pastelist
+pastellist
+pastels
+pastern
+pasternak
+Pasternak
+pasterns
+pastes
+pasteup
+Pasteur
+Pasteurism
+pasteurization
+pasteurizations
+pasteurize
+pasteurized
+pasteurizer
+Pasteurizers
+pasteurizes
+pasteurizing
+pastiche
+pastier
+pasties
+pastil
+pastilles
+pastime
+pastime's
+pastimes
+pastiness
+pasting
+pastis
+pastlle
+pastness
+pasto
+pastor
+pastor's
+pastoral
+pastorale
+pastoralism
+pastoralist
+pastoralize
+pastoralizes
+pastorally
+pastoralness
+pastorate
+pastorium
+pastorize
+pastorizes
+pastors
+pastorship
+pastrami
+pastries
+pastry
+pasts
+pasturage
+pasture
+pasture's
+pastured
+pastureland
+pasturer
+pastures
+pasturing
+pasty
+pat
+pat's
+patagium
+Patagonia
+Patagonians
+patagonians
+patch
+patchboard
+patched
+patcher
+patches
+patchier
+patchily
+patchiness
+patching
+patchouli
+patchouly
+patchwork
+patchworker
+patchworkers
+patchy
+pate
+pated
+patella
+patellae
+patellar
+patellas
+patellate
+patelliform
+paten
+patency
+patent
+patentability
+patentable
+patented
+patentee
+patentees
+patenter
+patenters
+patenting
+patently
+patentor
+patents
+pater
+paterfamilias
+paternal
+paternalism
+paternalist
+paternalistic
+paternalize
+paternalizes
+paternally
+paternity
+paternoster
+Paterson
+Paterson's
+path
+Pathan
+pathbreaking
+pathetic
+pathetical
+pathetically
+pathfind
+pathfinder
+pathfinding
+pathic
+pathlength
+pathless
+pathlessness
+pathname
+pathname's
+pathnames
+pathogen
+pathogenesis
+pathogenetic
+pathogenic
+pathogenically
+pathogenicity
+pathogens
+pathognomonic
+pathognomy
+pathol
+pathologic
+pathological
+pathologically
+pathologies
+pathologist
+pathologist's
+pathologists
+pathology
+pathometer
+pathometer's
+pathometers
+pathomorphologic
+pathomorphological
+pathomorphology
+pathophysiologic
+pathophysiological
+pathophysiology
+pathos
+paths
+pathway
+pathway's
+pathways
+patiala
+patible
+paticularly
+patience
+patient
+patient's
+patiently
+patients
+patil
+patin
+patina
+patinae
+patinas
+patine
+patined
+patining
+patio
+patios
+patisserie
+patisseries
+patmore
+Patmos
+patna
+patois
+paton
+patras
+patresfamilias
+patrial
+patriarch
+patriarchal
+patriarchate
+patriarchies
+patriarchs
+patriarchy
+Patrice
+Patricia
+patrician
+patrician's
+patricians
+patriciate
+patriciates
+patricidal
+patricide
+Patrick
+patriclinous
+patrilineage
+patrilineal
+patrilocal
+patrimonial
+patrimony
+patriot
+patriot's
+patriotic
+patriotically
+patriotism
+patriots
+patristic
+patristical
+patristics
+patroclus
+patrol
+patrol's
+patrolled
+patroller
+patrolling
+patrolman
+patrolmen
+patrology
+patrols
+patron
+patron's
+patronage
+patronal
+patroness
+patronizable
+patronizable's
+patronizables
+patronization
+patronization's
+patronizations
+patronize
+patronized
+patronizer
+patronizers
+patronizes
+patronizing
+patronizing's
+patronizingly
+patronizings
+patronly
+patronne
+patrons
+patronymic
+patroon
+pats
+Patsies
+Patsy
+patted
+patten
+patter
+pattered
+patterer
+pattering
+patterings
+pattern
+patterned
+patterning
+patternize
+patternizes
+patterns
+patters
+Patterson
+Patti
+Patti's
+pattie
+patties
+patting
+Patton
+patty
+patty's
+patulous
+patulously
+patulousness
+pau
+paua
+paucal
+paucity
+Pauk
+Paul
+Paul's
+Paula
+pauldron
+Paulette
+Paulette's
+Pauli
+Pauline
+Pauling
+pauling
+Paulinize
+Paulinizes
+Paulinus
+Paulo
+Paulo's
+paulownia
+Paulsen
+Paulson
+Paulus
+paumotu
+paunch
+paunchier
+paunchiness
+paunchy
+pauper
+pauperism
+pauperization
+pauperization's
+pauperizations
+pauperize
+pauperized
+pauperizer
+pauperizers
+pauperizes
+pauperizing
+pausanias
+pause
+paused
+pauses
+pausing
+pav
+pavage
+pavane
+pavanne
+Pavarotti
+pave
+paved
+pavement
+pavement's
+pavements
+paver
+paves
+pavese
+pavid
+pavilion
+pavilion's
+pavilions
+paving
+pavior
+pavis
+pavlodar
+Pavlov
+pavlova
+Pavlovian
+Pavo
+pavonine
+paw
+pawed
+pawing
+pawky
+pawl
+pawn
+pawn's
+pawnbroker
+pawnbroker's
+pawnbrokers
+pawnbroking
+pawned
+Pawnee
+pawnees
+pawner
+pawning
+pawnor
+pawns
+pawnshop
+pawnshop's
+pawnshops
+pawpaw
+paws
+Pawtucket
+pax
+paxam
+paxton
+paxwax
+pay
+payable
+paycheck
+paycheck's
+paychecks
+payday
+payed
+payee
+payer
+payer's
+payers
+paygrade
+paygrades
+paying
+payload
+payload's
+payloads
+paymaster
+paymasters
+payment
+payment's
+payments
+Payne
+Paynes
+paynim
+Paynize
+Paynizes
+payoff
+payoff's
+payoffs
+payola
+payor
+payroll
+payrolls
+pays
+Payson
+Paz
+PBS
+PC
+PC's
+PCB
+PCBS
+PCs
+PDP
+PDT
+pea
+pea's
+Peabody
+peace
+peaceable
+peaceableness
+peaceably
+peaceful
+peacefully
+peacefulness
+peacekeeper
+peacekeeping
+peacemake
+peacemaker
+peacemaking
+peaces
+peacetime
+peacetimes
+peach
+peach's
+peaches
+peachier
+Peachtree
+peachy
+peacock
+peacock's
+peacockish
+peacocks
+peafowl
+peag
+peahen
+peak
+peake
+peaked
+peakedness
+peaking
+peaks
+peaky
+peal
+Peale
+Peale's
+pealed
+pealike
+pealing
+peals
+pean
+peanut
+peanut's
+peanuts
+pear
+Pearce
+pearl
+pearl's
+pearler
+pearlescence
+pearlescent
+pearlier
+pearlite
+pearlitic
+pearlization
+pearlize
+pearlized
+pearlizes
+pearlizing
+pearls
+pearlstone
+pearlwort
+pearly
+pearmain
+pears
+Pears
+Pearson
+peart
+peary
+peas
+peasant
+peasant's
+peasanthood
+peasantize
+peasantizes
+peasantry
+peasants
+peascod
+Pease
+peasecod
+peashooter
+peasouper
+peat
+peaty
+peau
+peavey
+pebble
+pebble's
+pebbled
+pebbles
+pebbling
+pebbly
+pecan
+pecans
+peccable
+peccadillo
+peccadilloes
+peccancy
+peccant
+peccantly
+peccary
+peccavi
+pechora
+peck
+pecked
+pecker
+pecking
+peckinpah
+peckish
+pecks
+Pecksniffian
+pecky
+Pecos
+pectase
+pectate
+pecten
+pectic
+pectin
+pectinaceous
+pectinate
+pectinated
+pectination
+pectines
+pectization
+pectize
+pectized
+pectizes
+pectizing
+pectoral
+pectoralis
+pectorals
+peculate
+peculated
+peculates
+peculating
+peculation
+peculator
+peculiar
+peculiarities
+peculiarity
+peculiarity's
+peculiarize
+peculiarizes
+peculiarly
+peculiars
+peculium
+pecuniarily
+pecuniary
+pedagog
+pedagogic
+pedagogical
+pedagogically
+pedagogics
+pedagogue
+pedagogy
+pedal
+pedaled
+pedaler
+pedalers
+pedalfer
+pedalferic
+pedaling
+pedalo
+pedals
+pedant
+pedantic
+pedantically
+pedantize
+pedantizes
+pedantry
+pedate
+pedatifid
+peddle
+peddled
+peddler
+peddler's
+peddlers
+peddlery
+peddles
+peddling
+peden
+pederast
+pederastic
+pederasts
+pederasty
+pedestal
+pedestaled
+pedestaling
+pedestals
+pedestrian
+pedestrian's
+pedestrianism
+pedestrianization
+pedestrianize
+pedestrianized
+pedestrianizes
+pedestrianizing
+pedestrians
+pedi
+pediatric
+pediatrician
+pediatrics
+pediatrist
+pedicab
+pedicel
+pedicellate
+pedicle
+pedicled
+pedicular
+pediculate
+pediculosis
+pediculous
+pedicure
+pedicurist
+pediform
+pedigree
+pedigreed
+pediment
+pedimental
+pedimented
+pedipalp
+pedlar
+pedlary
+pedocal
+pedocalic
+pedogenesis
+pedogenetic
+pedogenic
+pedologic
+pedological
+pedologist
+pedology
+pedometer
+pedometer's
+pedometers
+pedophile
+pedophilia
+pedophiliac
+pedophilic
+Pedro
+pedunculate
+pee
+peebles
+peek
+peekaboo
+peeked
+peeking
+peeks
+peel
+peelable
+peeled
+peeler
+peeler's
+peeling
+peels
+peen
+peened
+peening
+peens
+peep
+peeped
+peeper
+peepers
+peephole
+peeping
+peeps
+peepshow
+peepul
+peepy
+peer
+peerage
+peered
+peeress
+peering
+peerless
+peerlessly
+peerlessness
+peers
+peeter
+peetweet
+peeve
+peeve's
+peeved
+peevers
+peeves
+peeving
+peevish
+peevishly
+peevishness
+peewee
+peewit
+peg
+peg's
+Pegasus
+pegboard
+pegboards
+pegged
+pegging
+Peggy
+pegmatite
+pegs
+pegu
+Pehlevi
+peignoir
+Peiping
+peipus
+peiraeus
+peirce
+pejoration
+pejorative
+pejoratively
+pejoratives
+pekan
+peke
+Pekin
+Peking
+Pekingese
+pekoe
+pelage
+Pelagian
+Pelagianism
+pelagic
+pelagius
+pelargonic
+pelargonium
+Pelasgian
+pelerine
+Peleus
+Pelew
+pelf
+Pelham
+Pelias
+pelican
+pelicans
+pelion
+pelisse
+pelite
+pella
+pellagra
+pellagrin
+pellagrous
+pelles
+pellet
+pellet's
+pelletal
+pelleted
+pelletier
+pelleting
+pelletization
+pelletizations
+pelletize
+pelletized
+pelletizer
+pelletizes
+pelletizing
+pellets
+pellicle
+pellitory
+pellucid
+pellucidity
+pellucidly
+pellucidness
+Pelmanism
+pelmet
+Peloponnese
+peloponnese
+Peloponnesian
+Pelops
+peloria
+peloric
+pelorus
+pelota
+pelotas
+pelt
+peltast
+peltate
+peltately
+pelter
+peltier
+pelting
+peltries
+peltry
+pelts
+pelvic
+pelvis
+pelvises
+pemba
+pemberton
+Pembroke
+Pembroke's
+Pembrokeshire
+pemican
+pemmican
+pemmicanization
+pemmicanization's
+pemmicanizations
+pemmicanize
+pemmicanizes
+pemphigus
+pen
+penal
+penalizable
+penalizable's
+penalizables
+penalization
+penalization's
+penalizations
+penalize
+penalized
+penalizes
+penalizing
+penally
+penalties
+penalty
+penalty's
+penance
+penanced
+penances
+penancing
+penang
+penates
+pence
+penchant
+penchi
+pencil
+penciled
+penciler
+pencilers
+penciling
+pencilings
+pencils
+pend
+pendant
+pended
+pendency
+pendent
+pendente
+pendentive
+pendently
+penderecki
+pending
+Pendleton
+pendleton
+pendragon
+pends
+pendular
+pendulous
+pendulously
+pendulousness
+pendulum
+pendulum's
+pendulums
+Penelope
+Penelope's
+peneplain
+penetrability
+penetrable
+penetrableness
+penetrably
+penetralia
+penetrance
+penetrances
+penetrant
+penetrants
+penetrate
+penetrated
+penetrates
+penetrating
+penetratingly
+penetration
+penetrations
+penetrative
+penetratively
+penetrativeness
+penetrator
+penetrator's
+penetrators
+penetrometer
+penetrometer's
+penetrometers
+peneus
+pengally
+pengpu
+penguin
+penguin's
+penguins
+Penh
+penholder
+penicillate
+penicillately
+penicillation
+penicillin
+penicillium
+penile
+penillion
+peninsula
+peninsula's
+peninsular
+peninsulas
+peninsulate
+penis
+penises
+penitence
+penitences
+penitency
+penitent
+penitential
+penitentially
+penitentiary
+penitently
+penki
+penknife
+penknife's
+penknives
+penlight
+penman
+penmanship
+penmen
+Penn
+penna
+pennaceous
+pennae
+pennant
+pennants
+pennate
+penned
+pennies
+penniless
+pennine
+pennines
+penning
+penninite
+pennis
+pennon
+pennoncel
+Pennsylvania
+Pennsylvania's
+penny
+penny's
+pennycress
+pennyroyal
+pennyweight
+pennywort
+pennyworth
+penological
+penologist
+penology
+penrith
+Penrose
+pens
+Pensacola
+pensile
+pension
+pensionable
+pensionary
+pensioned
+pensioner
+pensioners
+pensioning
+pensionless
+pensions
+pensive
+pensively
+pensiveness
+penstemon
+penstock
+pent
+penta
+pentachlorophenol
+pentacle
+pentacles
+pentad
+pentadactyl
+pentadactylism
+pentagon
+pentagon's
+pentagonal
+pentagonally
+pentagons
+pentagram
+pentagram's
+pentagrams
+pentagraph
+pentahedral
+pentahedron
+pentamerous
+pentameter
+pentane
+pentangle
+pentangles
+pentangular
+pentanoic
+pentapeptide
+pentaploid
+pentaploidy
+pentaprism
+pentaquin
+pentaquine
+pentarchy
+pentastich
+Pentateuch
+pentathlete
+pentathlon
+pentatomic
+pentatonic
+pentavalent
+pentazocine
+Pentecost
+pentecostal
+pentelikon
+pentene
+penthesileia
+pentheus
+penthouse
+penthouse's
+penthouses
+pentimento
+Pentland
+pentlandite
+pentobarbital
+pentobarbitone
+pentode
+pentodes
+pentomic
+pentosan
+pentose
+pentothal
+pentoxide
+Pentstemon
+pentyl
+pentylenetetrazol
+penuche
+penuchle
+penult
+penultima
+penultimate
+penultimately
+penumbra
+penumbral
+penurious
+penuriously
+penuriousness
+penury
+Penutian
+penza
+penzance
+peon
+peonage
+peones
+peonies
+peony
+people
+people's
+peopled
+peoplehood
+peopleless
+peoples
+peopling
+Peoria
+pep
+pepin
+peplos
+peplum
+pepo
+pepper
+peppercorn
+peppercorn's
+peppercorns
+peppered
+pepperer
+peppergrass
+peppering
+peppermint
+peppermints
+pepperminty
+pepperoni
+peppers
+peppertree
+pepperwort
+peppery
+peppier
+peppiness
+pepping
+peppy
+Pepsi
+pepsico
+Pepsico
+pepsin
+pepsinate
+pepsinogen
+peptic
+peptidase
+peptidases
+peptide
+peptides
+peptizable
+peptizable's
+peptizables
+peptization
+peptization's
+peptizations
+peptize
+peptized
+peptizer
+peptizers
+peptizes
+peptizing
+peptone
+peptonization
+peptonize
+peptonized
+peptonizes
+peptonizing
+Pepys
+Pequot
+per
+pera
+peracid
+peradventure
+peraea
+perak
+perambulate
+perambulated
+perambulates
+perambulating
+perambulation
+perambulations
+perambulator
+perambulatory
+perborate
+percale
+percaline
+perceivable
+perceivably
+perceive
+perceived
+perceiver
+perceivers
+perceives
+perceiving
+percent
+percentage
+percentages
+percentile
+percentiles
+percents
+percept
+perceptibility
+perceptible
+perceptibly
+perception
+perceptional
+perceptions
+perceptive
+perceptively
+perceptiveness
+perceptivity
+perceptual
+perceptually
+Perceval
+perch
+perchance
+perched
+Percheron
+perches
+perching
+perchlorate
+perchloric
+perchloride
+percipience
+percipient
+Percival
+Percival's
+percoid
+percoidean
+percolate
+percolated
+percolates
+percolating
+percolation
+percolator
+percolators
+percptibly
+percuss
+percussion
+percussionist
+percussionize
+percussionizes
+percussions
+percussive
+percussively
+percussiveness
+percutaneous
+percutaneously
+Percy
+perdido
+perdition
+perditions
+perdu
+perdurability
+perdurable
+perdurably
+pere
+peregrinate
+peregrinated
+peregrinates
+peregrinating
+peregrination
+peregrinations
+peregrine
+pereira
+peremptorily
+peremptoriness
+peremptory
+perennate
+perennated
+perennates
+perennating
+perennation
+perennations
+perennial
+perennialize
+perennializes
+perennially
+perennials
+Perez
+perfect
+perfecta
+perfected
+perfecter
+perfectibility
+perfectible
+perfecting
+perfection
+perfectionism
+perfectionist
+perfectionist's
+perfectionists
+perfections
+perfective
+perfectively
+perfectiveness
+perfectivity
+perfectivize
+perfectivizes
+perfectly
+perfectness
+perfecto
+perfects
+perfervid
+perfidious
+perfidiously
+perfidiousness
+perfidy
+perfin
+perfoliate
+perfoliation
+perforate
+perforated
+perforates
+perforating
+perforation
+perforations
+perforator
+perforce
+perform
+performable
+performance
+performance's
+performances
+performative
+performatory
+performed
+performer
+performers
+performing
+performs
+perfume
+perfumed
+perfumer
+perfumery
+perfumes
+perfuming
+perfunctorily
+perfunctoriness
+perfunctory
+perfuse
+perfused
+perfusing
+perfusion
+perfusive
+Pergamon
+pergamum
+pergola
+pergolesi
+perhaps
+peri
+perianth
+periapt
+periblem
+pericardial
+pericarditis
+pericardium
+pericarp
+perichondral
+perichondrial
+perichondrium
+periclase
+Periclean
+Pericles
+periclinal
+pericline
+pericope
+pericranial
+pericranium
+pericycle
+pericyclic
+pericynthion
+periderm
+peridermal
+peridermic
+peridia
+peridium
+peridot
+peridotic
+peridotite
+peridotitic
+perigean
+perigee
+perigee's
+periglacial
+perigon
+perigordian
+perigynous
+perigyny
+perihelial
+perihelion
+perikaryal
+perikaryon
+peril
+peril's
+periled
+periling
+Perilla
+perilous
+perilously
+perilousness
+perils
+perilune
+perilymph
+perimeter
+perimorph
+perimysium
+perinatal
+perinephrium
+perineum
+perineuritis
+perineurium
+period
+period's
+periodate
+periodic
+periodical
+periodicalize
+periodicalizes
+periodically
+periodicals
+periodicities
+periodicity
+periodization
+periodizations
+periodize
+periodized
+periodizes
+periodizing
+periodontal
+periodontally
+periodontics
+periodontist
+periods
+perioneum
+perionychium
+periosteum
+periostitis
+periotic
+peripatecically
+peripatetic
+peripatetically
+peripateticism
+peripatus
+peripety
+peripherad
+peripheral
+peripherally
+peripherals
+peripheries
+periphery
+periphery's
+periphrasis
+periphrastic
+periphrastically
+periphytic
+periphyton
+periplast
+peripteral
+perique
+perisarc
+periscope
+periscopes
+periscopic
+perish
+perishability
+perishable
+perishable's
+perishables
+perished
+perisher
+perishers
+perishes
+perishing
+perishingly
+perisperm
+perispomenon
+perissodactyl
+peristalsis
+peristome
+peristyle
+peritectic
+perithecium
+peritoneum
+peritonitis
+peritrack
+Peritricha
+peritrichous
+peritrichously
+periwig
+periwinkle
+periwinkles
+perjure
+perjured
+perjurer
+perjures
+perjuring
+perjurious
+perjuriously
+perjury
+perk
+perked
+perkier
+perkily
+perkiness
+perking
+Perkins
+perks
+perky
+Perle
+Perle's
+perlis
+perlite
+perlitic
+Perlman
+perlocution
+perlocutionary
+perm
+permafrost
+permalloy
+permanence
+permanency
+permanent
+permanently
+permanentness
+permanents
+permanganate
+permanganic
+permeability
+permeable
+permeableness
+permeably
+permeance
+permease
+permeate
+permeated
+permeates
+permeating
+permeation
+permeations
+permeative
+Permian
+permissable
+permissibility
+permissible
+permissibleness
+permissibly
+permission
+permissions
+permissive
+permissively
+permissiveness
+permit
+permit's
+permits
+permitted
+permitter
+permitting
+permittivity
+permutation
+permutation's
+permutational
+permutations
+permute
+permuted
+permutes
+permuting
+pernambuco
+pernicious
+perniciously
+perniciousness
+pernickety
+pernik
+pernod
+Pernod
+perogative
+peroneal
+peroral
+perorally
+perorate
+peroration
+perorational
+peroxidase
+peroxide
+peroxidic
+peroxidize
+peroxidizement
+peroxidizement's
+peroxidizements
+peroxidizes
+peroxisomal
+peroxisome
+peroxysulphuric
+perpend
+perpendicular
+perpendicularity
+perpendicularly
+perpendiculars
+perpetrate
+perpetrated
+perpetrates
+perpetrating
+perpetration
+perpetrations
+perpetrator
+perpetrator's
+perpetrators
+perpetual
+perpetually
+perpetuate
+perpetuated
+perpetuates
+perpetuating
+perpetuation
+perpetuator
+perpetuity
+perpignan
+perplex
+perplexed
+perplexedly
+perplexes
+perplexing
+perplexities
+perplexity
+perquisite
+perquisites
+perrault
+perrin
+perron
+Perry
+Perry's
+persalt
+perse
+persecute
+persecuted
+persecutes
+persecuting
+persecution
+persecutive
+persecutor
+persecutor's
+persecutors
+persecutory
+Perseid
+persephone
+Persephone
+Persephone's
+persepolis
+Perseus
+perseverance
+perseverant
+perseveration
+perseverations
+persevere
+persevered
+perseveres
+persevering
+Pershing
+Persia
+Persian
+Persianization
+Persianization's
+Persianizations
+Persianize
+Persianizes
+Persians
+Persicaria
+persiennes
+persiflage
+persimmon
+persimmons
+Persis
+persist
+persisted
+persistence
+persistency
+persistent
+persistently
+persister
+persisting
+persists
+persnickety
+person
+person's
+persona
+personable
+personableness
+personae
+personage
+personage's
+personages
+personal
+personalism
+personalist
+personalistic
+personalities
+personality
+personality's
+personalization
+personalization's
+personalizations
+personalize
+personalized
+personalizes
+personalizing
+personally
+personals
+personalty
+personate
+personated
+personates
+personating
+personation
+personative
+personator
+personhood
+personification
+personifications
+personified
+personifier
+personifies
+personify
+personifying
+personization
+personization's
+personizations
+personize
+personizes
+personnel
+persons
+perspective
+perspective's
+perspectively
+perspectives
+perspectivism
+perspex
+perspicacious
+perspicaciously
+perspicaciousness
+perspicacity
+perspicuity
+perspicuous
+perspicuously
+perspicuousness
+perspiration
+perspirations
+perspiratory
+perspire
+perspired
+perspires
+perspiring
+Persson
+persuadable
+persuade
+persuaded
+persuader
+persuaders
+persuades
+persuading
+persuasible
+persuasion
+persuasion's
+persuasions
+persuasive
+persuasively
+persuasiveness
+persulphate
+persulphuric
+pert
+pertain
+pertained
+pertaining
+pertains
+Perth
+pertinacious
+pertinaciously
+pertinaciousness
+pertinacity
+pertinence
+pertinency
+pertinent
+pertinently
+pertly
+pertness
+perturb
+perturbable
+perturbation
+perturbation's
+perturbational
+perturbations
+perturbative
+perturbed
+perturbing
+pertussis
+Peru
+perugia
+perugino
+peruke
+perusal
+peruse
+perused
+peruser
+perusers
+peruses
+perusing
+perutz
+Peruvian
+Peruvianize
+Peruvianizes
+Peruvians
+peruzzi
+perv
+pervade
+pervaded
+pervades
+pervading
+pervasion
+pervasive
+pervasively
+pervasiveness
+perverse
+perversely
+perverseness
+perversion
+perversions
+perversity
+perversive
+pervert
+perverted
+pervertedly
+pervertedness
+perverter
+perverting
+perverts
+pervious
+perviousness
+pes
+Pesach
+pesade
+pesaro
+pescadores
+pescara
+peseta
+pesewa
+peshawar
+peshitta
+peskier
+pesky
+peso
+pesos
+pessary
+pessimal
+pessimism
+pessimist
+pessimistic
+pessimistically
+pessimists
+pessimum
+pest
+pestalozzi
+peste
+pester
+pestered
+pestering
+pesters
+pesthole
+pesthouse
+pesticide
+pesticides
+pestiferous
+pestiferously
+pestiferousness
+pestilence
+pestilences
+pestilent
+pestilential
+pestilentially
+pestilently
+pestle
+pestled
+pestles
+pestling
+pests
+pet
+petal
+petal's
+petaled
+petaliferous
+petallike
+petalody
+petaloid
+petalous
+petals
+petard
+petasos
+petasus
+Pete
+Pete's
+petechia
+peter
+Peter
+Peter's
+Peterborough
+petered
+Peterlee
+Peterloo
+Peterman
+Petermann
+Peters
+peters
+Petersburg
+Petersen
+Petersham
+Peterson
+pethidine
+petiolate
+petiolated
+petiole
+petioled
+petiolule
+petit
+petite
+petiteness
+petition
+petitionary
+petitioned
+petitioner
+petitioning
+petitions
+petits
+Petkiewicz
+Petkiewicz's
+Petra
+petrarch
+petrarchan
+petrel
+petri
+Petrie
+petrifaction
+petrification
+petrified
+petrify
+Petrine
+petrochemical
+petrochemistry
+petrodollar
+petrogenesis
+petrogenetic
+petroglyph
+petrograd
+petrographer
+petrographic
+petrographical
+petrographically
+petrography
+petrol
+petrolatum
+petroleum
+petrolic
+petrolization
+petrolization's
+petrolizations
+petrolize
+petrolizes
+petrologic
+petrological
+petrologically
+petrologist
+petrology
+petronel
+Petronius
+Petropavlovsk
+petrosal
+Petrosian
+petrous
+Petrov
+Petrovsk
+Petrozavodsk
+pets
+petsamo
+petted
+petter
+petter's
+petters
+pettibone
+Pettibone
+petticoat
+petticoat's
+petticoated
+petticoats
+pettier
+pettiest
+pettifog
+pettifogger
+pettifoggery
+pettifogging
+pettily
+pettiness
+pettinesses
+petting
+pettish
+pettishly
+pettishness
+pettitoes
+petty
+petulance
+petulances
+petulancy
+petulant
+petulantly
+petunia
+petuntse
+Peugeot
+pevsner
+pew
+pew's
+Pewaukee
+pewaukee
+pewee
+pewit
+pews
+pewter
+pewterer
+Peyer
+peyote
+Peyton
+Peyton's
+Pfalz
+pfennig
+Pfizer
+Pforzheim
+ph
+Ph
+pH
+Phaeacian
+Phaedra
+Phaedrus
+phaeton
+phage
+phagedaena
+phagocyte
+phagocytes
+phagocytize
+phagocytizes
+phagocytosis
+phagomania
+phagophobia
+phalangeal
+phalanger
+phalanges
+phalanstery
+phalanx
+phalanxes
+phalarope
+phalli
+phallic
+phallically
+phallicism
+phallus
+phalluses
+phanerocrystalline
+phanerogam
+phanerogamic
+phanerogamous
+phanerophyte
+phanerozoic
+phantasm
+phantasma
+phantasmagoria
+phantasmagoric
+phantasmal
+phantasmic
+phantasy
+phantom
+phantom's
+phantomize
+phantomizer
+phantomizers
+phantomizes
+phantomlike
+phantoms
+pharaoh
+pharaonic
+pharisaic
+pharisaical
+pharisaically
+pharisaicalness
+pharisaism
+pharisee
+pharmaceutic
+pharmaceutical
+pharmaceutically
+pharmaceuticals
+pharmaceutics
+pharmacies
+pharmacist
+pharmacists
+pharmacodynamic
+pharmacodynamically
+pharmacodynamics
+pharmacogenetic
+pharmacogenetics
+pharmacognostic
+pharmacognostical
+pharmacognosy
+pharmacokinetic
+pharmacokinetics
+pharmacologic
+pharmacological
+pharmacologically
+pharmacologist
+pharmacology
+pharmacophore
+pharmacophores
+pharmacophoric
+pharmacopoeia
+pharmacy
+pharnges
+pharos
+pharsalus
+pharyngeal
+pharyngitis
+pharyngology
+pharyngoscope
+pharyngotomy
+pharynx
+pharynxes
+phase
+phased
+phaser
+phasers
+phases
+phasic
+phasing
+phasmid
+phatic
+PhD
+phd
+pheasant
+pheasant's
+pheasants
+pheidippides
+phelloderm
+phellogen
+Phelps
+phenacaine
+phenacetin
+phenacite
+phenanthrene
+phenazine
+phenetic
+phenetics
+phenetidine
+phenetole
+phenformin
+phenix
+phenobarbital
+phenobarbitone
+phenocain
+phenocopy
+phenocryst
+phenol
+phenolate
+phenolic
+phenolization
+phenolization's
+phenolizations
+phenolize
+phenolizes
+phenological
+phenologically
+phenology
+phenolphthalein
+phenomena
+phenomenal
+phenomenalism
+phenomenalist
+phenomenalistic
+phenomenalistically
+phenomenalization
+phenomenalization's
+phenomenalizations
+phenomenalize
+phenomenalizes
+phenomenally
+phenomenological
+phenomenologically
+phenomenologies
+phenomenologist
+phenomenology
+phenomenom
+phenomenon
+phenothiazine
+phenotype
+phenotypic
+phenotypical
+phenotypically
+phenoxide
+phentolamine
+phenyl
+phenylalanine
+phenylamine
+phenylene
+phenylephrine
+phenylic
+phenylketonuria
+pheromone
+pheromone's
+pheromones
+phew
+phi
+phial
+phidias
+phidippides
+Phil
+Philadelphia
+Philadelphus
+philae
+philander
+philandered
+philanderer
+philanderer's
+philanderers
+philandering
+philanders
+philanthropic
+philanthropical
+philanthropically
+philanthropies
+philanthropist
+philanthropists
+philanthropize
+philanthropizes
+philanthropy
+philatelic
+philatelically
+philatelist
+philately
+philby
+Philco
+philco
+philemon
+philharmonic
+philhellene
+philibeg
+Philip
+Philippe
+philippe
+Philippeville
+philippi
+philippians
+Philippians
+Philippic
+philippics
+Philippine
+Philippines
+philippopolis
+philips
+Philistia
+Philistine
+Philistines
+philistines
+Philistinism
+Philistinize
+Philistinizes
+Phillies
+Phillip
+Phillip's
+phillips
+Phillips
+phillumenist
+Philly
+Philoctetes
+philodendron
+philogyny
+philol
+philological
+philologically
+philologist
+philologists
+philology
+philomel
+Philomela
+philoprogenitive
+philoprogenitiveness
+philosopher
+philosopher's
+philosophers
+philosophic
+philosophical
+philosophically
+philosophies
+philosophization
+philosophization's
+philosophizations
+philosophize
+philosophized
+philosophizer
+philosophizers
+philosophizes
+philosophizing
+philosophy
+philosophy's
+philter
+philtre
+phimosis
+Phipps
+phiz
+phlebitis
+phlebosclerosis
+phlebotomization
+phlebotomize
+phlebotomized
+phlebotomizes
+phlebotomizing
+phlebotomy
+Phlegethon
+phlegm
+phlegmatic
+phlegmatically
+phlegmy
+phloem
+phlogistic
+phlogiston
+phlogopite
+phlox
+phlyctena
+phnom
+phobia
+phobic
+Phobos
+phocaea
+phocine
+phocis
+phocomelia
+phoebe
+phoebus
+Phoenicia
+Phoenicia's
+Phoenician
+phoenicians
+phoenix
+phomvihane
+phon
+phonate
+phonated
+phonates
+phonating
+phonation
+phone
+phone's
+phoned
+phonematic
+phoneme
+phoneme's
+phonemes
+phonemic
+phonemically
+phonemics
+phonendoscope
+phones
+phonetic
+phonetical
+phonetically
+phonetician
+phoneticization
+phoneticization's
+phoneticizations
+phoneticize
+phoneticizes
+phonetics
+phonetist
+phoney
+phoneys
+phonic
+phonically
+phonics
+phonier
+phonies
+phonily
+phoniness
+phoning
+phonocardiogram
+phonocardiogram's
+phonocardiograms
+phonocardiograph
+phonocardiographic
+phonocardiography
+phonogram
+phonogram's
+phonogramic
+phonogramically
+phonogrammic
+phonogrammically
+phonograms
+phonograph
+phonographer
+phonographic
+phonographically
+phonographs
+phonography
+phonolite
+phonolitic
+phonologial
+phonologic
+phonological
+phonologically
+phonologist
+phonology
+phonometer
+phonon
+phonons
+phonoreception
+phonoreceptor
+phonorecord
+phonos
+phonoscope
+phonotactics
+phonotype
+phonotypes
+phonotypy
+phony
+phooey
+phosgene
+phosgenite
+phosophoric
+phosphatase
+phosphate
+phosphate's
+phosphates
+phosphatic
+phosphatide
+phosphatidic
+phosphatidyl
+phosphatization
+phosphatization's
+phosphatizations
+phosphatize
+phosphatized
+phosphatizes
+phosphatizing
+phosphaturia
+phosphene
+phosphide
+phosphine
+phosphines
+phosphino
+phosphite
+phosphocreatine
+phospholipid
+phospholipids
+phosphonium
+phosphoprotein
+phosphor
+phosphorate
+phosphore
+phosphoresce
+phosphorescence
+phosphorescent
+phosphorescently
+phosphoreted
+phosphoretted
+phosphoric
+phosphorism
+phosphorite
+phosphoritic
+phosphorize
+phosphorizes
+phosphorolysis
+phosphorolytic
+phosphoroscope
+phosphorous
+phosphors
+phosphorus
+phosphoryl
+phosphorylase
+phosphorylate
+phosphorylation
+phosphorylative
+phossy
+phot
+photic
+photically
+photo
+photo's
+photoactinic
+photoactive
+photoautotrophic
+photoautotrophically
+photobiologic
+photobiological
+photobiologist
+photobiology
+photobiotic
+photocatalyzer
+photocatalyzer's
+photocatalyzers
+photocathode
+photocathodes
+photocell
+photochemical
+photochemically
+photochemist
+photochemistry
+photochromic
+photochromism
+photochronograph
+photocoagulation
+photocompose
+photocomposer
+photocomposition
+photoconduction
+photoconductive
+photoconductivity
+photocopied
+photocopier
+photocopies
+photocopy
+photocopying
+photocurrent
+photodecomposition
+photodetector
+photodiode
+photodiodes
+photodisintegrate
+photodisintegration
+photodissociation
+photodissociative
+photodrama
+photoduplicate
+photoduplication
+photodynamic
+photodynamically
+photodynamics
+photoelastic
+photoelasticity
+photoelectric
+photoelectrically
+photoelectron
+photoelectronic
+photoelectrons
+photoelectrotype
+photoemission
+photoemissive
+photoengrave
+photoengraver
+photoengravers
+photoengraving
+photofit
+photoflash
+photoflood
+photofluorogram
+photofluorogram's
+photofluorograms
+photofluorographic
+photofluorography
+photogene
+photogenic
+photogenically
+photogeologic
+photogeological
+photogeology
+photogram
+photogram's
+photogrammetric
+photogrammetrist
+photogrammetry
+photograms
+photograph
+photographed
+photographer
+photographers
+photographic
+photographically
+photographing
+photographize
+photographizes
+photographs
+photography
+photogravure
+photoheliograph
+photoinduced
+photoinduction
+photoinductive
+photoionization
+photoionization's
+photoionizations
+photoisomerization
+photoisomerization's
+photoisomerizations
+photojournalism
+photojournalist
+photojournalist's
+photojournalistic
+photojournalists
+photokinesis
+photokinetic
+photolabeled
+photolabeler
+photolabeling
+photolithograph
+photolithographer
+photolithographic
+photolithographically
+photolithography
+photoluminescence
+photolysis
+photolytic
+photolytically
+photolyzable
+photolyze
+photolyzed
+photolyzes
+photolyzing
+photomap
+photomechanical
+photomechanically
+photometer
+photometer's
+photometers
+photometric
+photometrically
+photometry
+photomicrgraphical
+photomicrogram
+photomicrogram's
+photomicrograms
+photomicrograph
+photomicrographic
+photomicrography
+photomicroscope
+photomicroscopic
+photomontage
+photomorphogenesis
+photomorphogenic
+photomultiplier
+photomural
+photon
+photon's
+photonasty
+photonegative
+photoneutron
+photonic
+photons
+photonuclear
+photooxidation
+photooxidative
+photoperiod
+photoperiodic
+photoperiodically
+photoperiodism
+photophilic
+photophilous
+photophily
+photophobia
+photophobic
+photophore
+photophysical
+photophysics
+photopia
+photoplay
+photopolymer
+photopolymerization
+photopolymerization's
+photopolymerizations
+photopositive
+photoprint
+photoproduct
+photoproduction
+photoreaction
+photorealism
+photoreception
+photoreceptive
+photoreceptor
+photoreconnaissance
+photorecord
+photorecorder
+photoreduction
+photoresistance
+photorespiration
+photos
+photoselected
+photoselection
+photosensitive
+photosensitivity
+photosensitization
+photosensitization's
+photosensitizations
+photosensitize
+photosensitized
+photosensitizer
+photosensitizers
+photosensitizes
+photosensitizing
+photoset
+photosetter
+photosphere
+photospheric
+photostat
+photostatic
+photosynthesis
+photosynthesize
+photosynthesized
+photosynthesizes
+photosynthesizing
+photosynthetic
+photosynthetically
+phototactic
+phototactically
+phototaxis
+phototelegraphy
+phototherapy
+photothermic
+phototonus
+phototopography
+phototransistor
+phototropic
+phototropically
+phototropism
+phototube
+phototype
+phototypeset
+phototypesetter
+phototypesetting
+phototypographic
+phototypography
+photovoltaic
+photozincography
+Phragmites
+phrasal
+phrasally
+phrase
+phrased
+phrasemaker
+phrasemaking
+phrasemonger
+phrasemongering
+phraseogram
+phraseogram's
+phraseograms
+phraseograph
+phraseological
+phraseologically
+phraseologies
+phraseologist
+phraseology
+phraseology's
+phrases
+phrasing
+phrasings
+phratries
+phratry
+phreatic
+phreatophyte
+phreatophytic
+phrenetic
+phrenic
+phrenitis
+phrenological
+phrenologically
+phrenologist
+phrenology
+phrensy
+phrixus
+phrygia
+Phrygian
+phthalate
+phthalein
+phthalic
+phthalocyanine
+phthiriasis
+phthisic
+phthisis
+phut
+phycologist
+phycology
+phycomycete
+phycomycetes
+phyfe
+phyla
+phylactery
+phylae
+phylar
+phyle
+phylesis
+phyletic
+phyllary
+Phyllis
+phyllite
+phylloclade
+phyllode
+phyllodium
+phylloid
+phyllome
+phyllomic
+phyllophagous
+phyllopod
+phylloquinone
+phyllotaxis
+Phylloxera
+phylogenetic
+phylogeny
+phylum
+physiatrics
+physiatrist
+physic
+physical
+physicalism
+physicalist
+physicalistic
+physicality
+physically
+physicalness
+physicals
+physician
+physician's
+physicians
+physicist
+physicist's
+physicists
+physicked
+physicking
+physicochemical
+physicochemically
+physics
+physiochemical
+physiocrat
+physiocratic
+physiognomic
+physiognomical
+physiognomically
+physiognomy
+physiographer
+physiographic
+physiographical
+physiography
+physiol
+physiologic
+physiological
+physiologically
+physiologist
+physiology
+physiopathologic
+physiopathological
+physiopathology
+physiotherapist
+physiotherapy
+physique
+physiqued
+physoclistous
+physostigmine
+physostomous
+phytane
+phytoalexin
+phytochemical
+phytochemically
+phytochemist
+phytochemistry
+phytochrome
+phytoflagellate
+phytogenesis
+phytogenic
+phytogeographic
+phytogeographical
+phytogeographically
+phytogeography
+phytography
+phytohormone
+phytolith
+phytoliths
+phytological
+phytologically
+phytology
+phyton
+phytonic
+phytopathogen
+phytopathogenic
+phytopathologic
+phytopathological
+phytopathology
+phytophagous
+phytophagy
+phytoplankton
+phytoplanktonic
+phytosociological
+phytosociologically
+phytosociologist
+phytosociology
+phytosterol
+phytotoxic
+phytotoxicity
+phytotoxin
+phytotron
+pi
+piacenza
+piacular
+piaf
+piaffe
+piaget
+pial
+pianism
+pianissimo
+pianist
+pianistic
+pianistically
+pianists
+piano
+piano's
+pianoforte
+pianoforte's
+pianofortes
+Pianola
+pianos
+pias
+piassava
+piaster
+piave
+Piavko
+piaza
+piazza
+piazza's
+piazzas
+piazze
+pibroch
+pic
+pica
+picador
+picadores
+picaninny
+picara
+Picard
+picardy
+picaresque
+picaro
+picaroon
+Picasso
+picayune
+picayunish
+Piccadilly
+piccalilli
+piccanin
+piccaninny
+piccard
+piccolo
+piccoloist
+pice
+piceous
+pichiciego
+pick
+pickaback
+pickaninny
+pickaroon
+pickax
+pickaxe
+picked
+pickeer
+picker
+pickerel
+pickerels
+pickerelweed
+pickering
+pickers
+picket
+picketboat
+picketed
+picketer
+picketers
+picketing
+pickets
+Pickett
+Pickett's
+Pickford
+pickier
+pickin
+picking
+pickings
+pickle
+pickled
+pickles
+pickling
+picklock
+Pickman
+pickoff
+pickoffs
+pickpocket
+pickproof
+picks
+pickthank
+pickup
+pickup's
+pickups
+Pickwickian
+picky
+picnic
+picnic's
+picnicked
+picnicker
+picnickers
+picnicking
+picnicky
+picnics
+picnometer
+picnometer's
+picnometers
+pico
+picofarad
+picofarads
+picogram
+picogram's
+picograms
+picojoule
+picoline
+picometer
+picometer's
+picometers
+picon
+picong
+picosecond
+picoseconds
+picot
+picotee
+picrate
+picric
+picrite
+picrotoxin
+Pict
+Pictish
+pictogram
+pictograph
+pictographic
+pictography
+pictor
+pictorial
+pictorialism
+pictorialization
+pictorialization's
+pictorializations
+pictorialize
+pictorialized
+pictorializes
+pictorializing
+pictorially
+pictorialness
+picts
+picture
+pictured
+picturegoer
+pictures
+picturesque
+picturesquely
+picturesqueness
+picturing
+picturization
+picturization's
+picturizations
+picturize
+picturized
+picturizes
+picturizing
+picul
+piddle
+piddling
+piddock
+pidgin
+pidginization
+pidginize
+pidginized
+pidginizes
+pidginizing
+pie
+piebald
+piece
+pieced
+piecemeal
+piecer
+pieces
+piecewise
+piecework
+pieceworker
+piecing
+piecrust
+pied
+Piedfort
+Piedmont
+piedmont
+piedmontite
+piefort
+pieing
+pieman
+piemonte
+pier
+pierce
+pierced
+pierces
+piercing
+piercingly
+pieria
+Pierian
+Pierides
+pieridine
+piero
+Pierre
+Pierrot
+piers
+Pierson
+pies
+pieta
+Pietermaritzburg
+Pieterson
+pieties
+pietism
+pietist
+pietistic
+pietistical
+pietistically
+pietro
+piety
+piezo
+piezochemistry
+piezoelectric
+piezoelectrically
+piezoelectricity
+piezometer
+piezometer's
+piezometers
+piezometric
+piezometry
+piffle
+piffled
+piffles
+piffling
+pig
+pig's
+pigboat
+pigeon
+pigeon's
+pigeonberry
+pigeonfoot
+pigeonhearted
+pigeonhole
+pigeonholed
+pigeonholes
+pigeonholing
+pigeons
+pigeonwing
+pigface
+pigfaced
+pigfish
+pigged
+piggeries
+piggery
+piggin
+pigging
+piggish
+piggishly
+piggishness
+piggledy
+piggott
+piggy
+piggyback
+piggybacked
+piggybacking
+pigheaded
+pigheadedness
+piglet
+piglets
+pigmeat
+pigment
+pigmentary
+pigmentation
+pigmentations
+pigmented
+pigmentize
+pigmentizes
+pigments
+pigmy
+pignut
+pigpen
+pigpens
+pigroot
+pigs
+pigskin
+pigstick
+pigsticker
+pigsticking
+pigsty
+pigswill
+pigtail
+pigtailed
+pigweed
+pika
+pike
+pike's
+piked
+pikelet
+pikeman
+pikeperch
+piker
+pikes
+pikestaff
+piking
+pilaf
+pilaff
+pilaster
+Pilate
+pilatus
+pilau
+pilch
+pilchard
+pilcomayo
+pile
+pilea
+pileate
+pileated
+piled
+pilei
+pileous
+pilers
+piles
+pileum
+pileup
+pileus
+pilewort
+pilfer
+pilferage
+pilfered
+pilferer
+pilfering
+pilfers
+pilgarlic
+pilgrim
+pilgrim's
+pilgrimage
+pilgrimage's
+pilgrimages
+pilgrimize
+pilgrimizes
+pilgrims
+pili
+piliferous
+piliform
+piling
+pilings
+pill
+pill's
+pillage
+pillaged
+pillager
+pillages
+pillaging
+pillar
+pillared
+pillarize
+pillarizes
+pillars
+pillbox
+pillboxes
+pillion
+pillions
+pilliwinks
+pilloried
+pillories
+pillory
+pillorying
+pillow
+pillow's
+pillowcase
+pillowcases
+pillows
+pills
+Pillsbury
+pillwort
+pilocarpine
+piloerection
+pilose
+pilot
+pilot's
+pilotage
+pilotages
+piloted
+pilothouse
+piloting
+pilotless
+pilots
+Pilsen
+pilsener
+pilsner
+Pilsudski
+Piltdown
+pilular
+pilule
+pilus
+pimento
+pimiento
+pimp
+pimpernel
+pimping
+pimple
+pimpled
+pimples
+pimplike
+pimply
+pimps
+pin
+pin's
+pinaceous
+pinafore
+pinafores
+pinar
+pinaster
+pinata
+pinball
+pinbone
+pincer
+pincer's
+pincerlike
+pincers
+pinch
+pinchbeck
+pinchcock
+pinched
+pincher
+pinches
+pinching
+pinchpenny
+pinckney
+pincushion
+pindar
+Pindaric
+pindling
+pindus
+pine
+pineal
+pineapple
+pineapple's
+pineapples
+pinecone
+pined
+pinedrops
+Pinehurst
+pinene
+pinero
+pinery
+pines
+pinesap
+pineta
+pinetum
+pinewood
+piney
+pinfeather
+pinfish
+pinfold
+ping
+pinger
+pinging
+pingo
+pinguid
+pinhead
+pinheaded
+pinheadedness
+pinheads
+pinhole
+pinholes
+pining
+pinion
+pinioned
+pinions
+pinite
+pink
+pinked
+pinker
+Pinkerton
+pinkest
+pinkeye
+pinkie
+pinkies
+pinking
+pinkish
+pinkishness
+pinkly
+pinkness
+pinko
+pinkoes
+pinkos
+pinkroot
+pinks
+Pinkster
+pinky
+pinna
+pinnace
+pinnacle
+pinnacle's
+pinnacled
+pinnacles
+pinnacling
+pinnae
+pinnal
+pinnas
+pinnate
+pinnately
+pinnatifid
+pinnatipartite
+pinnatiped
+pinnatisect
+pinned
+pinner
+pinning
+pinnings
+pinniped
+pinniped's
+pinnipeds
+pinnula
+pinnular
+pinnulate
+pinnulated
+pinnule
+pinny
+pinochet
+pinochle
+pinole
+pinpoint
+pinpointed
+pinpointing
+pinpoints
+pinprick
+pinpricks
+pins
+pinscher
+pinsetter
+Pinsk
+Pinsky
+Pinsky's
+pinspotter
+pinstripe
+pint
+pint's
+pinta
+pintadera
+pintail
+pintails
+pinter
+pintle
+pinto
+pintoes
+pints
+pinturicchio
+pinup
+pinwheel
+pinwork
+pinworm
+pinxter
+piny
+piolet
+pion
+pioneer
+pioneered
+pioneering
+pioneers
+pionic
+Piotr
+Piotr's
+pious
+piously
+piousness
+pip
+pipa
+pipage
+pipal
+pipe
+pipeage
+pipeclay
+piped
+pipefish
+pipefitting
+pipeful
+pipeless
+pipelike
+pipeline
+pipelined
+pipelines
+pipelining
+piper
+piperaceous
+piperazine
+piperidine
+piperine
+piperonal
+pipers
+pipes
+Pipestone
+pipestone
+pipet
+pipette
+pipewort
+pipgras
+piping
+pipingly
+pipings
+pipistrelle
+pipit
+pipkin
+pippin
+pipping
+pipsissewa
+pipsqueak
+piquancy
+piquant
+piquantly
+piquantness
+pique
+piqued
+piquet
+piquing
+piracy
+Piraeus
+piragua
+pirandello
+piranesi
+piranha
+piraro
+pirate
+pirate's
+pirated
+pirates
+piratical
+piratically
+pirating
+piratize
+piratizes
+pirhouette
+pirn
+pirog
+pirogue
+piroplasm
+piroplasma
+piroplasmata
+pirouette
+pirouetting
+pirozhki
+Pisa
+Pisanello
+Pisano
+piscary
+Piscataway
+Piscataway's
+piscatorial
+Pisces
+piscicultural
+pisciculture
+pisciculturist
+piscina
+piscine
+Piscis
+piscivorous
+pisgah
+pish
+pishogue
+pishpek
+pisiform
+pisistratus
+pismire
+pisolite
+pisolitic
+piss
+pissarro
+pissed
+pisser
+pisses
+pissing
+pissoir
+pistachio
+pistareen
+piste
+pistil
+pistil's
+pistillate
+pistils
+pistoia
+pistol
+pistol's
+pistole
+pistoled
+pistoleer
+pistoleers
+pistoling
+pistols
+piston
+piston's
+pistons
+pit
+pit's
+pita
+pitapat
+Pitcairn
+pitch
+pitchblende
+pitched
+pitcher
+pitchers
+pitches
+pitchfork
+pitchfork's
+pitchforks
+pitching
+pitchman
+pitchometer
+pitchometers
+pitchout
+pitchstone
+pitchy
+piteous
+piteously
+piteousness
+pitfall
+pitfall's
+pitfalls
+pith
+pithead
+Pithecanthropus
+pithed
+pithes
+pithier
+pithiest
+pithily
+pithiness
+pithing
+pithos
+pithy
+pitiable
+pitiableness
+pitiably
+pitied
+pitier
+pitiers
+pities
+pitiful
+pitifully
+pitifulness
+pitiless
+pitilessly
+pitilessness
+pitman
+Pitney
+piton
+piton's
+pitons
+pitot
+pits
+pitsaw
+Pitt
+Pitta
+pittance
+pittance's
+pittances
+pitted
+pitting
+Pittsburgh
+Pittsburghers
+Pittsfield
+Pittston
+pituitary
+pituri
+pity
+pitying
+pityingly
+pityriasis
+piura
+Pius
+pivot
+pivotable
+pivotal
+pivotally
+pivoted
+pivoting
+pivotman
+pivots
+pix
+pixel
+pixel's
+pixels
+pixie
+pixieish
+pixies
+pixilated
+pixilates
+pixilation
+pixiness
+pixmap
+pixmap's
+pixmaps
+pixy
+Pizarro
+pizazz
+pize
+pizz
+pizza
+pizzazz
+pizzeria
+pizzicato
+pizzle
+Pl
+placability
+placable
+placably
+placard
+placard's
+placards
+placate
+placated
+placater
+placates
+placating
+placation
+placative
+placatory
+place
+placeable
+placebo
+placed
+placeholder
+placeless
+placelessly
+placeman
+placemat
+placemat's
+placemats
+placement
+placement's
+placements
+placency
+placent
+placenta
+placental
+placentation
+placentations
+placentia
+placer
+places
+placet
+placid
+placidity
+placidly
+placidness
+placing
+placket
+placoderm
+placoid
+plafond
+plagal
+plage
+plagiarism
+plagiarist
+plagiaristic
+plagiarization
+plagiarization's
+plagiarizations
+plagiarize
+plagiarized
+plagiarizer
+plagiarizers
+plagiarizes
+plagiarizing
+plagiary
+plagioclase
+plagioclimax
+plagiotropism
+plague
+plagued
+plaguer
+plagues
+plaguesome
+plaguey
+plaguily
+plaguing
+plaguy
+plaice
+plaid
+plaid's
+plaided
+plaids
+plain
+plainchant
+plainclothes
+plainclothesman
+plainer
+plainest
+Plainfield
+plainly
+plainness
+plains
+plainsman
+plainsong
+plainspoken
+plainspokenness
+plaint
+plaintext
+plaintful
+plaintiff
+plaintiff's
+plaintiffs
+plaintive
+plaintively
+plaintiveness
+Plainview
+plainview
+plaister
+plait
+plait's
+plaiter
+plaiting
+plaits
+plan
+plan's
+planar
+planarian
+planarity
+planation
+planchet
+planchette
+Planck
+Planck's
+plane
+plane's
+planed
+planeload
+planer
+planers
+planes
+planet
+planet's
+planetaria
+planetarium
+planetary
+planetesimal
+planetoid
+planetoidal
+planetoids
+planetological
+planetologist
+planetology
+planets
+planform
+plangency
+plangent
+plangently
+planimeter
+planimeter's
+planimeters
+planimetric
+planimetry
+planing
+planish
+planisher
+planisphere
+planispheric
+plank
+planking
+planks
+plankton
+planktonic
+planless
+planlessly
+planlessness
+planned
+planner
+planner's
+planners
+planning
+plano
+planoconcave
+planoconvex
+planogamete
+planograph
+planographic
+planography
+planometer
+planosol
+plans
+plant
+plantable
+plantagenet
+plantain
+plantar
+plantation
+plantation's
+plantations
+planted
+planter
+planters
+plantigrade
+planting
+plantings
+plantlike
+plantocracy
+plants
+planula
+planular
+planuloid
+plaque
+plaques
+plash
+plashy
+plasm
+plasma
+plasmagel
+plasmagene
+plasmagenic
+plasmalemma
+plasmapheresis
+plasmasol
+plasmatic
+plasmid
+plasmid's
+plasmids
+plasmin
+plasminogen
+plasmodesm
+plasmodesma
+plasmodium
+plasmogamy
+plasmolysis
+plasmolytic
+plasmolytically
+plasmolyze
+plasmon
+plasmosome
+plasodesma
+plassey
+Plasson
+plaster
+plasterboard
+plastered
+plasterer
+plasterers
+plastering
+plasters
+plasterwork
+plastery
+plastic
+plastically
+Plasticine
+plasticity
+plasticization
+plasticization's
+plasticizations
+plasticize
+plasticized
+plasticizer
+plasticizers
+plasticizes
+plasticizing
+plasticly
+plastics
+plastid
+plastidial
+plastisol
+plastisols
+plastogene
+plastometer
+plastral
+plastron
+plat
+plata
+plataea
+platan
+plate
+plateau
+plateau's
+plateaus
+plateaux
+plated
+plateful
+platelayer
+platelayers
+platelet
+platelet's
+platelets
+platelike
+platemaker
+platemaking
+platemark
+platemarks
+platen
+platen's
+platens
+plater
+plateresque
+platers
+plates
+platform
+platform's
+platforms
+plath
+platies
+platina
+plating
+platings
+platinic
+platiniferous
+platiniridium
+platinization
+platinization's
+platinizations
+platinize
+platinized
+platinizes
+platinizing
+platinocyanic
+platinocyanide
+platinoid
+platinotype
+platinous
+platinum
+platipi
+platipi's
+platitude
+platitudes
+platitudinal
+platitudinarian
+platitudinization
+platitudinize
+platitudinized
+platitudinizes
+platitudinizing
+platitudinous
+platitudinously
+Plato
+platonic
+Platonical
+platonically
+Platonism
+Platonist
+platonization
+platonize
+platonized
+platonizes
+platonizing
+platoon
+platoons
+Plattdeutsch
+Platte
+platted
+Platteland
+platter
+platter's
+platterful
+platters
+Platteville
+platting
+platy
+platyhelminth
+platypus
+platypus's
+platypuses
+platyrrhine
+plauded
+plauding
+plaudit
+plauen
+plause
+plausibility
+plausible
+plausibleness
+plausibly
+plausive
+Plautus
+play
+playa
+playability
+playable
+playact
+playback
+playbacks
+playbill
+playbills
+playbook
+playboy
+playboys
+played
+player
+player's
+players
+playful
+playfully
+playfulness
+playgirl
+playgoer
+playgoers
+playground
+playground's
+playgrounds
+playgroup
+playgroups
+playhouse
+playhouses
+playing
+playland
+playlet
+playmaker
+playmate
+playmate's
+playmates
+playoff
+playpen
+playpen's
+playpens
+playroom
+plays
+playschool
+playsuit
+plaything
+plaything's
+playthings
+playtime
+playwright
+playwright's
+playwrights
+playwriting
+plaza
+plazas
+plea
+plea's
+pleach
+plead
+pleadable
+pleaded
+pleader
+pleading
+pleadingly
+pleadings
+pleads
+pleas
+pleasance
+pleasant
+pleasantly
+pleasantness
+pleasantry
+please
+pleased
+pleasely
+pleaser
+pleases
+pleasing
+pleasingly
+pleasingness
+pleasurability
+pleasurable
+pleasurableness
+pleasurably
+pleasure
+pleasured
+pleasureless
+pleasures
+pleasuring
+pleat
+pleated
+pleater
+pleatless
+pleats
+pleb
+plebby
+plebe
+plebeian
+plebeianism
+plebeianize
+plebeianizes
+plebeianly
+plebes
+plebian
+plebiscitary
+plebiscite
+plebiscite's
+plebiscites
+plebs
+plectognath
+plectrum
+plectrum's
+plectrums
+pled
+pledge
+pledged
+pledgee
+pledger
+pledges
+pledget
+pledging
+pledgor
+pleiad
+Pleiades
+pleiocene
+pleiotropism
+Pleistocene
+plenary
+plenipotent
+plenipotentiary
+plenish
+plenitude
+plenitudinous
+plenteous
+plenteously
+plenteousness
+plenties
+plentiful
+plentifully
+plentifulness
+plentitude
+plenty
+plenum
+pleochroism
+pleomorphism
+pleonasm
+pleopod
+plesiosaur
+plessor
+plethora
+plethoric
+plethysmograph
+pleura
+pleurae
+pleural
+pleuras
+pleurisy
+pleuritic
+pleurodont
+pleurodynia
+pleuron
+pleuropneumonia
+pleurotomy
+pleuston
+pleven
+plex
+plexiform
+Plexiglas
+plexiglass
+plexor
+plexus
+pliability
+pliable
+pliableness
+pliably
+pliancy
+pliant
+pliantly
+pliantness
+plica
+plicate
+plication
+plied
+plier
+pliers
+plies
+plight
+plighter
+plimsoll
+plink
+plinked
+plinker
+plinking
+plinks
+plinth
+Pliny
+Pliocene
+ploat
+plod
+plodded
+plodder
+plodding
+ploddingly
+plodge
+plods
+plonk
+plonko
+plop
+plopped
+plopping
+plosion
+plosive
+plot
+plot's
+plotinus
+plotless
+plotlessness
+plots
+plottable
+plottage
+plotted
+plotter
+plotter's
+plotters
+plottier
+plotting
+plotty
+ploughboys
+ploughmen
+ploughs
+ploughstaff
+plover
+plovers
+plow
+plowable
+plowboy
+plowed
+plower
+plowhead
+plowing
+plowman
+plowmen
+plowmen's
+plows
+plowshare
+plowshare's
+plowshares
+ploy
+ploy's
+ploys
+pluck
+plucked
+plucker
+pluckier
+pluckily
+pluckiness
+plucking
+plucky
+plug
+plug's
+plugboard
+plugboard's
+plugboards
+pluggable
+plugged
+plugger
+plugging
+plugs
+plum
+plum's
+plumage
+plumaged
+plumages
+plumate
+plumb
+plumb's
+plumbaginaceous
+plumbaginous
+plumbago
+plumbate
+plumbed
+plumbeous
+plumber
+plumbers
+plumbic
+plumbicon
+plumbiferous
+plumbing
+plumbism
+plumbous
+plumbs
+plumbum
+plume
+plumed
+plumelet
+plumes
+plumier
+pluming
+plumlike
+plummer
+plummet
+plummeted
+plummeting
+plummets
+plummier
+plummy
+plumose
+plumosely
+plump
+plumped
+plumpen
+plumper
+plumpish
+plumply
+plumpness
+plums
+plumulate
+plumule
+plumulose
+plumy
+plunder
+plunderable
+plunderage
+plundered
+plunderer
+plunderers
+plundering
+plunderous
+plunders
+plunge
+plunged
+plunger
+plungers
+plunges
+plunging
+plunk
+plunker
+plunkers
+plunking
+pluperfect
+plural
+pluralism
+pluralist
+pluralistic
+pluralistically
+pluralists
+plurality
+pluralization
+pluralization's
+pluralizations
+pluralize
+pluralized
+pluralizer
+pluralizers
+pluralizes
+pluralizing
+plurally
+plurals
+pluriaxial
+pluriliteral
+pluripotent
+pluripresence
+plus
+pluses
+plush
+plushier
+plushiness
+plushly
+plushness
+plushy
+plussage
+plusses
+Plutarch
+Pluto
+plutocracy
+plutocrat
+plutocratic
+plutocratically
+pluton
+plutonian
+plutonic
+plutonium
+plutus
+pluvial
+pluviometer
+pluvious
+ply
+plying
+Plymouth
+plyscore
+plywood
+PM
+pma
+pneuma
+pneumatic
+pneumatically
+pneumaticity
+pneumatics
+pneumatology
+pneumatolysis
+pneumatolytic
+pneumatometer
+pneumatometer's
+pneumatometers
+pneumatophore
+pneumatophoric
+pneumectomy
+pneumobacillus
+pneumococcus
+pneumoconiosis
+pneumodynamics
+pneumogastric
+pneumograph
+pneumonectomy
+pneumonia
+pneumonic
+pneumonitis
+pneumothorax
+pnom
+poaceous
+poach
+poached
+poacher
+poachers
+poaches
+poaching
+POBox
+Pocahontas
+pocahontas
+pochard
+pock
+pocket
+pocketbook
+pocketbook's
+pocketbooks
+pocketed
+pocketful
+pocketing
+pocketknife
+pocketknife's
+pocketknives
+pockets
+pockmark
+pocky
+poco
+pococurante
+Pocono
+Poconos
+pocus
+pod
+pod's
+podagra
+podagral
+podded
+podding
+poddy
+podesta
+podge
+podger
+podgers
+podgier
+podgorica
+podgy
+podia
+podiatric
+podiatrist
+podiatry
+podite
+poditic
+podium
+Podolsk
+podophyllin
+pods
+podsol
+Poe
+poem
+poem's
+poems
+poenology
+poesies
+poesy
+poet
+poet's
+poetaster
+poetess
+poetic
+poetical
+poetically
+poeticalness
+poeticism
+poeticization
+poeticize
+poeticized
+poeticizes
+poeticizing
+poetics
+poetization
+poetization's
+poetizations
+poetize
+poetized
+poetizer
+poetizers
+poetizes
+poetizing
+poetries
+poetry
+poetry's
+poets
+pogey
+pogge
+pogo
+Pogonia
+Pogorelich
+pogrom
+pogromist
+pogromize
+pogromizes
+pogroms
+pogy
+pohai
+pohutukawa
+poi
+poignancy
+poignant
+poignantly
+poikilotherm
+poikilothermic
+poikilothermism
+poilu
+Poincare
+poinciana
+poind
+Poindexter
+poinsettia
+point
+pointe
+pointed
+pointedly
+pointedness
+pointer
+pointers
+pointier
+pointiest
+pointillism
+pointillist
+pointilliste
+pointillistic
+pointing
+pointless
+pointlessly
+pointlessness
+points
+pointsman
+pointwise
+pointy
+poirot
+poise
+poised
+poises
+poising
+poison
+poisoned
+poisoner
+poisoning
+poisonous
+poisonously
+poisonousness
+poisons
+Poisson
+poitiers
+poitou
+poitrine
+poke
+pokeberry
+poked
+pokelogan
+poker
+pokerface
+pokerfaced
+pokes
+pokeweed
+pokey
+pokeys
+pokie
+pokier
+pokily
+pokiness
+poking
+poky
+pol
+pola
+Polack
+polacre
+Poland
+Poland's
+Polanski
+polar
+polarimeter
+polarimeter's
+polarimeters
+polarimetric
+polarimetry
+Polaris
+polariscope
+polariscopic
+polarities
+polariton
+polarity
+polarity's
+polarizabilities
+polarizability
+polarizability's
+polarizable
+polarizable's
+polarizables
+polarization
+polarization's
+polarizations
+polarize
+polarized
+polarizer
+polarizers
+polarizes
+polarizing
+polarogram
+polarogram's
+polarograms
+polarograph
+polarographic
+polarographically
+polarography
+Polaroid
+polaron
+polder
+pole
+poleax
+poleaxe
+polecat
+poled
+poleless
+polemarch
+polemic
+polemical
+polemically
+polemicist
+polemicize
+polemicized
+polemicizes
+polemicizing
+polemics
+polemist
+polemize
+polemized
+polemizes
+polemizing
+polemoniaceous
+polemonium
+polenta
+poler
+poles
+polestar
+poleward
+poleyn
+police
+police's
+policed
+policeman
+policeman's
+policemen
+policemen's
+polices
+policewoman
+policewoman's
+policewomen
+policies
+policing
+policize
+policizer
+policizers
+policizes
+policy
+policy's
+policyholder
+policyholders
+policymaker
+policymakers
+policymaking
+poling
+polio
+poliomyelitic
+poliomyelitis
+poliovirus
+polis
+polish
+polished
+polisher
+polishers
+polishes
+polishing
+politburo
+polite
+politely
+politeness
+politer
+politesse
+politest
+politic
+political
+politicalize
+politicalizes
+politically
+politician
+politician's
+politicians
+politicization
+politicize
+politicized
+politicizer
+politicizers
+politicizes
+politicizing
+politick
+politicker
+politicking
+politico
+politicos
+politics
+polities
+politize
+politizes
+polity
+Polje
+Polk
+polka
+polka's
+polkadot
+polkadots
+polkas
+poll
+Pollack
+pollaiuolo
+pollan
+Pollard
+Pollard's
+polled
+pollee
+pollen
+pollenate
+pollenated
+pollenates
+pollenating
+pollenation
+pollenizer
+pollenosis
+poller
+pollex
+pollical
+pollices
+pollinate
+pollinated
+pollinates
+pollinating
+pollination
+pollinator
+polling
+Pollini
+pollinic
+polliniferous
+pollinium
+pollinize
+pollinized
+pollinizer
+pollinizes
+pollinizing
+pollinosis
+polliwog
+pollock
+polloi
+polls
+pollster
+pollutant
+pollutants
+pollute
+polluted
+polluter
+pollutes
+polluting
+pollution
+pollutive
+Pollux
+Pollyanna
+pollywog
+pollywog's
+pollywogs
+polo
+poloist
+polonaise
+polonium
+polony
+Polska
+poltava
+poltergeist
+poltroon
+poltroonery
+poltroonish
+poltroonishly
+Poly
+poly
+polyadelphous
+polyamide
+polyandrous
+polyandry
+polyanka
+polyantha
+polyanthus
+polyatomic
+polybasic
+polybasite
+polybius
+polybutene
+polybutenes
+polycarbonate
+Polycarp
+polycarpellary
+polycarpic
+polycarpous
+polycarpy
+polycentrism
+polychaete
+polychaetous
+polychasium
+polychemicals
+polychotomous
+polychotomy
+polychromatic
+polychromatize
+polychromatizes
+polychrome
+polychromize
+polychromizes
+polychromy
+polycistronic
+polyclinic
+polycondensation
+polyconic
+polycot
+polycotyl
+polycotyledon
+polycotyledonous
+polycrates
+polycrystal
+polycrystalline
+polycyclic
+polycythemia
+polycythemic
+polydactyl
+polydactylous
+polydactyly
+polydemic
+polydeuces
+polydipsi
+polydipsia
+polydisperse
+polydispersity
+polyelectrolytes
+polyembryony
+polyester
+polyesters
+polyether
+polyethers
+polyethylene
+polygala
+polygalaceous
+polygamic
+polygamical
+polygamically
+polygamist
+polygamize
+polygamizes
+polygamous
+polygamously
+polygamy
+polygene
+polygenesis
+polygenesist
+polygenetic
+polygenetically
+polygenic
+polyglandular
+polyglot
+polyglotism
+polyglottism
+polygnotus
+polygon
+polygon's
+polygonaceous
+polygonal
+polygonally
+polygons
+polygonum
+polygram
+polygram's
+polygrams
+polygraph
+polygraphic
+polygynoecial
+polygynous
+polygyny
+polyhedra
+polyhedral
+polyhedron
+polyhedrosis
+polyhistor
+polyhistoric
+polyhydric
+polyhydroxy
+Polyhymnia
+polyisobutylene
+polyisocyanates
+polyisoprene
+polymath
+polymathic
+polymathy
+polymer
+polymer's
+polymerase
+polymeric
+polymerically
+polymerism
+polymerization
+polymerization's
+polymerizations
+polymerize
+polymerizes
+polymerous
+polymers
+polymorph
+polymorphic
+polymorphically
+polymorphism
+polymorphonuclear
+polymorphous
+polymorphously
+polymyositis
+polymyxin
+Polynesia
+Polynesia's
+Polynesian
+polyneuritis
+polynices
+polynomial
+polynomial's
+polynomials
+polynuclear
+polynucleotide
+polynya
+polyonymous
+polyoxyethene
+polyp
+polypary
+polypeptide
+polypeptidic
+polypetalous
+polyphagia
+polyphagous
+polyphagy
+polyphase
+polyphasic
+Polyphemus
+polyphenol
+polyphenolic
+polyphone
+polyphonic
+polyphonically
+polyphonous
+polyphonously
+polyphony
+polyphosphate
+polyphosphates
+polyphosphoric
+polyphyletic
+polyphyletically
+polyphyleticism
+polyphyodont
+polypide
+polyploid
+polyploidy
+polypnea
+polypneic
+polypod
+polypody
+polypoid
+polypous
+polypropylene
+polyprotodont
+polyptych
+polypus
+polyrhythm
+polyrhythmic
+polyrhythmically
+polyribonucleotide
+polyribosomal
+polyribosome
+Polys
+polysaccharide
+polysaccharides
+polysaprobic
+polysemous
+polysemy
+polysepalous
+polysilicon
+polysiloxanes
+polysome
+polysomic
+polysorbate
+polystichous
+polystyrene
+polysulfide
+polysulphide
+polysulphurization
+polysulphurization's
+polysulphurizations
+polysyllabic
+polysyllabically
+polysyllable
+polysyllogism
+polysynaptic
+polysynaptically
+polysyndeton
+polytechnic
+polytene
+polyteny
+polytheism
+polytheist
+polytheistic
+polytheistical
+polythene
+polythetic
+polythionic
+polytocous
+polytonal
+polytonality
+polytonally
+polytope
+polytrophic
+polytype
+polytypic
+polytypism
+polytypy
+polyunsaturated
+polyurethane
+polyuria
+polyvalence
+polyvalent
+polyvinyl
+polyvinylidene
+polywater
+polyxena
+polyzoan
+polyzoarium
+polyzoic
+pom
+pomace
+pomaceous
+pomade
+pomaded
+pomades
+pomander
+pomatum
+pombal
+pombe
+pome
+pomegranate
+pomelo
+pomerania
+Pomerania
+Pomeranian
+pomeranian
+pomfret
+pomiculture
+pomiferous
+pommel
+pommeled
+pommeling
+pommern
+pommy
+pomological
+pomologically
+pomologist
+pomology
+Pomona
+pomorze
+pomp
+pompadour
+pompano
+Pompeii
+Pompey
+pompey
+pompidou
+pompon
+pompons
+pomposity
+pompous
+pompously
+pompousness
+pon
+Ponce
+Ponchartrain
+Ponchartrain's
+poncho
+pond
+ponder
+ponderable
+pondered
+ponderer
+pondering
+ponderosa
+ponderosa's
+ponderosas
+ponderous
+ponderously
+ponderousness
+ponders
+pondicherry
+Pondo
+pondokkie
+Pondoland
+ponds
+pondweed
+pone
+pong
+pongee
+pongid
+poniard
+ponies
+Pons
+pons
+pont
+ponta
+pontchartrain
+pontefract
+pontevedra
+Pontiac
+pontianak
+Pontic
+pontifex
+pontiff
+pontific
+pontifical
+pontificals
+pontificaly
+pontificate
+pontificated
+pontificates
+pontificating
+pontification
+pontificator
+pontifices
+pontil
+pontine
+pontius
+ponton
+pontonier
+pontoon
+pontormo
+pontus
+pontypool
+pontypridd
+pony
+pony's
+ponytail
+pooch
+pooched
+pood
+poodle
+poof
+pooftah
+pooh
+pool
+Poole
+Poole's
+pooled
+pooling
+poolroom
+pools
+poon
+poona
+poonce
+poop
+poor
+poorer
+poorest
+poorhouse
+poorish
+poorly
+poorness
+poove
+pop
+pop's
+popcorn
+pope
+pope's
+popedom
+Popek
+Popek's
+Popeks
+popery
+popes
+popeyed
+popgun
+popinjay
+popish
+popishly
+poplar
+poplin
+popliteal
+Popov
+popover
+Popp
+poppa
+poppadom
+popped
+popper
+poppet
+poppied
+poppies
+popping
+popple
+poppy
+poppy's
+poppycock
+poppyhead
+poppyseed
+pops
+Popsicle
+popsicle
+Popsicles
+popsy
+populace
+populaire
+populaires
+popular
+popularism
+popularity
+popularization
+popularization's
+popularizations
+popularize
+popularized
+popularizer
+popularizers
+popularizes
+popularizing
+popularly
+populate
+populated
+populates
+populating
+population
+populations
+populism
+populist
+populistic
+populous
+populously
+populousness
+porbeagle
+porcelain
+porcelainization
+porcelainization's
+porcelainizations
+porcelainize
+porcelainizes
+porcelainlike
+porcelaneous
+porcellaneous
+porch
+porch's
+porches
+porcine
+porcupine
+porcupine's
+porcupines
+pore
+pored
+pores
+porgy
+pori
+poriferal
+poriferan
+poring
+porirua
+porism
+pork
+porker
+porkies
+porkpie
+porky
+porn
+pornocracy
+pornographer
+pornographic
+pornographically
+pornography
+poromeric
+porosimeter
+porosity
+porous
+porously
+porousness
+porphyria
+porphyrin
+porphyritic
+porphyrogenite
+porphyroid
+porphyropsin
+porphyry
+porpoise
+porpoises
+porrect
+porridge
+porringer
+porsena
+Porson
+port
+portability
+portable
+portables
+portably
+portadown
+portage
+portaged
+portaging
+portal
+portal's
+portals
+portamento
+portamento's
+portance
+portative
+portcullis
+Porte
+Porte's
+ported
+portend
+portended
+portending
+portends
+portent
+portentous
+portentously
+portentousness
+portents
+porter
+porterage
+porterhouse
+portering
+porters
+portfire
+portfolio
+portfolios
+porthole
+Portia
+portico
+portiere
+porting
+portion
+portion's
+portioned
+portioning
+portionize
+portionizes
+portionless
+portions
+Portland
+portlaoise
+portlier
+portliness
+portly
+portmanteau
+portmanteaus
+Porto
+portobello
+portrait
+portrait's
+portraitist
+portraits
+portraiture
+portray
+portrayal
+portrayals
+portrayed
+portrayer
+portraying
+portrays
+portress
+ports
+Portsmouth
+Portugal
+Portuguese
+portulaca
+portulacaceous
+posable
+posada
+pose
+posed
+Poseidon
+Posen
+poser
+posers
+poses
+poseur
+poseurs
+posey
+posh
+poshest
+posho
+posies
+posing
+posit
+posited
+Positif
+positing
+position
+positional
+positioned
+positioning
+positions
+positive
+positively
+positiveness
+positives
+positivism
+positivist
+positivistic
+positivists
+positivity
+positivize
+positivizes
+positron
+positronium
+posits
+Posner
+Posner's
+posology
+poss
+posse
+posseman
+possemen
+posses
+possess
+possessed
+possessedly
+possessedness
+possesses
+possessing
+possession
+possession's
+possessional
+possessions
+possessive
+possessive's
+possessively
+possessiveness
+possessives
+possessor
+possessor's
+possessors
+possessory
+posset
+possets
+possibilities
+possibility
+possibility's
+possible
+possibles
+possibly
+possie
+possum
+possum's
+possums
+post
+postage
+postal
+postaxial
+postaxially
+postbag
+postbags
+postbellum
+postbox
+postboxes
+postboy
+postboys
+postbreeding
+postcard
+postcard's
+postcards
+postcava
+postclassic
+postclassical
+postcode
+postcodes
+postcolonial
+postcondition
+postconditions
+postdate
+postdated
+postdates
+postdating
+postdental
+postdiluvian
+postdoctoral
+postdoctorate
+posted
+postembryonal
+postembryonic
+postemergence
+poster
+poster's
+posteriad
+posterior
+posteriori
+posteriority
+posteriorly
+posterity
+posterize
+posterizes
+postern
+posters
+postexilian
+postexilic
+postface
+postfix
+postfixed
+postfixes
+postfixing
+postform
+postglacial
+postgraduate
+posthaste
+posthole
+posthumous
+posthumously
+posthumousness
+posthypnotic
+postiche
+posticous
+postie
+postil
+postilion
+postillion
+postimpressionism
+posting
+postings
+postliminy
+postlude
+postludes
+postman
+postmarital
+postmark
+postmarked
+postmarks
+postmaster
+postmaster's
+postmasters
+postmastership
+postmen
+postmenopausal
+postmeridian
+postmillenarian
+postmillenarianism
+postmillennial
+postmillennialism
+postmillennialist
+postmistress
+postmodern
+postmortem
+postmultiply
+postnasal
+postnatal
+postnatally
+postnuptial
+postnuptially
+postoperative
+postoperatively
+postorbital
+postorder
+postpaid
+postpartum
+postpituitary
+postponable
+postpone
+postponed
+postponement
+postponer
+postpones
+postponing
+postposition
+postpositional
+postpositionally
+postpositions
+postpositive
+postpositively
+postprandial
+postprandially
+postprocess
+postprocessor
+postprocessors
+postrider
+posts
+postschool
+postscript
+postscript's
+postscripts
+postsecondary
+postsynaptic
+postsynaptically
+postsynchronization
+posttension
+posttraumatic
+postulancy
+postulant
+postulate
+postulated
+postulates
+postulating
+postulation
+postulational
+postulations
+postulator
+postural
+posture
+posture's
+postured
+posturer
+postures
+posturing
+posturize
+posturizes
+postvocalic
+postwar
+posy
+pot
+pot's
+potability
+potable
+potableness
+potage
+potamic
+potamology
+potash
+potassic
+potassium
+potation
+potato
+potatoes
+potatory
+potbellied
+potbelly
+potboil
+potboiler
+potboilers
+potboy
+potch
+poteen
+potemkin
+Potemkin
+potence
+potency
+potent
+potentate
+potentate's
+potentates
+potential
+potentialities
+potentiality
+potentialization
+potentialization's
+potentializations
+potentialize
+potentializes
+potentially
+potentials
+potentiate
+potentiating
+potentiation
+potentiator
+potentiometer
+potentiometer's
+potentiometers
+potentiometric
+potentiostat
+potentize
+potentizes
+potently
+potful
+pothead
+pothecary
+potheen
+pother
+potherb
+pothered
+pothering
+pothole
+potholed
+potholing
+pothook
+pothouse
+pothunter
+pothunting
+potiche
+potion
+potions
+potiphar
+potlatch
+potlatches
+potluck
+potman
+Potomac
+potoroo
+potpie
+potpourri
+pots
+Potsdam
+potsdam
+potsherd
+potshot
+potshotting
+potstone
+pottage
+pottawatomie
+Pottawatomie
+potted
+potter
+potter's
+potterer
+potteries
+potteringly
+potters
+pottery
+pottier
+potties
+potting
+pottle
+potto
+pottos
+Potts
+potty
+potyomkin
+pouch
+pouch's
+pouched
+pouches
+pouchier
+pouchy
+pouf
+pouff
+pouffed
+Poughkeepsie
+poulard
+poularde
+Poulenc
+poult
+poulterer
+poultice
+poultices
+poultry
+poultryman
+pounce
+pounced
+pounces
+pouncet
+pouncing
+pound
+poundage
+poundal
+pounded
+pounder
+pounders
+pounding
+pounds
+pour
+pourable
+pourboire
+poured
+pourer
+pourers
+pouring
+pouringly
+pourparler
+pourpoint
+pours
+poussette
+poussetted
+poussetting
+Poussin
+poussin
+poussins
+Poussins
+pout
+pouted
+pouter
+pouting
+pouts
+pouty
+poverty
+pow
+powan
+powder
+powdered
+powderer
+powdering
+powderization
+powderization's
+powderizations
+powderize
+powderizer
+powderizers
+powderizes
+powderman
+powdermen
+powderpuff
+powders
+powdery
+Powell
+power
+powerboat
+powered
+powerful
+powerfully
+powerfulness
+powerhouse
+powerhouse's
+powerhouses
+powering
+powerless
+powerlessly
+powerlessness
+powers
+Powhatan
+powwow
+powys
+pox
+poxes
+poxvirus
+poyang
+Poynting
+Poynting's
+poza
+pozsony
+pozzuolana
+pozzuoli
+pozzy
+ppm
+PR
+pracharak
+practicability
+practicable
+practicableness
+practicably
+practical
+practicalities
+practicality
+practicalization
+practicalization's
+practicalizations
+practicalize
+practicalizer
+practicalizers
+practicalizes
+practically
+practicalness
+practice
+practice's
+practiced
+practicer
+practices
+practicing
+practicum
+practitioner
+practitioner's
+practitioners
+pradesh
+Pradesh
+Prado
+praecox
+praedial
+praemunire
+praenomen
+Praesepe
+praetor
+Praetorian
+praetorius
+pragmat
+pragmatic
+pragmatical
+pragmatically
+pragmaticism
+pragmaticist
+pragmatics
+pragmatism
+pragmatist
+pragmatistic
+pragmatists
+pragmats
+Prague
+praha
+prairie
+prairies
+praise
+praised
+praiser
+praisers
+praises
+praiseworthily
+praiseworthiness
+praiseworthy
+praising
+praisingly
+prajna
+Prakrit
+praline
+pralltriller
+pram
+prams
+prance
+pranced
+prancer
+prances
+prancing
+prancingly
+prandial
+prang
+prank
+prank's
+prankish
+prankishly
+prankishness
+pranks
+prankster
+pranksters
+prase
+praseodymium
+prat
+prate
+prated
+prater
+prates
+pratfall
+pratincole
+prating
+pratingly
+pratique
+prato
+Pratt
+prattle
+prattled
+prattler
+prattles
+prattling
+prattlingly
+Prattville
+prau
+Pravda
+prawn
+prawner
+prawns
+praxeological
+praxeology
+praxes
+praxis
+praxiteles
+pray
+prayed
+prayer
+prayer's
+prayerful
+prayerfully
+prayerfulness
+prayers
+praying
+prays
+pre
+preach
+preached
+preacher
+preacherize
+preacherizes
+preachers
+preaches
+preachier
+preachifies
+preachify
+preachily
+preachiness
+preaching
+preachingly
+preachment
+preachy
+preacknowledgment
+preacknowledgment's
+preacknowledgments
+preadamite
+preadapt
+preadaptation
+preadapted
+preadaptive
+preadolescence
+preadolescent
+preallocate
+preallocated
+preallocates
+preallocating
+preallocation
+preallocation's
+preallocations
+preallocator
+preallocators
+preamble
+preambles
+preamplifier
+preamplifiers
+preanesthetic
+preanesthetics
+prearrange
+prearranged
+prearrangement
+preassign
+preassigned
+preassigning
+preassigns
+preatomic
+preaxial
+preaxially
+prebaptize
+prebaptizes
+prebend
+prebendal
+prebendary
+prebind
+prebiologic
+prebiological
+prebiotic
+precall
+Precambrian
+precancel
+precancelation
+precancerous
+precarious
+precariously
+precariousness
+precast
+precatory
+precaution
+precaution's
+precautionary
+precautioned
+precautioning
+precautions
+precautious
+precede
+preceded
+precedence
+precedence's
+precedences
+precedency
+precedent
+precedented
+precedential
+precedents
+precedes
+preceding
+preceed
+preceeded
+preceeding
+precensor
+precentor
+precentorial
+precentorship
+precept
+precept's
+preceptive
+preceptively
+preceptor
+preceptorial
+preceptorship
+preceptory
+preceptress
+precepts
+precess
+precessed
+precesses
+precessing
+precession
+precessional
+prechlorination
+precinct
+precinct's
+precincts
+preciosity
+precious
+preciously
+preciousness
+precipice
+precipitable
+precipitance
+precipitancy
+precipitant
+precipitantly
+precipitantness
+precipitate
+precipitated
+precipitately
+precipitateness
+precipitates
+precipitating
+precipitation
+precipitative
+precipitator
+precipitin
+precipitinogen
+precipitinogenic
+precipitous
+precipitously
+precipitousness
+precis
+precise
+precisely
+preciseness
+precisian
+precisianism
+precision
+precisionist
+precisionize
+precisionizes
+precisions
+precivilization
+precivilization's
+precivilizations
+preclinical
+preclude
+precluded
+precludes
+precluding
+preclusion
+preclusive
+preclusively
+precoat
+precoating
+precocial
+precocious
+precociously
+precociousness
+precocity
+precode
+precoded
+precognition
+precognitive
+precollege
+precolonial
+precolor
+precolor's
+precolorable
+precolorable's
+precolorables
+precoloring
+precolorings
+precolors
+precombustion
+precompact
+precompile
+precompiled
+precompiles
+precompiling
+precompose
+precomputation
+precomputed
+preconceive
+preconceived
+preconception
+preconception's
+preconceptions
+preconceptual
+preconcert
+preconcerted
+preconcertedly
+preconcertedness
+precondition
+preconditioned
+preconditions
+preconization
+preconization's
+preconizations
+preconize
+preconizer
+preconizers
+preconizes
+preconnected
+preconnection
+preconscious
+preconsolidate
+preconsolidated
+preconsolidates
+preconsolidating
+preconsolidation
+preconsonantal
+precook
+precooked
+precritical
+precriticize
+precriticizes
+precursor
+precursor's
+precursors
+precursory
+precut
+predaceous
+predaceousness
+predacious
+predacity
+predate
+predated
+predates
+predating
+predation
+predator
+predator's
+predatorily
+predators
+predatory
+predawn
+predecease
+predecessor
+predecessor's
+predecessors
+predecline
+predefense
+predefense's
+predefenses
+predefine
+predefined
+predefines
+predefining
+predefinition
+predefinition's
+predefinitions
+predella
+predesignate
+predesignation
+predestinarian
+predestinarianism
+predestinate
+predestination
+predestinator
+predestine
+predestined
+predeterminate
+predetermination
+predetermine
+predetermined
+predeterminer
+predetermines
+predetermining
+predial
+predicable
+predicament
+predicant
+predicatable
+predicate
+predicated
+predicates
+predicating
+predication
+predications
+predicative
+predicator
+predicatory
+predict
+predictability
+predictable
+predictably
+predicted
+predicting
+prediction
+prediction's
+predictions
+predictive
+predictively
+predictor
+predictors
+predicts
+predigest
+predigested
+predigestion
+predikant
+predilect
+predilection
+predilections
+predispose
+predisposed
+predisposes
+predisposition
+predispositions
+prednisone
+predoctoral
+predominance
+predominancy
+predominant
+predominantly
+predominate
+predominated
+predominately
+predominates
+predominating
+predomination
+predrilled
+preemergence
+preemergent
+preemie
+preeminence
+preeminent
+preeminently
+preemphasization
+preemphasization's
+preemphasize
+preemphasized
+preemphasizer
+preemphasizers
+preemphasizes
+preemphasizing
+preemployment
+preempt
+preempted
+preempting
+preemption
+preemptive
+preemptively
+preemptor
+preempts
+preen
+preener
+preening
+preexchange
+preexchanged
+preexist
+preexistence
+preexistent
+preexisting
+prefab
+prefabricate
+prefabricated
+prefabrication
+preface
+prefaced
+prefacer
+prefaces
+prefacing
+prefatorial
+prefatorially
+prefatorily
+prefatory
+prefavor
+prefavor's
+prefavorable
+prefavorable's
+prefavorables
+prefavorablies
+prefavorably
+prefavorite
+prefavorite's
+prefavorites
+prefavors
+prefect
+prefects
+prefectural
+prefecture
+prefectures
+prefer
+preferability
+preferable
+preferableness
+preferably
+preference
+preference's
+preferences
+preferential
+preferentially
+preferment
+preferred
+preferrer
+preferring
+prefers
+prefertilization
+prefertilization's
+prefertilizations
+prefertilize
+prefertilizes
+prefiguration
+prefigurative
+prefiguratively
+prefigurativeness
+prefigure
+prefigured
+prefigurement
+prefigures
+prefiguring
+prefill
+prefilled
+prefilling
+prefills
+prefix
+prefixal
+prefixally
+prefixed
+prefixes
+prefixing
+preflavor
+preflavor's
+preflavoring
+preflavorings
+preflavors
+preflight
+preflighted
+preflighting
+preflights
+prefocus
+prefocused
+prefocuses
+prefocusing
+preform
+preformation
+preformed
+preforms
+prefrontal
+pregalvanize
+pregalvanizes
+preglacial
+pregnability
+pregnable
+pregnancies
+pregnancy
+pregnant
+pregnantly
+pregnenolone
+preheat
+preheated
+preheater
+prehensile
+prehensility
+prehension
+prehistorian
+prehistoric
+prehistorical
+prehistorically
+prehistory
+prehominid
+prehumor
+prehumor's
+prehumors
+preignition
+preincubate
+preincubated
+preincubates
+preincubating
+preinduction
+preindustrial
+preinitialize
+preinitialized
+preinitializes
+preinitializing
+preinterview
+preisolated
+prejudge
+prejudged
+prejudger
+prejudgment
+prejudgment's
+prejudgments
+prejudice
+prejudiced
+prejudices
+prejudicial
+prejudicially
+prejudicialness
+prejudicing
+prejudicious
+prejudiciously
+prelabor
+prelabor's
+prelabors
+prelacy
+prelate
+prelatism
+prelatize
+prelatizes
+prelature
+prelect
+prelection
+prelexical
+prelibation
+prelicense
+prelicensed
+prelicenser
+prelicenses
+prelicensing
+preliminaries
+preliminarily
+preliminary
+prelims
+preliterate
+prelocalization
+prelocalization's
+prelocalizations
+prelude
+prelude's
+preluded
+preluder
+preludes
+preluding
+preludize
+preludizes
+prelusion
+prelusive
+prelusively
+prelusory
+premalignant
+preman
+premarital
+premaritally
+premarket
+premature
+prematurely
+prematureness
+prematurity
+premaxilla
+premed
+premedial
+premedian
+premedical
+premedication
+premedieval
+premedieval's
+premedievalism
+premedievalism's
+premedievalisms
+premedievals
+premeditate
+premeditated
+premeditatedly
+premeditation
+premeditative
+premeditator
+premeiotic
+premenstrual
+premenstrually
+premership
+premie
+premier
+premier's
+premiere
+premiered
+premieres
+premiering
+premiers
+premiership
+premillenarian
+premillenarianism
+premillennial
+premillennialism
+premillennialist
+premillennially
+premise
+premise's
+premised
+premises
+premising
+premiss
+premium
+premium's
+premiums
+premix
+premixed
+premolar
+premonish
+premonition
+premonitions
+premonitorily
+premonitory
+premonopolize
+premonopolizes
+premorse
+premultiplied
+premultiply
+premultiplying
+premultiplys
+premune
+premunition
+prename
+prenatal
+prenatally
+prenomen
+prenominal
+prenominate
+prenomination
+prenotion
+Prentice
+Prenticed
+Prenticing
+preoccupancy
+preoccupation
+preoccupations
+preoccupied
+preoccupies
+preoccupy
+preoffense
+preoffense's
+preoffenses
+preopened
+preoperative
+preoperatively
+preorbital
+preordain
+preordained
+preordaining
+preordainment
+preordains
+preordination
+preorganization
+preorganization's
+preorganizations
+preorganize
+preorganizes
+preoviposition
+preovulatory
+preoxidation
+preoxidize
+preoxidized
+preoxidizes
+preoxidizing
+prep
+prepackage
+prepackaged
+preparation
+preparation's
+preparations
+preparative
+preparative's
+preparatively
+preparatives
+preparator
+preparatorily
+preparatory
+prepare
+prepared
+preparedly
+preparedness
+preparer
+prepares
+preparing
+prepausal
+prepay
+prepayment
+prepend
+prepended
+prepender
+prependers
+prepending
+prepends
+prepense
+prepensely
+preplan
+preponderance
+preponderances
+preponderancy
+preponderant
+preponderantly
+preponderate
+preponderately
+preponderating
+preponderation
+preposition
+preposition's
+prepositional
+prepositionally
+prepositions
+prepositive
+prepositively
+prepositor
+prepossess
+prepossessing
+prepossessingly
+prepossessingness
+prepossession
+preposterous
+preposterously
+preposterousness
+prepotency
+prepotent
+prepotently
+preppie
+prepping
+preprandial
+preprepared
+preprint
+preprinted
+preprinting
+preprints
+preprocess
+preprocessed
+preprocesses
+preprocessing
+preprocessor
+preprocessors
+preproduction
+preprofessional
+preprogram
+preprogrammed
+prepuberal
+prepuberally
+prepubertal
+prepubertally
+prepuberty
+prepubescence
+prepubescent
+prepublication
+prepuce
+prepunch
+prepupal
+preputial
+preradiation
+prerealization
+prerealization's
+prerealizations
+prerealize
+prerealizes
+prerecognize
+prerecognizes
+prerecord
+prerelease
+prerequisite
+prerequisite's
+prerequisites
+prerogative
+prerogative's
+prerogatived
+prerogatives
+presa
+presage
+presaged
+presageful
+presager
+presages
+presaging
+presanctified
+presbyope
+presbyopia
+presbyopic
+presbyter
+presbyterate
+presbyterial
+presbyterially
+Presbyterian
+Presbyterianism
+Presbyterianize
+Presbyterianizes
+presbytery
+prescan
+preschool
+preschooler
+prescience
+prescience's
+prescient
+prescientific
+presciently
+prescind
+prescore
+Prescott
+prescribe
+prescribed
+prescriber
+prescribes
+prescribing
+prescript
+prescriptible
+prescription
+prescription's
+prescriptions
+prescriptive
+prescriptively
+prescriptivism
+prese
+preselect
+preselected
+preselecting
+preselection
+preselects
+presell
+presence
+presence's
+presences
+present
+presentability
+presentable
+presentableness
+presentably
+presentation
+presentation's
+presentational
+presentationism
+presentations
+presentative
+presented
+presentee
+presenter
+presenters
+presentient
+presentiment
+presentimental
+presenting
+presently
+presentment
+presentments
+presentness
+presents
+preservable
+preservation
+preservationist
+preservations
+preservative
+preservative's
+preservatives
+preserve
+preserved
+preserver
+preservers
+preserves
+preserving
+preset
+presets
+presettable
+presetting
+preshrunk
+preside
+presided
+presidency
+president
+president's
+presidential
+presidentially
+presidents
+presidentship
+presider
+presides
+presidial
+presidiary
+presiding
+presidio
+presidium
+presignify
+Presley
+presley
+presoak
+presoaks
+prespecialize
+prespecializes
+presplendor
+presplendor's
+presplendors
+press
+pressboard
+Pressburg
+pressed
+presser
+presses
+pressing
+pressingly
+pressings
+pression
+pressman
+pressmark
+pressmen
+pressor
+pressroom
+pressrun
+pressure
+pressured
+pressures
+pressuring
+pressurization
+pressurize
+pressurized
+pressurizer
+pressurizers
+pressurizes
+pressurizing
+presswork
+prest
+prestandardization
+prestandardization's
+prestandardizations
+prestandardize
+prestandardizes
+prestel
+prester
+presternum
+prestidigitate
+prestidigitation
+prestidigitator
+prestige
+prestigeful
+prestigious
+prestigiously
+prestigiousness
+prestissimo
+presto
+Preston
+Preston's
+prestonpans
+prestos
+prestress
+prestressed
+prestwich
+presumable
+presumably
+presume
+presumed
+presumer
+presumes
+presuming
+presumingly
+presumption
+presumption's
+presumptions
+presumptive
+presumptively
+presumptuous
+presumptuously
+presumptuousness
+presuppose
+presupposed
+presupposes
+presupposing
+presupposition
+presuppositions
+presympathize
+presympathizes
+presynaptic
+presynaptically
+pretax
+preteen
+pretend
+pretended
+pretendedly
+pretender
+pretenders
+pretending
+pretends
+pretense
+pretenses
+pretension
+pretensionless
+pretensions
+pretensive
+pretentious
+pretentiously
+pretentiousness
+preterhuman
+preterit
+preterite
+preterition
+preteritive
+preterminal
+pretermission
+pretermit
+preternatural
+preternaturally
+preternaturalness
+pretest
+pretested
+pretesting
+pretests
+pretext
+pretext's
+pretexts
+pretonic
+pretor
+Pretoria
+Pretorian
+pretorius
+Pretre
+pretreat
+pretreatment
+pretrial
+prettied
+prettier
+pretties
+prettiest
+prettification
+prettify
+prettily
+prettiness
+pretty
+prettying
+prettyish
+pretubercular
+pretuberculous
+pretzel
+pretzels
+Preussen
+preutilizable
+preutilizable's
+preutilizables
+preutilization
+preutilization's
+preutilizations
+preutilize
+preutilizes
+prevail
+prevailed
+prevailing
+prevailingly
+prevails
+prevalence
+prevalent
+prevalently
+prevaricate
+prevaricated
+prevaricates
+prevaricating
+prevarication
+prevaricator
+prevenient
+preveniently
+prevent
+preventability
+preventable
+preventably
+preventative
+prevented
+preventer
+preventible
+preventing
+prevention
+preventions
+preventive
+preventively
+preventiveness
+preventives
+prevents
+preverbal
+preview
+previewed
+previewer
+previewers
+previewing
+previews
+Previn
+previous
+previously
+previousness
+previse
+prevision
+previsional
+previsionary
+previsioned
+previsioning
+previsions
+prevocalic
+prevocational
+prevue
+prewar
+prexy
+prey
+Prey
+preyed
+preyer
+preying
+preys
+Priam
+priapic
+priapism
+Priapus
+pribilof
+price
+Price
+priced
+priceless
+pricer
+pricers
+prices
+pricey
+pricier
+pricing
+prick
+pricked
+pricker
+pricket
+prickier
+pricking
+prickle
+prickled
+pricklier
+prickliness
+prickling
+prickly
+pricks
+pricky
+pricy
+pride
+prided
+prideful
+pridefully
+pridefulness
+prides
+priding
+pried
+prier
+pries
+priest
+priestcraft
+priestess
+priestesses
+priesthood
+Priestley
+priestliness
+priestly
+priests
+prieur
+prig
+priggery
+priggish
+priggishly
+priggishness
+priggism
+prill
+prim
+prima
+primacy
+primaeval
+primal
+primality
+primaquine
+primaries
+primarily
+primary
+primary's
+primate
+primates
+primateship
+primatial
+primatives
+primatological
+primatologist
+primatology
+prime
+Prime's
+primed
+primely
+primeness
+primer
+primero
+primers
+primes
+primeval
+primevally
+primigravida
+primine
+priming
+primipara
+primiparity
+primiparous
+primitive
+primitively
+primitiveness
+primitives
+primitivism
+primitivist
+primitivistic
+primitivity
+primly
+primmer
+primmest
+primming
+primness
+primo
+primogenitor
+primogeniture
+primordial
+primordially
+primordium
+primos
+primp
+primping
+primrdium
+primrose
+primula
+primulaceous
+primus
+prince
+princedom
+princekin
+princelet
+princelier
+princeliness
+princeling
+princely
+princes
+princeship
+princess
+princess's
+princesse
+princesses
+Princeton
+principal
+principalities
+principality
+principality's
+principally
+principals
+principalship
+Principe
+Principia
+principial
+principium
+principle
+principled
+principles
+princox
+prink
+prinker
+print
+printability
+printable
+printably
+printed
+printemps
+printer
+printers
+printery
+printing
+printless
+printmake
+printmaker
+printmakers
+printmaking
+printout
+printouts
+prints
+prior
+priorate
+prioress
+prioresses
+priori
+priorities
+prioritization
+prioritize
+prioritized
+prioritizer
+prioritizers
+prioritizes
+prioritizing
+prioritizings
+priority
+priority's
+priorization
+priorizations
+priorize
+priorized
+priorizes
+priorizing
+priorly
+priors
+priorship
+priory
+pripet
+prisage
+Priscian
+Priscilla
+prise
+prisere
+prism
+prism's
+prismatic
+prismatically
+prismatoid
+prismatoidal
+prismoid
+prismoidal
+prisms
+prison
+prisoner
+prisoner's
+prisoners
+prisons
+prissier
+prissily
+prissiness
+prissy
+pristane
+pristine
+pristinely
+Pritchard
+Pritchard's
+prithee
+privacies
+privacy
+privatdocent
+privatdozent
+private
+privateer
+privateer's
+privateers
+privately
+privateness
+privates
+privation
+privations
+privatism
+privative
+privatively
+privatization
+privatize
+privatized
+privatizing
+privet
+privies
+privilege
+privileged
+privileges
+privily
+privity
+privy
+privy's
+prix
+prize
+prized
+prizefight
+prizefighter
+prizefighting
+prizer
+prizers
+prizes
+prizewinner
+prizing
+pro
+pro's
+proa
+proach
+proaching
+proactive
+probabilism
+probabilist
+probabilistic
+probabilistically
+probabilities
+probability
+probable
+probably
+proband
+probang
+probate
+probated
+probates
+probating
+probation
+probational
+probationally
+probationary
+probationer
+probationers
+probative
+probatory
+probe
+probed
+probenecid
+prober
+probes
+probing
+probings
+probit
+probity
+problem
+problem's
+problematic
+problematical
+problematically
+problemize
+problemizes
+problems
+probosces
+proboscidean
+proboscidian
+proboscis
+proc
+procaine
+procambial
+procambium
+procarp
+procaryote
+procaryotic
+procathedral
+procedural
+procedurally
+procedure
+procedure's
+procedures
+proceed
+proceeded
+proceeder
+proceeding
+proceedings
+proceeds
+proceleusmatic
+procephalic
+procercoid
+process
+process's
+processability
+processable
+processed
+processes
+processibility
+processible
+processing
+procession
+processional
+processionally
+processionize
+processionizes
+processor
+processor's
+processors
+prochronism
+proclaim
+proclaimed
+proclaimer
+proclaimers
+proclaiming
+proclaims
+proclamation
+proclamation's
+proclamations
+proclimax
+proclitic
+proclivities
+proclivity
+proclivity's
+proclus
+Procne
+proconsul
+proconsular
+proconsulate
+proconsulship
+procopius
+procrastinate
+procrastinated
+procrastinates
+procrastinating
+procrastination
+procrastinator
+procrastinator's
+procrastinators
+procreant
+procreate
+procreation
+procreative
+procreativity
+procreator
+procrustean
+Procrusteanize
+Procrusteanizes
+Procrustes
+procryptic
+Procter
+Procter's
+proctodaeum
+proctologic
+proctological
+proctologist
+proctology
+proctor
+proctor's
+proctored
+proctorial
+proctoring
+proctorization
+proctorization's
+proctorizations
+proctorize
+proctorizes
+proctors
+proctorship
+proctoscope
+procumbent
+procurable
+procurance
+procuration
+procurator
+procuratorial
+procuratory
+procure
+procured
+procurement
+procurement's
+procurements
+procurer
+procurers
+procures
+procuress
+procuring
+Procyon
+prod
+prodded
+prodder
+prodding
+prodigal
+prodigality
+prodigalize
+prodigalizes
+prodigally
+prodigies
+prodigious
+prodigiously
+prodigiousness
+prodigy
+prodromal
+prodromata
+prodrome
+prodromes
+prodromic
+producable
+produce
+produced
+producer
+producers
+produces
+producible
+producing
+product
+product's
+production
+production's
+productional
+productions
+productive
+productively
+productiveness
+productivities
+productivity
+productize
+productized
+productizer
+productizers
+productizes
+productizing
+products
+proem
+proemial
+proenzyme
+proestrus
+prof
+profanation
+profanatory
+profane
+profaned
+profanely
+profaneness
+profaner
+profaning
+profanity
+profanize
+profanizes
+profess
+professed
+professedly
+professes
+professeur
+professing
+profession
+profession's
+professional
+professionalism
+professionalisms
+professionalization
+professionalization's
+professionalizations
+professionalize
+professionalized
+professionalizes
+professionalizing
+professionally
+professionals
+professionize
+professionizes
+professions
+professor
+professor's
+professorate
+professorial
+professorially
+professoriat
+professoriate
+professors
+professorship
+proffer
+proffered
+proffering
+proffers
+proficiencies
+proficiency
+proficient
+proficiently
+profile
+profiled
+profiler
+profiler's
+profilers
+profiles
+profili
+profiling
+profit
+profit's
+profitability
+profitable
+profitableness
+profitably
+profited
+profiteer
+profiteer's
+profiteers
+profiter
+profiterole
+profiters
+profiting
+profitless
+profits
+profitted
+profitting
+profligacy
+profligate
+profligately
+profligates
+profluent
+profound
+profoundest
+profoundity
+profoundly
+profoundness
+profundity
+profuse
+profusely
+profuseness
+profusion
+prog
+progamete
+progenitive
+progenitor
+progeny
+progestational
+progesterone
+progestin
+progestogen
+progging
+proglottid
+proglottidean
+proglottis
+prognathic
+prognathism
+prognathous
+prognoses
+prognosis
+prognostic
+prognosticate
+prognostication
+prognosticative
+prognosticator
+prograde
+program
+program's
+programist
+programist's
+programistic
+programistics
+programists
+programmability
+programmable
+programmatic
+programmatically
+programmed
+programmer
+programmer's
+programmers
+programming
+programs
+progress
+progressed
+progresses
+progressing
+progression
+progression's
+progressional
+progressionist
+progressions
+progressist
+progressive
+progressively
+progressiveness
+progressivism
+progressivist
+progressivistic
+prohibit
+prohibited
+prohibiter
+prohibiting
+prohibition
+prohibition's
+prohibitionist
+prohibitions
+prohibitive
+prohibitively
+prohibitiveness
+prohibitory
+prohibits
+project
+project's
+projectable
+projected
+projectile
+projectiles
+projecting
+projection
+projection's
+projectional
+projectionist
+projectionists
+projections
+projective
+projectively
+projector
+projector's
+projectors
+projects
+projet
+projets
+prokaryote
+prokaryotic
+Prokofieff
+Prokofiev
+Prokofiev's
+Prokopyevsk
+prolactin
+prolamin
+prolamine
+prolan
+prolapse
+prolapsed
+prolapsing
+prolate
+prole
+proleg
+prolegomena
+prolegomenon
+prolepsis
+proleptic
+proletarian
+proletarianization
+proletarianize
+proletarianized
+proletarianizes
+proletarianizing
+proletariat
+proliferate
+proliferated
+proliferates
+proliferating
+proliferation
+proliferative
+proliferous
+proliferously
+prolific
+prolificacy
+prolifically
+prolificity
+prolificness
+proline
+prolix
+prolixity
+prolixly
+prolocutor
+prolog
+prolog's
+prologize
+prologs
+prologue
+prologue's
+prologues
+prologuize
+prologuizer
+prologuizers
+prologuizes
+prolong
+prolongate
+prolongated
+prolongates
+prolongating
+prolongation
+prolonged
+prolonger
+prolonging
+prolongs
+prolotherapy
+prolusion
+prolusionize
+prolusionizes
+prolusions
+prolusory
+prom
+promazine
+promenade
+promenade's
+promenader
+promenades
+promenading
+promethazine
+Promethean
+Prometheus
+promethium
+prominence
+prominent
+prominently
+promiscuity
+promiscuity's
+promiscuous
+promiscuously
+promiscuousness
+promise
+promised
+promisee
+promiser
+promises
+promising
+promisingly
+promisor
+promissory
+promontories
+promontory
+promotability
+promotable
+promote
+promoted
+promoter
+promoters
+promotes
+promoting
+promotion
+promotional
+promotions
+promotive
+promotiveness
+prompt
+promptbook
+promptbooks
+prompted
+prompter
+prompters
+promptest
+prompting
+promptings
+promptitude
+promptly
+promptness
+prompts
+promulgate
+promulgated
+promulgates
+promulgating
+promulgation
+promulgations
+promulgator
+promulgators
+promycelium
+pronatalism
+pronatalist
+pronate
+pronated
+pronating
+pronation
+pronator
+prone
+pronely
+proneness
+pronephric
+pronephros
+prong
+pronged
+pronghorn
+pronghorns
+prongs
+pronominal
+pronominalization
+pronominalize
+pronominally
+pronoun
+pronoun's
+pronounce
+pronounceable
+pronounced
+pronouncedly
+pronouncement
+pronouncement's
+pronouncements
+pronouncer
+pronounces
+pronouncing
+pronouns
+pronto
+pronuclear
+pronucleus
+pronunciamento
+pronunciation
+pronunciation's
+pronunciational
+pronunciations
+proof
+proof's
+proofed
+proofer
+proofing
+prooflike
+proofread
+proofreader
+proofreading
+proofreads
+proofroom
+proofs
+prop
+propaedeutic
+propagable
+propaganda
+propagandism
+propagandist
+propagandistic
+propagandistically
+propagandists
+propagandize
+propagandized
+propagandizes
+propagandizing
+propagate
+propagated
+propagates
+propagating
+propagation
+propagational
+propagations
+propagative
+propagator
+propagule
+propane
+propanoic
+proparoxytone
+propel
+propellant
+propellants
+propelled
+propellent
+propeller
+propeller's
+propellers
+propelling
+propellor
+propels
+propenamide
+propend
+propene
+propense
+propensities
+propensity
+proper
+properdin
+properly
+properness
+propertied
+properties
+propertius
+property
+propertyless
+prophage
+prophase
+prophasic
+prophecies
+prophecy
+prophecy's
+prophesied
+prophesier
+prophesies
+prophesy
+prophesying
+prophet
+prophet's
+prophetess
+prophetic
+prophetical
+prophetically
+prophetize
+prophetizes
+prophets
+prophylactic
+prophylactically
+prophylaxis
+propine
+propined
+propining
+propinquity
+propionate
+propionibacteria
+propionic
+propitiable
+propitiate
+propitiation
+propitiator
+propitiatory
+propitious
+propitiously
+propitiousness
+propjet
+proplastid
+propman
+propolis
+propone
+proponed
+proponent
+proponent's
+proponents
+proponing
+propontis
+proportion
+proportionable
+proportionably
+proportional
+proportionality
+proportionally
+proportionate
+proportionately
+proportioned
+proportioner
+proportioning
+proportionment
+proportions
+propos
+proposal
+proposal's
+proposals
+propose
+proposed
+proposer
+proposers
+proposes
+proposing
+proposition
+propositional
+propositionally
+propositioned
+propositioning
+propositionize
+propositionizes
+propositions
+propositus
+propound
+propounded
+propounder
+propounding
+propounds
+propped
+propping
+propranolol
+propretor
+proprietary
+proprietor
+proprietor's
+proprietors
+proprietorship
+proprietorships
+proprietress
+propriety
+proprioception
+proprioceptive
+proprioceptor
+props
+proptosis
+propulsion
+propulsion's
+propulsions
+propulsive
+propyl
+propylaeum
+propylene
+propylite
+prorate
+prorated
+prorating
+proration
+prorogate
+prorogation
+prorogue
+prorogued
+proroguing
+pros
+prosaic
+prosaically
+prosaism
+prosaist
+prosateur
+proscenium
+prosceniums
+prosciutto
+proscribe
+proscribed
+proscriber
+proscribes
+proscribing
+proscription
+proscriptive
+proscriptively
+prose
+prosector
+prosectorial
+prosecutable
+prosecute
+prosecuted
+prosecutes
+prosecuting
+prosecution
+prosecutions
+prosecutor
+prosecutors
+proselyte
+proselytism
+proselytization
+proselytization's
+proselytizations
+proselytize
+proselytized
+proselytizer
+proselytizers
+proselytizes
+proselytizing
+proseminar
+prosencephalic
+prosencephalon
+prosenchyma
+prosenchymas
+prosenchymata
+prosenchymatous
+proser
+proserpina
+Proserpine
+Proserpine's
+prosier
+prosily
+prosiness
+prosing
+prosit
+proso
+prosobranch
+prosodic
+prosodical
+prosodically
+prosodics
+prosodies
+prosodist
+prosody
+prosoma
+prosomal
+prosopographical
+prosopography
+prosopopoeia
+prospect
+prospected
+prospecting
+prospection
+prospection's
+prospections
+prospective
+prospectively
+prospectiveness
+prospectives
+prospector
+prospector's
+prospectors
+prospects
+prospectus
+prosper
+prospered
+prospering
+prosperity
+prosperous
+prosperously
+prosperousness
+prospers
+prossed
+prosser
+prost
+prostaglandin
+prostate
+prostatectomy
+prostatic
+prostatism
+prostatitis
+prostheses
+prosthesis
+prosthetic
+prosthetically
+prosthetics
+prosthodontics
+prosthodontist
+prostitute
+prostitutes
+prostitution
+prostitutor
+prostomial
+prostomium
+prostrate
+prostrated
+prostration
+prostyle
+prosy
+protactinium
+protagonist
+protagonists
+protagoras
+protamine
+protandrous
+protanopia
+protasis
+protatic
+protea
+protean
+protease
+proteases
+protect
+protectant
+protected
+protectedly
+protecting
+protection
+protection's
+protectionism
+protectionist
+protectionize
+protectionizes
+protections
+protective
+protectively
+protectiveness
+protector
+protector's
+protectoral
+protectorate
+protectors
+protectorship
+protectory
+protectress
+protects
+protege
+protege's
+proteges
+proteid
+proteide
+protein
+protein's
+proteinaceous
+proteinase
+proteinate
+proteins
+proteinuria
+proteinuric
+protend
+protensive
+protensively
+proteoclastic
+proteolysis
+proteolytic
+proteose
+proteranthous
+proteranthy
+Proterozoic
+proters
+protest
+protest's
+protestant
+protestantism
+Protestantism
+Protestantize
+Protestantizes
+protestants
+protestation
+protestations
+protested
+protester
+protester's
+protesters
+protesting
+protestingly
+protestor
+protests
+proteus
+prothalamion
+prothalamium
+prothallial
+prothallium
+prothallus
+prothesis
+prothetelic
+prothetely
+prothetic
+prothonotarial
+prothonotary
+prothoracic
+prothorax
+prothrombin
+protist
+Protista
+protistan
+protitch
+protium
+proto
+protoactinium
+protochordate
+protocol
+protocol's
+protocoled
+protocoling
+protocolization
+protocolization's
+protocolizations
+protocolize
+protocolizes
+protocols
+protoderm
+protodermal
+protogalaxy
+protogeometric
+protogynous
+protohistorian
+protohistoric
+protohistory
+protohuman
+protolanguage
+protolithic
+protomartyr
+protomorphic
+proton
+proton's
+protonate
+protonated
+protonation
+protonema
+protonemal
+protonematal
+protonic
+protonotary
+protons
+protonymph
+protonymphal
+protopathic
+protophloem
+Protophyta
+protophyta
+protoplanet
+protoplasm
+protoplasmic
+protoplast
+protoplastic
+protoporphyrin
+protosemitic
+protostar
+protostele
+protostelic
+prototherian
+prototroph
+prototrophic
+prototrophy
+prototypal
+prototype
+prototype's
+prototyped
+prototypes
+prototypic
+prototypical
+prototypically
+prototyping
+protoxide
+protoxylem
+protozoa
+protozoal
+protozoan
+protozoic
+protozoological
+protozoologist
+protozoology
+protozoon
+protract
+protracted
+protractile
+protraction
+protractive
+protractor
+protreptic
+protrude
+protruded
+protrudes
+protruding
+protrusible
+protrusile
+protrusion
+protrusion's
+protrusions
+protrusive
+protrusively
+protrusiveness
+protuberance
+protuberant
+protuberate
+protuberatly
+protude
+protudes
+protuding
+protyle
+proud
+prouder
+proudest
+proudful
+proudhearted
+proudhon
+proudly
+Proust
+proustite
+prout
+provability
+provable
+provableness
+provably
+provascular
+prove
+proved
+provement
+proven
+provenance
+Provence
+provender
+provenience
+provenly
+proventriculus
+prover
+proverb
+proverb's
+proverbial
+proverbialize
+proverbializes
+proverbially
+proverbize
+proverbizes
+proverbs
+provers
+proves
+provide
+provided
+providence
+provident
+providential
+providentially
+providently
+provider
+providers
+provides
+providing
+province
+province's
+provinces
+Provincetown
+provincial
+provincialism
+provincialist
+provinciality
+provincialization
+provincialization's
+provincializations
+provincialize
+provincializes
+provincially
+proving
+proviral
+provirus
+provision
+provisional
+provisionally
+provisionary
+provisioned
+provisioner
+provisioning
+provisions
+proviso
+provisons
+provisory
+provitamin
+provo
+provocate
+provocateur
+provocateurs
+provocation
+provocations
+provocative
+provocatively
+provocativeness
+provoke
+provoked
+provokes
+provoking
+provokingly
+provolone
+provost
+prow
+prow's
+prowess
+prowl
+prowled
+prowler
+prowlers
+prowling
+prowls
+prows
+proxemic
+proxemics
+proxies
+proxima
+proximal
+proximally
+proximate
+proximately
+proximateness
+proximity
+proximo
+proxmire
+Proxmire
+proxy
+prude
+prude's
+prudence
+prudent
+prudential
+prudentially
+prudentius
+prudently
+prudery
+prudes
+prudish
+prudishly
+prudishness
+pruinose
+prune
+pruned
+Prunella
+prunelle
+pruner
+pruners
+prunes
+pruning
+prurience
+pruriency
+prurient
+pruriently
+pruriginous
+prurigo
+pruritic
+pruritus
+Prussia
+Prussian
+Prussianism
+Prussianization
+Prussianization's
+Prussianizations
+Prussianize
+Prussianized
+Prussianizer
+Prussianizers
+Prussianizes
+Prussianizing
+prussiate
+prussic
+prut
+prutot
+pry
+pryer
+prying
+pryingly
+prynne
+prytaneum
+psalm
+psalm's
+psalmbook
+psalmist
+psalmody
+psalms
+psalter
+psalterium
+psaltery
+psaltry
+psammite
+psephite
+psephological
+psephologist
+psephology
+pseud
+pseudaxis
+pseudepigraph
+pseudepigrapha
+pseudepigraphon
+pseudepigraphy
+pseudo
+pseudoallele
+pseudoallelic
+pseudoallelism
+pseudoanemia
+pseudoanemia's
+pseudoanemias
+pseudoanemic
+pseudoanemics
+pseudocarp
+pseudoclassic
+pseudoclassicism
+pseudocode
+pseudoedema
+pseudoedema's
+pseudoedemas
+pseudoenergy
+pseudographize
+pseudographizes
+pseudomedieval
+pseudomedieval's
+pseudomedievals
+pseudomorph
+pseudomutuality
+pseudonym
+pseudonym's
+pseudonymity
+pseudonymous
+pseudonymously
+pseudonymousness
+pseudonyms
+pseudopodium
+pseudopotential
+pseudorandom
+pseudoscience
+pseudoscientific
+pseudoscientist
+pseudoscorpion
+pseudosophisticated
+pseudosophistication
+pseudotuberculosis
+pshaw
+psi
+psilocybin
+psilomelane
+psittacine
+psittacosis
+Pskov
+psoas
+Psoralea
+psoriasis
+psst
+PST
+psych
+psychasthenia
+psyche
+psyche's
+psychedelia
+psychedelic
+psychedelically
+psyches
+psychiatric
+psychiatrically
+psychiatrist
+psychiatrist's
+psychiatrists
+psychiatry
+psychic
+psychic's
+psychical
+psychically
+psychics
+psycho
+psychoacoustic
+psychoacoustics
+psychoactive
+psychoanalysis
+psychoanalyst
+psychoanalytic
+psychoanalytical
+psychoanalytically
+psychoanalyze
+psychoanalyzer
+psychoanalyzer's
+psychoanalyzers
+psychoanalyzes
+psychobiographical
+psychobiography
+psychobiologic
+psychobiological
+psychobiologist
+psychobiology
+psychochemical
+psychocultural
+psychodrama
+psychodramatic
+psychodynamic
+psychodynamically
+psychodynamics
+psychogenesis
+psychogenetic
+psychogenic
+psychogenically
+psychognosis
+psychognosy
+psychograph
+psychohistory
+psychokinesis
+psychokinetic
+psycholinguist
+psycholinguistic
+psycholinguistics
+psychologic
+psychological
+psychologically
+psychologism
+psychologist
+psychologist's
+psychologists
+psychologization
+psychologize
+psychologized
+psychologizes
+psychologizing
+psychology
+psychometric
+psychometrically
+psychometrics
+psychometry
+psychomimetic
+psychomotor
+psychoneurosis
+psychoneurotic
+psychopath
+psychopathic
+psychopathically
+psychopathologic
+psychopathological
+psychopathologically
+psychopathologist
+psychopathology
+psychopathy
+psychopharmaceutical
+psychopharmacologic
+psychopharmacological
+psychopharmacologist
+psychopharmacology
+psychophysic
+psychophysical
+psychophysically
+psychophysicist
+psychophysics
+psychophysiologic
+psychophysiological
+psychophysiologically
+psychophysiologist
+psychophysiology
+psychopomp
+psychos
+psychoses
+psychosexual
+psychosexuality
+psychosexually
+psychosis
+psychosocial
+psychosocially
+psychosomatic
+psychosomatically
+psychosomatics
+psychosurgery
+psychosurgical
+psychotechnics
+psychotherapeutic
+psychotherapeutically
+psychotherapeutics
+psychotherapist
+psychotherapists
+psychotherapy
+psychotic
+psychotically
+psychotogen
+psychotogenic
+psychotomimetic
+psychotomimetically
+psychotropic
+psychrometer
+psychrometer's
+psychrometers
+psychrometric
+psychrometry
+psychrophilic
+psycoanalyze
+psyllium
+PTA
+ptah
+ptarmigan
+pteridology
+pteridophyte
+pteridosperm
+pterodactyl
+pterodactyl's
+pterodactyls
+pteropod
+pterosaur
+pterygoid
+pteryla
+ptisan
+ptochocracy
+ptolemaeus
+Ptolemaic
+Ptolemaist
+ptolemaists
+Ptolemaists
+Ptolemy
+ptomaine
+ptosis
+ptyalin
+ptyalism
+pub
+pub's
+puberal
+pubertal
+puberty
+puberulent
+pubes
+pubescence
+pubescent
+pubic
+pubis
+public
+publican
+publicans
+publication
+publication's
+publications
+publicist
+publicists
+publicity
+publicize
+publicized
+publicizes
+publicizing
+publick
+publicly
+publicness
+publics
+publique
+publish
+publishable
+published
+publisher
+publishers
+publishes
+publishing
+pubs
+PUC
+Puccini
+puccoon
+puce
+puck
+pucka
+pucker
+puckered
+puckering
+puckers
+puckery
+puckish
+puckishly
+puckishness
+pud
+pudding
+pudding's
+puddings
+puddingstone
+puddle
+puddled
+puddler
+puddles
+puddling
+puddly
+pudency
+pudendal
+pudendum
+pudgier
+pudginess
+pudgy
+pudsey
+puebla
+pueblo
+puebloization
+puebloization's
+puebloizations
+puebloize
+puebloizes
+pueblos
+puerile
+puerilely
+puerilism
+puerperal
+puerperium
+Puerto
+puff
+puffball
+puffballs
+puffbird
+puffbirds
+puffed
+puffer
+puffers
+puffery
+puffin
+puffiness
+puffing
+puffins
+puffs
+puffy
+pug
+pugaree
+puget
+puggaree
+pugging
+Pugh
+pugilism
+pugilist
+pugilistic
+puglia
+pugmark
+pugnacious
+pugnaciously
+pugnaciousness
+pugnacity
+pugwash
+puisne
+puissance
+puissant
+puissantly
+puke
+puked
+pukes
+puking
+pukka
+pul
+pula
+Pulaski
+pulchritude
+pulchritudinous
+pule
+puler
+puli
+pulicide
+pulik
+puling
+pulis
+Pulitzer
+pull
+pullback
+pulled
+puller
+pullet
+pulley
+pulley's
+pulleys
+pulling
+pullings
+Pullman
+Pullmanize
+Pullmanizes
+Pullmans
+pullorum
+pullout
+pullover
+pulls
+pullulate
+pullulation
+pulmonary
+pulmonate
+pulmonic
+pulmotor
+pulp
+pulpal
+pulpally
+pulper
+pulpiness
+pulping
+pulpit
+pulpit's
+pulpitize
+pulpitizes
+pulpits
+pulpwood
+pulpy
+pulque
+pulsant
+pulsar
+pulsar's
+pulsars
+pulsate
+pulsated
+pulsates
+pulsatile
+pulsating
+pulsation
+pulsations
+pulsator
+pulsatory
+pulse
+pulsed
+pulsejet
+pulser
+pulses
+pulsimeter
+pulsimeter's
+pulsimeters
+pulsing
+pulsometer
+pulsometer's
+pulsometers
+pulverable
+pulverizable
+pulverizable's
+pulverizables
+pulverization
+pulverization's
+pulverizations
+pulverize
+pulverized
+pulverizer
+pulverizers
+pulverizes
+pulverizing
+pulverulent
+pulvillus
+pulvinate
+pulvinus
+puma
+puma's
+pumice
+pumiced
+pumiceous
+pumicing
+pumicite
+pummel
+pummeled
+pummeler
+pummeling
+pummels
+pump
+pumped
+pumper
+pumpernickel
+pumping
+pumpkin
+pumpkin's
+pumpkins
+pumpkinseed
+pumpkinseeds
+pumps
+pun
+pun's
+puna
+punakha
+punce
+punch
+punchable
+punchball
+punchballs
+punchboard
+punchbowl
+punchbowls
+punched
+puncheon
+puncher
+puncher's
+punchers
+punches
+punchier
+punchinello
+punching
+punchings
+punchless
+punchy
+punctate
+punctation
+punctilio
+punctilious
+punctiliously
+punctiliousness
+punctual
+punctuality
+punctually
+punctualness
+punctuate
+punctuated
+punctuates
+punctuating
+punctuation
+punctuator
+puncture
+puncture's
+punctured
+punctures
+puncturing
+pundit
+punditry
+pundits
+pune
+pung
+pungency
+pungent
+pungently
+Punic
+punier
+punily
+puniness
+punish
+punishability
+punishable
+punished
+punisher
+punishes
+punishing
+punishment
+punishment's
+punishments
+punition
+punitive
+punitively
+punitiveness
+punjab
+Punjab
+Punjab's
+Punjabi
+punk
+punka
+punkah
+punkie
+punkier
+punkies
+punkin
+punkiness
+punks
+punky
+punnet
+punnets
+punnier
+punning
+punny
+puns
+punster
+punsters
+punt
+punta
+punted
+punter
+punters
+punties
+punting
+punts
+punty
+puny
+pup
+pup's
+pupa
+pupae
+pupal
+puparia
+puparial
+puparium
+pupas
+pupate
+pupated
+pupates
+pupating
+pupation
+pupfish
+pupil
+pupil's
+pupilage
+pupilar
+pupilize
+pupilizes
+pupillage
+pupillary
+pupils
+pupiparous
+puppet
+puppet's
+puppeteer
+puppeteers
+puppetize
+puppetizes
+puppetry
+puppets
+puppies
+pupping
+Puppis
+puppy
+puppy's
+puppyish
+pups
+purana
+Purbeck
+purblind
+purblindly
+purblindness
+Purcell
+purchasable
+purchase
+purchased
+purchaser
+purchasers
+purchases
+purchasing
+purdah
+purdew
+Purdue
+pure
+pureblood
+purebred
+puree
+puree's
+pureed
+pureeing
+purees
+purely
+pureness
+purer
+purest
+purfle
+purfled
+purfling
+purgation
+purgative
+purgatorial
+purgatory
+purge
+purged
+purger
+purges
+purging
+puri
+purification
+purifications
+purificator
+purificatory
+purified
+purifier
+purifiers
+purifies
+purifing
+purify
+purifying
+purim
+Purina
+purine
+purism
+purist
+puristic
+purists
+puritan
+puritanic
+puritanical
+puritanically
+puritanism
+Puritanize
+Puritanizer
+Puritanizers
+Puritanizes
+puritans
+purity
+purl
+purled
+purler
+purlers
+purlieu
+purlin
+purling
+purloin
+purloined
+purloiner
+purloining
+purloins
+puromycin
+purple
+purpled
+purpler
+purples
+purplest
+purpling
+purplish
+purply
+purport
+purported
+purportedly
+purporter
+purporters
+purporting
+purports
+purpose
+purposed
+purposeful
+purposefully
+purposefulness
+purposeless
+purposelessly
+purposelessness
+purposely
+purposes
+purposing
+purposive
+purposively
+purposiveness
+purpura
+purpure
+purpuric
+purpurin
+purr
+purred
+purring
+purringly
+purrs
+purse
+pursed
+purselike
+purser
+pursers
+purses
+pursewarden
+pursier
+pursiness
+pursing
+purslane
+pursuance
+pursuant
+pursue
+pursued
+pursuer
+pursuers
+pursues
+pursuing
+pursuit
+pursuit's
+pursuits
+pursuivant
+pursy
+purtenance
+purulence
+purulent
+purvey
+purveyance
+purveyed
+purveying
+purveyor
+purveyors
+purveys
+purview
+purvis
+pus
+Pusan
+Pusan's
+Pusey
+Pusey's
+Puseyism
+push
+pushball
+pushbutton
+pushbuttons
+pushcart
+pushchair
+pushchairs
+pushdown
+pushed
+pusher
+pushers
+pushes
+pushful
+pushfulness
+pushier
+pushily
+pushiness
+pushing
+pushkin
+pushout
+pushover
+pushover's
+pushovers
+pushpin
+pushpin's
+pushpins
+pushrod
+pushrods
+pushto
+pushup
+pushy
+pusillanimity
+pusillanimous
+pusillanimously
+puss
+pussier
+pussies
+pussy
+pussycat
+pussyfoot
+pussyfooter
+pussyfooting
+pussytoes
+pustulant
+pustular
+pustulate
+pustulated
+pustulation
+pustule
+pustules
+put
+putains
+putamen
+putas
+putative
+putatively
+putdown
+putdown's
+putdowns
+Putnam
+Putnam's
+putout
+putrefaction
+putrefactive
+putrefy
+putrescence
+putrescent
+putrescible
+putrescine
+putrid
+putridity
+putridly
+putridness
+puts
+putsch
+putschist
+putt
+puttana
+putted
+puttee
+puttees
+putter
+putterer
+puttering
+putters
+puttied
+putties
+putting
+putto
+putty
+puttying
+puttyroot
+putumayo
+puvis
+puy
+puzzle
+puzzled
+puzzleheaded
+puzzleheadedness
+puzzlement
+puzzler
+puzzlers
+puzzles
+puzzling
+puzzlings
+PVC
+PWT
+pya
+pyaemia
+pycnidium
+pycnogonid
+pycnometer
+pycnometer's
+pycnometers
+pydna
+pye
+pyelitis
+pyelography
+pyelonephritic
+pyelonephritis
+pyemia
+pyemic
+pygidial
+pygidium
+pygmaean
+Pygmalion
+pygmean
+pygmies
+pygmoid
+pygmy
+pygmy's
+pygmyish
+pygmyism
+Pyhrric
+pyknic
+pyknotic
+Pyle
+Pyle's
+pylon
+pylons
+pylorectomy
+pylori
+pyloric
+pylorus
+pylos
+pym
+pyocanea
+pyoderma
+pyodermic
+pyogenesis
+pyogenic
+pyoid
+Pyongyang
+Pyongyang's
+pyorrhea
+pyorrhea's
+pyorrheal
+pyorrheas
+pyosis
+Pyotr
+Pyotr's
+pyracanth
+pyracantha
+pyralid
+pyralidid
+pyramid
+pyramid's
+pyramidal
+pyramidally
+pyramidical
+pyramidize
+pyramidizes
+pyramids
+pyramus
+pyran
+pyranoid
+pyranometer
+pyranose
+pyranoside
+pyrargyrite
+pyrazole
+pyre
+pyrene
+pyrenees
+pyrenoid
+pyrethrin
+pyrethroid
+pyrethrum
+pyretic
+Pyrex
+pyrexia
+pyrexial
+pyrexic
+pyrheliometer
+pyrheliometer's
+pyrheliometers
+pyrheliometric
+pyric
+pyridine
+pyridinize
+pyridinizes
+pyridoxal
+pyridoxamine
+pyridoxin
+pyridoxine
+pyriform
+pyrimethamine
+pyrimidine
+pyrimidines
+pyrite
+pyrites
+pyritic
+pyritization
+pyritization's
+pyritizations
+pyritize
+pyritizes
+pyrocatechol
+pyrocellulose
+pyrochemical
+pyrochemically
+pyroclastic
+pyroconductivity
+pyroelectric
+pyroelectricity
+pyrogallate
+pyrogallol
+pyrogen
+pyrogenic
+pyrogenicity
+pyrogenous
+pyrognostics
+pyrographic
+pyrography
+pyrola
+pyroligneous
+pyrolusite
+pyrolysed
+pyrolysing
+pyrolysis
+pyrolytic
+pyrolytically
+pyrolyzable
+pyrolyzate
+pyrolyze
+pyrolyze's
+pyrolyzer
+pyrolyzes
+pyromagnetic
+pyromancy
+pyromania
+pyromaniac
+pyromaniac's
+pyromaniacal
+pyromaniacs
+pyrometallurgical
+pyrometallurgy
+pyrometer
+pyrometer's
+pyrometers
+pyrometric
+pyrometrically
+pyrometry
+pyromorphite
+pyrone
+pyronine
+pyroninophilic
+pyrope
+pyrophoric
+pyrophosphate
+pyrophosphatic
+pyrophosphoric
+pyrophotometer
+pyrophyllite
+pyrophyllte
+pyrosis
+pyrostat
+pyrosulphate
+pyrosulphuric
+pyrotechnic
+pyrotechnical
+pyrotechnically
+pyrotechnics
+pyrotechnist
+pyroxene
+pyroxenic
+pyroxenite
+pyroxenitic
+pyroxenoid
+pyroxylin
+pyrrha
+pyrrhic
+pyrrho
+pyrrhotite
+pyrrhuloxia
+Pyrrhus
+pyrrol
+pyrrole
+pyrrolic
+pyrrolidine
+pyrruvic
+pyruvate
+pyschiatrist
+Pythagoras
+Pythagorean
+Pythagoreanism
+Pythagoreanize
+Pythagoreanizes
+Pythagoreans
+Pythia
+Pythian
+pythias
+python
+pythoness
+pythonic
+pythonine
+pythonize
+pythonizes
+pythons
+pyuria
+pyx
+pyxides
+pyxidium
+pyxie
+pyxis
+q's
+QA
+qaboos
+qaddafi
+qaddish
+qadi
+qairwan
+Qatar
+Qatar's
+qattara
+QED
+qeshm
+qibla
+qintar
+qishm
+QM
+qoph
+qua
+quack
+quacked
+quackery
+quacking
+quackish
+quacks
+quad
+quadded
+quadding
+quadragenarian
+Quadragesima
+quadragesimal
+quadrangle
+quadrangles
+quadrangular
+quadrant
+quadrant's
+quadrantal
+quadrants
+quadraphonic
+quadraphonics
+quadraphony
+quadraplegic
+quadrapole
+quadrat
+quadrate
+quadrated
+quadrates
+quadratic
+quadratical
+quadratically
+quadratics
+quadrating
+quadrature
+quadrature's
+quadratures
+quadrella
+quadrennial
+quadrennially
+quadrennium
+quadric
+quadricentennial
+quadriceps
+quadricipital
+quadrifid
+quadriga
+quadrilateral
+quadrilaterals
+quadrille
+quadrilles
+quadrillion
+quadrillionth
+quadrinomial
+quadripartite
+quadripartitely
+quadripartition
+quadriplegia
+quadriplegic
+quadripuntal
+quadrisect
+quadrisected
+quadrisecting
+quadrisects
+quadrisyllabic
+quadrivalent
+quadrivial
+quadrivium
+quadroon
+quadroons
+quadrophonics
+quadrumanous
+quadrumvir
+quadrumvirate
+quadruped
+quadrupedal
+quadrupeds
+quadruple
+quadrupled
+quadruples
+quadruplet
+quadruplets
+quadruplex
+quadruplicate
+quadruplicated
+quadruplicates
+quadruplicating
+quadruplication
+quadruplications
+quadruplicity
+quadrupling
+quadruply
+quadrupolar
+quadrupole
+quadword
+quadword's
+quadwords
+quaere
+quaestor
+quaff
+quaffer
+quag
+quagga
+quaggy
+quagmire
+quagmire's
+quagmires
+quahog
+quai
+quaich
+quail
+quail's
+quails
+quaint
+quaintly
+quaintness
+quake
+quaked
+quaker
+Quakeress
+Quakerization
+Quakerization's
+Quakerizations
+Quakerize
+Quakerizes
+quakers
+quakes
+quaking
+quaky
+quale
+qualification
+qualifications
+qualified
+qualifiedly
+qualifier
+qualifiers
+qualifies
+qualify
+qualifying
+qualitative
+qualitatively
+qualities
+quality
+quality's
+qualm
+qualmish
+qualmishly
+qualmishness
+qualms
+qualmy
+quandaries
+quandary
+quandary's
+quango
+quangos
+quant
+quanta
+quantal
+quantasome
+quantic
+Quantico
+quantifiable
+quantifiably
+quantification
+quantificational
+quantificationally
+quantifications
+quantified
+quantifier
+quantifiers
+quantifies
+quantify
+quantifying
+quantifys
+quantile
+quantiles
+quantitate
+quantitated
+quantitates
+quantitating
+quantitation
+quantitations
+quantitative
+quantitatively
+quantitativeness
+quantities
+quantity
+quantity's
+quantization
+quantization's
+quantizations
+quantize
+quantized
+quantizer
+quantizer's
+quantizers
+quantizes
+quantizing
+quantum
+quaquaversal
+quarantinable
+quarantine
+quarantine's
+quarantined
+quarantines
+quarantining
+quare
+quark
+quarks
+quarrel
+quarreled
+quarreler
+quarrelers
+quarreling
+quarrelous
+quarrels
+quarrelsome
+quarrelsomely
+quarrelsomeness
+quarrian
+quarried
+quarrier
+quarries
+quarry
+quarry's
+quarrying
+quarryman
+quarrymen
+quart
+quartan
+quarter
+quarterage
+quarterback
+quarterbacks
+quarterdeck
+quarterdecks
+quartered
+quarterer
+quarterfinal
+quarterfinalist
+quartering
+quarterization
+quarterization's
+quarterizations
+quarterlies
+quarterlight
+quarterlights
+quarterly
+quartermaster
+quartermasters
+quartern
+quarternary
+quarters
+quartersaw
+quarterstaff
+quartet
+quartet's
+quartets
+quartette
+quartic
+quartics
+quartile
+quartiles
+quarto
+quartos
+quarts
+quartz
+quartziferous
+quartzite
+quartzitic
+quartzose
+quasar
+quasar's
+quasars
+quash
+quashed
+quashes
+quashi
+quashing
+quasi
+quasicontinuous
+quasimodo
+Quasimodo
+quasiorder
+quasiparticle
+quasiperiodic
+quasistationary
+quass
+Quassia
+quatercentenary
+quaternaries
+quaternary
+quaternion
+quaternity
+quathlamba
+quatrain
+quatre
+quatrefoil
+quattrocento
+quattuordecillion
+quaver
+quavered
+quavering
+quaveringly
+quavers
+quavery
+quay
+quayage
+quays
+quayside
+quean
+queasier
+queasily
+queasiness
+queasy
+queazy
+Quebec
+quebracho
+queen
+queen's
+Queenborough
+queencake
+queenly
+queens
+queensberry
+queenship
+Queensland
+Queensland's
+Queenstown
+queer
+queerer
+queerest
+queerish
+queerly
+queerness
+queers
+quell
+quelled
+queller
+quelling
+quells
+quelpart
+quelquechose
+quemoy
+quench
+quenchable
+quenched
+quencher
+quenches
+quenching
+quenchless
+queneau
+quenelle
+quercetin
+quercine
+queried
+querier
+queries
+querilla
+querist
+quern
+querns
+querulous
+querulously
+querulousness
+query
+querying
+quesnay
+quest
+quested
+quester
+questers
+questing
+question
+questionable
+questionableness
+questionably
+questionary
+questioned
+questioner
+questioners
+questioning
+questioningly
+questionings
+questionless
+questionnaire
+questionnaire's
+questionnaires
+questions
+questor
+quests
+quetta
+quetzal
+quetzalcoatl
+quetzales
+queue
+queue's
+queued
+queuer
+queuer's
+queuers
+queues
+queuing
+Quezon
+Quezon's
+quib
+quibble
+quibbled
+quibbler
+quibbles
+quibbling
+quiberon
+quibs
+quiche
+quiches
+Quichua
+quick
+quicken
+quickened
+quickener
+quickening
+quickens
+quicker
+quickest
+quickie
+quickies
+quicklime
+quickly
+quickness
+quicksand
+quicksands
+quickset
+quicksilver
+quickstep
+quicksteps
+quid
+quid's
+quiddity
+quidnunc
+quids
+quiescence
+quiescent
+quiescently
+quiescentness
+quiet
+quieted
+quieten
+quietened
+quietening
+quietens
+quieter
+quietest
+quieting
+quietism
+quietist
+quietly
+quietness
+quiets
+quietude
+quietus
+quiff
+quiffed
+quiffs
+quill
+quillet
+quillon
+quills
+quillwort
+quilmes
+quilt
+quilted
+quilter
+quilting
+quilts
+quim
+Quimper
+quinacrine
+quinary
+quinate
+quince
+quincentenary
+quinces
+quincuncial
+quincuncially
+quincunx
+quincunxes
+quincunxial
+quincy
+quindecagon
+quindecaplet
+quindecennial
+quindecillion
+quinic
+quinidine
+quiniela
+quinine
+quininize
+quininizes
+Quinn
+Quinn's
+quinnat
+quinoa
+quinoid
+quinoidine
+quinol
+quinoline
+quinone
+quinonoid
+quinquagenarian
+Quinquagesima
+quinquecentenary
+quinquefoliate
+quinquennial
+quinquennially
+quinquennium
+quinquepartite
+quinquereme
+quinquevalent
+quinquivalent
+quinsy
+quint
+quintain
+quintal
+quintan
+quintana
+quintero
+quintessence
+quintessential
+quintet
+quintets
+quintette
+quintic
+quintile
+quintiles
+quintilian
+quintillion
+quintillionth
+quintuple
+quintupled
+quintuples
+quintuplet
+quintuplet's
+quintuplets
+quintuplicate
+quintuplicated
+quintuplicates
+quintuplicating
+quintupling
+quintus
+quinze
+quip
+quipped
+quipping
+quips
+quipster
+quipu
+quire
+Quirinal
+quirinus
+Quirites
+quirk
+quirkily
+quirkiness
+quirking
+quirks
+quirky
+quirt
+quisling
+quislingism
+quist
+quit
+quitch
+quitclaim
+quite
+Quito
+Quito's
+quitrent
+quits
+quittance
+quitted
+quitter
+quitter's
+quitters
+quitting
+quittor
+Quivar
+quiver
+quivered
+quiverful
+quivering
+quivers
+Quixote
+quixotic
+quixotical
+quixotically
+Quixotism
+quixotry
+quiz
+quizmaster
+quizzed
+quizzer
+quizzes
+quizzical
+quizzicality
+quizzically
+quizzing
+qum
+qumran
+quo
+quod
+quodlibet
+quoin
+quoit
+quoits
+quokka
+quondam
+quonset
+quorum
+quot
+quota
+quota's
+quotable
+quotas
+quotation
+quotation's
+quotations
+quote
+quoted
+quotes
+quoth
+quotha
+quotidian
+quotient
+quotients
+quoting
+r's
+Rabat
+Rabat's
+rabato
+rabaul
+rabbath
+rabbet
+rabbeted
+rabbeting
+rabbets
+rabbi
+rabbinate
+rabbinic
+rabbinical
+rabbinically
+rabbinism
+rabbit
+rabbit's
+rabbited
+rabbiter
+rabbitfish
+rabbiting
+rabbitoh
+rabbitry
+rabbits
+rabbity
+rabble
+rabbled
+rabblement
+rabbler
+rabbling
+Rabelais
+Rabelaisian
+Rabi
+Rabia
+rabic
+rabid
+rabidity
+rabidly
+rabidness
+rabies
+Rabin
+Rabin's
+raccoon
+raccoon's
+raccoons
+race
+racecard
+racecards
+racecourse
+racecourses
+raced
+racegoer
+racegoers
+racehorse
+racehorse's
+racehorses
+racemate
+raceme
+racemic
+racemization
+racemize
+racemized
+racemizes
+racemizing
+racemose
+racer
+racers
+races
+racetrack
+racetracker
+raceway
+Rachel
+rachet
+rachides
+rachiodont
+rachis
+rachises
+rachitic
+rachitis
+Rachmaninoff
+rachmanism
+racial
+racialism
+racialist
+racialistic
+racialization
+racialization's
+racializations
+racialize
+racializes
+racially
+racier
+racily
+racine
+Racine
+raciness
+racing
+racism
+racist
+racists
+rack
+racked
+racker
+racket
+racket's
+racketeer
+racketeering
+racketeers
+rackets
+rackety
+Rackham
+racking
+rackle
+racks
+racon
+raconteur
+racoon
+racquet
+racquets
+racy
+rad
+rada
+radar
+radar's
+radars
+radarscope
+radarscopes
+Radcliffe
+raddle
+raddled
+raddles
+raddling
+Radetzky
+radial
+radiale
+radialization
+radialization's
+radializations
+radialize
+radializes
+radially
+radian
+radiance
+radiancy
+radians
+radiant
+radiantly
+radiate
+radiated
+radiately
+radiates
+radiating
+radiation
+radiational
+radiationless
+radiations
+radiative
+radiatively
+radiator
+radiator's
+radiators
+radic
+radical
+radicalism
+radicalization
+radicalization's
+radicalizations
+radicalize
+radicalized
+radicalizes
+radicalizing
+radically
+radicalness
+radicals
+radicand
+radicate
+radicel
+radices
+radicle
+radicular
+radiguet
+radii
+radio
+radioactivate
+radioactive
+radioactively
+radioactivities
+radioactivity
+radioastronomy
+radioautograph
+radioautographic
+radioautography
+radiobiologic
+radiobiological
+radiobiologically
+radiobiologist
+radiobiology
+radiobroadcast
+radiobroadcaster
+radiobroadcasting
+radiocarbon
+radiocast
+radiocaster
+radiochemical
+radiochemically
+radiochemist
+radiochemistry
+radiochlorine
+radiocommunication
+radioecological
+radioecologist
+radioecology
+radioed
+radioelement
+radiogenic
+radiogram
+radiogram's
+radiograms
+radiograph
+radiographic
+radiographically
+radiography
+radioimmunoassay
+radioing
+radioisotope
+radioisotopic
+radioisotopically
+radiolarian
+radioligand
+radiolocation
+radiologic
+radiological
+radiologically
+radiologist
+radiology
+radiolucency
+radiolucent
+radioluminescence
+radiolysis
+radiolytic
+radioman
+radiomen
+radiometeorograph
+radiometer
+radiometer's
+radiometers
+radiometric
+radiometrically
+radiometry
+radiomicrometer
+radiomimetic
+radionics
+radionuclide
+radiopaque
+radiopasteurization
+radiophone
+radiophonic
+radiophoto
+radiophotograph
+radiophysics
+radios
+radioscope
+radioscopic
+radioscopy
+radiosensitive
+radiosensitivity
+radiosonde
+radiosterilization
+radiosterilize
+radiosterilized
+radiosterilizes
+radiosterilizing
+radiostrontium
+radiosymmetrical
+radiotelegram
+radiotelegraph
+radiotelegraphic
+radiotelegraphy
+radiotelemetry
+radiotelephone
+radiotelephony
+radioteletype
+radiotherapist
+radiotherapy
+radiothermy
+radiothorium
+radiotoxic
+radiotracer
+radish
+radish's
+radishes
+radium
+radiumization
+radiumization's
+radiumizations
+radiumize
+radiumizes
+radius
+radiuses
+radix
+radixes
+Radnorshire
+radom
+radome
+radon
+rads
+radula
+radular
+Rae
+Rae's
+raeburn
+raf
+Rafael
+raff
+Rafferty
+Rafferty's
+raffia
+raffinate
+raffinose
+raffish
+raffishly
+raffishness
+raffle
+raffled
+raffles
+Rafflesia
+raffling
+raft
+rafter
+raftered
+rafters
+rafts
+raftsman
+rag
+rag's
+raga
+ragamuffin
+ragbag
+ragbolt
+rage
+raged
+rages
+ragged
+raggedly
+raggedness
+raggedy
+ragging
+raggle
+ragi
+raging
+raglan
+ragman
+ragout
+ragpicker
+rags
+ragtag
+ragtime
+ragusa
+Ragusan
+ragweed
+ragweeds
+ragworm
+ragworms
+ragwort
+rah
+rahman
+Raia
+raid
+raided
+raider
+raiders
+raiding
+raids
+rail
+railbird
+railbirds
+railcar
+railcars
+railed
+railer
+railers
+railhead
+railheads
+railing
+raillery
+railroad
+railroaded
+railroader
+railroaders
+railroading
+railroads
+rails
+railway
+railway's
+railwayman
+railways
+raiment
+Raimondi
+rain
+rain's
+rainband
+rainbird
+rainbow
+rainbows
+raincheck
+raincoat
+raincoat's
+raincoats
+raindrop
+raindrop's
+raindrops
+rained
+rainfall
+rainforest
+rainier
+rainiest
+raining
+rainless
+rainmaker
+rainmaking
+rainout
+rainproof
+rains
+rainspout
+rainsquall
+rainstorm
+rainwash
+rainwater
+rainwear
+rainy
+raise
+raised
+raiser
+raisers
+raises
+raisin
+raising
+raisins
+raison
+raj
+raja
+rajab
+rajah
+rajahs
+rajasthan
+Rajive
+Rajive's
+rajkot
+Rajput
+rajputana
+rajya
+rakata
+rake
+raked
+rakehell
+raker
+rakes
+raki
+raking
+rakish
+rakishly
+rakishness
+rale
+Raleigh
+rallentando
+rallied
+rallies
+ralline
+rally
+rallycross
+rallye
+rallying
+rallyist
+rallymaster
+Ralph
+Ralph's
+Ralston
+ram
+ram's
+Rama
+ramachandra
+Ramada
+ramakrishna
+Raman
+Raman's
+ramat
+ramate
+ramayana
+rambert
+ramble
+rambled
+rambler
+ramblers
+rambles
+rambling
+ramblingly
+ramblings
+Rambouillet
+rambunctious
+rambunctiously
+rambunctiousness
+rambutan
+rameau
+ramekin
+ramentum
+ramequin
+Rameses
+rami
+ramie
+ramification
+ramification's
+ramifications
+ramified
+ramifies
+ramiform
+ramify
+ramifying
+ramillies
+Ramirez
+ramirez
+ramjet
+ramjets
+rammed
+rammer
+ramming
+rammish
+Ramo
+Ramo's
+Ramona
+ramose
+ramosely
+ramous
+ramp
+ramp's
+rampage
+rampaged
+rampageous
+rampageously
+rampageousness
+rampages
+rampaging
+Rampal
+rampancy
+rampant
+rampantly
+rampart
+ramparts
+ramped
+ramping
+rampion
+ramps
+rampur
+ramrod
+ramrods
+rams
+ramsay
+ramses
+Ramsey
+ramsgate
+ramshackle
+ramsons
+ramtil
+ramulose
+ramus
+ran
+rancagua
+rance
+ranch
+ranched
+rancher
+rancherie
+ranchero
+ranchers
+ranches
+ranchi
+ranching
+ranchman
+rancho
+ranchos
+rancid
+rancidity
+rancidness
+rancor
+rancor's
+rancorous
+rancorously
+rancors
+Rand
+Randall
+randan
+randers
+randies
+Randolph
+random
+randomization
+randomization's
+randomizations
+randomize
+randomized
+randomizer
+randomizes
+randomizing
+randomly
+randomness
+Randova
+randy
+Randy's
+ranee
+rang
+range
+ranged
+rangefinder
+rangeland
+rangelands
+ranger
+rangers
+ranges
+rangier
+ranginess
+ranging
+Rangoon
+rangy
+rani
+ranian
+Ranier
+Ranier's
+ranjit
+rank
+ranked
+ranker
+ranker's
+rankers
+rankest
+Ranki
+Rankin
+Rankin's
+Rankine
+ranking
+ranking's
+rankings
+rankle
+rankled
+rankles
+rankling
+rankly
+rankness
+ranks
+ranmoor
+ransack
+ransacked
+ransacker
+ransacking
+ransacks
+ransom
+ransome
+ransomer
+ransoming
+ransoms
+rant
+ranted
+ranter
+ranters
+ranting
+rantingly
+rantry
+rants
+ranunculaceous
+ranunculus
+Raoul
+rap
+rap's
+rapacious
+rapaciously
+rapaciousness
+rapacity
+rapacki
+Rapallo
+rape
+raped
+raper
+rapes
+rapeseed
+Raphael
+raphe
+Raphia
+raphide
+rapid
+rapidity
+rapidly
+rapidness
+rapids
+rapier
+rapine
+raping
+rapist
+rapists
+rapparee
+rapped
+rappee
+rappel
+rappen
+rapper
+rapper's
+rappers
+rapping
+rapport
+rapporteur
+rapprochement
+raps
+rapscallion
+rapt
+raptly
+raptness
+raptor
+raptorial
+rapture
+rapture's
+raptured
+raptures
+rapturing
+rapturize
+rapturizes
+rapturous
+rapturously
+rapturousness
+rapunzel
+Rapunzel
+rara
+rare
+rarebit
+raree
+rarefaction
+rarefactional
+rarefactive
+rarefied
+rarefy
+rarely
+rareness
+rarer
+rareripe
+rarest
+rarify
+raring
+Raritan
+Raritan's
+rarities
+rarity
+rarity's
+rarotonga
+rasa
+rasbora
+rascal
+rascality
+rascalize
+rascalizes
+rascally
+rascals
+rase
+rash
+rasher
+rashes
+rashly
+rashness
+rasht
+rasing
+rask
+Rasmussen
+rasorial
+rasp
+raspatory
+raspberry
+rasped
+rasper
+rasping
+raspingly
+raspings
+rasps
+rasputin
+raspy
+rasse
+Rastafarian
+raster
+rasters
+Rastus
+rasure
+rat
+rat's
+rata
+ratable
+ratably
+ratafia
+ratan
+rataplan
+ratatouille
+ratbag
+ratbaggery
+ratbite
+ratch
+ratchet
+ratchet's
+ratcheted
+ratcheting
+ratchets
+rate
+rateable
+rated
+rateen
+ratel
+ratemeter
+ratemeter's
+ratemeters
+ratepayer
+ratepayers
+rater
+raters
+rates
+ratfink
+ratfish
+Ratfor
+ratha
+rathe
+rathenau
+rather
+rathskeller
+raticide
+ratification
+ratificationist
+ratifications
+ratified
+ratifies
+ratify
+ratifying
+rating
+ratings
+ratio
+ratio's
+ratiocinate
+ratiocinated
+ratiocinates
+ratiocinating
+ratiocination
+ratiocinative
+ratiocinator
+ratiometer
+ration
+rational
+rationale
+rationale's
+rationales
+rationalism
+rationalist
+rationalistic
+rationalistically
+rationalists
+rationalities
+rationality
+rationalizable
+rationalizable's
+rationalizables
+rationalization
+rationalization's
+rationalizations
+rationalize
+rationalized
+rationalizer
+rationalizers
+rationalizes
+rationalizing
+rationally
+rationalness
+rationed
+rationing
+rations
+ratios
+ratisbon
+ratite
+ratlam
+ratlike
+ratline
+rato
+raton
+ratoon
+rats
+ratsbane
+rattail
+rattan
+ratted
+ratteen
+ratter
+rattier
+rattigan
+ratting
+rattish
+Rattle
+rattle
+rattlebox
+rattlebrain
+rattlebrained
+rattled
+rattler
+rattlers
+rattles
+rattlesnake
+rattlesnake's
+rattlesnakes
+rattletrap
+rattling
+rattlingly
+rattly
+rattoon
+rattrap
+ratty
+raucous
+raucously
+raucousness
+Raul
+Raul's
+raunchier
+raunchily
+raunchiness
+raunchy
+Rauwolfia
+ravage
+ravaged
+ravagement
+ravager
+ravagers
+ravages
+ravaging
+rave
+raved
+ravel
+Ravel
+raveled
+raveler
+ravelers
+ravelin
+raveling
+ravelings
+ravelment
+ravels
+raven
+ravened
+ravener
+ravening
+ravenna
+ravenous
+ravenously
+ravenousness
+ravens
+raver
+raves
+ravin
+ravine
+ravine's
+ravined
+ravines
+raving
+ravings
+ravioli
+ravish
+ravisher
+ravishes
+ravishing
+ravishingly
+ravishment
+raw
+rawalpindi
+rawboned
+rawer
+rawest
+rawhide
+rawhided
+rawhiding
+rawinsonde
+Rawlings
+rawlings
+Rawlins
+rawlins
+Rawlinson
+rawly
+rawness
+raws
+Rawson
+rawsthorne
+ray
+ray's
+Rayburn
+rayed
+Rayleigh
+rayless
+raylessness
+raylet
+Raymond
+Raymondville
+rayon
+rays
+Raytheon
+raze
+razed
+razee
+razeed
+razeeing
+razer
+razes
+razing
+razoo
+razor
+razor's
+razorback
+razorbill
+razors
+razz
+razzia
+razzle
+razzmatazz
+RCA
+RCS
+rd
+re
+Rea
+reabbreviate
+reabbreviated
+reabbreviates
+reabbreviating
+reabsorb
+reabsorption
+reacclimatization
+reacclimatization's
+reacclimatizations
+reacclimatize
+reacclimatizes
+reach
+reachability
+reachable
+reachably
+reached
+reacher
+reaches
+reaching
+reacknowledgment
+reacknowledgment's
+reacknowledgments
+reacquaint
+reacquainted
+reacquire
+reacquisition
+react
+reactance
+reactances
+reactant
+reactants
+reacted
+reacting
+reaction
+reaction's
+reactional
+reactionally
+reactionaries
+reactionary
+reactionary's
+reactionaryism
+reactions
+reactivate
+reactivated
+reactivates
+reactivating
+reactivation
+reactive
+reactively
+reactiveness
+reactivity
+reactor
+reactor's
+reactors
+reacts
+reactualization
+reactualization's
+reactualizations
+reactualize
+reactualizes
+read
+readability
+readable
+readableness
+readably
+readapting
+reade
+reader
+reader's
+readers
+readership
+readership's
+readied
+readier
+readies
+readiest
+readily
+readiness
+reading
+readings
+readjust
+readjustable
+readjusted
+readjuster
+readjusting
+readjustment
+readjustments
+readjusts
+readonly
+readout
+readout's
+readouts
+reads
+readwrite
+ready
+readying
+reaffirm
+reaffirmation
+reaffirmed
+reaffirming
+reaffirms
+reafforest
+Reagan
+reagent
+reagents
+reaggregate
+reaggregation
+real
+realest
+realgar
+realign
+realigned
+realigning
+realignment
+realignments
+realigns
+realism
+realist
+realist's
+realistic
+realistically
+realisticize
+realisticizes
+realists
+realities
+reality
+realizabilities
+realizability
+realizability's
+realizable
+realizable's
+realizableness
+realizables
+realizablies
+realizably
+realization
+realization's
+realizations
+realize
+realized
+realizer
+realizers
+realizes
+realizing
+realizing's
+realizingly
+realizings
+reallocate
+reallocated
+reallocates
+reallocating
+reallocation
+reallocation's
+reallocations
+reallocator
+reallocator's
+reallocators
+reallot
+reallotment
+reallotments
+reallots
+reallotted
+reallotting
+really
+realm
+realm's
+realms
+realness
+realpolitik
+reals
+realtor
+realtors
+realty
+ream
+ream's
+reamed
+reamer
+reaming
+reams
+reanalysis
+reanalyze
+reanalyzed
+reanalyzer
+reanalyzers
+reanalyzes
+reanalyzing
+reanimalize
+reanimalizes
+reap
+reaped
+reaper
+reaping
+reapologize
+reapologizes
+reappear
+reappearance
+reappeared
+reappearing
+reappears
+reapplication
+reapplied
+reapplies
+reapply
+reapplying
+reapportion
+reapportioned
+reapportionment
+reappraisal
+reappraisals
+reappraise
+reappraised
+reappraises
+reappraising
+reaps
+rear
+reared
+rearer
+rearguard
+rearguards
+rearhorse
+rearing
+rearm
+rearmament
+rearmed
+rearming
+rearmost
+rearms
+rearrange
+rearrangeable
+rearranged
+rearrangement
+rearrangement's
+rearrangements
+rearranges
+rearranging
+rearrest
+rearrested
+rears
+rearward
+rearwardly
+rearwards
+reason
+reasonability
+reasonable
+reasonableness
+reasonably
+reasoned
+reasoner
+reasoning
+reasonings
+reasonless
+reasonlessly
+reasons
+reassemble
+reassembled
+reassembler
+reassembles
+reassembling
+reassembly
+reassert
+reasserted
+reasserting
+reassertion
+reasserts
+reassess
+reassessed
+reassesses
+reassessing
+reassessment
+reassessment's
+reassessments
+reassign
+reassignable
+reassigned
+reassigning
+reassignment
+reassignment's
+reassignments
+reassigns
+reassociation
+reassurance
+reassurances
+reassure
+reassured
+reassures
+reassuring
+reassuringly
+reast
+reauthorization
+reauthorization's
+reauthorizations
+reauthorize
+reauthorizes
+reave
+reaver
+reaving
+reawaken
+reawakened
+reawakening
+reawakens
+reb
+rebaptization
+rebaptization's
+rebaptizations
+rebarbative
+rebarbatively
+rebate
+rebate's
+rebated
+rebater
+rebates
+rebating
+rebato
+rebec
+Rebecca
+rebel
+rebel's
+rebell
+rebelled
+rebelling
+rebellion
+rebellion's
+rebellions
+rebellious
+rebelliously
+rebelliousness
+rebellow
+rebells
+rebels
+rebid
+rebidding
+rebids
+rebirth
+rebirth's
+reboant
+rebond
+rebonded
+rebonding
+rebonds
+reboot
+rebooted
+rebooter
+rebooters
+rebooting
+reboots
+reborn
+rebound
+rebounded
+rebounder
+rebounding
+rebounds
+rebourbonize
+rebourbonizes
+Rebozo
+rebroadcast
+rebroadcasts
+rebrutalize
+rebrutalizes
+rebs
+rebuff
+rebuffed
+rebuffing
+rebuffs
+rebuild
+rebuilding
+rebuilds
+rebuilt
+rebuke
+rebuked
+rebuker
+rebukes
+rebuking
+rebus
+rebut
+rebuttable
+rebuttal
+rebuttals
+rebutted
+rebutter
+rebutting
+rec
+recalcitrance
+recalcitrancy
+recalcitrant
+recalculate
+recalculated
+recalculates
+recalculating
+recalculation
+recalculations
+recalesce
+recalescence
+recall
+recallability
+recallable
+recalled
+recaller
+recalling
+recalls
+recanalization
+recant
+recantation
+recanted
+recap
+recapitalization
+recapitalization's
+recapitalizations
+recapitalize
+recapitalized
+recapitalizes
+recapitulate
+recapitulated
+recapitulates
+recapitulating
+recapitulation
+recappable
+recapped
+recapping
+recaption
+recapture
+recaptured
+recaptures
+recapturing
+recarbonization
+recarbonization's
+recarbonizations
+recarbonize
+recarbonizer
+recarbonizers
+recarbonizes
+recast
+recasting
+recasts
+recategorized
+recatory
+recausticize
+recausticizes
+recede
+receded
+recedes
+receding
+receipt
+receipt's
+receipted
+receipting
+receiptor
+receipts
+receivable
+receivables
+receive
+received
+receiver
+receiver's
+receivers
+receivership
+receives
+receiving
+recency
+recension
+recent
+recently
+recentness
+recentralization
+recentralization's
+recentralizations
+recentralize
+recentralizes
+recept
+receptacle
+receptacle's
+receptacles
+receptaculum
+reception
+reception's
+receptionist
+receptionists
+receptions
+receptive
+receptively
+receptiveness
+receptivity
+receptor
+receptor's
+receptors
+recertification
+recess
+recessed
+recesses
+recessing
+recession
+recession's
+recessional
+recessionary
+recessions
+recessive
+recessively
+recessiveness
+recharge
+rechargeable
+recharged
+recharger
+recharges
+recharging
+rechartering
+recheat
+recheck
+rechecked
+rechecking
+rechecks
+recherche
+recherches
+recidivism
+recidivist
+recidivistic
+Recife
+Recife's
+recipe
+recipe's
+recipes
+recipience
+recipiency
+recipient
+recipient's
+recipients
+reciprocal
+reciprocalize
+reciprocalizes
+reciprocally
+reciprocals
+reciprocate
+reciprocated
+reciprocates
+reciprocating
+reciprocation
+reciprocative
+reciprocator
+reciprocity
+recirculate
+recirculated
+recirculates
+recirculating
+recirculation
+recision
+recital
+recital's
+recitalist
+recitals
+recitation
+recitation's
+recitations
+recitative
+recitativo
+recite
+recited
+reciter
+recites
+reciting
+recivilization
+recivilization's
+recivilizations
+recivilize
+recivilizes
+reck
+reckless
+recklessly
+recklessness
+Recklinghausen
+reckon
+reckoned
+reckoner
+reckoning
+reckonings
+reckons
+reclaim
+reclaimable
+reclaimed
+reclaimer
+reclaimers
+reclaiming
+reclaims
+reclamation
+reclamations
+reclassification
+reclassified
+reclassifies
+reclassify
+reclassifying
+reclinate
+recline
+reclined
+reclines
+reclining
+reclosable
+recluse
+recluse's
+recluses
+reclusion
+reclusive
+recluster
+reclustered
+reclustering
+reclusters
+recode
+recoded
+recodes
+recodified
+recodifies
+recodify
+recodifying
+recoding
+recognition
+recognition's
+recognitions
+recognizability
+recognizable
+recognizably
+recognizance
+recognize
+recognized
+recognizedlies
+recognizedly
+recognizee
+recognizer
+recognizers
+recognizes
+recognizing
+recognizinglies
+recognizingly
+recoil
+recoiled
+recoiling
+recoilless
+recoils
+recoin
+recoinage
+recollect
+recollected
+recollecting
+recollection
+recollection's
+recollections
+recollects
+recolonization
+recolonization's
+recolonizations
+recolonize
+recolonizes
+recolor
+recolor's
+recolored
+recoloring
+recolors
+recombinant
+recombination
+recombination's
+recombinational
+recombinations
+recombine
+recombined
+recombines
+recombining
+recommence
+recommenced
+recommences
+recommencing
+recommend
+recommendable
+recommendation
+recommendation's
+recommendations
+recommendatory
+recommended
+recommender
+recommending
+recommends
+recommit
+recommitment
+recommittal
+recompence
+recompense
+recompilation
+recompilations
+recompile
+recompiled
+recompiles
+recompiling
+recompose
+recomposition
+recompute
+recomputed
+recomputes
+recomputing
+reconceptualization
+reconceptualizing
+reconcilability
+reconcilable
+reconcilableness
+reconcile
+reconciled
+reconcilement
+reconciler
+reconciles
+reconciliation
+reconciliation's
+reconciliations
+reconciliatory
+reconciling
+recondite
+reconditely
+reconditeness
+recondition
+reconditioned
+reconditioning
+reconditionings
+reconditions
+reconfigurability
+reconfigurable
+reconfiguration
+reconfiguration's
+reconfigurations
+reconfigure
+reconfigured
+reconfigurer
+reconfigures
+reconfiguring
+reconfirm
+reconfirmation
+reconnaissance
+reconnect
+reconnected
+reconnecter
+reconnecting
+reconnection
+reconnects
+reconnoiter
+reconnoitered
+reconnoiterer
+reconnoiterer's
+reconnoiterers
+reconnoitering
+reconnoiters
+reconquer
+reconquered
+reconquering
+reconquers
+reconsider
+reconsideration
+reconsidered
+reconsidering
+reconsiders
+reconsolidate
+reconsolidated
+reconsolidates
+reconsolidating
+reconstitute
+reconstituted
+reconstitutes
+reconstitution
+reconstruct
+reconstructed
+reconstructible
+reconstructing
+reconstruction
+reconstructionism
+reconstructionist
+reconstructions
+reconstructive
+reconstructor
+reconstructs
+recontacted
+recontaminate
+recontamination
+reconvene
+reconvened
+reconvenes
+reconvening
+reconvention
+reconversion
+reconvert
+reconverted
+reconverting
+reconverts
+reconvey
+reconveyance
+recopied
+recopies
+recopy
+record
+recordable
+recordation
+recorded
+recorder
+recorders
+recording
+recordings
+recordist
+records
+recored
+recount
+recounted
+recounter
+recounting
+recounts
+recoup
+recoupable
+recouped
+recouping
+recoupment
+recoups
+recourse
+recourses
+recover
+recoverability
+recoverable
+recovered
+recoverer
+recoveries
+recovering
+recovers
+recovery
+recovery's
+recreant
+recreatable
+recreate
+recreated
+recreates
+recreating
+recreation
+recreational
+recreationist
+recreations
+recreative
+recrement
+recriminate
+recriminated
+recriminates
+recriminating
+recrimination
+recriminations
+recriminative
+recriminatory
+recriticize
+recriticizes
+recrudesce
+recrudescence
+recrudescent
+recruit
+recruit's
+recruited
+recruiter
+recruiter's
+recruiters
+recruiting
+recruitment
+recruits
+recrystallization
+recrystallization's
+recrystallizations
+recrystallize
+recrystallized
+recrystallizes
+recrystallizing
+recta
+rectal
+rectally
+rectangle
+rectangle's
+rectangles
+rectangular
+rectangularity
+rectangularly
+recti
+rectifiability
+rectifiable
+rectification
+rectifications
+rectified
+rectifier
+rectifiers
+rectify
+rectilinear
+rectilinearly
+rectillinear
+recting
+rection
+rectitude
+rectitudinous
+rective
+recto
+rectocele
+rector
+rector's
+rectorate
+rectorial
+rectors
+rectorship
+rectory
+rectos
+rectrices
+rectrix
+rectum
+rectum's
+rectums
+rectus
+recumbency
+recumbent
+recumbently
+recuperate
+recuperated
+recuperates
+recuperating
+recuperation
+recuperative
+recuperator
+recur
+recurred
+recurrence
+recurrence's
+recurrences
+recurrency
+recurrent
+recurrently
+recurring
+recurs
+recurse
+recursed
+recurses
+recursing
+recursion
+recursion's
+recursions
+recursive
+recursively
+recursiveness
+recursivity
+recurvate
+recurve
+recurved
+recusancy
+recusant
+recuse
+recyclable
+recycle
+recycled
+recycles
+recycling
+red
+redact
+redaction
+redactional
+redactions
+redactor
+redan
+redargue
+redback
+redbird
+redbirds
+redbone
+redbreast
+redbrick
+Redbridge
+redbud
+redbug
+redcap
+redcoat
+redcoats
+redcurrant
+redd
+redded
+redden
+reddened
+reddening
+redder
+reddest
+redding
+reddish
+reddishness
+redditch
+reddle
+reddy
+rede
+redear
+redeclare
+redeclared
+redeclares
+redeclaring
+redecorate
+redecorated
+redecorates
+redecorating
+redecoration
+redecorator
+rededicate
+redeem
+redeemable
+redeemed
+redeemer
+redeemers
+redeeming
+redeems
+redefine
+redefined
+redefines
+redefining
+redefinition
+redefinition's
+redefinitions
+redemption
+redemptional
+redemptioner
+redemptive
+Redemptorist
+redemptory
+redeploy
+redeployed
+redeployment
+redeploys
+redeposit
+redeposit's
+redeposited
+redepositing
+redeposition
+redepositor
+redepositor's
+redepositors
+redeposits
+redescribe
+redescription
+redesign
+redesigned
+redesigning
+redesigns
+redetermination
+redetermine
+redetermined
+redetermines
+redetermining
+redevelop
+redeveloped
+redeveloper
+redevelopers
+redeveloping
+redevelopment
+redevelops
+redeye
+redfin
+Redford
+Redford's
+Redgrave
+redhead
+redheaded
+redheader
+redheads
+Redhook
+redhook
+redhorse
+redia
+rediae
+redial
+redialed
+redialer
+redialing
+redials
+redias
+rediffusion
+redingote
+redintegrate
+redintegration
+redintegrative
+redirect
+redirected
+redirecting
+redirection
+redirections
+redirector
+redirector's
+redirectors
+redirects
+rediscount
+rediscountable
+rediscover
+rediscovered
+rediscovering
+rediscovers
+rediscovery
+redisplay
+redisplayed
+redisplaying
+redisplays
+redistribute
+redistributed
+redistributes
+redistributing
+redistribution
+redistribution's
+redistributions
+redistributive
+redistributory
+redistrict
+redistricting
+redivivus
+redleg
+redly
+Redmond
+Redmond's
+redneck
+rednecked
+rednecks
+redness
+redo
+redoing
+redolence
+redolent
+redolently
+redon
+redondo
+Redondo's
+redone
+redose
+redouble
+redoubled
+redoubles
+redoubling
+redoubt
+redoubtable
+redoubtably
+redound
+redout
+redowa
+redox
+redpoll
+redraw
+redrawing
+redrawn
+redraws
+redress
+redressed
+redresser
+redresses
+redressing
+redroot
+reds
+redshank
+redshift
+redshifted
+redshifting
+redshifts
+redshirt
+redskin
+redstart
+Redstone
+redtop
+reduce
+reduced
+reducer
+reducers
+reduces
+reducibility
+reducible
+reducibly
+reducing
+reduct
+reductant
+reductase
+reductio
+reduction
+reduction's
+reductional
+reductionalist
+reductionism
+reductionist
+reductionistic
+reductions
+reductive
+redundancies
+redundancy
+redundant
+redundantly
+reduplicate
+reduplicated
+reduplication
+reduplicative
+reduplicatively
+reduviid
+redware
+redwing
+redwood
+redwoods
+ree
+reebok
+reed
+reed's
+reedbuck
+reeder
+reedier
+reedify
+reeding
+reedling
+reeds
+reeducate
+reeducation
+reeducative
+Reedville
+reedy
+reef
+reefer
+reefing
+reefs
+reek
+reeked
+reeker
+reeking
+reeks
+reeky
+reel
+reelable
+reelect
+reelected
+reelecting
+reelection
+reelects
+reeled
+reeler
+reeling
+reels
+reembroider
+reemerged
+reemission
+reemission's
+reemissions
+reemphasization
+reemphasization's
+reemphasize
+reemphasized
+reemphasizer
+reemphasizers
+reemphasizes
+reemphasizing
+reemploy
+reemployment
+reen
+reenact
+reenactment
+reenforce
+reenforcement
+reenlist
+reenlisted
+reenlistment
+reenlists
+reenter
+reentered
+reentering
+reenters
+reentrance
+reentrant
+reentry
+reenumerate
+reenumeration
+Reese
+reest
+reestablish
+reestablished
+reestablishes
+reestablishing
+reestablishment
+reestimate
+reestimating
+reevaluate
+reevaluated
+reevaluates
+reevaluating
+reevaluation
+reeve
+reeves
+reexamination
+reexamine
+reexamined
+reexamines
+reexamining
+ref
+reface
+refaced
+refaces
+refacing
+refactoring
+refashion
+refavor
+refavor's
+refavors
+refect
+refection
+refectories
+refectory
+refelled
+refelling
+refer
+referable
+referee
+referee's
+refereed
+refereeing
+referees
+reference
+referenced
+referencer
+references
+referencing
+referenda
+referendum
+referent
+referent's
+referential
+referentiality
+referentially
+referents
+referral
+referral's
+referrals
+referred
+referrer
+referring
+refers
+refertilization
+refertilization's
+refertilizations
+refertilize
+refertilizes
+refill
+refillable
+refilled
+refilling
+refills
+refinance
+refine
+refined
+refinement
+refinement's
+refinements
+refiner
+refineries
+refinery
+refines
+refining
+refinish
+refinished
+refinisher
+refinishes
+refinishing
+refit
+reflate
+reflated
+reflates
+reflating
+reflation
+reflationary
+reflect
+reflectance
+reflected
+reflecting
+reflection
+reflection's
+reflectional
+reflections
+reflective
+reflectively
+reflectiveness
+reflectivity
+reflectometer
+reflectometer's
+reflectometers
+reflectometry
+reflector
+reflector's
+reflectorize
+reflectorized
+reflectorizes
+reflectorizing
+reflectors
+reflects
+reflet
+reflex
+reflex's
+reflexed
+reflexes
+reflexion
+reflexive
+reflexively
+reflexiveness
+reflexivity
+reflexly
+reflexology
+reflorescence
+reflorescent
+reflow
+refluence
+refluent
+reflux
+refluxed
+refluxes
+refluxing
+refocus
+refocused
+refocuses
+refocusing
+refolded
+reforest
+reforestation
+reforestization
+reforestization's
+reforestize
+reforestizes
+reforge
+reform
+reformability
+reformable
+reformat
+reformate
+reformation
+reformational
+reformative
+reformatories
+reformatory
+reformats
+reformatted
+reformatter
+reformatting
+reformed
+reformer
+reformers
+reforming
+reformism
+reformist
+reformists
+reforms
+reformulate
+reformulated
+reformulates
+reformulating
+reformulation
+refract
+refracted
+refractile
+refracting
+refraction
+refractive
+refractively
+refractiveness
+refractivities
+refractivity
+refractometer
+refractometer's
+refractometers
+refractometric
+refractometry
+refractor
+refractorily
+refractoriness
+refractory
+refrain
+refrained
+refraining
+refrainment
+refrains
+refrangibility
+refrangible
+refrangibleness
+refresh
+refreshed
+refreshen
+refresher
+refreshers
+refreshes
+refreshing
+refreshingly
+refreshment
+refreshment's
+refreshments
+refried
+refries
+refrigerant
+refrigerate
+refrigerated
+refrigeration
+refrigerator
+refrigerator's
+refrigerators
+refringent
+refry
+refrying
+reft
+refuel
+refueled
+refueling
+refuels
+refuge
+refuged
+refugee
+refugee's
+refugeeism
+refugees
+refuges
+refuging
+refugium
+refulgence
+refulgent
+refund
+refund's
+refundability
+refundable
+refunded
+refunder
+refunders
+refunding
+refunds
+refurbish
+refurbished
+refurbisher
+refurbishing
+refurbishment
+refusal
+refusals
+refuse
+refused
+refuser
+refuses
+refusing
+refutable
+refutably
+refutation
+refute
+refuted
+refuter
+refutes
+refuting
+regain
+regained
+regaining
+regains
+regal
+regale
+regaled
+regalia
+regaling
+regality
+regalize
+regalizes
+regally
+regalvanization
+regalvanization's
+regalvanizations
+regalvanize
+regalvanizes
+regard
+regardant
+regarded
+regardful
+regardfully
+regardfulness
+regarding
+regardless
+regardlessly
+regardlessness
+regards
+regatta
+regattas
+regelate
+regelation
+regency
+regenerable
+regeneracy
+regenerate
+regenerated
+regenerately
+regenerateness
+regenerates
+regenerating
+regeneration
+regenerative
+regeneratively
+regenerator
+regenerators
+Regensburg
+regent
+regent's
+regental
+regents
+reger
+reggae
+reggio
+regicidal
+regicide
+regime
+regime's
+regimen
+regiment
+regimental
+regimentally
+regimentals
+regimentation
+regimented
+regiments
+regimes
+regin
+Regina
+Reginald
+regiomontanus
+region
+region's
+regional
+regionalism
+regionalist
+regionalistic
+regionalization
+regionalization's
+regionalizations
+regionalize
+regionalized
+regionalizes
+regionalizing
+regionally
+regions
+Regis
+regisseur
+register
+registered
+registering
+registers
+registrable
+registrant
+registrants
+registrar
+registrars
+registration
+registration's
+registrations
+registries
+registry
+regius
+reglet
+regna
+regnal
+regnant
+regnum
+rego
+regolith
+regorge
+regorged
+regorging
+regosol
+regrant
+regrate
+regreet
+regreets
+regress
+regressed
+regresses
+regressing
+regression
+regression's
+regressions
+regressive
+regressively
+regressiveness
+regressor
+regressors
+regret
+regretful
+regretfully
+regretfulness
+regretless
+regrets
+regrettable
+regrettably
+regretted
+regretter
+regretting
+regrid
+regridded
+regridding
+regrids
+reground
+regroup
+regrouped
+regrouping
+regrow
+regulable
+regular
+regularities
+regularity
+regularization
+regularization's
+regularizations
+regularize
+regularized
+regularizer
+regularizers
+regularizes
+regularizing
+regularly
+regulars
+regulate
+regulated
+regulates
+regulating
+regulation
+regulations
+regulative
+regulator
+regulator's
+regulators
+regulatory
+Regulus
+regurgitate
+regurgitated
+regurgitates
+regurgitating
+regurgitation
+regurgitative
+rehabilitant
+rehabilitate
+rehabilitated
+rehabilitates
+rehabilitating
+rehabilitation
+rehabilitationist
+rehabilitations
+rehabilitative
+rehabilitator
+reharmonization
+reharmonize
+reharmonizes
+rehash
+rehashed
+rehashes
+rehashing
+rehear
+rehearing
+rehearsal
+rehearsal's
+rehearsals
+rehearse
+rehearsed
+rehearser
+rehearses
+rehearsing
+Rehoboam
+rehonor
+rehonor's
+rehonors
+rehouse
+rehoused
+rehouses
+rehousing
+rehumanization
+rehumanize
+rehumanizes
+rehybridize
+rehybridizes
+rehydratable
+rehydrate
+rehydration
+Reich
+Reichenberg
+reichsmark
+Reichsrat
+Reichstag
+Reid
+Reid's
+reification
+reified
+reify
+reifying
+reigate
+reign
+reigned
+reigning
+reigns
+Reilly
+reimbursable
+reimburse
+reimbursed
+reimbursement
+reimbursement's
+reimbursements
+reimburses
+reimbursing
+reimpression
+reims
+rein
+reincarnate
+reincarnated
+reincarnation
+reincarnationist
+reincorporating
+reincorporation
+reindeer
+reined
+Reiner
+reinfection
+reinforce
+reinforceable
+reinforced
+reinforcement
+reinforcement's
+reinforcements
+reinforcer
+reinforces
+reinforcing
+reinhard
+Reinhard
+reinhardt
+Reinhardt
+Reinhold
+reining
+reinitialization
+reinitialize
+reinitialized
+reinitializes
+reinitializing
+reinless
+reins
+reinsert
+reinserted
+reinserting
+reinsertion
+reinsertions
+reinserts
+reinsman
+reinstall
+reinstalled
+reinstaller
+reinstalling
+reinstalls
+reinstate
+reinstated
+reinstatement
+reinstates
+reinstating
+reinstitution
+reinsurance
+reinsure
+reinsurer
+reintegrate
+reintegrated
+reintegration
+reintegrative
+reinterpret
+reinterpretation
+reinterpretations
+reinterpreted
+reinterpreting
+reinterprets
+reinterview
+reinterviewed
+reintroduce
+reintroduced
+reintroduces
+reintroducing
+reintroduction
+reinvent
+reinvented
+reinventing
+reinvention
+reinvents
+reinvest
+reinvested
+reinvestigation
+reinvestment
+reinvigorate
+reinvigoration
+reinvigorator
+reinvoke
+reinvoked
+reinvokes
+reinvoking
+reissue
+reissued
+reissuer
+reissuer's
+reissuers
+reissues
+reissuing
+reitemize
+reitemizes
+reiterate
+reiterated
+reiterates
+reiterating
+reiteration
+reiterations
+reiterative
+reiteratively
+reiterativeness
+reiterator
+reith
+reive
+reiver
+reiving
+reject
+rejected
+rejectee
+rejecter
+rejecting
+rejectingly
+rejection
+rejection's
+rejections
+rejective
+rejector
+rejector's
+rejectors
+rejects
+rejig
+rejigger
+rejoice
+rejoiced
+rejoicer
+rejoices
+rejoicing
+rejoicingly
+rejoin
+rejoinder
+rejoined
+rejoining
+rejoins
+rejuvenate
+rejuvenated
+rejuvenates
+rejuvenating
+rejuvenation
+rejuvenator
+rejuvenesce
+rejuvenescence
+rejuvenescent
+rekindle
+rekindled
+rekindler
+rekindles
+rekindling
+reknit
+relabel
+relabeled
+relabeler
+relabelers
+relabeling
+relabels
+relapse
+relapsed
+relapser
+relapses
+relapsing
+relatable
+relate
+related
+relatedly
+relatedness
+relater
+relates
+relating
+relation
+relational
+relationally
+relations
+relationship
+relationship's
+relationships
+relative
+relatively
+relativeness
+relatives
+relativism
+relativist
+relativistic
+relativistically
+relativity
+relativity's
+relativization
+relativization's
+relativizations
+relativize
+relativized
+relativizes
+relativizing
+relator
+relatum
+relax
+relaxant
+relaxation
+relaxation's
+relaxations
+relaxed
+relaxedly
+relaxedness
+relaxer
+relaxes
+relaxin
+relaxing
+relay
+relayed
+relaying
+relays
+relearn
+relearns
+releasability
+releasable
+releasably
+release
+released
+releaser
+releases
+releasing
+relection
+relegate
+relegated
+relegates
+relegating
+relegation
+relent
+relented
+relenting
+relentless
+relentlessly
+relentlessness
+relents
+relevance
+relevances
+relevancy
+relevant
+relevantly
+reliabilities
+reliability
+reliable
+reliableness
+reliably
+reliance
+reliant
+reliantly
+relic
+relic's
+relicense
+relicensed
+relicenser
+relicenses
+relicensing
+relics
+relict
+reliction
+relied
+relief
+reliefs
+relier
+relies
+relievable
+relieve
+relieved
+relievedly
+reliever
+relievers
+relieves
+relieving
+relievo
+religion
+religion's
+religionism
+religionist
+religionists
+religionize
+religionizes
+religions
+religiose
+religiosity
+religious
+religiously
+religiousness
+reline
+relinking
+relinquish
+relinquished
+relinquishes
+relinquishing
+relinquishment
+reliquary
+relique
+reliquiae
+relish
+relishable
+relished
+relishes
+relishing
+relive
+relives
+reliving
+reload
+reloaded
+reloader
+reloading
+reloads
+relocatable
+relocate
+relocated
+relocatee
+relocates
+relocating
+relocation
+relocations
+relucent
+reluct
+reluctance
+reluctances
+reluctancy
+reluctant
+reluctantly
+reluctate
+reluctated
+reluctation
+reluctivity
+relume
+relumed
+relumine
+reluming
+rely
+relying
+remade
+remagnetization
+remagnetization's
+remagnetizations
+remagnetize
+remagnetizes
+remain
+remainder
+remainder's
+remaindered
+remaindering
+remainderman
+remainders
+remained
+remaines
+remaining
+remains
+remake
+remaking
+reman
+remand
+remanded
+remanding
+remanence
+remanent
+remanufacture
+remanufacturer
+remap
+remark
+remarkable
+remarkableness
+remarkably
+remarked
+remarking
+remarks
+remarque
+remarriage
+remarriages
+remarried
+remarry
+remarrying
+rematch
+rematerialize
+rematerializes
+Remblai
+Rembrandt
+Reme
+remediable
+remediableness
+remediably
+remedial
+remedially
+remediate
+remediation
+remedied
+remedies
+remediless
+remedilessly
+remedy
+remedying
+remember
+rememberability
+rememberable
+remembered
+rememberer
+remembering
+remembers
+remembrance
+remembrance's
+remembrancer
+remembrances
+rememorize
+rememorizes
+Remex
+remigial
+remilitarization
+remilitarize
+remind
+reminded
+reminder
+reminders
+remindful
+reminding
+reminds
+remineralization
+remineralization's
+remineralizations
+remineralize
+remineralizes
+Remington
+reminisce
+reminisced
+reminiscence
+reminiscence's
+reminiscences
+reminiscent
+reminiscential
+reminiscently
+reminisces
+reminiscing
+remint
+remise
+remised
+remising
+remiss
+remissible
+remissibly
+remission
+remissions
+remissly
+remissness
+remit
+remitment
+remits
+remittable
+remittal
+remittance
+remittances
+remitted
+remittee
+remittent
+remittently
+remitter
+remitting
+remix
+remixed
+remixes
+remixing
+remnant
+remnant's
+remnants
+remobilization
+remobilization's
+remobilizations
+remobilize
+remobilizes
+remodel
+remodeled
+remodeling
+remodels
+remodulate
+remodulated
+remodulates
+remodulating
+remodulation
+remodulator
+remodulator's
+remodulators
+remolding
+remonetization
+remonetize
+remonetized
+remonetizes
+remonetizing
+remonstrance
+remonstrant
+remonstrantly
+remonstrate
+remonstrated
+remonstrates
+remonstrating
+remonstration
+remonstrative
+remonstratively
+remonstrator
+remontant
+remontoir
+remora
+remorse
+remorseful
+remorsefully
+remorsefulness
+remorseless
+remorselessly
+remorselessness
+remote
+remotely
+remoteness
+remotest
+remotion
+remould
+remoulded
+remoulding
+remoulds
+remount
+remounting
+removability
+removable
+removableness
+removably
+removal
+removal's
+removalist
+removals
+remove
+removed
+remover
+removes
+removing
+remscheid
+remunerate
+remunerated
+remunerates
+remunerating
+remuneration
+remunerations
+remunerative
+remuneratively
+remunerativeness
+remunerator
+remuneratory
+Remus
+remus
+Remy
+Rena
+Rena's
+renaissance
+renal
+rename
+renamed
+renames
+renaming
+Renardy
+renascence
+renascent
+renaturation
+renature
+renatured
+renatures
+renaturing
+Renault
+Renault's
+Renaults
+rencounter
+rend
+render
+renderable
+rendered
+renderer
+rendering
+renderings
+renders
+rendezvous
+rendezvoused
+rendezvouses
+rendezvousing
+rending
+rendition
+rendition's
+renditions
+rends
+rendzina
+Rene
+Rene's
+Renee
+Renee's
+renegade
+renegades
+renegado
+renege
+reneged
+reneger
+reneges
+reneging
+renegotiable
+renegotiate
+renegotiated
+renegotiates
+renegotiation
+renew
+renewability
+renewable
+renewably
+renewal
+renewals
+renewed
+renewer
+renewing
+renews
+Renfrew
+reni
+reniform
+renig
+renigged
+renigging
+renin
+renitency
+renitent
+rennes
+rennet
+rennin
+reno
+renographic
+renography
+Renoir
+renominate
+renominated
+renominates
+renominating
+renomination
+renormalization
+renormalize
+renormalized
+renormalizes
+renormalizing
+renounce
+renounced
+renouncement
+renouncer
+renounces
+renouncing
+renovate
+renovated
+renovates
+renovation
+renovator
+renown
+renowned
+Rensselaer
+Rensselaer's
+Rensselaerite
+rent
+rentability
+rentable
+rental
+rental's
+rentals
+rente
+rented
+renter
+renter's
+renters
+rentier
+renting
+rents
+renumber
+renumbered
+renumbering
+renumbers
+renumeration
+renunciate
+renunciation
+renunciations
+renunciative
+renunciatory
+Renville
+renvoi
+reobjectivization
+reobjectivization's
+reobjectivizations
+reobjectivize
+reobjectivizes
+reoccupy
+reoccur
+reoccurrence
+reopen
+reopened
+reopening
+reopens
+reorder
+reordered
+reordering
+reorders
+reorganization
+reorganization's
+reorganizational
+reorganizationist
+reorganizationist's
+reorganizationists
+reorganizations
+reorganize
+reorganized
+reorganizer
+reorganizers
+reorganizes
+reorganizing
+reorient
+reorientate
+reorientated
+reorientates
+reorientating
+reorientation
+reoriented
+reoxidize
+reoxidizes
+reoxygenize
+reoxygenizes
+rep
+repack
+repackage
+repackaged
+repackager
+repackages
+repackaging
+repacked
+repacker
+repacking
+repacks
+repaganization
+repaganization's
+repaganizations
+repaganize
+repaganizer
+repaganizers
+repaganizes
+repaid
+repaint
+repainted
+repainter
+repainters
+repainting
+repaints
+repair
+repairability
+repairable
+repaired
+repairer
+repairers
+repairing
+repairman
+repairmen
+repairs
+repand
+reparable
+reparation
+reparation's
+reparations
+reparative
+repartee
+repartition
+repartitioned
+repartitioner
+repartitioners
+repartitioning
+repartitions
+repass
+repassage
+repassivation
+repast
+repast's
+repasts
+repatriate
+repatriated
+repatriates
+repatriating
+repatriation
+repatriations
+repatronize
+repatronizes
+repaving
+repay
+repayable
+repaying
+repayment
+repayments
+repays
+repeal
+repealable
+repealed
+repealer
+repealing
+repeals
+repeat
+repeatability
+repeatable
+repeated
+repeatedly
+repeater
+repeaters
+repeating
+repeats
+repechage
+repel
+repellant
+repelled
+repellency
+repellent
+repellently
+repeller
+repelling
+repels
+repent
+repentance
+repentant
+repentantly
+repented
+repenter
+repenting
+repents
+repercussion
+repercussion's
+repercussions
+repercussive
+repersonalize
+repertoire
+repertory
+repetend
+repetition
+repetition's
+repetitional
+repetitions
+repetitious
+repetitiously
+repetitiousness
+repetitive
+repetitively
+repetitiveness
+rephosphorization
+rephosphorization's
+rephosphorizations
+rephosphorize
+rephosphorizes
+rephrase
+rephrased
+rephrases
+rephrasing
+repine
+repined
+repiner
+repining
+replace
+replaceable
+replaced
+replacement
+replacement's
+replacements
+replacer
+replaces
+replacing
+replant
+replanted
+replay
+replayed
+replaying
+replays
+repleader
+replenish
+replenished
+replenisher
+replenishes
+replenishing
+replenishment
+replenishments
+replete
+repleteness
+repletion
+repleviable
+replevied
+replevies
+replevin
+replevy
+replica
+replica's
+replicable
+replicas
+replicate
+replicated
+replicates
+replicating
+replication
+replications
+replicative
+replicator
+replicators
+replied
+replier
+replies
+reply
+replying
+repoint
+repolymerization
+repolymerization's
+repolymerizations
+repolymerize
+repolymerizes
+repone
+repopularize
+report
+reportable
+reportage
+reported
+reportedly
+reporter
+reporters
+reporting
+reportorial
+reportorially
+reports
+reposal
+repose
+reposed
+reposeful
+reposefully
+reposefulness
+reposes
+reposing
+reposit
+reposited
+repositing
+reposition
+repositioned
+repositioning
+repositions
+repositories
+repository
+repository's
+repossess
+repossession
+repost
+reposted
+reposter
+reposting
+repostings
+reposts
+repot
+repower
+reprehend
+reprehensibility
+reprehensible
+reprehensibleness
+reprehensibly
+reprehension
+reprehensive
+represent
+representable
+representably
+representation
+representation's
+representational
+representationalism
+representationalist
+representationally
+representations
+representative
+representatively
+representativeness
+representatives
+representativity
+represented
+representer
+representing
+represents
+repress
+repressed
+represses
+repressibility
+repressible
+repressing
+repression
+repression's
+repressionist
+repressions
+repressive
+repressively
+repressiveness
+repressor
+reprieval
+reprieve
+reprieved
+reprieves
+reprieving
+reprimand
+reprimanded
+reprint
+reprinted
+reprinter
+reprinting
+reprints
+reprisal
+reprisal's
+reprisals
+reprise
+reprised
+reprising
+repristinate
+repristination
+reprivatization
+reprivatization's
+reprivatizations
+reprivatize
+reprivatizes
+repro
+reproach
+reproachable
+reproached
+reproacher
+reproaches
+reproachful
+reproachfully
+reproachfulness
+reproaching
+reproachingly
+reprobance
+reprobate
+reprobates
+reprobating
+reprobation
+reprobative
+reprobatory
+reprocess
+reprocessable
+reprocessed
+reprocesses
+reprocessor
+reproduce
+reproduced
+reproducer
+reproducers
+reproduces
+reproducibilities
+reproducibility
+reproducible
+reproducibly
+reproducing
+reproduction
+reproduction's
+reproductions
+reproductive
+reproductively
+reproductivity
+reprogram
+reprogrammed
+reprogrammer
+reprogrammer's
+reprogrammers
+reprogramming
+reprograms
+reprography
+reproof
+repros
+reprove
+reproved
+reprover
+reproving
+reprovingly
+reps
+reptant
+reptile
+reptile's
+reptiles
+reptilian
+republic
+republic's
+republican
+republican's
+republicanism
+republicanization
+republicanization's
+republicanizations
+republicanize
+republicanized
+republicanizer
+republicanizers
+republicanizes
+republicanizing
+republicans
+republication
+republics
+republish
+republished
+republisher
+republisher's
+republishers
+republishes
+republishing
+repudiate
+repudiated
+repudiates
+repudiating
+repudiation
+repudiationist
+repudiations
+repudiator
+repugn
+repugnance
+repugnancy
+repugnant
+repugnantly
+repulse
+repulsed
+repulses
+repulsing
+repulsion
+repulsions
+repulsive
+repulsively
+repulsiveness
+repulverize
+repulverizes
+reputability
+reputable
+reputably
+reputation
+reputation's
+reputations
+repute
+reputed
+reputedly
+reputes
+reputing
+req
+request
+requested
+requester
+requesters
+requesting
+requestioned
+requestioner
+requestor
+requests
+requiem
+requiem's
+requiems
+requiescat
+requin
+require
+required
+requirement
+requirement's
+requirements
+requirer
+requires
+requiring
+requisite
+requisiteness
+requisites
+requisition
+requisitioned
+requisitioner
+requisitioning
+requisitions
+requital
+requite
+requited
+requiter
+requiting
+reradiate
+reradiation
+reran
+reread
+rereading
+rereads
+reredos
+reremouse
+rereward
+reroute
+rerouted
+rerouter
+rerouters
+reroutes
+reroutings
+reroyalize
+reroyalizes
+rerun
+rerunning
+reruns
+res
+resail
+resalable
+resale
+resample
+resampling
+resaturate
+resaturated
+resaturates
+resaturating
+resaturation
+rescale
+rescaled
+rescaling
+rescan
+rescanned
+rescanning
+rescans
+reschedule
+rescheduled
+rescheduler
+reschedules
+rescheduling
+rescind
+rescinded
+rescinder
+rescindment
+rescissible
+rescission
+rescissory
+rescript
+rescue
+rescued
+rescuer
+rescuers
+rescues
+rescuing
+resealed
+research
+researchable
+researched
+researcher
+researcher's
+researchers
+researches
+researching
+researchist
+reseat
+reseau
+resect
+resectability
+resectable
+resection
+reseed
+reselect
+reselected
+reselecting
+reselection
+reselects
+resell
+reseller
+resellers
+reselling
+resells
+resemblance
+resemblance's
+resemblances
+resemblant
+resemble
+resembled
+resembles
+resembling
+resend
+resending
+resends
+resensitization
+resensitization's
+resensitizations
+resensitize
+resensitizes
+resent
+resented
+resentful
+resentfully
+resentfulness
+resenting
+resentment
+resents
+resepulcher
+resepulchers
+resequence
+resequenced
+reserpine
+reservation
+reservation's
+reservations
+reserve
+reserved
+reservedly
+reservedness
+reserver
+reserves
+reserving
+reservist
+reservists
+reservoir
+reservoir's
+reservoirs
+reset
+reseted
+reseter
+reseting
+resets
+resettable
+resetting
+resettings
+resettle
+resettled
+resettlement
+resettles
+resettling
+reshape
+reshaped
+reshaper
+reshapes
+reshaping
+reship
+reshipment
+reshipper
+reshuffle
+reside
+resided
+residence
+residence's
+residences
+residency
+resident
+resident's
+residential
+residentially
+residentiary
+residents
+resider
+resides
+residing
+residua
+residual
+residually
+residuals
+residuary
+residue
+residue's
+residues
+residuum
+resifted
+resign
+resignation
+resignation's
+resignations
+resigned
+resignedly
+resignedness
+resigner
+resigning
+resigns
+resile
+resiled
+resilience
+resiliency
+resilient
+resiliently
+resiling
+resin
+resin's
+resinate
+resined
+resiniferous
+resinify
+resining
+resinize
+resinizes
+resinlike
+resinoid
+resinous
+resins
+resiny
+resipiscence
+resist
+resistable
+resistance
+resistances
+resistant
+resistantly
+resisted
+resistencia
+resister
+resistibility
+resistible
+resistibly
+resisting
+resistive
+resistively
+resistiveness
+resistivity
+resistless
+resistlessly
+resistlessness
+resistor
+resistor's
+resistors
+resists
+resit
+resitting
+resize
+resized
+resizes
+resizing
+resnais
+resnatron
+Resnik
+resojet
+resold
+resole
+resolemnize
+resolemnizes
+resoluble
+resolute
+resolutely
+resoluteness
+resolution
+resolutions
+resolutive
+resolvable
+resolve
+resolved
+resolvent
+resolver
+resolvers
+resolves
+resolving
+resonance
+resonances
+resonant
+resonantly
+resonate
+resonated
+resonates
+resonating
+resonator
+resonators
+resorb
+resorcinol
+resorption
+resorptive
+resort
+resorted
+resorter
+resorting
+resorts
+resound
+resounding
+resoundingly
+resounds
+resource
+resource's
+resourced
+resourceful
+resourcefully
+resourcefulness
+resources
+resourcing
+respecified
+respecifies
+respecify
+respect
+respectability
+respectable
+respectableness
+respectably
+respected
+respecter
+respectful
+respectfully
+respectfulness
+respecting
+respective
+respectively
+respectiveness
+respects
+respell
+Respighi
+respirable
+respiration
+respirational
+respirations
+respirator
+respirators
+respiratory
+respire
+respired
+respires
+respiring
+respirometer
+respirometer's
+respirometers
+respirometric
+respirometry
+respite
+respited
+respiting
+resplendence
+resplendency
+resplendent
+resplendently
+respond
+responded
+respondent
+respondent's
+respondents
+responder
+responders
+responding
+responds
+response
+responser
+responses
+responsibilities
+responsibility
+responsible
+responsibleness
+responsibly
+responsions
+responsive
+responsively
+responsiveness
+responsory
+responsum
+resrict
+ressentiment
+resses
+rest
+restage
+restandardization
+restandardization's
+restandardizations
+restandardize
+restandardizes
+restart
+restartable
+restarted
+restarter
+restarting
+restarts
+restate
+restated
+restatement
+restates
+restating
+restaurant
+restaurant's
+restauranteur
+restaurants
+restaurateur
+rested
+rester
+resterilize
+resterilizes
+restful
+restfully
+restfulness
+restiform
+restigmatize
+restigmatizes
+resting
+restitute
+restitution
+restive
+restively
+restiveness
+restless
+restlessly
+restlessness
+restock
+restorability
+restorable
+restoral
+restoration
+restoration's
+restorationism
+restorations
+restorative
+restoratively
+restorativeness
+restore
+restored
+restorer
+restorers
+restores
+restoring
+restrain
+restrainable
+restrained
+restrainedly
+restrainer
+restrainers
+restraining
+restrains
+restraint
+restraint's
+restraints
+restransmit
+restrict
+restricted
+restrictedly
+restricting
+restriction
+restriction's
+restrictionism
+restrictionist
+restrictions
+restrictive
+restrictively
+restrictiveness
+restricts
+restrike
+restroom
+restroom's
+restrooms
+restructurability
+restructure
+restructured
+restructures
+restructuring
+rests
+restudy
+resubmission
+resubmit
+resubmits
+resubmitted
+resubmitting
+result
+resultant
+resultantly
+resultants
+resulted
+resultful
+resultfulness
+resulting
+resultless
+results
+resumable
+resume
+resumed
+resumes
+resuming
+resumption
+resumption's
+resumptions
+resupinate
+resupination
+resupine
+resupplied
+resupplier
+resupplier's
+resuppliers
+resupplies
+resupply
+resupply's
+resupplying
+resurface
+resurfaced
+resurfacer
+resurfacer's
+resurfacers
+resurfaces
+resurfacing
+resurgam
+resurge
+resurged
+resurgence
+resurgent
+resurges
+resurging
+resurrect
+resurrected
+resurrecting
+resurrection
+resurrection's
+resurrectional
+resurrectionism
+resurrectionist
+resurrectionize
+resurrectionizes
+resurrections
+resurrects
+resuscitate
+resuscitated
+resuscitates
+resuscitating
+resuscitation
+resuscitative
+resuscitator
+resuscitators
+resuspended
+resuspension
+resvering
+resymbolization
+resymbolization's
+resymbolizations
+resymbolize
+resymbolizes
+resynchronization
+resynchronizations
+resynchronize
+resynchronized
+resynchronizes
+resynchronizing
+resynthesize
+resynthesizes
+ret
+retable
+retail
+retailed
+retailer
+retailers
+retailing
+retails
+retain
+retained
+retainer
+retainers
+retaining
+retainment
+retains
+retake
+retaliate
+retaliated
+retaliates
+retaliating
+retaliation
+retaliative
+retaliatory
+retard
+retardant
+retardate
+retardation
+retarded
+retarder
+retarding
+retch
+retching
+rete
+retell
+retelling
+retene
+retension
+retensioned
+retention
+retentionist
+retentions
+retentive
+retentively
+retentiveness
+retentivity
+retenue
+retest
+rethink
+rethinker
+rethinking
+rethinks
+rethought
+rethreading
+retia
+retiarius
+retiary
+reticence
+reticency
+reticent
+reticently
+reticle
+reticle's
+reticles
+reticular
+reticulate
+reticulated
+reticulately
+reticulates
+reticulating
+reticulation
+reticule
+reticulocyte
+reticulocytic
+reticulose
+reticulum
+retied
+retiform
+retina
+retina's
+retinacular
+retinaculum
+retinae
+retinal
+retinas
+retinene
+retinite
+retinitis
+retinize
+retinizes
+retinol
+retinopathy
+retinoscopy
+retinospora
+retinue
+retinues
+retinula
+retinular
+retirant
+retire
+retired
+retiredly
+retiredness
+retiree
+retirement
+retirement's
+retirements
+retires
+retiring
+retiringly
+retiringness
+retitled
+retold
+retool
+retorsion
+retort
+retorted
+retorting
+retortion
+retorts
+retot
+retouch
+retoucher
+retouching
+retrace
+retraced
+retraces
+retracing
+retract
+retractable
+retracted
+retractile
+retractility
+retracting
+retraction
+retractions
+retractor
+retractor's
+retractors
+retracts
+retrain
+retrainable
+retrained
+retrainee
+retraining
+retrains
+retral
+retrally
+retranquilize
+retranquilizes
+retranslated
+retransmission
+retransmission's
+retransmissions
+retransmit
+retransmits
+retransmitted
+retransmitting
+retread
+retreaded
+retreading
+retreat
+retreatant
+retreated
+retreater
+retreating
+retreats
+retrench
+retrenching
+retrenchment
+retrial
+retributed
+retribution
+retributive
+retributively
+retributory
+retried
+retrier
+retriers
+retries
+retrievability
+retrievable
+retrieval
+retrieval's
+retrievals
+retrieve
+retrieved
+retriever
+retrievers
+retrieves
+retrieving
+retro
+retroact
+retroaction
+retroactive
+retroactively
+retroactivity
+retrocede
+retrocession
+retrochoir
+retrodiction
+retrofire
+retrofit
+retrofitted
+retrofitting
+retroflection
+retroflex
+retroflexed
+retroflexion
+retrogradation
+retrogradations
+retrograde
+retrogradely
+retrograding
+retrogress
+retrogression
+retrogressive
+retrogressively
+retroject
+retrolental
+retrolingual
+retropack
+retroperitoneal
+retroperitoneally
+retroreflection
+retroreflective
+retroreflector
+retrorocket
+retrorse
+retrorsely
+retroserrate
+retrospect
+retrospection
+retrospective
+retrospectively
+retroversion
+retrovision
+retry
+retrying
+rets
+retsina
+retted
+retting
+return
+returnable
+returned
+returnee
+returnee's
+returnees
+returner
+returners
+returning
+returns
+retuse
+retype
+retyped
+retypes
+retyping
+Reub
+Reub's
+Reuben
+reuchlin
+reunification
+reunify
+reunion
+Reunion
+reunion's
+reunionist
+reunionistic
+reunions
+reunite
+reunited
+reuniting
+reupholstering
+reus
+reusable
+reuse
+reused
+reuses
+reusing
+reuter
+Reuters
+Reuther
+reutilization
+reutilize
+reutilizes
+reutlingen
+Rev
+rev
+reval
+revalidate
+revalidated
+revalidates
+revalidating
+revalidation
+revalorization
+revalorization's
+revalorizations
+revalorize
+revalorized
+revalorizes
+revalorizing
+revaluate
+revaluation
+revalue
+revalued
+revalues
+revamp
+revamped
+revamping
+revamps
+revanche
+revanchism
+revanchist
+revaporization
+revaporization's
+revaporizations
+revaporize
+revaporizes
+reveal
+revealable
+revealed
+revealer
+revealing
+revealment
+reveals
+revegetate
+revegetation
+revehent
+reveille
+reveilles
+revel
+revelation
+revelation's
+revelationist
+revelationize
+revelationizes
+revelations
+revelator
+revelatory
+reveled
+reveler
+revelers
+reveling
+revelings
+revelry
+revels
+revenant
+revenge
+revenge's
+revenged
+revengeful
+revengefully
+revengefulness
+revenger
+revenges
+revenging
+revenue
+revenuer
+revenuers
+revenues
+rever
+reverb
+reverberant
+reverberantly
+reverberate
+reverberated
+reverberation
+reverberations
+reverberative
+reverberator
+reverberatory
+revere
+revered
+reverence
+reverencer
+reverend
+reverend's
+reverends
+reverent
+reverential
+reverentially
+reverently
+reveres
+reverie
+reveries
+reverified
+reverifies
+reverify
+reverifying
+revering
+revers
+reversal
+reversal's
+reversals
+reverse
+reversed
+reversely
+reverser
+reverses
+reversi
+reversibility
+reversible
+reversibly
+reversing
+reversion
+reversional
+reversionary
+reversioner
+reversions
+reverso
+revert
+reverted
+reverter
+revertible
+reverting
+revertive
+reverts
+revery
+revest
+revet
+revetment
+revetments
+revetted
+revetting
+revictual
+review
+reviewed
+reviewer
+reviewers
+reviewing
+reviews
+revile
+reviled
+revilement
+reviler
+reviling
+revisable
+revisal
+revise
+revised
+reviser
+revises
+revising
+revision
+revision's
+revisionary
+revisionism
+revisionist
+revisionists
+revisions
+revisit
+revisited
+revisiting
+revisits
+revisor
+revisory
+revisualization
+revisualization's
+revisualizations
+revisualize
+revisualizes
+revitalization
+revitalization's
+revitalizations
+revitalize
+revitalized
+revitalizer
+revitalizers
+revitalizes
+revitalizing
+revivable
+revival
+revival's
+revivalism
+revivalist
+revivalistic
+revivalists
+revivalize
+revivalizes
+revivals
+revive
+revived
+reviver
+revives
+revivification
+revivified
+revivify
+reviving
+reviviscence
+reviviscent
+revocable
+revocation
+revocations
+revoice
+revokable
+revoke
+revoked
+revoker
+revokes
+revoking
+revolatilize
+revolatilizes
+revolt
+revolted
+revolter
+revolting
+revoltingly
+revolts
+revoluable
+revolute
+revolution
+revolution's
+revolutionaries
+revolutionarily
+revolutionariness
+revolutionary
+revolutionary's
+revolutionibus
+revolutionist
+revolutionists
+revolutionize
+revolutionized
+revolutionizement
+revolutionizement's
+revolutionizements
+revolutionizer
+revolutionizers
+revolutionizes
+revolutionizing
+revolutions
+revolvable
+revolve
+revolved
+revolver
+revolvers
+revolves
+revolving
+revs
+revue
+revues
+revulsed
+revulsion
+revulsive
+revved
+revving
+rew
+rewake
+rewaken
+reward
+rewardable
+rewarded
+rewarder
+rewarding
+rewardingly
+rewards
+rewind
+rewinded
+rewinder
+rewinding
+rewinds
+rewire
+rewired
+rewires
+rewiring
+reword
+reworded
+rewording
+rewording's
+rewordings
+rewords
+rework
+reworked
+reworking
+reworks
+rewound
+rewrite
+rewriter
+rewrites
+rewriting
+rewritings
+rewritten
+rewrote
+Rex
+rexine
+rexroth
+rey
+Reykjavik
+Reykjavik's
+reynard
+reynaud
+Reynolds
+reynosa
+rezone
+RFI
+rhabdom
+rhabdomancy
+rhabdome
+rhabdomere
+rhabdomyoma
+rhachis
+rhadamanthine
+Rhadamanthus
+rhaetia
+Rhaetian
+Rhaetic
+rhamnaceous
+rhamnose
+rhamnus
+rhaphe
+rhapsodic
+rhapsodical
+rhapsodically
+rhapsodist
+rhapsodize
+rhapsodized
+rhapsodizes
+rhapsodizing
+rhapsody
+rhatany
+Rhea
+rhebok
+rhee
+Rheims
+rheims
+rhein
+Rheinholdt
+rheinholdt
+Rheinland
+Rhemish
+Rhenish
+rhenium
+rheobase
+rheological
+rheologically
+rheologist
+rheology
+rheometer
+rheometer's
+rheometers
+rheophile
+rheophilic
+rheostat
+rheostatic
+rheostats
+rheotaxis
+rheotropism
+rhesus
+rhet
+rhetic
+rhetor
+rhetoric
+rhetorical
+rhetorically
+rhetoricalness
+rhetorician
+rhetoricians
+rheum
+rheumatic
+rheumatically
+rheumatics
+rheumatism
+rheumatiz
+rheumatoid
+rheumatologist
+rheumatology
+rheumy
+rheydt
+rhigolene
+rhinal
+Rhine
+Rhineland
+rhinelander
+Rhinelander
+rhinencephalic
+rhinencephalon
+rhinestone
+rhinestones
+rhinitis
+rhino
+rhinoceros
+rhinocerotic
+rhinolaryngology
+rhinology
+rhinopharyngitis
+rhinoplasty
+rhinos
+rhinoscopy
+rhinosporidium
+rhinotracheitis
+rhinovirus
+rhizanthous
+rhizobium
+rhizocarpic
+rhizocarpous
+rhizocephalan
+rhizocephalid
+rhizoctonia
+rhizogenesis
+rhizogenetic
+rhizogenic
+rhizoid
+rhizoidal
+rhizomatous
+rhizome
+rhizomic
+rhizomorph
+rhizomorphous
+rhizoplane
+rhizopod
+rhizopodal
+rhizopodous
+rhizopus
+rhizosphere
+rhizotomy
+rho
+Rhoda
+Rhoda's
+rhodamine
+Rhode
+Rhodes
+Rhodesia
+Rhodesian
+Rhodesoid
+Rhodian
+rhodic
+rhodinal
+rhodium
+rhodochrosite
+rhododendron
+rhododendrons
+rhodolite
+rhodomontade
+rhodonite
+Rhodope
+rhodoplast
+rhodopsin
+rhodora
+rhodos
+rhomb
+rhombencephalon
+rhombi
+rhombic
+rhombohedral
+rhombohedron
+rhomboid
+rhomboidal
+rhomboideus
+rhombs
+rhombus
+rhombuses
+rhonchi
+rhonchus
+Rhonda
+rhotacism
+rhotic
+rhubarb
+rhumb
+rhumba
+rhumbatron
+rhumbs
+rhus
+rhuses
+rhyme
+rhymed
+rhymer
+rhymes
+rhymester
+rhyming
+rhynchocephalian
+rhyolite
+rhyolitic
+rhythm
+rhythm's
+rhythmic
+rhythmical
+rhythmically
+rhythmicity
+rhythmicize
+rhythmicizes
+rhythmics
+rhythmist
+rhythmizable
+rhythmizable's
+rhythmizables
+rhythmization
+rhythmization's
+rhythmizations
+rhythmize
+rhythmizes
+rhythms
+rhytidome
+rhyton
+ri
+RI
+ria
+rial
+rialto
+riant
+riantly
+riata
+rib
+rib's
+ribald
+ribaldry
+riband
+ribas
+ribband
+ribbed
+ribbentrop
+ribber
+ribbing
+ribble
+ribbon
+ribbon's
+ribbonfish
+ribbonlike
+ribbons
+ribbonwood
+ribby
+ribera
+ribgrass
+riblet
+riboflavin
+ribonuclease
+ribonucleic
+ribonucleoprotein
+ribonucleoside
+ribonucleotide
+ribose
+ribosomal
+ribosome
+ribosomes
+ribs
+ribwort
+ribworts
+Rica
+Rican
+Ricanism
+Ricans
+ricardo
+Ricci
+ricci
+Ricciarelli
+riccio
+rice
+ricebird
+ricer
+ricercar
+ricercare
+rices
+rich
+Richard
+Richard's
+Richards
+Richardson
+richelieu
+richen
+richened
+richening
+richer
+richert
+riches
+richest
+richey
+Richey
+Richfield
+richland
+Richland
+richly
+richment
+Richmond
+richness
+Richter
+richthofen
+rici
+ricin
+ricinoleic
+ricinus
+Rick
+Rick's
+rickards
+Rickenbaugh
+rickenbaugh
+rickets
+rickettsia
+rickettsial
+rickety
+rickey
+rickeys
+rickrack
+ricksha
+rickshaw
+rickshaw's
+rickshaws
+Rico
+ricochet
+ricocheted
+ricocheting
+ricochets
+ricotta
+rictal
+rictus
+rid
+ridable
+riddance
+ridded
+ridden
+ridder
+ridding
+riddle
+riddled
+riddler
+riddles
+riddling
+ride
+rideable
+rident
+rider
+rider's
+riderless
+riders
+rides
+ridge
+ridge's
+ridged
+Ridgefield
+ridgeling
+ridgepole
+ridges
+ridgetree
+ridgeway
+ridging
+ridgling
+Ridgway
+ridgy
+ridicule
+ridiculed
+ridiculer
+ridicules
+ridiculing
+ridiculize
+ridiculizes
+ridiculous
+ridiculously
+ridiculousness
+riding
+ridings
+ridley
+ridotto
+ridpath
+rids
+riefenstahl
+riegger
+riel
+Riemann
+Riemannian
+riempie
+rien
+rienzi
+rier
+Riesling
+rife
+rifely
+riff
+riffle
+riffled
+riffler
+riffles
+riffling
+riffraff
+rification
+rifice
+rificer
+rifle
+riflebird
+rifled
+rifleman
+riflemen
+rifler
+riflery
+rifles
+riflescope
+rifling
+rift
+rifying
+rig
+rig's
+Riga
+rigadoon
+rigamarole
+rigatoni
+rigaudon
+Rigel
+Rigel's
+rigged
+rigger
+riggers
+rigging
+Riggs
+right
+rightable
+righted
+righten
+righteous
+righteously
+righteousness
+righter
+rightful
+rightfully
+rightfulness
+righthand
+righthanded
+righting
+rightish
+rightism
+rightist
+rightly
+rightmost
+rightness
+righto
+rights
+rightward
+rightwards
+rightwinger
+rightwingers
+rigi
+rigid
+rigidification
+rigidify
+rigidities
+rigidity
+rigidly
+rigidness
+rigil
+rigmarole
+rigmaroles
+rigor
+rigor's
+rigorism
+rigorism's
+rigorisms
+rigorist
+rigorist's
+rigoristic
+rigoristics
+rigorists
+rigorous
+rigorously
+rigorousness
+rigors
+rigs
+Rigsdaler
+Rijeka
+Rijksdaaler
+Rijn
+Rijswijk
+Riksdag
+rile
+Riley
+riling
+Rilke
+rilke
+rill
+rille
+rillet
+rilly
+rim
+rim's
+rimbaud
+rime
+rimer
+rimester
+rimier
+riming
+Rimini
+rimland
+rimless
+rimmed
+rimming
+rimose
+rimous
+rimrock
+rims
+Rimsky
+rimu
+rimy
+rin
+rinascimento
+rind
+rind's
+rinded
+rinderpest
+rinds
+Rinehart
+rinforzando
+ring
+ringbark
+ringbolt
+ringbolts
+ringbone
+ringboned
+ringdove
+ringed
+ringel
+ringent
+ringer
+ringers
+ringgit
+ringhals
+ringing
+ringinglow
+ringingly
+ringings
+ringleader
+ringleaders
+ringlet
+ringlets
+ringlike
+ringmaster
+ringmasters
+ringneck
+ringolade
+rings
+ringside
+ringsiders
+ringster
+ringstraked
+ringtail
+ringtaw
+ringtoss
+ringworm
+ringworms
+rink
+rinker
+rinse
+rinsed
+rinser
+rinses
+rinsing
+Rio
+Riordan
+Riordan's
+riot
+rioted
+rioter
+rioters
+rioting
+riotous
+riotously
+riotousness
+riots
+rip
+riparian
+ripcord
+ripe
+ripely
+ripen
+ripened
+ripener
+ripeness
+ripening
+ripens
+riper
+ripest
+ripieno
+Ripley
+ripoff
+ripoff's
+ripoffs
+ripon
+riposte
+ripped
+ripper
+ripping
+ripple
+rippled
+rippler
+ripples
+ripplet
+rippling
+riprap
+rips
+ripsaw
+ripsnorter
+ripsnorting
+riptide
+Ripuarian
+RISC
+rise
+risen
+riser
+risers
+rises
+risibility
+risible
+risibles
+rising
+risings
+risk
+risked
+risker
+riskier
+riskiness
+risking
+risks
+risky
+risorgimento
+risotto
+Riss
+rissole
+risus
+rit
+ritard
+ritardando
+Ritchie
+Ritchie's
+rite
+rite's
+rited
+ritenuto
+rites
+ritornello
+Ritter
+ritual
+ritualism
+ritualist
+ritualistic
+ritualistically
+ritualization
+ritualize
+ritualized
+ritualizes
+ritualizing
+ritually
+rituals
+Ritz
+ritzier
+ritziness
+ritzy
+rivage
+rival
+rivaled
+rivaless
+rivalesses
+rivaling
+rivalize
+rivalizes
+rivalries
+rivalrous
+rivalry
+rivalry's
+rivals
+rive
+rived
+riven
+river
+river's
+Rivera
+riverbank
+riverbanks
+riverbed
+riverboat
+riverfront
+riverine
+rivers
+riverside
+Riverview
+riverview
+riverward
+riverwards
+riverweed
+rivet
+riveted
+riveter
+riveting
+rivets
+Riviera
+riving
+rivulet
+rivulet's
+rivulets
+Riyadh
+riyal
+rizal
+rizzio
+RMS
+RNA
+roach
+roaches
+road
+road's
+roadability
+roadbed
+roadbeds
+roadblock
+roadblocks
+roadholding
+roadhouse
+roadhouses
+roadless
+roadroller
+roadrollers
+roadrunner
+roadrunners
+roads
+roadside
+roadsides
+roadstead
+roadster
+roadster's
+roadsters
+roadway
+roadway's
+roadways
+roadwork
+roadworks
+roadworthiness
+roadworthy
+roam
+roamed
+roamer
+roaming
+roams
+roan
+Roanoke
+roar
+roared
+roarer
+roaring
+roaringest
+roars
+roast
+roasted
+roaster
+roasting
+roasts
+rob
+robalo
+roband
+robbed
+robben
+robber
+robber's
+robberies
+robbers
+robbery
+robbery's
+robbia
+robbie
+Robbie
+robbing
+Robbins
+robe
+robed
+Robert
+Robert's
+Roberta
+Roberto
+Roberts
+Robertson
+Robertsons
+robes
+Robeson
+Robespierre
+robin
+robin's
+robing
+robins
+Robinson
+Robinson's
+Robinsonville
+roble
+roborant
+robot
+robot's
+robotic
+robotics
+robotism
+robotization
+robotization's
+robotizations
+robotize
+robotizes
+robots
+robs
+Robson
+robust
+robustious
+robustiously
+robustiousness
+robustly
+robustness
+roc
+roca
+rocaille
+rocambole
+Rocco
+Rochberg
+Rochdale
+Rochelle
+Rochester
+Rochester's
+rochet
+Rochford
+rock
+rockabilly
+rockabye
+Rockaway
+rockaway
+rockaways
+Rockaways
+rockbound
+rocked
+Rockefeller
+rocker
+rockers
+rockery
+rocket
+rocket's
+rocketed
+rocketeer
+rocketing
+rocketry
+rockets
+rockettes
+rockfish
+Rockford
+Rockhampton
+rockier
+rockies
+rockiness
+rocking
+Rockingham
+Rockland
+rocklike
+rockling
+rockoon
+rockrose
+rocks
+rockshaft
+rockskipper
+Rockville
+rockweed
+Rockwell
+rocky
+rococo
+rod
+rod's
+rodder
+rodding
+rode
+rodent
+rodenticide
+rodents
+rodeo
+rodeos
+rodeph
+Rodgers
+Rodin
+rodless
+rodlike
+Rodney
+Rodney's
+rodomontade
+Rodrigo
+Rodriguez
+rods
+Rodzinski
+roe
+roebuck
+roebucks
+roemer
+roentgen
+roentgenize
+roentgenogram
+roentgenogram's
+roentgenograms
+roentgenograph
+roentgenographic
+roentgenographically
+roentgenography
+roentgenologic
+roentgenological
+roentgenologically
+roentgenologist
+roentgenology
+roentgenopaque
+roentgenoscope
+roentgenoscopic
+roentgenoscopy
+roentgenotherapy
+roes
+roeselare
+Roethke
+roff
+rogation
+rogatory
+Roger
+Roger's
+Rogers
+roget
+rogue
+rogue's
+rogueing
+roguery
+rogues
+roguing
+roguish
+roguishly
+roguishness
+roi
+roic
+roil
+roiling
+roily
+roister
+roistered
+roisterer
+roistering
+roisterous
+Rojak
+rolamite
+Roland
+role
+role's
+roles
+Rolf
+roll
+rollaway
+rollback
+rollbar
+rolled
+roller
+rollers
+rollick
+rollicking
+rollickingly
+Rollie
+rollie
+rolling
+Rollins
+rollmop
+rollmops
+rollneck
+Rollo
+rollout
+rollover
+rolls
+rollway
+rolnick
+ROM
+Roma
+Romagna
+Romaic
+romaine
+Romains
+Romaji
+Roman
+Roman's
+romance
+romanced
+romancer
+romancers
+romances
+romancing
+Romanes
+Romanesque
+Romania
+Romanic
+Romanies
+Romanism
+Romanist
+Romanization
+Romanization's
+Romanizations
+Romanize
+Romanized
+Romanizer
+Romanizers
+Romanizes
+Romanizing
+Romano
+Romanov
+Romans
+Romansch
+romantic
+romantic's
+romantically
+romanticism
+romanticist
+romanticization
+romanticize
+romanticizes
+romanticizing
+romantics
+Romany
+romanza
+romaunt
+Romberg
+Rome
+Romeldale
+Romeo
+Romeos
+Romero
+Romeros
+Romish
+Rommel
+Romney
+romp
+romped
+romper
+rompers
+romping
+romps
+romulo
+Romulus
+Ron
+Ronald
+Roncesvalles
+rondeau
+rondeaux
+rondel
+rondelet
+rondelle
+rondo
+rondos
+rondure
+rone
+roneo
+ronggeng
+Ronin
+ronnel
+Ronnie
+Ronsard
+ronyon
+roo
+rood
+roof
+roofed
+roofer
+roofers
+roofhouse
+roofing
+roofless
+rooflike
+roofline
+roofs
+rooftop
+rooftops
+rooftree
+rooinek
+rook
+rookery
+rookie
+rookies
+rooks
+rooky
+room
+roomed
+roomer
+roomers
+roomette
+roomful
+roomier
+roominess
+rooming
+roommate
+roommate's
+roommates
+rooms
+roomy
+Rooney
+rooney
+roorback
+roos
+roose
+Roosevelt
+Roosevelt's
+Rooseveltian
+roost
+rooster
+roosters
+root
+root's
+rootage
+rooted
+rootedness
+rooter
+roothold
+rooting
+rootle
+rootless
+rootlessness
+rootlet
+rootlike
+roots
+rootstalk
+rootstock
+rooty
+ropable
+rope
+ropean
+roped
+ropedancer
+ropedancing
+roper
+ropers
+ropery
+ropes
+ropewalk
+ropewalker
+ropeway
+ropework
+ropier
+ropiness
+roping
+ropy
+roque
+roquefort
+roquelaure
+Roquemore
+roquet
+roraima
+rorqual
+Rorschach
+rorschach
+rort
+Rosa
+rosabelle
+Rosabelle
+rosace
+rosaceous
+Rosalie
+Rosalind
+rosaniline
+rosarian
+rosaries
+rosario
+rosarium
+rosary
+roscius
+roscoe
+roscommon
+rose
+rose's
+roseate
+roseately
+rosebay
+roseberry
+rosebud
+rosebud's
+rosebuds
+rosebush
+rosefish
+rosehip
+Roseland
+roselike
+rosella
+Rosella
+rosemaling
+rosemary
+Rosen
+Rosenberg
+Rosenblum
+Rosenblum's
+Rosenthal
+Rosenthal's
+Rosenzweig
+Rosenzweig's
+roseola
+roseolar
+rosery
+roses
+roset
+Rosetta
+rosette
+rosettes
+rosewall
+rosewater
+rosewood
+rosh
+Rosicrucian
+Rosie
+rosie
+rosier
+rosily
+rosin
+rosinante
+rosined
+rosiness
+rosining
+rosinous
+rosinweed
+roskilde
+roslev
+rospa
+Ross
+rossetti
+Rossi
+rossi
+Rossini
+rossiya
+rossoff
+rostagno
+rostagnos
+rostand
+rostellar
+rostellate
+rostellum
+roster
+rostock
+Rostov
+rostra
+rostral
+rostrate
+Rostropovich
+rostrum
+rosulate
+roswell
+Roswell
+rosy
+rot
+rota
+rotaed
+rotameter
+rotameter's
+rotameters
+Rotarian
+Rotarians
+rotary
+rotatable
+rotate
+rotated
+rotates
+rotating
+rotation
+rotational
+rotationally
+rotations
+rotative
+rotatively
+rotator
+rotator's
+rotators
+rotatory
+ROTC
+rote
+rotenone
+rotgut
+Roth
+Rotherham
+Rothermere
+Rothesay
+rothko
+Rothschild
+Rothschild's
+roti
+rotifer
+rotisserie
+rotogravure
+rotogravures
+rotonda
+rotor
+rotorcraft
+rotors
+rotorua
+rotos
+rototill
+rots
+rotted
+rotten
+rottenly
+rottenness
+rottenstone
+rotter
+Rotterdam
+rotting
+rottosei
+rottweiler
+rotund
+rotunda
+rotundity
+rotundly
+rotundness
+roturier
+rou
+Rouault
+Roubaix
+roucou
+rouen
+rouge
+rouget
+rough
+roughage
+roughcast
+roughed
+roughen
+roughened
+roughening
+roughens
+rougher
+roughest
+roughhouse
+roughhoused
+roughhousing
+roughish
+roughleg
+roughly
+roughneck
+roughness
+roughrider
+roughriders
+roughshod
+rouging
+roulade
+rouleau
+rouleaux
+roulers
+roulette
+rouletted
+roulettes
+rouletting
+roumelia
+round
+roundabout
+roundaboutness
+rounded
+roundedness
+roundel
+roundelay
+rounder
+rounders
+roundest
+roundhead
+roundheaded
+roundheadedness
+roundhouse
+rounding
+roundish
+roundlet
+roundly
+roundness
+roundoff
+rounds
+roundsman
+roundtable
+roundup
+roundup's
+roundups
+roundwood
+roundworm
+roup
+Rourke
+rous
+rouse
+rouseabout
+roused
+rousement
+rouser
+rouses
+rousing
+Rousseau
+Rousseau's
+Roussillon
+roust
+roustabout
+rouster
+rout
+route
+routed
+routeman
+Routemarch
+router
+routers
+routes
+routeway
+routh
+routine
+routinely
+routines
+routing
+routings
+routinization
+routinization's
+routinizations
+routinize
+routinizes
+roux
+rove
+roved
+roven
+rover
+roves
+roving
+row
+Rowan
+rowboat
+rowboats
+Rowbotham
+rowdier
+rowdies
+rowdily
+rowdiness
+rowdy
+rowdyish
+rowdyism
+Rowe
+Rowe's
+rowed
+rowel
+roweled
+roweling
+rowen
+Rowena
+Rowena's
+rower
+rowers
+Rowicki
+rowing
+Rowland
+Rowland's
+Rowlandson
+Rowley
+Rowley's
+rowlock
+rowntree
+rows
+roxas
+Roxburgh
+Roxbury
+Roxbury's
+Roxy
+roxy
+Roxy's
+Roy
+Roy's
+royal
+royalism
+royalist
+royalist's
+royalists
+royalization
+royalization's
+royalizations
+royalize
+royalizes
+royally
+royalties
+royalty
+royalty's
+royaux
+Royce
+Royden
+royster
+rozella
+rozelle
+Rozelle
+Rozelle's
+Rozhdestvensky
+rozzer
+RPM
+rpt
+rRNA
+RSVP
+RSX
+RTT
+rub
+Rubaiyat
+rubasse
+rubato
+rubbed
+rubber
+rubber's
+rubberization
+rubberize
+rubberized
+rubberizes
+rubberizing
+rubberlike
+rubberneck
+rubbernecker
+rubbers
+rubbery
+rubbing
+rubbish
+rubbishes
+rubbishy
+rubble
+rubbled
+rubblework
+rubbling
+rubbra
+rubby
+rubdown
+rube
+rubefacient
+rubefy
+rubella
+rubellite
+Ruben
+Ruben's
+Rubens
+Rubenstein
+rubeola
+rubeolar
+rubes
+rubescent
+rubiaceous
+Rubicon
+rubicund
+rubicundity
+rubidium
+rubies
+rubiginous
+Rubin
+Rubin's
+rubinstein
+rubious
+ruble
+ruble's
+rubles
+rubout
+rubric
+rubrical
+rubrically
+rubricate
+rubrication
+rubricator
+rubrician
+rubricize
+rubricizes
+rubs
+rubstone
+rubus
+ruby
+ruby's
+rubythroat
+rucellai
+ruche
+ruching
+ruck
+rucksack
+ruckus
+ruction
+rudbeckia
+rudd
+rudder
+rudder's
+rudderhead
+rudderless
+rudderpost
+rudders
+rudderstock
+ruddier
+ruddily
+ruddiness
+ruddle
+ruddled
+ruddleman
+ruddling
+ruddock
+ruddy
+rude
+rudely
+rudeness
+ruder
+ruderal
+rudesbies
+rudesby
+Rudesheimer
+rudest
+rudiment
+rudiment's
+rudimental
+rudimentarily
+rudimentariness
+rudimentary
+rudiments
+rudish
+Rudolf
+Rudolf's
+Rudolph
+Rudolph's
+Rudy
+Rudyard
+Rudyard's
+rue
+rueful
+ruefully
+ruefulness
+rues
+rufescent
+ruff
+ruffe
+ruffed
+ruffian
+ruffianism
+ruffianize
+ruffianizes
+ruffianly
+ruffians
+ruffle
+ruffled
+ruffler
+ruffles
+ruffling
+ruffly
+rufous
+Rufus
+rug
+rug's
+ruga
+rugae
+rugal
+rugate
+rugby
+rugged
+ruggedization
+ruggedize
+ruggedized
+ruggedizes
+ruggedizing
+ruggedly
+ruggedness
+rugger
+ruggiero
+rugose
+rugosely
+rugosity
+rugs
+rugulose
+ruh
+Ruhr
+ruidoso
+ruin
+ruinate
+ruination
+ruination's
+ruinations
+ruined
+ruiner
+ruing
+ruining
+ruinous
+ruinously
+ruinousness
+ruins
+ruisdael
+rule
+ruled
+ruleless
+ruler
+rulers
+rulership
+rules
+ruling
+rulings
+rum
+Rumania
+Rumanian
+Rumanians
+rumba
+rumble
+rumbled
+rumbler
+rumbles
+rumbling
+rumbly
+rumbustious
+rumdum
+rumelia
+rumen
+rumens
+Rumford
+rumina
+ruminal
+ruminant
+ruminantly
+ruminants
+ruminate
+rumination
+ruminative
+ruminatively
+ruminator
+rummage
+rummaged
+rummager
+rummaging
+rummel
+Rummel
+rummer
+rummest
+rummier
+rummies
+rummy
+rumor
+rumor's
+rumored
+rumorer
+rumorer's
+rumorers
+rumoring
+rumormonger
+rumormonger's
+rumormongers
+rumors
+rump
+Rumpelstiltskin
+rumple
+rumpled
+rumples
+rumplier
+rumpling
+rumply
+rumps
+rumpus
+rumrunner
+run
+runabout
+runabouts
+runagate
+runaround
+runaway
+runaways
+runback
+runcible
+runcinate
+runcorn
+rundle
+rundlet
+rundown
+Rundstedt
+rune
+runes
+rung
+rung's
+Runge
+rungs
+runic
+runless
+runlet
+runnable
+runnel
+runnels
+runner
+runner's
+runners
+runneth
+running
+runny
+Runnymede
+runoff
+runoffs
+runout
+runouts
+runover
+runs
+runt
+runtime
+runtiness
+runtm
+runts
+runty
+runway
+runways
+Runyon
+rupee
+rupees
+Rupert
+rupiah
+rupiahs
+rupicoline
+rupicolous
+Ruppert
+ruppert
+rupture
+ruptured
+ruptures
+rupturing
+rural
+ruralist
+rurality
+ruralization
+ruralization's
+ruralizations
+ruralize
+ruralized
+ruralizes
+ruralizing
+rurally
+rurban
+Rurik
+Ruritania
+ruse
+rush
+rushall
+rushed
+rushee
+rusher
+rushes
+rushing
+rushlight
+Rushmore
+rushy
+rusk
+Ruskin
+Russ
+Russell
+russet
+russeted
+russeting
+russets
+russetting
+Russia
+Russian
+Russian's
+russianization
+Russianization's
+Russianizations
+russianize
+Russianized
+Russianizes
+Russianizing
+Russians
+russification
+russify
+Russky
+Russo
+Russo's
+Russophile
+Russophobe
+russula
+rust
+rusted
+rustic
+rustical
+rustically
+rusticate
+rusticated
+rusticates
+rusticating
+rustication
+rusticator
+rusticity
+rusticize
+rusticizes
+rustier
+rustily
+rustiness
+rusting
+rustle
+rustled
+rustler
+rustlers
+rustles
+rustling
+rustproof
+rusts
+rusty
+rut
+rut's
+rutabaga
+rutabagas
+Rutgers
+Ruth
+ruthenia
+Ruthenian
+ruthenic
+ruthenious
+ruthenium
+Rutherford
+Rutherfordium
+ruthful
+Ruthful
+Ruthfully
+Ruthfulness
+ruthless
+ruthlessly
+ruthlessness
+rutilant
+rutilated
+rutile
+Rutland
+Rutledge
+ruts
+rutted
+Rutter
+ruttier
+rutting
+ruttish
+ruttishly
+ruttishness
+rutty
+ruwenzori
+ruysdael
+ruyter
+Rwanda
+Rwanda's
+Ryan
+ryazan
+Rybinsk
+rydal
+Rydberg
+Rydberg's
+Ryder
+rye
+rye's
+ryegrass
+ryobu
+ryokan
+ryot
+Ryswick
+Ryukyu
+Ryurik
+Rzewski
+s's
+Saadi
+Saar
+Saarinen
+Saarland
+saba
+sabadell
+sabadilla
+Sabaean
+sabah
+Sabaoth
+sabatier
+sabayon
+sabbat
+Sabbatarian
+sabbath
+Sabbathize
+Sabbathizes
+sabbatic
+sabbatical
+Sabellian
+saber
+saber's
+sabered
+sabering
+saberlike
+saberlike's
+saberlikes
+sabers
+sabertooth
+sabin
+Sabina
+Sabina's
+Sabine
+sable
+sable's
+sables
+sabol
+sabot
+sabotage
+sabotaged
+sabotages
+sabotaging
+saboteur
+saboteurs
+sabra
+sabras
+sabretache
+sabulous
+sac
+sacahuiste
+sacaton
+saccade
+saccadic
+saccate
+saccharase
+saccharate
+saccharic
+saccharide
+saccharides
+saccharification
+saccharify
+saccharimeter
+saccharimeter's
+saccharimeters
+saccharimetry
+saccharin
+saccharine
+saccharinity
+saccharoid
+saccharoidal
+saccharometer
+saccharometer's
+saccharometers
+saccharomyces
+saccharose
+sacco
+saccular
+sacculate
+sacculated
+sacculates
+sacculation
+saccule
+sacculus
+sacerdotal
+sacerdotalism
+sacerdotalist
+sacerdotally
+sachem
+sachemic
+sachems
+sachet
+sacheted
+sacheverell
+Sachs
+Sachsen
+sack
+sackbut
+sackcloth
+sacked
+sacker
+sackful
+sacking
+sacks
+Sackville
+saclike
+sacque
+sacra
+sacral
+sacralization
+sacralization's
+sacralizations
+sacrament
+sacramental
+sacramentalism
+sacramentalist
+sacramentally
+Sacramentarian
+sacramentize
+sacramentizes
+Sacramento
+sacraments
+sacrarium
+sacre
+sacred
+sacredly
+sacredness
+sacrestia
+sacrifice
+sacrificed
+sacrificer
+sacrificers
+sacrifices
+sacrificial
+sacrificially
+sacrificing
+sacrilege
+sacrilegious
+sacrilegiously
+sacrilegiousnes
+sacring
+sacristan
+sacristy
+sacroiliac
+sacrosanct
+sacrosanctity
+sacrum
+sad
+sadat
+sadden
+saddened
+saddening
+saddens
+sadder
+saddest
+saddhu
+saddle
+saddlebag
+saddlebags
+saddlebill
+saddlebow
+saddlecloth
+saddled
+saddleless
+saddler
+saddlery
+saddles
+saddletree
+saddling
+Sadducee
+sade
+sadhu
+sadi
+Sadie
+sadiron
+sadism
+sadist
+sadist's
+sadistic
+sadistically
+sadists
+Sadler
+Sadler's
+sadly
+sadness
+sadomasochism
+sadomasochist
+sadomasochistic
+sadowa
+Saens
+Safar
+safari
+safe
+safecracker
+safecracking
+safeguard
+safeguarded
+safeguarding
+safeguards
+safekeeping
+safelight
+safely
+safeness
+safer
+safes
+safest
+safetied
+safeties
+safety
+safetying
+safetyman
+saffian
+safflower
+saffron
+Safi
+safid
+safranin
+safranine
+safrole
+sag
+saga
+sagacious
+sagaciously
+sagaciousness
+sagacity
+sagami
+sagamore
+sage
+sagebrush
+sagely
+sageness
+sages
+saggar
+sagged
+sagger
+sagging
+saghalien
+Saginaw
+sagitta
+sagittal
+sagittally
+Sagittarius
+sagittate
+sago
+sagos
+sags
+saguache
+saguaro
+saguenay
+saguia
+sagunto
+Sahaptin
+Sahara
+Saharan
+saharanpur
+sahib
+sahitya
+said
+saida
+saiga
+Saigon
+sail
+sailable
+sailboard
+sailboat
+sailboater
+sailboaters
+sailboating
+sailboats
+sailcloth
+sailed
+sailer
+sailfish
+sailing
+sailon
+sailor
+sailorizing
+sailorizing's
+sailorizings
+sailorly
+sailors
+sailplane
+sailplaner
+sails
+sain
+sainfoin
+sainsbury
+saint
+Saint
+saintdom
+sainted
+sainthood
+saintlike
+saintliness
+saintly
+Saintpaulia
+saints
+saintsbury
+saintship
+saipan
+saith
+saithe
+Saiva
+Sakai
+sake
+saker
+sakes
+sakhalin
+Sakharov
+saki
+sako
+saktas
+sakti
+Sakyamuni
+Sal
+salaam
+salability
+salable
+salacious
+salaciously
+salaciousness
+salad
+salad's
+salade
+saladin
+salado
+salads
+salamanca
+salamander
+salamandrine
+salambria
+salami
+salamis
+salariat
+salaried
+salaries
+salary
+salchow
+salduba
+sale
+sale's
+saleable
+saledo
+Salem
+salep
+saleratus
+Salerno
+saleroom
+sales
+salesclerk
+salesgirl
+Salesian
+saleslady
+salesman
+salesmanship
+salesmen
+salespeople
+salespeople's
+salesperson
+salesperson's
+salesroom
+saleswoman
+saleswomen
+salet
+Salford
+Salian
+salic
+salicaceous
+salicin
+salicional
+Salicornia
+salicylate
+salicylic
+salida
+salience
+saliency
+salient
+salientian
+saliently
+saliferous
+salify
+salimeter
+salimeter's
+salimeters
+Salina
+Salina's
+saline
+salinger
+salinity
+salinization
+salinize
+salinizes
+salinometer
+salinometer's
+salinometers
+salique
+Salisbury
+Salish
+saliva
+salivary
+salivate
+salivated
+salivates
+salivating
+salivation
+Salk
+Salle
+sallee
+sallet
+sallied
+sallies
+Sallinen
+sallow
+sallowish
+sallowness
+sallust
+Sally
+sally
+Sally's
+sallying
+salmagundi
+salmanazar
+salmi
+Salminen
+salmon
+salmonberries
+salmonberry
+salmonella
+salmonellosis
+salmonid
+salmonoid
+salmons
+Salol
+salometer
+salometer's
+salometers
+salon
+salon's
+Salonen
+salonika
+salons
+saloon
+saloon's
+saloonkeep
+saloonkeeper
+saloons
+saloop
+salop
+salopette
+Salpa
+salpicon
+Salpiglossis
+salpingectomy
+salpingitis
+salpinx
+salsa
+salsa's
+salsas
+salsify
+salt
+salta
+saltant
+saltarello
+saltation
+saltatorial
+saltatory
+saltbox
+saltbush
+saltcellar
+saltchuck
+saltchucker
+salted
+salter
+saltern
+salters
+saltfish
+saltier
+saltiest
+saltigrade
+saltillo
+saltily
+saltine
+saltiness
+salting
+saltire
+saltless
+saltlike
+saltness
+salto
+Salton
+saltonstall
+saltpan
+saltpeter
+saltpeter's
+saltpeters
+salts
+saltshaker
+saltus
+saltwater
+saltworks
+saltwort
+salty
+salubrious
+salubriously
+salubriousness
+salubrity
+saluki
+salutarily
+salutariness
+salutaris
+salutary
+salutation
+salutation's
+salutational
+salutations
+salutatorian
+salutatory
+salute
+saluted
+saluter
+salutes
+salutiferous
+saluting
+salutory
+salvable
+Salvador
+Salvadoran
+salvage
+salvageability
+salvageable
+salvaged
+salvager
+salvages
+salvaging
+salvation
+salvational
+salvationism
+salvationist
+Salvatore
+salvatorian
+salve
+salver
+salverform
+salves
+Salvia
+salvific
+salving
+salvo
+salvoes
+salvor
+salvos
+salween
+salyut
+Salz
+Salz's
+Salzburg
+salzgitter
+Sam
+Sam's
+samar
+samara
+samarang
+samaria
+Samaritan
+samarium
+Samarkand
+samarskite
+samba
+sambar
+Sambo
+sambre
+sambur
+same
+samekh
+sameness
+samfoo
+Samian
+samiel
+samisen
+samite
+samiti
+samizdat
+samlet
+Sammy
+Sammy's
+Samnite
+samnium
+Samoa
+Samoan
+samos
+samothrace
+samovar
+Samoyed
+samp
+sampan
+samphire
+sample
+sample's
+sampled
+sampler
+samplers
+samples
+sampling
+samplings
+Sampson
+samsara
+samshu
+Samson
+samsun
+Samuel
+Samuels
+Samuelson
+samurai
+samurai's
+samurais
+San
+Sana
+sanatarium
+sanative
+sanatoria
+sanatorium
+sanbenito
+Sanborn
+Sanborn's
+Sanchez
+Sancho
+sancta
+sanctification
+sanctified
+sanctifier
+sanctify
+sanctimonious
+sanctimoniously
+sanctimoniousness
+sanctimony
+sanction
+sanctioned
+sanctioning
+sanctions
+sanctities
+sanctitude
+sanctity
+sanctuaries
+sanctuary
+sanctuary's
+sanctum
+Sanctus
+sand
+sandakan
+sandal
+sandal's
+sandaled
+sandaling
+sandals
+sandalwood
+sandarac
+sandbag
+sandbagger
+sandbank
+sandbar
+sandbars
+sandblast
+sandblaster
+sandbox
+sandbur
+Sandburg
+sanded
+sander
+Sanderling
+sanders
+Sanderson
+sandfly
+sandglass
+sandgrouse
+sandhi
+sandhill
+sandhog
+Sandhurst
+Sandia
+sandier
+sandiness
+sanding
+sandling
+sandlot
+sandlotter
+sandman
+sandpaper
+sandpapery
+sandpile
+sandpiper
+sandpit
+Sandra
+Sandringham
+sands
+sandsoap
+sandstone
+sandstones
+sandstorm
+sandstorms
+Sandusky
+sandwich
+Sandwich
+sandwiched
+sandwiches
+sandwiching
+sandworm
+sandworms
+sandwort
+sandworts
+sandy
+sane
+sanely
+saneness
+saner
+sanest
+Sanford
+Sanforized
+sang
+sangaree
+Sanger
+sangfroid
+Sangh
+sango
+Sangraal
+sangre
+sangria
+sanguinaria
+sanguinarily
+sanguinary
+sanguine
+sanguinely
+sanguineness
+sanguineous
+sanguineum
+sanguinity
+sanguinolent
+Sanhedrin
+sanicle
+sanies
+sanious
+sanipractor
+sanitaire
+sanitarian
+sanitarily
+sanitarium
+sanitariums
+sanitary
+sanitate
+sanitation
+sanitations
+sanitization
+sanitize
+sanitized
+sanitizer
+sanitizes
+sanitizing
+sanitorium
+sanity
+Sanjak
+sank
+sankey
+Sankhya
+sankt
+sanmicheli
+sannyasi
+sans
+sansei
+sanseis
+sanserif
+sansevieria
+Sanskrit
+sanskritic
+Sanskritic
+Sanskritize
+sansom
+sansome
+sant
+Santa
+santalaceous
+santana
+santander
+Santayana
+Santee
+Santiago
+Santo
+santolina
+santonica
+santonin
+Santos
+santour
+Sao
+saorstat
+sap
+sap's
+sapajou
+sapanwood
+sapele
+saphead
+sapheaded
+saphena
+saphenous
+sapid
+sapidity
+sapience
+sapiens
+sapient
+sapiential
+sapientize
+sapientizes
+sapiently
+sapindaceous
+sapio
+sapir
+sapless
+saplessness
+sapling
+sapling's
+saplings
+sapodilla
+sapogenin
+saponaceous
+saponaceousness
+saponifiable
+saponification
+saponifier
+saponify
+saponin
+saponins
+saponite
+sapor
+saporous
+sapota
+sapotaceous
+sappanwood
+sapped
+sapper
+sapphic
+sapphira
+sapphire
+sapphirine
+sapphism
+Sappho
+Sappho's
+sappier
+sappiness
+sapping
+sapporo
+sappy
+sapraemia
+sapremia
+sapremic
+saprobe
+saprobic
+saprobically
+saprogenic
+saprogenicity
+saprolite
+sapropel
+sapropelic
+saprophagous
+saprophyte
+saprophytic
+saprophytically
+saprozoic
+saps
+sapsago
+sapsucker
+sapwood
+Sara
+saraband
+sarabande
+Saracen
+Saracen's
+Saracens
+saragossa
+Sarah
+Sarajevo
+Saran
+Sarangi
+Saransk
+sarape
+sarasate
+Sarasota
+Saratoga
+Saratov
+sarawak
+sarcasm
+sarcasm's
+sarcasms
+sarcastic
+sarcastically
+sarcenet
+sarcocarp
+sarcoid
+sarcoidosis
+sarcolemma
+sarcolemmal
+sarcoma
+sarcomatosis
+sarcomatous
+sarcomere
+sarcomeric
+sarcophagic
+sarcophagous
+sarcophagus
+sarcophagy
+sarcoplasm
+sarcoplasma
+sarcoplasmatic
+sarcoplasmic
+sarcosomal
+sarcosome
+sarcous
+Sard
+sardar
+sardegna
+sardine
+sardines
+Sardinia
+Sardinia's
+Sardinian
+Sardis
+Sardius
+sardonic
+sardonically
+sardonicism
+sardonyx
+Sardou
+sargasso
+sargassum
+sarge
+Sarge's
+Sargent
+Sargodha
+Sargon
+sari
+Sark
+Sarkis
+sarmatia
+sarmentose
+sarmi
+sarnen
+sarnia
+sarod
+sarode
+sarodist
+sarong
+sarong's
+sarongs
+saronic
+saros
+sarpanch
+sarpedon
+sarpsis
+Sarracenia
+sarraceniaceous
+sarraute
+sarre
+sarrusophone
+sarsaparilla
+Sarsen
+sarsenet
+sarsparilla
+sarthe
+sarti
+sarto
+sartor
+sartorial
+sartorially
+sartorius
+Sartre
+sarum
+sarvodaya
+Saschowa
+sasebo
+sash
+sashay
+sashayed
+sashed
+sashes
+sashimi
+sasin
+Saskatchewan
+saskatoon
+sass
+sassaby
+sassafras
+Sassanid
+sassari
+Sassenach
+sassier
+sassing
+sassoon
+sasswood
+sassy
+sastruga
+sat
+satai
+Satan
+satang
+satangs
+satanic
+satanically
+Satanism
+Satanist
+satanize
+satanizes
+satchel
+satchel's
+satchelful
+satchels
+sate
+sated
+sateen
+satellite
+satellite's
+satellites
+satellitium
+satem
+sates
+sati
+satiable
+satiate
+satiated
+satiates
+satiating
+satiation
+Satie
+satiety
+satin
+satinet
+satinflower
+sating
+satinize
+satinizes
+satinpod
+satinwood
+satiny
+satire
+satire's
+satires
+satiric
+satirical
+satirically
+satirist
+satirist's
+satirists
+satirizable
+satirizable's
+satirizables
+satirize
+satirized
+satirizer
+satirizers
+satirizes
+satirizing
+satisfaction
+satisfaction's
+satisfactions
+satisfactorily
+satisfactoriness
+satisfactory
+satisfiability
+satisfiable
+satisfied
+satisfier
+satisfiers
+satisfies
+satisfy
+satisfying
+satisfyingly
+satori
+satrap
+satrapy
+Satsuma
+saturable
+saturant
+saturate
+saturated
+saturater
+saturates
+saturating
+saturation
+saturations
+saturator
+Saturday
+Saturday's
+Saturdays
+Saturn
+saturnali
+saturnalia
+saturnalian
+saturnalianly
+Saturnian
+saturniid
+saturnine
+saturninely
+Saturnism
+saturnism
+satyagraha
+satyagrahi
+Satyanarayanan
+Satyanarayanan's
+satyr
+satyriasis
+satyric
+satyrid
+sauce
+saucebox
+saucepan
+saucepan's
+saucepans
+saucer
+saucerlike
+saucers
+sauces
+sauch
+saucier
+saucily
+sauciness
+saucing
+saucy
+Saud
+Saudi
+Sauerbaum
+sauerbraten
+sauerkraut
+sauger
+Saukville
+Saul
+Saul's
+Sault
+sauna
+sauna's
+saunas
+Saunders
+saunter
+sauntered
+saunterer
+sauntering
+saunters
+saurel
+saurian
+sauries
+saurischian
+sauropod
+saury
+sausage
+sausage's
+sausages
+saussure
+saute
+sauterne
+sauternes
+sav
+sava
+savable
+savage
+savaged
+savagely
+savageness
+savager
+savagers
+savagery
+savages
+savaging
+savagism
+savagize
+savagizes
+savaii
+savanna
+savanna's
+Savannah
+savannahs
+savannas
+savant
+savants
+savas
+savate
+save
+saveable
+saved
+saveloy
+saver
+savers
+saves
+saving
+savings
+savior
+savior's
+saviorhood
+saviorhood's
+saviorhoods
+saviors
+saviorship
+saviorship's
+saviorships
+Saviour
+savoie
+savoir
+savona
+Savonarola
+savor
+savored
+savorer
+savorer's
+savorers
+savorier
+savories
+savoriest
+savorilies
+savorily
+savoriness
+savoring
+savoringlies
+savoringly
+savorless
+savorlesses
+savorous
+savors
+savory
+savory's
+savoy
+Savoy
+Savoyard
+Savoyards
+savvied
+savvy
+savvying
+saw
+sawbelly
+sawbill
+sawbones
+sawboneses
+sawbuck
+sawder
+sawdust
+sawed
+sawer
+sawfish
+sawfly
+sawhorse
+sawing
+sawlike
+sawmill
+sawmill's
+sawmills
+sawn
+Sawney
+saws
+sawtimber
+sawtooth
+sawyer
+sax
+Saxe
+saxhorn
+saxicolous
+saxifragaceous
+saxifrage
+saxo
+Saxon
+Saxonization
+Saxonization's
+Saxonizations
+Saxonize
+Saxonizes
+Saxons
+saxons
+Saxony
+saxophone
+saxophone's
+saxophones
+saxophonic
+saxophonist
+Saxton
+saxton
+say
+sayable
+sayan
+sayer
+sayers
+saying
+sayings
+says
+sazerac
+SC
+scab
+scabbard
+scabbard's
+scabbards
+scabbed
+scabbier
+scabbing
+scabble
+scabbled
+scabbles
+scabbling
+scabby
+scabies
+scabietic
+scabiosa
+scabious
+scabrous
+scabrously
+scabrousness
+scabs
+scad
+scad's
+scads
+scafell
+scaffold
+scaffolding
+scaffoldings
+scaffolds
+scag
+scagliola
+Scala
+Scala's
+scalability
+scalable
+scalade
+scalado
+scalage
+scalar
+scalar's
+scalare
+scalariform
+scalariformly
+scalars
+scalation
+scalawag
+scald
+scalded
+scaldfish
+scalding
+scalds
+scale
+scaleboard
+scaled
+scaleless
+scalelike
+scalene
+scalenus
+scalepan
+scaler
+scalers
+scales
+scalier
+scaliger
+scaliness
+scaling
+scalings
+scall
+scallion
+scallop
+scalloped
+scalloper
+scalloping
+scallopini
+scallops
+scallywag
+scallywags
+scalogram
+scalogram's
+scalograms
+scaloppine
+scalp
+scalp's
+scalpel
+scalper
+scalping
+scalps
+scaly
+scam
+scam's
+scammed
+scammel
+scamming
+scammony
+scamp
+scamper
+scampered
+scampering
+scampers
+scampi
+scampini
+scampish
+scams
+scan
+scandal
+scandal's
+scandaled
+scandaling
+scandalization
+scandalization's
+scandalizations
+scandalize
+scandalized
+scandalizer
+scandalizers
+scandalizes
+scandalizing
+scandalmonger
+scandalous
+scandalously
+scandalousness
+scandals
+scandaroon
+scandent
+scanderbeg
+Scandian
+scandic
+Scandinavia
+Scandinavian
+Scandinavians
+scandium
+scannable
+scanned
+scanner
+scanner's
+scanners
+scanning
+scans
+scansion
+scansorial
+scant
+scantier
+scanties
+scantiest
+scantily
+scantiness
+scantling
+scantly
+scantness
+scanty
+scapa
+scape
+scapegoat
+scapegoating
+scapegoatism
+scapegoats
+scapegrace
+scapewheel
+scaphoid
+scaphopod
+scapin
+scaping
+scapolite
+scapose
+scapula
+scapular
+scapulars
+scar
+scar's
+scarab
+scarabaeid
+scarabaeus
+scaramouch
+scaramouche
+Scarborough
+scarce
+scarcely
+scarcement
+scarceness
+scarcer
+scarcest
+scarcity
+scare
+scarecrow
+scarecrowish
+scared
+scarehead
+scaremonger
+scarer
+scares
+scarey
+scarf
+scarface
+scarfpin
+scarfs
+scarfskin
+scarier
+scarification
+scarificator
+scarifier
+scarify
+scaring
+scarious
+scarlatina
+scarlatinal
+Scarlatti
+Scarlatti's
+scarless
+scarlet
+scarp
+scarped
+scarper
+scarpered
+scarpering
+scarpers
+scarph
+scarping
+scarps
+scarred
+scarring
+scarron
+scarry
+scars
+Scarsdale
+Scarsdale's
+scarves
+scary
+scat
+scatback
+scathe
+scathed
+scatheless
+scathes
+scathing
+scathingly
+scatological
+scatology
+scatted
+scatter
+scatteration
+scatterbrain
+scatterbrained
+scattered
+scatterer
+scattergram
+scattergun
+scattering
+scatteringly
+scatterplot
+scatterplots
+scatters
+scattershot
+scattier
+scatting
+scatty
+scaup
+scauper
+scaups
+scavenge
+scavenged
+scavenger
+scavenger's
+scavengers
+scavenges
+scavenging
+scc
+SCCS
+scena
+scenario
+scenario's
+scenarioization
+scenarioization's
+scenarioizations
+scenarioize
+scenarioizes
+scenarios
+scenarist
+scenarization
+scenarization's
+scenarizations
+scenarize
+scenarizes
+scend
+scene
+scene's
+sceneries
+scenery
+scenes
+scenic
+scenical
+scenically
+scenics
+scenographic
+scenographically
+scenography
+scent
+scented
+scentless
+scents
+scepter
+scepter's
+sceptered
+sceptering
+scepterless
+scepterlesses
+scepters
+sceptibly
+sceptic
+sceptical
+scepticism
+Schaefer
+Schaeffer
+Schaerbeek
+Schafer
+Schaffhausen
+Schaffner
+Schantz
+Schapiro
+schappe
+schedule
+schedule's
+scheduled
+scheduler
+scheduler's
+schedulers
+schedules
+scheduling
+schedulize
+schedulizes
+scheel
+scheele
+scheelite
+Scheherazade
+Scheherazade's
+Scheherezade
+Schein
+scheldt
+Schelling
+schelling
+schema
+schema's
+schemas
+schemata
+schematic
+schematically
+schematics
+schematism
+schematization
+schematization's
+schematizations
+schematize
+schematized
+schematizer
+schematizers
+schematizes
+schematizing
+scheme
+scheme's
+schemed
+schemer
+schemers
+schemes
+scheming
+Schenck
+Schenectady
+scherzando
+scherzi
+scherzo
+schiaparelli
+schickard
+Schiedam
+Schiff
+Schiller
+Schiller's
+schilling
+Schippers
+schism
+schismatic
+schismatical
+schismatically
+schismatist
+schismatize
+schismatized
+schismatizes
+schismatizing
+schist
+schistose
+schistosity
+schistosomal
+schistosome
+schistosomiasis
+schistous
+schizo
+schizocarp
+schizogenesis
+schizogonic
+schizogonous
+schizogony
+schizoid
+schizomycete
+schizomycetes
+schizomycetous
+schizont
+schizophrene
+schizophrenia
+schizophrenic
+schizophrenically
+schizophyceous
+schizophyte
+schizophytic
+schizopod
+schizos
+schizothymia
+schizothymic
+schlegel
+Schleiermacher
+schlemiel
+schlepp
+Schlesien
+Schlesinger
+Schlesinger's
+Schleswig
+Schliemann
+schlieren
+schlieric
+Schlitz
+schlock
+Schloss
+schmaltz
+schmaltzy
+schmalz
+Schmidt
+Schmitt
+schmo
+schmooze
+schmuck
+Schnabel
+Schnabel's
+schnapps
+schnauzer
+Schnecken
+Schneider
+schnitzel
+Schnitzler
+schnook
+schnorkle
+schnorrer
+schnozzle
+Schoenberg
+Schoenberg's
+Schofield
+Schofield's
+schola
+scholar
+scholarly
+scholars
+scholarship
+scholarship's
+scholarships
+scholastic
+scholastica
+scholastically
+scholasticate
+scholasticism
+scholastics
+scholiast
+scholiastic
+scholium
+schongauer
+school
+schoolbag
+schoolbook
+schoolbooks
+schoolboy
+schoolboy's
+schoolboys
+schoolchild
+schooled
+schooler
+schoolers
+schoolfellow
+schoolgirl
+schoolgirlish
+schoolgirls
+schoolhouse
+schoolhouse's
+schoolhouses
+schoolie
+schooling
+schoolman
+schoolmarm
+schoolmaster
+schoolmaster's
+schoolmasters
+schoolmate
+schoolmates
+schoolmistress
+schoolroom
+schoolroom's
+schoolrooms
+schools
+schoolteacher
+schooltime
+schoolwork
+schoolyard
+schoolyard's
+schoolyards
+schooner
+Schopenhauer
+schopenhauer
+schorl
+schorlaceous
+schottische
+Schottky
+Schottky's
+schouten
+schrodinger
+Schroeder
+Schroedinger
+Schubert
+schul
+Schultz
+Schulz
+Schumacher
+schuman
+Schuman
+Schumann
+Schuster
+Schuyler
+Schuyler's
+Schuylkill
+schwa
+Schwab
+schwaben
+schwada
+schwann
+Schwartz
+Schwarz
+Schwarzkopf
+schwarzwald
+schweinfurt
+Schweitzer
+Schweitzer's
+schweiz
+schwerin
+schwitters
+schwyz
+Sci
+sciaenid
+sciaenoid
+sciamachy
+sciatic
+sciatica
+science
+science's
+sciences
+scienter
+sciential
+scientific
+scientifically
+scientifique
+scientism
+scientist
+scientist's
+scientists
+scientologist
+scientology
+scilicet
+scilla
+scilly
+scimitar
+scimitars
+Scimone
+scincoid
+scintigraphic
+scintigraphy
+scintilla
+scintillant
+scintillantly
+scintillate
+scintillated
+scintillates
+scintillating
+scintillation
+scintillator
+scintillometer
+scintillometer's
+scintillometers
+sciolism
+sciolist
+sciolistic
+sciomachy
+sciomancy
+sciomantic
+scion
+scions
+scipio
+scire
+scirocco
+scirrhi
+scirrhous
+scirrhus
+scissel
+scissile
+scission
+scissor
+scissored
+scissoring
+scissors
+scissortail
+scissure
+sciurine
+sciuroid
+sclera
+sclerenchyma
+scleritis
+Scleroderma
+sclerodermatous
+scleroid
+scleroma
+sclerometer
+sclerophyll
+scleroprotein
+sclerose
+sclerosed
+sclerosis
+sclerotial
+sclerotic
+sclerotin
+sclerotium
+sclerotization
+sclerotized
+sclerotomy
+sclerous
+SCM
+scoff
+scoffed
+scoffer
+scoffing
+scofflaw
+scofflaw's
+scofflaws
+scoffs
+Scofield
+scold
+scolded
+scolder
+scolding
+scolds
+scolecite
+scolex
+scolices
+scoliosis
+scoliotic
+scollop
+scolopendra
+scolopendrid
+scombroid
+sconce
+scone
+scoop
+scooped
+scooper
+scoopful
+scooping
+scoops
+scoot
+scooted
+scooter
+scooting
+scoots
+scop
+scopas
+scope
+scoped
+scopes
+scopic
+scoping
+scopolamine
+scops
+scopula
+scopulate
+Scopus
+scorbutic
+scorbutically
+scorch
+scorched
+scorcher
+scorches
+scorching
+scorchingly
+score
+score's
+scoreboard
+scoreboards
+scorecard
+scored
+scorekeeper
+scoreless
+scorer
+scorers
+scores
+scoria
+scoriaceous
+scorify
+scoring
+scorings
+scorn
+scorned
+scorner
+scornful
+scornfully
+scornfulness
+scorning
+scorns
+scorpaenid
+scorpaenoid
+scorper
+Scorpio
+scorpioid
+scorpion
+scorpion's
+scorpions
+Scorpius
+Scot
+scotch
+Scotchgard
+scotchgard
+Scotchman
+scotchman
+scoter
+Scotia
+Scotian
+Scotism
+Scotland
+Scotland's
+scotoma
+scotomatous
+scotopia
+scotopic
+Scots
+Scotsman
+Scotsmen
+Scotswoman
+scotswomen
+Scott
+Scotticism
+scottie
+Scottish
+Scotto
+Scottsdale
+Scotty
+scotus
+scoundrel
+scoundrel's
+scoundrelly
+scoundrels
+scour
+scoured
+scourer
+scourge
+scourger
+scourging
+scouring
+scourings
+scours
+scouse
+scouser
+scout
+scoutcraft
+scouted
+scouter
+scouting
+scoutmaster
+scouts
+scow
+scowl
+scowled
+scowler
+scowling
+scowls
+scrabble
+scrabbled
+scrabbler
+scrabbles
+scrabbling
+scrabbly
+scrag
+scraggier
+scragging
+scraggly
+scraggy
+scram
+scramb
+scramble
+scrambled
+scrambler
+scrambles
+scrambling
+scramming
+scran
+scrannel
+Scranton
+scrap
+scrap's
+scrapbook
+scrapbooks
+scrape
+scraped
+scraper
+scraperboard
+scraperboards
+scrapers
+scrapes
+scrapheap
+scrapheaps
+scrapie
+scraping
+scrapings
+scrapped
+scrapper
+scrappier
+scrappiness
+scrapping
+scrapple
+scrappy
+scraps
+scratch
+scratched
+scratcher
+scratchers
+scratches
+scratchier
+scratchiness
+scratching
+scratchy
+scrawl
+scrawled
+scrawler
+scrawling
+scrawls
+scrawly
+scrawnier
+scrawniness
+scrawny
+screak
+screaky
+scream
+screamed
+screamer
+screamers
+screaming
+screamingly
+screams
+scree
+screech
+screeched
+screecher
+screeches
+screeching
+screechy
+screed
+screen
+screenable
+screened
+screener
+screenful
+screening
+screenings
+screenplay
+screens
+screenwriter
+screenwriter's
+screenwriters
+screvane
+screw
+screwball
+screwbean
+screwdriver
+screwdrivers
+screwed
+screwer
+screwier
+screwiness
+screwing
+screwlike
+screws
+screwup
+screwworm
+screwy
+Scriabin
+scribble
+scribbled
+scribbler
+scribbles
+scribbling
+scribe
+scriber
+scribes
+scribing
+Scribners
+scrieve
+scrim
+scrimmage
+scrimmaged
+scrimmager
+scrimmages
+scrimmaging
+scrimp
+scrimped
+scrimping
+scrimps
+scrimpy
+scrimshank
+scrimshaw
+scrip
+Scripps
+script
+script's
+scriptal
+scripted
+scripting
+scription
+scriptorium
+scripts
+scriptural
+scripturalize
+scripturalizes
+scripturally
+scripture
+scriptures
+scriptwriter
+scriptwriter's
+scriptwriters
+scriven
+scrivener
+scrobiculate
+scrod
+scrofula
+scrofulous
+scroll
+scrollbar
+scrollbar's
+scrollbars
+scrolled
+scrolling
+scrolls
+scrollwork
+scrooge
+scrooge's
+scrooges
+scroop
+scrophulariaceous
+scrota
+scrotal
+scrotum
+scrotum's
+scrotums
+scrouge
+scrouging
+scrounge
+scrounged
+scrounger
+scroungers
+scrounges
+scrounging
+scrub
+scrubbed
+scrubber
+scrubbier
+scrubbing
+scrubby
+scrubland
+scrubs
+scrubwoman
+scruff
+scruffier
+scruffiness
+scruffy
+scrum
+scrummage
+scrump
+scrumptious
+scrumptiously
+scrumpy
+scrunch
+scruple
+scrupled
+scruples
+scrupling
+scrupulosity
+scrupulous
+scrupulously
+scrupulousness
+scrutable
+scrutator
+scrutin
+scrutineer
+scrutinization
+scrutinization's
+scrutinizations
+scrutinize
+scrutinized
+scrutinizer
+scrutinizers
+scrutinizes
+scrutinizing
+scrutinizinglies
+scrutinizingly
+scrutiny
+scry
+SCSI
+scuba
+scud
+scudded
+scudding
+scudo
+scuds
+scuff
+scuffed
+scuffing
+scuffle
+scuffled
+scuffles
+scuffling
+scuffs
+scull
+sculled
+sculler
+sculleries
+scullery
+scullin
+sculling
+scullion
+scullions
+sculls
+sculpin
+sculpsit
+sculpt
+sculpted
+sculpting
+sculptor
+sculptor's
+sculptors
+sculptress
+sculpts
+sculptural
+sculpturally
+sculpture
+sculptured
+sculptures
+sculpturesque
+sculpturesquely
+sculpturing
+scum
+scum's
+scumble
+scumbled
+scumbles
+scumbling
+scumming
+scummy
+scums
+scuncheon
+scunge
+scungy
+scunner
+scunthorpe
+scup
+scupper
+scuppered
+scuppering
+scuppernong
+scuppers
+scups
+scurf
+scurfy
+scurried
+scurril
+scurrile
+scurrility
+scurrilous
+scurrilously
+scurrilousness
+scurry
+scurrying
+scurvily
+scurviness
+scurvy
+scut
+scuta
+scutage
+scutate
+scutch
+scutcheon
+scute
+scutellation
+scutellum
+scutiform
+scuttle
+scuttlebutt
+scuttled
+scuttles
+scuttling
+scutum
+Scylla
+scyphiform
+scyphistoma
+scyphozoan
+scyphus
+scyros
+scythe
+scythe's
+scythes
+Scythia
+Scythian
+scything
+SD
+SE
+sea
+seabag
+seabeach
+seabed
+seabed's
+Seabee
+seabird
+seaboard
+seaboot
+Seaborg
+seaborg
+seaborne
+Seabrook
+seacoast
+seacoast's
+seacoasts
+seacock
+seacraft
+seadog
+seadrome
+seafare
+seafarer
+seafarers
+seafaring
+seafloor
+seafood
+seafowl
+seafront
+Seagate
+Seagate's
+seagirt
+seagoing
+Seagram
+Seagram's
+seagull
+seagulls
+seahorse
+seakale
+seal
+sealant
+sealants
+sealed
+sealer
+sealery
+sealing
+seals
+sealskin
+sealy
+Sealyham
+seam
+seaman
+seamanlike
+seamanly
+seamanship
+seamanships
+seamark
+seamed
+seamen
+seamer
+seami
+seamier
+seaminess
+seaming
+seamless
+seamlessly
+seamlessness
+seamlike
+seamount
+seams
+seamster
+seamstress
+seamstresses
+seamy
+Sean
+Sean's
+seanad
+seance
+seaplane
+seaport
+seaport's
+seaports
+seaquake
+Seaquarium
+seaquarium
+sear
+search
+searchable
+searched
+searcher
+searcher's
+searchers
+searches
+searching
+searchingly
+searchings
+searchless
+searchlight
+searchlights
+seared
+searing
+searingly
+Searle
+sears
+seas
+seascape
+sease
+seashell
+seashell's
+seashells
+seashore
+seashore's
+seashores
+seasick
+seasickness
+seaside
+season
+season's
+seasonable
+seasonableness
+seasonably
+seasonal
+seasonality
+seasonally
+seasoned
+seasoner
+seasoners
+seasoning
+seasonings
+seasonly
+seasons
+seastrand
+seat
+seated
+seater
+seating
+seatmate
+seatmate's
+seatmates
+seato
+Seaton
+seats
+Seattle
+Seattle's
+seawall
+seawan
+seaward
+seawards
+seaware
+seawater
+seawater's
+seaway
+seaweed
+seaweeds
+seaworthiness
+seaworthy
+seaworthyness
+sebaceous
+sebacic
+Sebastian
+Sebastopol
+sebiferous
+seborrhea
+seborrheic
+Sebring
+Sebring's
+sebum
+sec
+secam
+secant
+secants
+secateur
+secateurs
+secco
+secede
+seceded
+seceder
+secedes
+seceding
+secern
+secession
+secessionism
+secessionist
+sech
+seclude
+secluded
+secludedly
+secludedness
+secludes
+secluding
+seclusion
+seclusive
+seclusively
+seclusiveness
+secobarbital
+second
+secondaries
+secondarily
+secondariness
+secondary
+seconded
+seconder
+seconders
+secondhand
+seconding
+secondly
+secondo
+seconds
+secrecy
+secret
+secretarial
+secretariat
+secretaries
+secretary
+secretary's
+secretaryship
+secrete
+secreted
+secretes
+secretin
+secreting
+secretion
+secretionary
+secretions
+secretive
+secretively
+secretiveness
+secretly
+secretor
+secretory
+secrets
+sect
+sect's
+sectarian
+sectarianism
+sectarianization
+sectarianize
+sectarianized
+sectarianizes
+sectarianizing
+sectary
+sectile
+sectility
+section
+sectional
+sectionalism
+sectionalization
+sectionalization's
+sectionalizations
+sectionalize
+sectionalized
+sectionalizes
+sectionalizing
+sectionally
+sectioned
+sectioning
+sectionize
+sectionizes
+sections
+sector
+sector's
+sectoral
+sectored
+sectorial
+sectoring
+sectors
+sects
+secular
+secularism
+secularist
+secularistic
+secularists
+secularity
+secularization
+secularization's
+secularizations
+secularize
+secularized
+secularizer
+secularizers
+secularizes
+secularizing
+secularly
+secund
+Secunderabad
+secundine
+secundines
+secure
+secured
+securely
+securement
+secureness
+securer
+secures
+securing
+securings
+securities
+security
+sedan
+sedans
+sedate
+sedated
+sedately
+sedateness
+sedates
+sedating
+sedation
+sedative
+seddon
+sedentary
+seder
+sedge
+Sedgemoor
+sedgwick
+Sedgwick
+sedgy
+sedilia
+sediment
+sediment's
+sedimentary
+sedimentation
+sedimentologic
+sedimentological
+sedimentologically
+sedimentologist
+sedimentology
+sediments
+sedition
+seditious
+seditiously
+seditiousness
+seduce
+seduced
+seducement
+seducer
+seducers
+seduces
+seducing
+seduction
+seductions
+seductive
+seductively
+seductiveness
+seductress
+sedulity
+sedulous
+sedulously
+sedulousness
+sedum
+see
+seeable
+Seebeck
+seed
+seedbed
+seedbeds
+seedcake
+seedcakes
+seeded
+seeder
+seeders
+seedier
+seedily
+seediness
+seeding
+seedings
+seedless
+seedlike
+seedling
+seedling's
+seedlings
+seedpod
+seeds
+seedsman
+seedtime
+seedy
+Seeger
+seeing
+seek
+seeker
+seekers
+seeking
+seekingly
+seeks
+seel
+Seeland
+Seeley
+seeley
+seem
+seemed
+seeming
+seemingly
+seemlier
+seemliness
+seemly
+seems
+seen
+seep
+seepage
+seeped
+seeping
+seeps
+seepy
+seer
+seeress
+seerey
+seers
+seersucker
+sees
+seesaw
+seesawed
+seesawing
+seesaws
+seethe
+seethed
+seethes
+seething
+seferis
+seg
+segetal
+segment
+segmental
+segmentally
+segmentary
+segmentation
+segmentation's
+segmentations
+segmented
+segmenting
+segments
+segno
+segnos
+Segovia
+segregant
+segregate
+segregated
+segregates
+segregating
+segregation
+segregationist
+segregative
+segue
+segue's
+segued
+segueing
+segues
+seguidilla
+Segundo
+segur
+segura
+sei
+seicento
+seiche
+Seidel
+Seidlitz
+seif
+Seifert
+seigneur
+seigneurial
+seigneury
+seignior
+seigniorage
+seigniory
+seignorage
+seignorial
+seignory
+seine
+seiner
+seining
+seise
+seisin
+seisins
+seism
+seismic
+seismicity
+seismism
+seismogram
+seismogram's
+seismograms
+seismograph
+seismographer
+seismographic
+seismographs
+seismography
+seismological
+seismologist
+seismology
+seismometer
+seismometric
+seismometry
+seismoscope
+seizable
+seize
+seized
+seizer
+seizers
+seizes
+seizin
+seizing
+seizings
+seizins
+seizor
+seizors
+seizure
+seizure's
+seizures
+selachian
+selaginella
+selah
+selangor
+selden
+seldom
+select
+selectable
+selected
+selectedly
+selectee
+selecting
+selection
+selection's
+selectional
+selections
+selective
+selectively
+selectiveness
+selectivity
+selectman
+selectmen
+selectness
+selector
+selector's
+selectors
+Selectric
+selects
+Selena
+Selena's
+selenate
+Selene
+selenic
+selenide
+seleniferous
+selenious
+selenite
+selenium
+selenocentric
+selenodont
+selenographer
+selenographic
+selenographist
+selenography
+selenological
+selenologist
+selenologist's
+selenologists
+selenology
+selenomorphology
+selenosis
+seleucia
+Seleucid
+seleucus
+self
+selfadjoint
+selfdom
+selfheal
+selfhood
+selfish
+selfishly
+selfishness
+selfless
+selflessly
+selflessness
+selfness
+Selfridge
+selfsame
+selfsameness
+Selig
+Seljuk
+Selkirk
+Selkirk's
+sell
+sellable
+selle
+seller
+sellers
+selling
+sellotape
+sellout
+sells
+Selma
+selsyn
+seltzer
+selva
+selvage
+selvaged
+selvedge
+selvedged
+selves
+Selwyn
+Selwyn's
+semanteme
+semantic
+semantical
+semantically
+semanticist
+semanticist's
+semanticists
+semantics
+semaphore
+semaphore's
+semaphores
+semarang
+semasiological
+semasiologist
+semasiology
+sematic
+sematology
+semblable
+semblably
+semblance
+semeiology
+semele
+sememe
+semen
+sement
+semeru
+semester
+semester's
+semesters
+semestral
+semestrial
+semi
+semiabstract
+semiabstraction
+semiannual
+semiannually
+semiaquatic
+semiarboreal
+semiarid
+semiaridity
+semiautomated
+semiautomatic
+semiautomatically
+semiautonomous
+semibasement
+semibituminous
+semibold
+semibreve
+semicarbonize
+semicarbonizes
+semicentenary
+semicentennial
+semicircle
+semicircles
+semicircular
+semicivilization
+semicivilization's
+semicivilizations
+semicivilized
+semicivilized's
+semicivilizeds
+semiclassic
+semiclassical
+semicolon
+semicolon's
+semicolonial
+semicolonialism
+semicolons
+semicolony
+semicommercial
+semicompile
+semiconducting
+semiconductor
+semiconductor's
+semiconductors
+semiconscious
+semiconsciously
+semiconsciousness
+semiconservative
+semiconservatively
+semicrystalline
+semicylindrical
+semidarkness
+semidefinite
+semidesert
+semidetached
+semidiameter
+semidiurnal
+semidivine
+semidocumentary
+semidome
+semidomed
+semidomestic
+semidomesticated
+semidomestication
+semidominant
+semidouble
+semidry
+semidrying
+semiellipse
+semielliptic
+semielliptical
+semiempirical
+semierect
+semievergreen
+semifinal
+semifinalist
+semifinished
+semifitted
+semiflexible
+semifluid
+semiformal
+semifossil
+semifossilized
+semifossilized's
+semifossilizeds
+semigloss
+semigovernmental
+semigroup
+semihonor
+semihonor's
+semihonors
+semihumanized
+semihumanized's
+semihumanizeds
+semilegendary
+semilethal
+semiliquid
+semiliterate
+semilog
+semilogarithmic
+semilunar
+semilustrous
+semimanufactures
+semimercerized
+semimercerized's
+semimercerizeds
+semimetal
+semimetallic
+semimicro
+semimineralized
+semimineralized's
+semimineralizeds
+semimoist
+semimonastic
+semimonthly
+semimystical
+seminal
+seminally
+seminar
+seminar's
+seminarian
+seminarians
+seminaries
+seminarist
+seminarize
+seminarizes
+seminars
+seminary
+seminary's
+semination
+seminationalization
+seminationalization's
+seminationalizations
+seminiferous
+Seminole
+seminumerical
+semiofficial
+semiofficially
+semiological
+semiology
+semiopaque
+semiorganized
+semiorganized's
+semiorganizeds
+semiosis
+semiotic
+semiotical
+semiotician
+semiotics
+semioxidized
+semioxidized's
+semioxidizeds
+semioxygenized
+semioxygenized's
+semioxygenizeds
+Semipalatinsk
+semipalmate
+semipalmated
+semiparasitic
+semipermanent
+semipermanently
+semipermeability
+semipermeable
+semiphore
+semipolitical
+semiporcelain
+semipostal
+semiprecious
+semiprivate
+semipro
+semiprofessional
+semiprofessionalized
+semiprofessionalized's
+semiprofessionalizeds
+semiprofessionally
+semiprofessionals
+semipublic
+semiquantitative
+semiquantitatively
+semiquaver
+semiramis
+semireligious
+semiretired
+semiretirement
+semirigid
+semisacred
+semisecret
+semisedentary
+semishrub
+semishrubby
+semiskilled
+semisoft
+semisolid
+semistructured
+semisweet
+semisynthetic
+Semite
+semiterrestrial
+semitic
+Semiticize
+Semiticizes
+Semitics
+semitics
+Semitization
+Semitization's
+Semitizations
+Semitize
+Semitizes
+semitonal
+semitonally
+semitone
+semitonic
+semitonically
+semitrailer
+semitrance
+semitranslucent
+semitransparent
+semitropic
+semitropical
+semitropics
+semivitreous
+semivocal
+semivowel
+semivulcanized
+semivulcanized's
+semivulcanizeds
+semiweekly
+semiworks
+semiyearly
+semmes
+semolina
+sempach
+semper
+sempervivum
+sempiternal
+sempiternally
+sempiternity
+semple
+semplice
+sempre
+sempstress
+semra
+sen
+sena
+senarii
+senarius
+senarmontite
+senary
+senate
+senate's
+senates
+senator
+senator's
+senatorial
+senatorian
+senators
+senatorship
+send
+sendable
+sendai
+sendal
+sender
+senders
+sending
+sendoff
+sends
+Seneca
+Senechal
+senecio
+senectitude
+senega
+Senegal
+senegambia
+senesac
+senescence
+senescent
+seneschal
+senghor
+sengi
+senhor
+senhora
+senhores
+senhorita
+senile
+senilely
+senilis
+senility
+senilize
+senilizes
+senior
+senior's
+senioritatis
+seniority
+seniors
+seniti
+Senlac
+senna
+sennacherib
+sennar
+sennet
+sennight
+sennit
+senor
+Senora
+senorita
+sens
+sensa
+sensate
+sensately
+sensation
+sensation's
+sensational
+sensationalism
+sensationalist
+sensationalistic
+sensationalize
+sensationalized
+sensationalizes
+sensationalizing
+sensationally
+sensations
+sense
+sensed
+senseful
+senseless
+senselessly
+senselessness
+senses
+sensibilia
+sensibilities
+sensibility
+sensible
+sensibleness
+sensibly
+sensillum
+sensing
+sensitive
+sensitively
+sensitiveness
+sensitives
+sensitivities
+sensitivity
+sensitization
+sensitization's
+sensitizations
+sensitize
+sensitized
+sensitizer
+sensitizers
+sensitizes
+sensitizing
+sensitometer
+sensitometer's
+sensitometers
+sensitometric
+sensitometry
+sensize
+sensizes
+sensor
+sensor's
+sensorial
+sensorially
+sensorimotor
+sensorineural
+sensorium
+sensors
+sensory
+sensual
+sensualism
+sensualist
+sensualistic
+sensuality
+sensualization
+sensualization's
+sensualizations
+sensualize
+sensualized
+sensualizes
+sensualizing
+sensually
+sensum
+sensuosity
+sensuous
+sensuously
+sensuousness
+sent
+sentence
+sentenced
+sentences
+sentencing
+sententia
+sentential
+sententially
+sententious
+sententiously
+sententiousness
+senti
+sentience
+sentient
+sentiently
+sentiment
+sentiment's
+sentimental
+sentimentalism
+sentimentalist
+sentimentalists
+sentimentality
+sentimentalization
+sentimentalization's
+sentimentalizations
+sentimentalize
+sentimentalized
+sentimentalizer
+sentimentalizers
+sentimentalizes
+sentimentalizing
+sentimentally
+sentiments
+sentinel
+sentinel's
+sentineled
+sentineling
+sentinels
+sentries
+sentry
+sentry's
+senussi
+Seoul
+Sep
+sepal
+sepaled
+sepaloid
+separability
+separable
+separableness
+separably
+separate
+separated
+separately
+separateness
+separates
+separating
+separation
+separationist
+separations
+separatism
+separatist
+separatistic
+separative
+separator
+separator's
+separators
+Sephardi
+sepia
+sepiolite
+Sepoy
+seppuku
+sepses
+sepsis
+sept
+septa
+septal
+septarium
+septate
+septation
+septavalent
+September
+September's
+Septembers
+Septembrist
+septenarius
+septenary
+septendecillion
+septennial
+septennially
+septennium
+septentrion
+septentrional
+septet
+septic
+septicaemia
+septicemia
+septicemic
+septicidal
+septicization
+septicization's
+septicizations
+septifragal
+septilateral
+septillion
+septime
+septivalent
+septuagenarian
+septuagesima
+Septuagint
+septum
+septuple
+septuplet
+septuplicate
+sepuchral
+sepulcher
+sepulcher's
+sepulchered
+sepulchers
+sepulchral
+sepulchralize
+sepulchralizes
+sepulchrally
+sepulture
+seq
+sequacious
+sequaciously
+sequacity
+sequel
+sequel's
+sequela
+sequelae
+sequels
+sequence
+sequenced
+sequencer
+sequencers
+sequences
+sequencing
+sequencings
+sequency
+sequent
+sequential
+sequentiality
+sequentialize
+sequentialized
+sequentializes
+sequentializing
+sequentially
+sequester
+sequestered
+sequestering
+sequestrant
+sequestrate
+sequestration
+sequestrum
+sequin
+sequined
+sequinned
+sequins
+sequitur
+sequoia
+ser
+sera
+serac
+Serafin
+serafin
+seraglio
+serai
+serajevo
+seral
+seram
+serang
+serape
+seraph
+seraphic
+seraphically
+seraphim
+seraphs
+Serapis
+Serb
+serbantian
+Serbia
+Serbia's
+Serbian
+serbian
+Serbo
+sercq
+serdab
+sere
+serein
+seremban
+serenade
+serenaded
+serenader
+serenades
+serenata
+serendipitous
+serendipitously
+serendipity
+serene
+serenely
+sereneness
+serenity
+serenize
+serenizes
+serf
+serf's
+serfage
+serfdom
+serfs
+serge
+sergeancy
+sergeant
+sergeant's
+sergeants
+sergeanty
+Sergei
+Sergei's
+serging
+sergipe
+serial
+serialism
+serialist
+serializability
+serializable
+serialization
+serialization's
+serializations
+serialize
+serialized
+serializes
+serializing
+serially
+serials
+seriate
+seriately
+seriatim
+sericeous
+sericin
+sericultural
+sericulture
+sericulturist
+seriema
+series
+serieuses
+serif
+serigraph
+serigrapher
+serigraphy
+serin
+serine
+seringa
+seringapatam
+seriocomic
+seriocomically
+serious
+seriously
+seriousness
+serjeant
+serjeants
+serjeanty
+Serkin
+sermon
+sermon's
+sermonic
+sermonize
+sermonized
+sermonizer
+sermonizers
+sermonizes
+sermonizing
+sermons
+serodiagnosis
+serodiagnostic
+serologic
+serological
+serologically
+serologist
+serology
+seropurulent
+serosa
+serosal
+serotinal
+serotine
+serotinous
+serotonin
+serotype
+serous
+serow
+Serpens
+serpent
+serpent's
+serpentine
+serpentinely
+serpentinization
+serpentinization's
+serpentinizations
+serpentinize
+serpentinizes
+serpentize
+serpentizes
+serpents
+serpiginous
+serpiginously
+serpigo
+serpulid
+serra
+Serra
+serranid
+serranoid
+serrate
+serrated
+serrates
+serrating
+serration
+serratus
+serried
+serriedly
+serriedness
+serriform
+serrulate
+serrulation
+serry
+serrying
+serting
+sertive
+sertorius
+sertularian
+serum
+serum's
+serums
+serval
+servanda
+servant
+servant's
+servants
+servation
+servatius
+serve
+served
+server
+server's
+servers
+serves
+servetus
+servia
+service
+serviceability
+serviceable
+serviceableness
+serviceably
+serviceberry
+serviced
+serviceman
+servicemen
+servicer
+services
+servicewoman
+servicewomen
+servicing
+servient
+serviette
+serviettes
+servile
+servilely
+servileness
+servility
+servilize
+servilizes
+serving
+servings
+servitor
+servitors
+servitude
+servo
+servomechanism
+servomechanisms
+servomotor
+servos
+servosystem
+servosystems
+sesame
+sesamoid
+sesotho
+sesquialtera
+sesquicarbonate
+sesquicentenary
+sesquicentennial
+sesquioxide
+sesquipedalian
+sessed
+sesshu
+sessile
+sessility
+session
+session's
+sessional
+sessions
+sesterce
+sestertium
+sestet
+sestina
+sestos
+set
+set's
+seta
+setaceous
+setaceously
+setae
+setal
+setback
+setbacks
+Seth
+Seth's
+setiferous
+setiform
+setline
+setnm
+seto
+setoff
+setom
+Seton
+setose
+setout
+setpoint
+setpoints
+sets
+setscrew
+setscrews
+sett
+settable
+settee
+settees
+setter
+setter's
+setters
+setting
+settings
+settle
+settled
+settlement
+settlement's
+settlements
+settler
+settlers
+settles
+settling
+settlings
+settlor
+setup
+setups
+setz
+setzb
+setzm
+seurat
+sevan
+Sevastopol
+sevec
+seven
+sevenfold
+sevens
+seventeen
+seventeens
+seventeenth
+seventh
+sevenths
+seventies
+seventieth
+seventy
+seventyfold
+sever
+severability
+severable
+several
+severalfold
+severalize
+severalizes
+severally
+severals
+severalty
+severance
+severe
+severed
+severely
+severeness
+severer
+severest
+severing
+severities
+severity
+severity's
+severization
+severization's
+severizations
+severize
+severizes
+Severn
+Severn's
+severna
+Severnaya
+severs
+Severus
+sevigli
+Seville
+sew
+sewage
+sewan
+Seward
+sewed
+sewell
+sewer
+sewerage
+sewers
+sewickley
+sewing
+sewn
+sews
+sex
+sexagenarian
+Sexagesima
+sexagesimal
+sexangular
+sexcentenary
+sexdecillion
+sexed
+sexennial
+sexes
+sexier
+sexily
+sexiness
+sexism
+sexism's
+sexist
+sexist's
+sexists
+sexivalent
+sexless
+sexlessly
+sexlessness
+sexology
+sexpartite
+sexpot
+sext
+sextain
+sextan
+Sextans
+sextant
+sextet
+sextic
+sextile
+sextillion
+sexto
+sextodecimo
+sexton
+sextos
+sextuor
+sextuple
+sextupled
+sextuplet
+sextuplicate
+sextupling
+sexual
+sexuality
+sexualization
+sexualization's
+sexualizations
+sexualize
+sexualized
+sexualizes
+sexually
+sexy
+sey
+Seychelles
+seyfert
+seyhan
+Seymour
+sfax
+sforza
+sforzando
+sfumato
+sgraffito
+shaba
+Shaban
+shabbat
+shabbier
+shabbily
+shabbiness
+shabby
+Shabuoth
+shack
+shacked
+shackle
+shacklebone
+shackled
+shackler
+shackles
+Shackleton
+shackling
+shacks
+shad
+shadberry
+shadblow
+shadbush
+shaddock
+shade
+shaded
+shadeless
+shader
+shades
+shadflower
+shadier
+shadiest
+shadily
+shadiness
+shading
+shadings
+shadoof
+shadow
+shadowbox
+shadowed
+shadower
+shadowgraph
+shadowily
+shadowiness
+shadowing
+shadowless
+shadowlike
+shadows
+shadowy
+shadrach
+shaduf
+shadwell
+shady
+shaef
+Shafer
+Shafer's
+Shaffer
+Shaffer's
+shaft
+shaft's
+shafted
+shaftesbury
+shafting
+shafts
+shaftsbury
+shag
+shagbark
+shaggier
+shaggily
+shagginess
+shagging
+shaggy
+shaggymane
+shagreen
+shags
+shah
+shahaptin
+shahdom
+shahjahanpur
+shahn
+shaitan
+Shaka
+shakable
+shakably
+shake
+shakeable
+shakedown
+shaken
+shakeout
+shaker
+shakers
+shakes
+Shakespeare
+Shakespearean
+Shakespearian
+Shakespearize
+Shakespearizes
+shakhty
+shakier
+shakily
+shakiness
+shaking
+shako
+shakoes
+Shakta
+Shakti
+shaky
+shakya
+shale
+shales
+shall
+shalloon
+shallop
+shallot
+shallow
+shallower
+shallowly
+shallowness
+shallows
+shalom
+shalt
+sham
+sham's
+shaman
+shamanism
+shamanist
+shamanistic
+shamash
+shamba
+shamble
+shambled
+shambles
+shambling
+shame
+shamed
+shameface
+shamefaced
+shamefacedly
+shamefacedness
+shamefast
+shameful
+shamefully
+shamefulness
+shameless
+shamelessly
+shamelessness
+shames
+shaming
+shammer
+shammes
+shamming
+shammosim
+shammy
+shamo
+shampoo
+shampooer
+shampoos
+shamrock
+shams
+shamus
+shan
+shan't
+shandies
+shandrydan
+shandy
+shandygaff
+Shang
+shangaan
+Shanghai
+shanghaied
+shanghaier
+Shanghaiing
+shango
+shank
+Shankar
+Shankaracharya
+shanked
+shankpiece
+Shannon
+shanny
+shansi
+shantey
+shanties
+shantow
+Shantung
+shanty
+shanty's
+shantyman
+shantytown
+shapable
+shape
+shapeable
+shaped
+shapeless
+shapelessly
+shapelessness
+shapelier
+shapeliness
+shapely
+shapen
+shaper
+shapers
+shapes
+shaping
+Shapiro
+sharable
+shard
+shards
+share
+shareability
+shareable
+sharecrop
+sharecropper
+sharecropper's
+sharecroppers
+sharecropping
+shared
+sharefarmer
+sharefarmers
+shareholder
+shareholder's
+shareholders
+shareown
+sharer
+sharers
+shares
+Shari
+Shari's
+Sharia
+sharing
+shark
+shark's
+sharks
+sharkskin
+sharksucker
+Sharon
+sharp
+Sharpe
+sharped
+sharpen
+sharpened
+sharpener
+sharpening
+sharpens
+sharper
+sharpest
+sharpie
+sharpies
+sharping
+sharply
+sharpness
+sharps
+sharpshoot
+sharpshooter
+sharpshooters
+sharpshooting
+sharpy
+sharrow
+shashlick
+shashlik
+Shasta
+shatilov
+shatter
+shattered
+shattering
+shatteringly
+shatterproof
+shatters
+Shattuck
+Shattuck's
+shave
+shaved
+shaveling
+shaven
+shaver
+shaves
+shavetail
+Shavian
+shavie
+shaving
+shavings
+shavuot
+shaw
+Shaw
+Shawano
+shawano
+shawl
+shawl's
+shawls
+shawm
+Shawnee
+shawomet
+Shawwal
+shay
+shayne
+shayol
+shays
+Shchedrin
+Shcheglovsk
+Shcherbakov
+she
+she'd
+she'll
+she's
+Shea
+sheading
+sheaf
+sheaflike
+sheahe
+shear
+sheared
+shearer
+shearers
+shearing
+shearlegs
+shearling
+shearn
+shears
+shearwater
+sheatfish
+sheath
+sheathbill
+sheathe
+sheather
+sheathing
+sheaths
+sheave
+sheaves
+sheaving
+sheba
+shebang
+shebeen
+sheboygan
+Sheboygan
+Shechem
+shechina
+shed
+shedded
+shedder
+shedding
+Shedir
+sheds
+Sheehan
+Sheehan's
+sheen
+sheene
+sheeny
+sheep
+sheepcote
+sheepdog
+sheepfold
+sheepherder
+sheepherding
+sheepish
+sheepishly
+sheepishness
+sheepshank
+sheepshead
+sheepshearer
+sheepshearing
+sheepskin
+sheepwalk
+sheer
+sheeran
+sheered
+sheerlegs
+sheerly
+sheerness
+sheet
+sheeted
+sheeter
+sheetfed
+sheeting
+sheetlike
+sheets
+Sheffield
+Sheffielder
+Sheffielders
+sheik
+sheikdom
+sheikh
+sheikhdom
+Sheila
+shekel
+Shekinah
+shelagh
+Shelby
+Sheldon
+shelf
+shelfful
+shelflike
+shelfs
+shell
+shell's
+shellac
+shellacked
+shellacking
+shellback
+shellback's
+shellbacks
+shellbark
+shellcracker
+shelled
+sheller
+Shelley
+shellfire
+shellfish
+shelling
+shellproof
+shells
+shellwork
+shelly
+shelta
+shelter
+shelterbelt
+sheltered
+shelterer
+sheltering
+shelterless
+shelters
+sheltie
+shelties
+Shelton
+shelty
+shelve
+shelved
+shelver
+shelves
+shelving
+shem
+shema
+shembe
+Shemite
+Shemitic
+Shenandoah
+shenanigan
+shenanigans
+shend
+shending
+shensi
+shenyang
+Sheol
+shep
+Shepard
+shepherd
+shepherd's
+shepherded
+shepherdess
+shepherding
+shepherdize
+shepherdizes
+shepherds
+Sheppard
+Sheppard's
+sher
+Sheraton
+sherbert
+sherbet
+sherbrooke
+sherd
+Sheri
+Sheri's
+sheria
+Sheridan
+sherif
+sheriff
+sheriff's
+sheriffdom
+sheriffs
+sherlock
+Sherman
+Sherpa
+sherries
+Sherrill
+Sherrill's
+Sherrington
+sherris
+sherry
+sherwani
+Sherwin
+Sherwood
+shes
+Shetland
+shetlands
+shevelling
+shew
+shewbread
+shewe
+shewn
+shews
+shh
+Shiah
+shiai
+shibboleth
+shibboleths
+shicker
+shickered
+shied
+shiel
+shield
+shielded
+shielder
+shielding
+shields
+shieling
+shier
+shies
+shiest
+shietz
+shiflett
+shift
+shiftable
+shifted
+shifter
+shifters
+shiftier
+shiftiest
+shiftily
+shiftiness
+shifting
+shiftless
+shiftlessly
+shiftlessness
+shifts
+shifty
+shigella
+shih
+shihchiachuang
+Shiism
+Shiite
+Shiite's
+Shiites
+shikar
+shikari
+shikarred
+shikarring
+shikoku
+shiksa
+shikse
+shilingi
+shill
+shillalah
+shillelagh
+shilling
+shillings
+Shillong
+shillong
+shills
+shillyshally
+Shiloh
+shily
+shim
+shimmer
+shimmered
+shimmering
+shimmery
+shimmied
+shimmies
+shimming
+shimmy
+shimmying
+Shimonoseki
+shims
+shin
+shinar
+shinbone
+shindies
+shindig
+shindig's
+shindigs
+shindy
+shine
+shined
+shiner
+shiners
+shines
+shingle
+shingle's
+shingled
+shingler
+shingles
+shingling
+shingly
+shinier
+shininess
+shining
+shiningly
+shinkin
+shinleaf
+shinleafs
+shinnery
+shinney
+shinnied
+shinning
+shinny
+shinnying
+shinplaster
+shinsplints
+Shinto
+Shintoism
+Shintoize
+Shintoizes
+shinty
+shiny
+ship
+ship's
+shipboard
+shipboards
+shipborne
+shipbuild
+shipbuilder
+shipbuilding
+shipfitter
+shipka
+shiplap
+Shipley
+shipload
+shipman
+shipmaster
+shipmate
+shipmates
+shipmen
+shipment
+shipment's
+shipments
+shipowner
+shippable
+shipped
+shipper
+shipper's
+shippers
+shipping
+ships
+shipshape
+shipside
+shipway
+shipworm
+shipwreck
+shipwrecked
+shipwrecks
+shipwright
+shipyard
+shipyards
+shiralee
+Shiraz
+shire
+shires
+shirk
+shirker
+shirking
+shirks
+Shirley
+shirr
+shirring
+shirt
+shirting
+shirtmake
+shirtmaker
+shirts
+shirtsleeve
+shirttail
+shirtwaist
+shirtwaister
+shirty
+shish
+shit
+shitepoke
+shithead
+shittah
+shittim
+shiv
+shiva
+Shiva
+Shiva's
+shivaree
+shive
+shiver
+shivered
+shiverer
+shivering
+shivers
+shivery
+shizuoka
+shlemiehl
+shlock
+Shluh
+Shmuel
+sho
+Shoa
+shoal
+shoal's
+shoals
+shoat
+shock
+shocked
+shocker
+shockers
+shockheaded
+shocking
+shockingly
+Shockley
+Shockley's
+shockproof
+shocks
+shockstall
+shod
+shoddier
+shoddily
+shoddiness
+shoddy
+shoe
+shoebill
+shoeblack
+shoed
+shoehorn
+shoeing
+shoelace
+shoelaces
+shoemake
+shoemaker
+shoemakers
+shoepac
+shoepack
+shoer
+shoes
+shoeshine
+shoestring
+shoestrings
+shoetree
+shofar
+shogun
+shogunate
+sholapur
+Sholokhov
+sholom
+Shona
+shone
+shoo
+shoofly
+shoogle
+shooing
+shook
+shool
+shoon
+shoot
+shooter
+shooters
+shooting
+shootings
+shootout
+shootout's
+shootouts
+shoots
+shop
+shop's
+shopfloor
+shopfloors
+shophar
+shopkeep
+shopkeeper
+shopkeeper's
+shopkeepers
+shoplift
+shoplifter
+shoplifters
+shoplifting
+shoppe
+shopped
+shopper
+shopper's
+shoppers
+shopping
+shops
+shopsoiled
+shoptalk
+shopwalker
+shopwork
+shopworker
+shopworn
+shoran
+shore
+shore's
+shorebird
+shorebird's
+shorebirds
+shored
+shorefront
+shoreless
+shoreline
+shorelines
+shores
+shoreside
+shoreward
+shorewards
+Shorewood
+shoring
+shorn
+short
+shortage
+shortage's
+shortages
+shortbread
+shortcake
+shortchange
+shortchanger
+shortcoming
+shortcoming's
+shortcomings
+shortcut
+shortcut's
+shortcuts
+shorted
+shorten
+shortened
+shortener
+shortening
+shortens
+shorter
+shortest
+shortfall
+shortfalls
+shorthand
+shorthanded
+shorthands
+shorthorn
+shortie
+shorties
+shorting
+shortish
+shortliffe
+shortlist
+shortlisted
+shortlisting
+shortlists
+shortlived
+shortly
+shortness
+shorts
+shortsighted
+shortsightedly
+shortsightedness
+shortstop
+shorty
+Shoshone
+shoshone
+Shoshone's
+Shoshonean
+Shostakovich
+shot
+shot's
+shotbush
+shote
+shotgun
+shotgun's
+shotguns
+shotline
+shotlines
+shots
+shott
+shotten
+should
+shoulder
+shouldered
+shouldering
+shoulders
+shouldest
+shouldn't
+shouldst
+shoup
+shouse
+shout
+shouted
+shouter
+shouters
+shouting
+shouts
+shove
+shoved
+shovel
+shoveled
+shoveler
+shovelers
+shovelful
+shovelhead
+shoveling
+shovelman
+shovelnose
+shovels
+shovelsful
+shover
+shoves
+shoving
+show
+showboat
+showbread
+showcase
+showcase's
+showcased
+showcases
+showcasing
+showd
+showdown
+showed
+shower
+showered
+showering
+showerproof
+showers
+showery
+showgirl
+showier
+showily
+showiness
+showing
+showings
+showjumping
+showman
+showmanship
+showmen
+shown
+showpiece
+showplace
+showroom
+shows
+showstopper
+showy
+shrank
+shrapnel
+shred
+shred's
+shredded
+shredder
+shredder's
+shredders
+shredding
+shreds
+Shreveport
+shrew
+shrew's
+shrewd
+shrewdest
+shrewdie
+shrewdly
+shrewdness
+shrewish
+shrewishly
+shrewishness
+shrewmouse
+shrews
+Shrewsbury
+shriek
+shrieked
+shrieking
+shrieks
+shrieval
+shrievalty
+shrieve
+shrift
+shrike
+shrill
+shrilled
+shrilling
+shrillness
+shrilly
+shrimp
+shrimpy
+shrine
+shrine's
+shrines
+shrink
+shrinkable
+shrinkage
+shrinker
+shrinking
+shrinks
+shrive
+shrived
+shrivel
+shriveled
+shriveling
+shrivels
+shriven
+shriver
+shroff
+Shropshire
+shroud
+shrouded
+shrouding
+shrouds
+shrove
+Shrovetide
+shrub
+shrub's
+shrubbery
+shrubbier
+shrubby
+shrubs
+shrug
+shrugged
+shrugging
+shrugs
+shrunk
+shrunken
+shtetel
+shtetl
+shtetlach
+shtg
+shtick
+Shu
+Shu's
+shuck
+shucker
+shucks
+shudder
+shuddered
+shuddering
+shudders
+shuddery
+shuffle
+shuffleboard
+shuffled
+shuffler
+shuffles
+shuffling
+shufty
+shufu
+shuggy
+shuiski
+shul
+Shulamite
+shulde
+Shulman
+Shulman's
+shun
+shunned
+shunner
+shunning
+shunpike
+shunpiker
+shunpiking
+shuns
+shunt
+shunted
+shunter
+shunting
+shunts
+shush
+shushan
+shut
+shutdown
+shutdown's
+shutdowns
+shute
+shuteye
+shutoff
+shutout
+shuts
+shutter
+shutterbug
+shuttered
+shuttering
+shutterless
+shutters
+shutting
+shuttle
+shuttlecock
+shuttlecocks
+shuttled
+shuttles
+shuttling
+shuz
+shy
+shyer
+shyes
+shyest
+shying
+Shylock
+Shylockian
+shylockian
+shyly
+shyness
+shypoo
+shyster
+si
+sialagogue
+sialkot
+sialoid
+SIAM
+siamang
+Siamese
+Sian
+Sian's
+siang
+siangtan
+sib
+sibe
+Sibelius
+Siberia
+Siberian
+sibilant
+sibilantly
+sibilate
+sibilation
+sibiu
+Sibley
+sibling
+sibling's
+siblings
+sibly
+sibyl
+sibylic
+sibylla
+sibyllic
+sibylline
+sibyls
+sic
+Sicanian
+siccative
+siccing
+sicilia
+Sicilian
+Siciliana
+siciliana
+Sicilians
+Sicily
+sick
+sickbay
+sickbed
+sickbed's
+sickbeds
+sicken
+sickened
+sickener
+sickening
+sickeningly
+sicker
+sickerly
+sickert
+sickest
+sickie
+sicking
+sickish
+sickishly
+sickishness
+sickle
+sicklebill
+sickled
+sicklemia
+sicklewort
+sicklied
+sicklily
+sickliness
+sickling
+sickly
+sicklying
+sickness
+sickness's
+sicknesses
+sickroom
+sicks
+sicyon
+sid
+Siddhartha
+siddo
+siddons
+siddur
+siddurim
+side
+sidearm
+sidearms
+sideband
+sidebands
+sideboard
+sideboard's
+sideboards
+sideburned
+sideburns
+sidecar
+sidecars
+sidechain
+sidechains
+sided
+sidedness
+sidedress
+sideffect
+sideffects
+sidehill
+sidekick
+sidekicks
+sidelight
+sidelight's
+sidelights
+sideline
+sideliner
+sidelines
+sideling
+sidelong
+sideman
+sidemen
+sidency
+sident
+sidepiece
+sideplate
+sideplates
+sidereal
+siderealize
+siderealizes
+siderite
+sideritic
+siderolite
+siderophilin
+siderosis
+siderostat
+sides
+sidesaddle
+sideshow
+sideshows
+sideslip
+sideslips
+sidesman
+sidespin
+sidesplitting
+sidestep
+sidestepped
+sidestepper
+sidestepping
+sidesteps
+sidestroke
+sideswipe
+sidetrack
+sidetracked
+sidetracking
+sidetracks
+sidewalk
+sidewalk's
+sidewalks
+sidewall
+sideward
+sidewards
+sideway
+sideways
+sidewheel
+sidewheeler
+sidewinder
+sidewise
+sidi
+siding
+sidings
+sidle
+sidled
+sidles
+sidling
+Sidney
+sidon
+sidra
+SIDS
+sie
+sieben
+siebern
+siecle
+siecles
+siegbahn
+siege
+siege's
+Siegel
+Siegel's
+sieges
+Siegfried
+sieging
+siegler
+Sieglinda
+Sieglinda's
+sieglinde
+Siegmund
+Siegmund's
+Siemens
+Siena
+sienkiewicz
+sienna
+siepi
+Sierra
+sierra
+sierran
+sierras
+siesta
+sieux
+sieve
+sieve's
+sievers
+sieves
+sieving
+sifaka
+Sifford
+sift
+sifted
+sifter
+sifting
+siftings
+sifts
+sig
+SIGABRT
+SIGALRM
+SIGBUS
+SIGCHLD
+SIGCLD
+SIGCONT
+SIGEMT
+SIGFPE
+Siggraph
+sigh
+sighed
+sigher
+sighing
+sighs
+sight
+sighted
+sighter
+sighting
+sightings
+sightless
+sightlessness
+sightliness
+sightly
+sights
+sightscreen
+sightsee
+sightseeing
+sightseer
+sightseers
+SIGHUP
+Sigil
+sigil
+SIGILL
+SIGINT
+SIGIO
+SIGIOT
+sigismund
+SIGKILL
+sigla
+siglos
+sigma
+sigmas
+sigmate
+sigmoid
+sigmoidal
+sigmoidally
+sigmoidoscope
+Sigmund
+sign
+signac
+signal
+signaled
+signaler
+signalers
+signaling
+signalization
+signalize
+signalized
+signalizes
+signalizing
+signally
+signalman
+signalmen
+signalment
+signals
+signatories
+signatory
+signature
+signature's
+signatures
+signboard
+signed
+signer
+signers
+signet
+signifiable
+significance
+significances
+significancy
+significant
+significantly
+significants
+signification
+significative
+significatively
+significativeness
+significs
+signified
+signifier
+signifies
+signify
+signifying
+signing
+signior
+signiories
+signiory
+Signor
+Signora
+signore
+signorelli
+signori
+signories
+signorina
+signorino
+signory
+signpost
+signposted
+signposting
+signposts
+signs
+SIGPIPE
+SIGPROF
+SIGQUIT
+SIGSEGV
+SIGSTOP
+SIGSYS
+SIGTERM
+SIGTRAP
+SIGTSTP
+SIGTTIN
+SIGTTOU
+sigurd
+SIGURG
+SIGUSR
+SIGVTALRM
+SIGWINCH
+SIGXCPU
+SIGXFSZ
+Sihanouk
+Sika
+sikang
+sike
+Sikh
+Sikh's
+Sikhes
+Sikhs
+siking
+Sikkim
+Sikkim's
+Sikkimese
+Sikorsky
+silage
+silane
+Silas
+silastic
+sild
+silds
+sile
+silence
+silenced
+silencer
+silencers
+silences
+silencing
+silent
+silently
+silentness
+silents
+silenus
+silesia
+silex
+silhouette
+silhouetted
+silhouettes
+silica
+silicate
+silicates
+silicatization
+silicatization's
+silicatizations
+siliceous
+silicic
+silicicolous
+silicide
+silicidize
+silicidizes
+siliciferous
+silicification
+silicify
+silicious
+silicium
+silicle
+silicon
+silicone
+siliconize
+siliconizes
+silicons
+silicosis
+silicothermic
+silicotic
+siliculose
+siliqua
+silique
+silk
+silkaline
+silke
+silken
+silkier
+silkiest
+silkily
+silkiness
+silkoline
+silks
+silkweed
+silkworm
+silkworms
+silky
+sill
+sill's
+sillabub
+sillier
+silliest
+sillily
+sillimanite
+silliness
+sills
+silly
+silo
+siloam
+silone
+silos
+siloxane
+silt
+siltation
+silted
+silting
+silts
+siltstone
+siltstones
+silty
+Silures
+Silurian
+silurid
+siluroid
+silva
+silvan
+Silvanus
+silvas
+silver
+silvered
+silverer
+silverfish
+silveriness
+silvering
+silverize
+silverizer
+silverizers
+silverizes
+silverly
+Silverman
+silvern
+silverpoint
+silvers
+silverside
+silversides
+silversmith
+silversmiths
+Silverstein
+Silverstein's
+silvertail
+silverware
+silverweed
+silvery
+silvical
+silvicolous
+silvics
+silvicultural
+silviculturally
+silviculture
+silviculturist
+simar
+Simarouba
+simaroubaceous
+simazine
+simba
+Simbirsk
+simca
+simchath
+SIMD
+Simeon
+Simferopol
+simian
+similar
+similarities
+similarity
+similarize
+similarizes
+similarly
+simile
+similitude
+similize
+similizes
+simitar
+Simla
+simla
+simmel
+simmer
+simmered
+simmering
+simmers
+Simmons
+Simmonsville
+simms
+Simms
+simnel
+simoleon
+Simon
+simoniac
+simonides
+simonize
+Simonson
+Simonson's
+simony
+simoom
+simoon
+simp
+simpatico
+simper
+simpered
+simperer
+simpering
+simpers
+simple
+simpleminded
+simplemindedly
+simplemindedness
+simpleness
+simpler
+simples
+simplest
+simpleton
+simplex
+simplexes
+simplices
+simplicial
+simplicially
+simplicidentate
+simplicities
+simplicity
+simplicity's
+simplification
+simplifications
+simplifiction
+simplified
+simplifier
+simplifiers
+simplifies
+simplify
+simplifying
+simplism
+simplistic
+simplistically
+simplon
+simply
+Simpson
+Sims
+simsim
+simula
+simulacre
+simulacrum
+simulant
+simular
+simulate
+simulated
+simulates
+simulating
+simulation
+simulations
+simulative
+simulator
+simulator's
+simulators
+simulcast
+simultaneity
+simultaneous
+simultaneously
+simultaneousness
+sin
+sin's
+Sinai
+Sinaloa
+sinan
+sinanthropus
+sinapism
+sinarquist
+sinatra
+Sinatra
+Sinbad
+Sinbad's
+since
+sincere
+sincerely
+sincereness
+sincerest
+sincerity
+sincipita
+sincipital
+sinciput
+Sinclair
+sind
+Sindhi
+sine
+sinecure
+sines
+sinew
+sinew's
+sinews
+sinewy
+sinfonia
+sinfonietta
+sinful
+sinfully
+sinfulness
+sing
+singable
+Singapore
+Singapore's
+Singborg
+singe
+singed
+singeing
+singer
+singer's
+singers
+Singhalese
+singing
+singingly
+single
+singled
+singlehanded
+singlehandedly
+singleminded
+singleness
+singles
+singlestick
+singlet
+singleton
+singleton's
+singletons
+singletree
+singling
+singly
+sings
+singsong
+singsonged
+singsongy
+singspiel
+singular
+singularities
+singularity
+singularity's
+singularization
+singularization's
+singularizations
+singularize
+singularizes
+singularly
+singultus
+sinh
+sinhailien
+Sinhalese
+siniboia
+Sinicism
+sinicize
+sinicized
+sinicizes
+sinicizing
+sining
+sinister
+sinisterly
+sinisterness
+sinistral
+sinistrally
+sinistrodextral
+sinistrorse
+sinistrous
+Sinitic
+sink
+sinkable
+sinkage
+sinked
+sinker
+sinkers
+sinkhole
+sinkholes
+sinking
+sinks
+sinless
+sinlessly
+sinlessness
+sinn
+sinned
+sinner
+sinner's
+sinners
+sinning
+Sino
+sinoatrial
+sinological
+sinologist
+sinologue
+sinology
+sinopia
+Sinopoli
+sins
+sinsyne
+sint
+sinter
+sinterability
+sintered
+sinton
+Sintow
+sinuate
+sinuately
+sinuatrial
+sinuosity
+sinuous
+sinuousities
+sinuously
+sinuousness
+sinus
+sinuses
+sinusitis
+sinusoid
+sinusoidal
+sinusoidally
+sinusoids
+sion
+Siouan
+Sioux
+sip
+siphon
+siphon's
+siphoned
+siphoning
+siphonless
+siphonlesses
+siphonlike
+siphonlike's
+siphonlikes
+siphonophore
+siphonostele
+siphonostelic
+siphonostely
+siphons
+siple
+sipped
+sipper
+sippers
+sippet
+sipping
+sips
+siqueiros
+sir
+Siracusa
+sirdar
+sire
+sired
+siree
+siren
+sirenian
+sirenize
+sirenizes
+sirens
+sires
+siret
+siring
+Sirius
+sirloin
+sirocco
+sirra
+sirrah
+sirree
+sirs
+sirup
+sirupy
+sirvente
+sirventes
+sis
+sisal
+sisera
+siskin
+Sisley
+sismondi
+sissies
+sissified
+sissy
+sister
+sister's
+sistered
+sisterhood
+sistering
+sisterize
+sisterizes
+sisterly
+sisters
+Sistine
+sistrum
+Sisyphean
+Sisyphus
+sit
+Sitar
+sitar
+Sitarist
+sitcom
+site
+site's
+sited
+sitella
+sites
+sitfast
+sith
+sithole
+siting
+Sitka
+sitology
+sitosterol
+sits
+sitsang
+sitter
+sitter's
+sitters
+sitting
+sittings
+situ
+situate
+situated
+situates
+situating
+situation
+situational
+situationally
+situations
+situla
+situs
+sitwell
+sitz
+sitzkrieg
+sitzmark
+Siva
+siva
+Sivaism
+Sivan
+sivas
+Siwash
+six
+sixain
+sixes
+sixfold
+sixgun
+sixmo
+sixmos
+sixpence
+sixpences
+sixpenny
+sixte
+sixteen
+sixteenmo
+sixteens
+sixteenth
+sixth
+sixthly
+sixths
+sixties
+sixtieth
+Sixtus
+sixty
+sixtyfold
+sizable
+sizableness
+sizably
+sizar
+size
+sizeable
+sized
+sizer
+sizers
+sizes
+sizing
+sizings
+sizova
+sizzle
+sizzled
+sizzler
+sizzling
+sjambok
+skag
+skagen
+skagerrak
+skald
+skaldic
+skara
+skat
+skate
+skateboard
+skateboard's
+skateboarder
+skateboarding
+skateboards
+skated
+skatepark
+skater
+skater's
+skaters
+skates
+skating
+skatole
+skaw
+skean
+skedaddle
+skedaddled
+skedaddler
+skedaddles
+skedaddling
+skeet
+skeeter
+skeg
+skeigh
+skein
+skein's
+skeins
+skeleta
+skeletal
+skeletally
+skeleton
+skeleton's
+skeletonization
+skeletonization's
+skeletonizations
+skeletonize
+skeletonized
+skeletonizer
+skeletonizers
+skeletonizes
+skeletonizing
+skeletons
+skelf
+skellum
+skelly
+skelmersdale
+skelp
+skelping
+skelpit
+skelter
+skeltered
+skeltering
+Skelton
+sken
+skene
+skep
+skepsis
+skeptic
+skeptic's
+skeptical
+skeptically
+skepticism
+skepticize
+skepticizes
+skeptics
+skerrick
+skerries
+skers
+skery
+sket
+sketch
+sketchbook
+sketched
+sketcher
+sketches
+sketchier
+sketchily
+sketchiness
+sketching
+sketchpad
+sketchy
+skew
+skewback
+skewbald
+skewed
+skewer
+skewered
+skewering
+skewers
+skewing
+skewness
+skews
+skewwhiff
+ski
+skiable
+skiagram
+skiagram's
+skiagrams
+skiagraph
+skiagraphy
+skiamachy
+skiascope
+skiascopy
+skibob
+skid
+skidded
+skidder
+skiddier
+skidding
+skiddoo
+skiddy
+skidlid
+skidoo
+skidpan
+skidproof
+skids
+skidway
+skied
+skien
+skier
+skies
+skiff
+skiffle
+skiffs
+skiing
+Skijoring
+Skikda
+skilful
+skilfully
+skill
+skilled
+skilless
+skillet
+skillful
+skillfully
+skillfulness
+skilling
+skillion
+skills
+skilly
+skim
+skim's
+skimmed
+skimmer
+skimmer's
+skimmers
+Skimmia
+skimming
+skimmings
+skimobile
+skimp
+skimped
+skimpier
+skimpily
+skimpiness
+skimping
+skimps
+skimpy
+skims
+skin
+skin's
+skindive
+skindiving
+skinflint
+skinflint's
+skinflints
+skinful
+skinhead
+skink
+skinker
+skinless
+skinned
+skinner
+skinner's
+skinners
+skinnier
+skinniness
+skinning
+skinny
+skins
+skint
+skintight
+skip
+skipjack
+skiplane
+skipped
+skipper
+skipper's
+skippered
+skippering
+skippers
+skippet
+skipping
+Skippy
+skips
+Skipton
+skirl
+skirmish
+skirmished
+skirmisher
+skirmishers
+skirmishes
+skirmishing
+skirr
+skirret
+skirt
+skirted
+skirter
+skirting
+skirts
+skis
+skit
+skite
+skits
+skitter
+skittery
+skittish
+skittishly
+skittishness
+skittle
+skive
+skiver
+skiving
+skivvies
+skivvy
+skiway
+skiwear
+skoal
+Skokiaan
+Skolly
+Skopje
+Skrowaczewski
+Skua
+skulduggery
+skulk
+skulked
+skulker
+skulking
+skulks
+skull
+skull's
+skullcap
+skullduggery
+skulled
+skulls
+skunk
+skunk's
+skunks
+sky
+sky's
+skyborne
+skycap
+skydive
+skydiving
+Skye
+skyey
+skyhook
+skying
+skyjack
+skyjacked
+skyjacker
+skyjackers
+skyjacking
+skylab
+skylark
+skylarker
+skylarking
+skylarks
+skylight
+skylight's
+skylights
+skyline
+skylounge
+skyphoi
+skyphos
+skyrocket
+skyros
+skysail
+skyscape
+skyscrape
+skyscraper
+skyscraper's
+skyscrapers
+skyward
+skywave
+skyway
+skywrite
+skywriter
+skywriting
+slab
+slabber
+slabbered
+slabbering
+slabbing
+slabs
+slack
+slacked
+slacken
+slackened
+slackening
+slackens
+slacker
+slackest
+slacking
+slackly
+slackness
+slacks
+slade
+slag
+slain
+slaister
+slake
+slaked
+slaking
+slalom
+slaloms
+slam
+slammed
+slamming
+slams
+slander
+slandered
+slanderer
+slandering
+slanderous
+slanderously
+slanderousness
+slanders
+slang
+slangily
+slanginess
+slanging
+slangy
+slant
+slanted
+slanting
+slantingly
+slants
+slantways
+slantwise
+slap
+slapdash
+slaphappy
+slapjack
+slapped
+slapping
+slaps
+slapshot
+slapstick
+slash
+slashed
+slasher
+slashes
+slashing
+slashingly
+slat
+slat's
+slate
+slated
+slatelike
+slater
+slaters
+slates
+slather
+slathered
+slathering
+slathers
+slating
+Slatkin
+slats
+slatted
+slattern
+slatternliness
+slatternly
+slatting
+slaty
+slaughter
+slaughtered
+slaughterer
+slaughterhouse
+slaughterhouses
+slaughtering
+slaughterman
+slaughtermen
+slaughterous
+slaughterously
+slaughters
+Slav
+slave
+slaved
+slaveholder
+slaveholders
+slaveholding
+slaver
+slavered
+slavering
+slavery
+slaves
+slavey
+slaveys
+Slavic
+Slavicize
+Slavicizes
+slaving
+slavish
+slavishly
+slavishness
+Slavism
+Slavization
+Slavization's
+Slavizations
+Slavize
+Slavizes
+Slavkov
+slavocracy
+Slavonia
+Slavonic
+Slavonicize
+Slavonicizes
+Slavophile
+Slavophiles
+Slavs
+slavs
+slaw
+slay
+slayer
+slayers
+slaying
+slays
+sleave
+sleazier
+sleazily
+sleaziness
+sleazy
+sled
+sled's
+sledded
+sledder
+sledding
+sledge
+sledge's
+sledgehammer
+sledges
+sledging
+sleds
+sleek
+sleekit
+sleekly
+sleekness
+sleep
+sleeper
+sleepers
+sleepier
+sleepily
+sleepiness
+sleeping
+sleepless
+sleeplessess
+sleeplessly
+sleeplessness
+sleeplike
+sleeps
+sleepwalk
+sleepwalker
+sleepy
+sleepyhead
+sleet
+sleety
+sleeve
+sleeve's
+sleeved
+sleeveless
+sleevelet
+sleeves
+sleeving
+sleezy
+sleigh
+sleighs
+sleight
+sleken
+slekened
+slekening
+slender
+slenderer
+slenderize
+slenderized
+slenderizes
+slenderizing
+slenderly
+slenderness
+slept
+slesinger
+Slesinger
+Slesvig
+sleuth
+sleuthhound
+sleuthing
+slew
+slewed
+slewing
+slezsko
+slice
+sliced
+slicer
+slicers
+slices
+slicing
+slick
+slickenside
+slicker
+slickers
+slickly
+slickness
+slicks
+slid
+slidden
+slide
+slider
+sliders
+slides
+slideway
+sliding
+slier
+sliest
+slight
+slighted
+slighter
+slightest
+slighting
+slightingly
+slightly
+slightness
+slights
+sligo
+slily
+slim
+slime
+slimed
+slimes
+slimier
+slimily
+sliminess
+sliming
+slimly
+slimmed
+slimmer
+slimmers
+slimmest
+slimming
+slimness
+slimpsy
+slimsy
+slimy
+sling
+slingback
+slinger
+slinging
+slings
+slingshot
+slink
+slinked
+slinkier
+slinkily
+slinkiness
+slinking
+slinks
+slinky
+slip
+slip's
+slipcase
+slipcover
+slipform
+slipknot
+slipnoose
+slipover
+slippage
+slipped
+slipper
+slipper's
+slipperier
+slipperiness
+slippers
+slipperwort
+slippery
+slippier
+slipping
+slippy
+slips
+slipsheet
+slipshod
+slipslop
+slipsole
+slipstick
+slipstream
+slipup
+slipway
+slit
+slit's
+slither
+slithered
+slithering
+slithers
+slithery
+slitless
+slits
+slitter
+slitters
+slitting
+sliver
+slivered
+slivering
+slivers
+slivery
+slivovitz
+Sloan
+Sloane
+slob
+slobber
+slobbered
+slobberer
+slobbering
+slobbers
+slobbery
+slobbish
+Slocum
+Slocum's
+sloe
+slog
+slogan
+slogan's
+sloganeer
+sloganeering
+sloganize
+sloganizes
+slogans
+slogger
+slogging
+sloop
+sloops
+sloot
+slop
+slope
+sloped
+sloper
+slopers
+slopes
+sloping
+slopped
+sloppier
+sloppily
+sloppiness
+slopping
+sloppy
+slops
+slopwork
+slopworker
+slosh
+sloshed
+slot
+slot's
+slotback
+sloth
+slothful
+slothfully
+slothfulness
+sloths
+slots
+slotted
+slotting
+slouch
+slouched
+sloucher
+slouches
+slouchier
+slouchily
+slouchiness
+slouching
+slouchy
+slough
+sloughed
+sloughing
+sloughs
+sloughy
+Slovak
+Slovakia
+Slovakia's
+sloven
+Slovene
+Slovenia
+Slovenia's
+slovenliness
+slovenly
+slow
+slowcoach
+slowdown
+slowed
+slower
+slowest
+slowing
+slowish
+slowly
+slowness
+slowpoke
+slows
+slowworm
+slub
+slubber
+slubberdegullion
+slubbered
+slubbering
+slubbing
+sludge
+sludges
+sludgier
+sludgy
+slue
+sluff
+slug
+slugabed
+slugfest
+sluggard
+sluggardly
+sluggardness
+slugged
+slugger
+sluggers
+slugging
+sluggish
+sluggishly
+sluggishness
+slugs
+sluice
+sluiced
+sluices
+sluiceway
+sluicing
+sluicy
+sluing
+slum
+slum's
+slumber
+slumber's
+slumbered
+slumberer
+slumbering
+slumberous
+slumbers
+slumbery
+slumbrous
+slumgullion
+slumlord
+slummer
+slummier
+slumming
+slummy
+slump
+slumped
+slumps
+slums
+slung
+slungshot
+slunk
+slur
+slur's
+slurp
+slurped
+slurping
+slurps
+slurried
+slurries
+slurring
+slurry
+slurrying
+slurs
+slush
+slushier
+slushiness
+slushy
+slut
+sluttish
+sluttishly
+sluttishness
+sly
+slyboots
+slyer
+slyest
+slyly
+slyness
+slype
+smack
+smacked
+smacker
+smacking
+smacks
+small
+smallage
+smallboy
+smallclothes
+smaller
+smallest
+Smalley
+Smalley's
+smallholding
+smallish
+smallmouth
+smallness
+smallpox
+smallsword
+smalltime
+Smallwood
+smaltite
+smalto
+smaragd
+smaragdite
+smarm
+smarmy
+smart
+smarted
+smarten
+smartened
+smartening
+smarter
+smartest
+smartie
+smarties
+smarting
+smartly
+smartness
+smarts
+smartweed
+smarty
+smash
+smashed
+smasher
+smashers
+smashes
+smashing
+smashingly
+smashup
+smatch
+smatter
+smatterer
+smattering
+smatterings
+smear
+smearcase
+smeared
+smearer
+smearing
+smears
+smeary
+Smeaton
+smectic
+smegma
+smell
+smelled
+smeller
+smellier
+smelling
+smells
+smelly
+smelt
+smelter
+smeltery
+smelts
+Smetana
+smew
+smidgen
+smidgeon
+smilacaceous
+Smilax
+smile
+smiled
+smileless
+smilelessly
+smiler
+smiles
+smiley
+smiley's
+smilies
+smiling
+smilingly
+smirch
+smirk
+smirked
+smirky
+Smirnov
+smit
+smite
+smiter
+smith
+smith's
+smithereens
+smithery
+Smithfield
+smithies
+smiths
+Smithson
+Smithson's
+Smithsonian
+smithsonite
+Smithtown
+smithy
+smiting
+smitten
+smock
+smocking
+smocks
+smog
+smoggier
+smoggy
+smogless
+smokable
+smoke
+smokeable
+smokechaser
+smoked
+smokeho
+smokehouse
+smokejack
+smokeless
+smokelike
+smokeproof
+smoker
+smoker's
+smokers
+smokes
+smokescreen
+smokestack
+smokey
+smokier
+smokies
+smokily
+smokiness
+smoking
+smoko
+smoky
+smolder
+smoldered
+smoldering
+smolderingly
+smolders
+Smolensk
+Smollett
+smolt
+smooch
+smooching
+smoochy
+smoodge
+smooth
+smoothbore
+smoothed
+smoothen
+smoothened
+smoothening
+smoother
+smoothers
+smoothes
+smoothest
+smoothie
+smoothies
+smoothing
+smoothly
+smoothness
+smooths
+smoothy
+smorgasbord
+smote
+smother
+smothered
+smothering
+smothers
+smothery
+smoulder
+smriti
+SMSA
+smsa
+smsa's
+SMSA's
+SMSAs
+smsas
+SMTP
+Smucker
+smudge
+smudged
+smudgily
+smudginess
+smudging
+smudgy
+smug
+smugger
+smuggest
+smuggle
+smuggled
+smuggler
+smugglers
+smuggles
+smuggling
+smugly
+smugness
+smut
+smutch
+smutchy
+smuts
+smutted
+smuttier
+smuttily
+smuttiness
+smutting
+smutty
+Smyrna
+Smyrna's
+Smythe
+snack
+snackette
+snacks
+snaffle
+snaffled
+snaffling
+snafu
+snag
+snagged
+snagging
+snaggletooth
+snaggletoothed
+snaggy
+snags
+snail
+snail's
+snaillike
+snails
+snake
+snakebird
+snakebite
+snakebite's
+snakebites
+snaked
+snakelike
+snakemouth
+snakeroot
+snakes
+snakeskin
+snakestrike
+snakeweed
+snakily
+snaking
+snaky
+snap
+snapback
+snapdragon
+snapdragons
+snappe
+snapped
+snapper
+snapper's
+snappers
+snappier
+snappiest
+snappily
+snappiness
+snapping
+snappish
+snappishly
+snappishness
+snappy
+snaps
+snapshoot
+snapshooter
+snapshot
+snapshot's
+snapshots
+snare
+snared
+snarer
+snares
+snarf
+snarfed
+snarfing
+snarfings
+snarfs
+snaring
+snark
+snarks
+snarl
+snarled
+snarler
+snarling
+snarls
+snarly
+snash
+snatch
+snatched
+snatcher
+snatches
+snatching
+snatchy
+snath
+snathe
+snazzier
+snazzy
+SNCC
+sndmsg
+snead
+Snead
+sneak
+sneaked
+sneaker
+sneakered
+sneakers
+sneakier
+sneakiest
+sneakily
+sneakiness
+sneaking
+sneakingly
+sneaks
+sneaky
+sneap
+sneck
+sned
+Sneed
+sneed
+sneer
+sneered
+sneerer
+sneering
+sneers
+sneesh
+sneeze
+sneezed
+sneezer
+sneezes
+sneezeweed
+sneezewort
+sneezing
+sneezy
+snell
+snelling
+snib
+snick
+snicker
+snickered
+snickerer
+snickering
+snickersnee
+snickery
+snicket
+snide
+snidely
+snideness
+snider
+snidest
+sniff
+sniffed
+sniffer
+sniffily
+sniffiness
+sniffing
+sniffish
+sniffishly
+sniffishness
+sniffle
+sniffled
+sniffler
+sniffles
+sniffling
+sniffs
+sniffy
+snifter
+snigger
+sniggered
+sniggerer
+sniggering
+sniggle
+sniggled
+sniggling
+snip
+snipe
+sniped
+snipefish
+sniper
+sniper's
+snipers
+sniperscope
+snipes
+sniping
+snipped
+snipper
+snipper's
+snippers
+snippet
+snippety
+snippier
+snipping
+snippy
+snips
+snit
+snitch
+snitcher
+snivel
+sniveled
+sniveler
+snivelers
+sniveling
+snivelings
+snob
+snobbery
+snobbish
+snobbishly
+snobbishness
+snobbism
+snobby
+SNOBOL
+snobs
+snobsniveling
+snodgrass
+Snodgrass
+snog
+snollygoster
+snood
+snook
+snooker
+snookers
+snooks
+snoop
+snooped
+snooper
+snooperscope
+snoopily
+snooping
+snoops
+snoopy
+snoot
+snootier
+snootily
+snootiness
+snooty
+snooze
+snoozer
+snoozes
+snoozing
+snoozle
+snoozled
+snoozles
+snoozling
+snopes
+snore
+snored
+snorer
+snores
+snoring
+snorkel
+snorkeled
+snorkeler
+snorkeling
+snorri
+snort
+snorted
+snorter
+snorting
+snorts
+snot
+snotty
+snout
+snout's
+snouted
+snoutish
+snouts
+snouty
+snow
+snowball
+snowballed
+snowballing
+snowballs
+snowbank
+snowbank's
+snowbanks
+Snowbelt
+Snowbelt's
+snowberry
+snowbird
+snowblink
+snowblower
+snowblowers
+snowbound
+snowbrush
+snowcap
+snowcapped
+snowdon
+snowdonia
+snowdrift
+snowdrop
+snowed
+snowfall
+snowfield
+snowflake
+snowflakes
+snowier
+snowiest
+snowily
+snowiness
+snowing
+snowless
+snowmaker
+snowmaking
+snowman
+snowmelt
+snowmen
+snowmobile
+snowmobiler
+snowmobiling
+snowpack
+snowplough
+snowplow
+snows
+snowscape
+snowshed
+snowshoe
+snowshoe's
+snowshoed
+snowshoeing
+snowshoer
+snowshoes
+snowslide
+snowstorm
+snowsuit
+snowy
+snub
+snubbed
+snubber
+snubbiness
+snubbing
+snubby
+snubness
+snubs
+snuck
+snuff
+snuffbox
+snuffboxes
+snuffed
+snuffer
+snuffing
+snuffle
+snuffled
+snuffler
+snuffling
+snuffs
+snuffy
+snug
+snugged
+snugger
+snuggery
+snuggest
+snugging
+snuggle
+snuggled
+snuggles
+snuggling
+snuggly
+snugly
+snugness
+snugs
+Snyder
+snye
+so
+soak
+soakage
+soakaway
+soaked
+soaker
+soaking
+soaks
+soap
+soapbark
+soapberry
+soapbox
+soapboxes
+soaped
+soapier
+soapily
+soapiness
+soaping
+soapless
+soapmaking
+soapolallie
+soaps
+soapstone
+soapstones
+soapsud
+soapsuds
+soapwort
+soapy
+soar
+soared
+soarer
+soares
+soaring
+soars
+sob
+soba
+sobbed
+sobbing
+sobbingly
+sobe
+sobeit
+sober
+sobered
+soberer
+soberest
+sobering
+soberize
+soberized
+soberizes
+soberizing
+soberly
+soberness
+sobers
+sobersided
+sobersides
+sobf
+sobibor
+Sobranje
+sobriety
+sobriquet
+sobs
+Soc
+socage
+socager
+socal
+soccage
+soccer
+soche
+sochi
+sociability
+sociable
+sociableness
+sociably
+social
+socialism
+socialist
+socialist's
+socialistic
+socialistically
+socialists
+socialite
+sociality
+socialization
+socialization's
+socializations
+socialize
+socialized
+socializer
+socializes
+socializing
+socially
+societal
+societally
+Societe
+societies
+society
+society's
+Socinian
+socinianism
+socinus
+socio
+sociobiology
+sociocultural
+socioculturally
+sociodemographic
+socioeconomic
+socioeconomically
+socioeconomics
+sociolinguistic
+sociolinguistics
+sociologic
+sociological
+sociologically
+sociologist
+sociologists
+sociology
+sociometric
+sociometry
+sociopath
+sociopathic
+sociopolitical
+sociosexual
+sociosexuality
+sock
+sockdolager
+sockdologer
+sockdologizing
+socked
+socket
+socket's
+sockets
+sockeye
+socking
+socks
+socle
+socman
+socola
+soconoco
+Socrates
+Socratic
+socred
+sod
+sod's
+soda
+sodalist
+sodalite
+sodality
+sodamide
+sodbuster
+sodded
+sodden
+soddened
+soddening
+soddenly
+soddenness
+sodding
+Soddy
+soddy
+Soderblom
+Soderstrom
+sodic
+sodium
+Sodom
+sodomite
+sodomy
+sods
+soekarno
+soemba
+soembawa
+soenda
+soerabaja
+soeren
+soever
+sofa
+sofa's
+sofar
+sofas
+Soffel
+soffit
+Sofia
+soft
+softa
+softback
+softball
+softbound
+softcover
+soften
+softened
+softener
+softening
+softens
+softer
+softest
+softhead
+softheaded
+softheadedly
+softheadedness
+softhearted
+softheartedly
+softheartedness
+softie
+softies
+softish
+softly
+softness
+software
+software's
+softwares
+softwood
+softy
+sogat
+Sogdian
+sogdiana
+soggier
+soggily
+sogginess
+soggy
+soh
+sohn
+soho
+soign
+soignee
+soil
+soilage
+soilborne
+soiled
+soilge
+soiling
+soilless
+soils
+soilure
+soir
+soiree
+soirees
+soissons
+sojourn
+sojourner
+sojourners
+soke
+sokeman
+sokol
+sokolev
+sokolov
+sokolsky
+sokoto
+sokotra
+Sol
+sola
+solace
+solaced
+solacement
+solacer
+solacing
+solan
+solanaceous
+solander
+solanin
+solanine
+solanum
+solar
+solarimeter
+solarism
+solarium
+solarization
+solarization's
+solarizations
+solarize
+solarized
+solarizes
+solarizing
+solate
+solated
+solating
+solatium
+sold
+soldan
+solder
+solderability
+soldered
+solderer
+soldering
+solders
+soldi
+soldier
+soldiered
+soldiering
+soldierize
+soldierizes
+soldierly
+soldiers
+soldiership
+soldiery
+soldo
+sole
+solecism
+solecistic
+solecize
+solecized
+solecizes
+solecizing
+soled
+solely
+solemn
+solemnify
+solemnity
+solemnization
+solemnization's
+solemnizations
+solemnize
+solemnized
+solemnizer
+solemnizers
+solemnizes
+solemnizing
+solemnly
+solemnness
+soleness
+Solenodon
+solenoid
+solenoidal
+solenoids
+solent
+soleplate
+soleprint
+soles
+solesmes
+soleure
+solfatara
+solfeggio
+solferino
+soli
+solicit
+solicitant
+solicitation
+solicited
+soliciting
+solicitor
+solicitors
+solicitorship
+solicitous
+solicitously
+solicitousness
+solicits
+solicitude
+solid
+solidago
+solidarism
+solidarist
+solidaristic
+solidarity
+solidary
+solidification
+solidified
+solidifies
+solidify
+solidifying
+solidity
+solidly
+solidness
+solids
+solidus
+solifidian
+solifluction
+solihull
+soliloquist
+soliloquization
+soliloquize
+soliloquized
+soliloquizer
+soliloquizers
+soliloquizes
+soliloquizing
+soliloquizing's
+soliloquizingly
+soliloquizings
+soliloquy
+soliman
+soling
+solingen
+solipsism
+solipsist
+solipsistic
+solitaire
+solitarily
+solitariness
+solitary
+soliton
+solitude
+solitude's
+solitudes
+solitudinarian
+solitudinem
+solleret
+sollicker
+Solly
+solmization
+soln
+solo
+solo's
+soloed
+soloing
+soloist
+soloists
+Solomon
+Solon
+solonchak
+solonets
+solonetz
+solonetzic
+solos
+solothurn
+Soloviev
+solstice
+solstitial
+Solti
+solubility
+solubilization
+solubilize
+solubilized
+solubilizes
+solubilizing
+soluble
+solubleness
+solubly
+solum
+solus
+solute
+solution
+solution's
+solutions
+solutize
+solutizer
+solutizers
+solutizes
+Solutrean
+solvability
+solvable
+solvate
+solvated
+solvating
+solvation
+solvay
+solve
+solved
+solvency
+solvent
+solvent's
+solventless
+solvently
+solvents
+solver
+solvers
+solves
+solving
+solvolysis
+solvolytic
+solway
+solyman
+Solzhenitsyn
+soma
+Somali
+Somalia
+Somaliland
+Somalis
+somatic
+somatically
+somatogenic
+somatological
+somatology
+somatoplasm
+somatoplastic
+somatopleure
+somatopleuric
+somatosensory
+somatotrophin
+somatotropin
+somatotype
+somatotypic
+somatotypically
+somber
+somberly
+somberness
+sombre
+sombrero
+sombrous
+some
+somebodies
+somebody
+somebody'll
+somebody's
+someday
+somedeal
+somehow
+someone
+someone'll
+someone's
+someplace
+someplace's
+somers
+somersault
+somersaulting
+somersaults
+Somerset
+Somerville
+something
+sometime
+sometimes
+someway
+someways
+somewhat
+somewhen
+somewhere
+somewheres
+somewhither
+somewise
+somite
+somitic
+somme
+sommelier
+sommeliers
+Sommerfeld
+Sommerfeld's
+somnambulant
+somnambular
+somnambulate
+somnambulation
+somnambulator
+somnambulism
+somnambulist
+somnambulistic
+somnambulistically
+somnifacient
+somniferous
+somniferously
+somniloquy
+somnolence
+somnolency
+somnolent
+somnolently
+somnus
+son
+son's
+sonambula
+sonance
+sonant
+sonantized
+sonantized's
+sonantizeds
+sonar
+sonarman
+sonars
+sonata
+sonatas
+sonatina
+sondage
+sonde
+Sondheim
+sone
+Sonenberg
+song
+song's
+songau
+songbag
+songbird
+songbook
+songfest
+songful
+songfully
+songfulness
+Songhai
+songkok
+songless
+songlessly
+songs
+songsmith
+songster
+songtress
+songwriter
+songwriting
+sonic
+sonically
+sonicate
+sonicated
+sonication
+sonicator
+sonicators
+soniferous
+sonless
+sonly
+sonnet
+sonnet's
+sonneteer
+sonnetize
+sonnetizes
+sonnets
+sonnobuoy
+sonny
+sonobuoy
+sonofabitch
+sonogram
+sonogram's
+sonograms
+Sonoma
+Sonora
+sonorant
+sonorities
+sonority
+sonorous
+sonorously
+sonorousness
+sonovox
+sons
+sonship
+sonsie
+sonsy
+sonuvabitch
+Sony
+Sony's
+soo
+soochow
+sook
+soomed
+soon
+sooner
+soonest
+soong
+soot
+sooth
+soothe
+soothed
+soother
+soothes
+soothfast
+soothing
+soothingly
+soothingness
+soothly
+soothsay
+soothsayer
+soothsayers
+soothsaying
+sootier
+sootily
+sootiness
+sooty
+sop
+Sophia
+Sophias
+Sophie
+sophism
+sophist
+sophister
+sophistic
+sophistical
+sophistically
+sophisticate
+sophisticated
+sophisticatedly
+sophisticates
+sophistication
+sophistocated
+sophistry
+Sophoclean
+Sophocles
+sophomore
+sophomore's
+sophomores
+sophomoric
+sophy
+sopite
+sopited
+sopiting
+sopor
+soporiferous
+soporiferousness
+soporific
+soporific's
+soporifics
+soppier
+sopping
+soppy
+sopranino
+soprano
+sopranos
+sops
+sopsaisana
+sora
+sorata
+sorb
+sorbability
+sorbable
+sorbate
+sorbed
+sorbefacient
+sorbent
+Sorbian
+sorbic
+sorbitol
+Sorbonne
+sorcerer
+sorcerer's
+sorcerers
+sorceress
+sorcerous
+sorcery
+Sordello
+sordid
+sordidly
+sordidness
+sordino
+sore
+soredium
+sorehead
+soreheaded
+sorely
+soreness
+Sorensen
+Sorenson
+sorer
+sores
+sorest
+sorghum
+sorgo
+sori
+soricine
+sorites
+sorn
+sorocaba
+sororal
+sororate
+sororicide
+sororities
+sorority
+sorosis
+sorption
+sorptive
+sorrel
+sorrentine
+Sorrentine
+sorrentino
+sorrento
+sorrier
+sorriest
+sorrily
+sorriness
+sorrow
+sorrow's
+sorrower
+sorrowful
+sorrowfully
+sorrowfulness
+sorrows
+sorry
+sort
+sortable
+sorted
+sorter
+sorters
+sortie
+sortilege
+sorting
+sortition
+sorts
+sorus
+sos
+SOS
+sosnowiec
+sostenuto
+sot
+soteriological
+soteriology
+Sothic
+Sothis
+Sotho
+sotol
+sottish
+sottishly
+sottishness
+sotto
+sotun
+sou
+soubise
+soubrette
+soubriquet
+souchong
+soudan
+souffle
+sough
+sought
+soukhouma
+soul
+soul's
+soule
+souled
+soulful
+soulfully
+soulfulness
+soulless
+soullessly
+soullessness
+souls
+soult
+sound
+soundable
+soundboard
+soundbox
+sounded
+sounder
+soundest
+sounding
+sounding's
+soundingly
+soundings
+soundless
+soundlessly
+soundly
+soundness
+soundpost
+soundproof
+soundproofed
+soundproofing
+soundproofs
+sounds
+soup
+soup's
+soupfin
+Souphanourong
+soupier
+soups
+soupspoon
+soupy
+sour
+sourberry
+source
+source's
+sourceless
+sources
+sourdine
+sourdough
+soured
+sourer
+sourest
+souring
+sourish
+sourly
+sourness
+sourpuss
+sours
+soursop
+sourwood
+Sousa
+sousaphone
+souse
+sousing
+Souslik
+Sousse
+sout
+soutache
+soutane
+souter
+Souterrain
+south
+Southampton
+southbound
+Southdown
+southeast
+southeaster
+southeasterly
+southeastern
+southeasternmost
+southeastward
+southeastwards
+souther
+southerly
+Southern
+southern
+southerner
+southerners
+southernisms
+southernize
+southernizes
+southernly
+southernmost
+southernness
+Southernwood
+Southey
+Southfield
+southing
+southland
+southmost
+southpaw
+southpaws
+Southport
+Southron
+souths
+southward
+southwards
+Southwark
+southwest
+southwester
+southwesterly
+southwestern
+southwesternmost
+southwestward
+southwestwards
+soutine
+souvenir
+souvenirs
+sovereign
+sovereign's
+sovereignly
+sovereigns
+sovereignty
+Sovetsk
+Soviet
+soviet
+soviet's
+sovietism
+sovietization
+sovietization's
+sovietizations
+sovietize
+Sovietized
+sovietizes
+Sovietizing
+soviets
+sovkhoz
+sovkhozes
+sovran
+sovranty
+sow
+sowbelly
+sowbug
+sowbug's
+sowbugs
+sowens
+sower
+sowered
+Soweto
+sowing
+sown
+sox
+soxhlet
+soy
+soya
+soybean
+soybeans
+Soyinka
+Soyuz
+sozzled
+spa
+Spaak
+space
+spaceband
+spacecraft
+spaced
+spaceflight
+spaceless
+spaceman
+spaceport
+spacer
+spacers
+spaces
+spaceship
+spaceship's
+spaceships
+spacesuit
+spacesuits
+spacetime
+spacewalk
+spacewalker
+spacewalking
+Spacewar
+spacial
+spacing
+spacings
+spacious
+spaciously
+spaciousness
+spackle
+spackled
+spackling
+spacs
+spacward
+spada
+spade
+spaded
+spadefish
+spadeful
+spader
+spades
+spadework
+spadiceous
+spadices
+spadille
+spading
+spadix
+spaeing
+Spafford
+Spafford's
+spaghetti
+spagyric
+spahi
+spahn
+Spahn
+Spain
+Spain's
+spake
+spalato
+Spalding
+spalding
+spall
+spallable
+spallation
+spalled
+spalling
+spalpeen
+spam
+span
+span's
+spancel
+spandrel
+spandrels
+spandril
+spang
+spangle
+spangled
+spangles
+spangling
+Spaniard
+Spaniardization
+Spaniardization's
+Spaniardizations
+Spaniardize
+Spaniardizes
+Spaniards
+spaniel
+Spanish
+Spanish's
+Spanishize
+Spanishizes
+spank
+spanked
+spanker
+spanking
+spanks
+spanned
+spanner
+spanner's
+spanners
+spanning
+spans
+spanworm
+spar
+sparable
+sparce
+spare
+spareable
+spared
+sparely
+spareness
+sparer
+sparerib
+spareribs
+spares
+sparest
+sparge
+sparger
+sparging
+sparid
+sparing
+sparingly
+spark
+sparked
+sparker
+sparkier
+sparkily
+sparking
+sparkish
+sparkle
+sparkled
+sparkler
+sparkles
+sparkling
+Sparkman
+sparkplug
+sparks
+sparky
+sparling
+sparlings
+sparoid
+sparred
+sparring
+sparrow
+sparrow's
+sparrowgrass
+sparrowhawk
+sparrows
+sparry
+spars
+sparse
+sparsely
+sparseness
+sparser
+sparsest
+sparsity
+Sparta
+Spartacus
+spartan
+Spartan
+Spartanize
+Spartanizes
+sparteine
+spas
+spasm
+spasmodic
+spasmodical
+spasmodically
+spasmolytic
+spasmolytically
+spasms
+Spassky
+spastic
+spastically
+spasticity
+spat
+spatchcock
+spate
+spate's
+spates
+spathe
+spathic
+spathulate
+spatial
+spatiality
+spatialization
+spatialization's
+spatializations
+spatialize
+spatializes
+spatially
+spatiotemporal
+spatiotemporally
+spatlum
+spats
+spatted
+spatter
+spatterdash
+spatterdock
+spattered
+spatting
+spatula
+spatulate
+Spaulding
+Spaulding's
+spavin
+spavined
+spawn
+spawned
+spawner
+spawning
+spawns
+spay
+spayed
+spaying
+speak
+speakable
+speakeasy
+speaker
+speaker's
+Speakerphone
+speakers
+speakership
+speaking
+speaks
+spean
+spear
+speared
+spearer
+spearfish
+spearhead
+spearing
+spearman
+spearmint
+spears
+spearwort
+spec
+special
+specialism
+specialisms
+specialist
+specialist's
+specialistic
+specialists
+specialization
+specialization's
+specializations
+specialize
+specialized
+specializer
+specializers
+specializes
+specializing
+specially
+specialness
+specials
+specialties
+specialty
+specialty's
+speciate
+speciation
+speciational
+specie
+species
+specifiability
+specifiable
+specific
+specifically
+specification
+specifications
+specificities
+specificity
+specificize
+specificizes
+specifics
+specified
+specifier
+specifiers
+specifies
+specify
+specifying
+specimen
+specimen's
+specimenize
+specimenizes
+specimens
+speciosity
+specious
+speciously
+speciousness
+speck
+speck's
+speckle
+speckled
+speckles
+speckling
+specks
+specs
+specsartine
+spect
+spectacle
+spectacled
+spectacles
+spectacular
+spectacularly
+spectate
+spectated
+spectating
+spectator
+spectator's
+spectators
+spectatress
+specter
+specter's
+spectered
+specterlike
+specterlike's
+specterlikes
+specters
+spector
+Spector's
+spectra
+spectral
+spectrality
+spectrally
+spectralness
+spectrobolometer
+spectrofluorimeter
+spectrofluorimeter's
+spectrofluorimeters
+spectrofluorometer
+spectrofluorometer's
+spectrofluorometers
+spectrofluorometric
+spectrofluorometry
+spectrogram
+spectrogram's
+spectrograms
+spectrograph
+spectrographic
+spectrographically
+spectrography
+spectroheliogram
+spectroheliogram's
+spectroheliograms
+spectroheliograph
+spectroheliography
+spectrohelioscope
+spectrometer
+spectrometer's
+spectrometers
+spectrometric
+spectrometry
+spectrophotometer
+spectrophotometer's
+spectrophotometers
+spectrophotometric
+spectrophotometrical
+spectrophotometrically
+spectrophotometry
+spectroscope
+spectroscopic
+spectroscopical
+spectroscopically
+spectroscopist
+spectroscopy
+spectrum
+spectrums
+specular
+specularity
+specularly
+speculate
+speculated
+speculates
+speculating
+speculation
+speculations
+speculative
+speculatively
+speculator
+speculator's
+speculators
+speculum
+sped
+speech
+speech's
+speeches
+speechify
+speechless
+speechlessly
+speechlessness
+speed
+speedball
+speedboat
+speedboater
+speedboating
+speeded
+speeder
+speeders
+speedier
+speedily
+speediness
+speeding
+speedlight
+speedo
+speedometer
+speedometer's
+speedometers
+speeds
+speedster
+speedup
+speedup's
+speedups
+speedway
+speedwell
+speedwriting
+speedy
+speel
+Speenhamland
+speer
+speight
+speir
+speiss
+spelaean
+speleogenesis
+speleogenetic
+speleological
+speleologist
+speleology
+spelk
+spell
+spellbind
+spellbinder
+spellbound
+spelldown
+spelled
+speller
+spellers
+spellican
+spelling
+spellings
+spells
+spelt
+spelter
+spelunker
+spelunking
+Spenborough
+Spence
+Spencer
+Spencer's
+Spencerian
+spend
+spendable
+spender
+spenders
+spending
+spends
+spendthrift
+Spengler
+spenglerian
+Spenglerian
+Spenser
+Spenserian
+spent
+speos
+sperm
+spermaceti
+spermagonium
+spermary
+spermatheca
+spermathecal
+spermatial
+spermatic
+spermatid
+spermatium
+spermatocidal
+spermatocide
+spermatocyte
+spermatogenesis
+spermatogenetic
+spermatogenic
+spermatogonial
+spermatogonium
+spermatophore
+spermatophyte
+spermatophytic
+spermatorrhoea
+spermatozoa
+spermatozoal
+spermatozoan
+spermatozoid
+spermatozoon
+spermic
+spermicidal
+spermicide
+spermidine
+spermine
+spermiogenesis
+spermogonium
+spermophile
+spermophyte
+spermous
+sperms
+Sperry
+sperrylite
+spessartite
+spew
+spewer
+spewing
+spewings
+spey
+speyer
+sphagnous
+sphagnum
+sphalerite
+sphene
+sphenic
+sphenodon
+sphenodont
+sphenogram
+sphenoid
+sphenoidal
+sphenopsid
+spheral
+sphere
+sphere's
+spheres
+spheric
+spherical
+spherically
+sphericity
+spherics
+sphering
+spheroid
+spheroidal
+spheroidally
+spheroidicity
+spheroidize
+spheroidizes
+spherometer
+spherometer's
+spherometers
+spheroplast
+spherule
+spherules
+spherulite
+spherulitic
+sphery
+sphincter
+sphincteral
+sphinges
+sphingid
+sphingomyelin
+sphingosine
+sphinx
+sphinxes
+sphragistics
+sphygmic
+sphygmograph
+sphygmographic
+sphygmography
+sphygmoid
+sphygmomanometer
+sphygmomanometer's
+sphygmomanometers
+sphygmomanometric
+sphygmomanometrically
+sphygmomanometry
+spic
+Spica
+spicae
+Spicas
+spicate
+spiccato
+spice
+spiceberry
+spicebush
+spiced
+spicery
+spices
+spicier
+spicily
+spiciness
+spicing
+spicula
+spicular
+spiculate
+spiculation
+spicule
+spiculiferous
+spiculum
+spicy
+spider
+spider's
+spiderman
+spiders
+spiderweb
+spiderwort
+spidery
+spied
+Spiegel
+spiegeleisen
+spiel
+spieler
+spier
+spies
+spif
+spiffier
+spiffing
+spiffy
+spiflicate
+spignel
+spigot
+spigots
+spike
+spiked
+spikelet
+spikelike
+spikenard
+spiker
+spikes
+spikier
+spiking
+spiky
+spile
+spiled
+spiles
+spiling
+spill
+spillable
+spillage
+spillage's
+spillages
+spilled
+spiller
+spillikin
+spillikins
+spilling
+spillover
+spillover's
+spillovers
+spills
+spillway
+spilosite
+spilt
+spilth
+spin
+spina
+spinach
+spinal
+spinally
+spinco
+spindle
+spindled
+spindlelegs
+spindler
+spindles
+spindling
+spindly
+spindrift
+spine
+spinel
+spineless
+spinelessly
+spinelessness
+spinelle
+spines
+spinescent
+spinet
+spinier
+spiniferous
+spinifex
+spininess
+spinless
+spinnability
+spinnaker
+spinner
+spinner's
+spinneret
+spinnerette
+spinners
+spinney
+spinneys
+spinning
+spinodal
+spinoff
+spinor
+spinose
+spinosely
+spinosity
+spinous
+spinout
+Spinoza
+Spinozism
+spinrad
+spins
+spinse
+spinster
+spinsterhood
+spinsterish
+spinthariscope
+spinule
+spinulose
+spiny
+spiracle
+spiracular
+spiraea
+spiral
+spiraled
+spiraling
+spiralization
+spiralization's
+spiralizations
+spiralize
+spiralizes
+spirally
+spirals
+spirant
+spire
+spire's
+spirea
+spired
+spireme
+spires
+spirillum
+spiring
+spirit
+spirited
+spiritedly
+spiritedness
+spiriting
+spiritism
+spiritist
+spiritistic
+spiritize
+spiritizes
+spiritless
+spiritlessly
+spiritlessness
+spiritoso
+spiritous
+spirits
+spiritual
+spiritualism
+spiritualist
+spiritualistic
+spirituality
+spiritualization
+spiritualization's
+spiritualizations
+spiritualize
+spiritualized
+spiritualizer
+spiritualizers
+spiritualizes
+spiritualizing
+spiritually
+spiritualness
+spirituals
+spiritualty
+spirituel
+spirituelle
+spirituous
+spiritus
+spirketting
+Spiro
+Spiro's
+spirochetal
+spirochete
+spirochete's
+spirochetes
+spirochetosis
+spirograph
+spirographic
+spirography
+spirogyra
+spiroid
+spirometer
+spirometer's
+spirometers
+spirometric
+spirometry
+spironolactone
+spirt
+spirula
+spiry
+spit
+spital
+spitball
+spitchcock
+spite
+spited
+spiteful
+spitefully
+spitefulness
+spites
+spitfire
+spithead
+spiting
+spits
+Spitsbergen
+spitsticker
+spitted
+spitter
+spitting
+spittle
+spittoon
+spittoons
+Spitz
+spiv
+Spivakov
+splake
+splanchnic
+splash
+splashback
+splashbacks
+splashboard
+splashdown
+splashdowns
+splashed
+splasher
+splashers
+splashes
+splashier
+splashily
+splashiness
+splashing
+splashy
+splat
+splatter
+splattered
+splay
+splayed
+splayfoot
+splayfooted
+spleen
+spleenful
+spleenwort
+spleeny
+splendent
+splendid
+splendidly
+splendidness
+splendiferous
+splendiferously
+splendiferousness
+splendor
+splendor's
+splendorous
+splendors
+splendrous
+splenectomized
+splenectomy
+splenetic
+splenetically
+splenic
+splenitis
+splenius
+splenomegaly
+splent
+spleuchan
+splice
+spliced
+splicer
+splicers
+splices
+splicing
+splicings
+spline
+spline's
+splined
+splines
+splint
+splinted
+splinter
+splintered
+splintering
+splinters
+splintery
+splinting
+splints
+split
+split's
+splits
+splitter
+splitter's
+splitters
+splitting
+splittings
+splodge
+splore
+splotch
+splotched
+splotches
+splotchy
+splurge
+splurges
+splurging
+splutter
+splutterer
+spluttery
+spock
+spode
+spodumene
+spoil
+spoilable
+spoilables
+spoilage
+spoiled
+spoiler
+spoilers
+spoilfive
+spoiling
+spoils
+spoilsman
+spoilsport
+spoilt
+Spokane
+spoke
+spoked
+spoken
+spokes
+spokeshave
+spokesman
+spokesmen
+spokespeople
+spokesperson
+spokesperson's
+spokespersons
+spokeswoman
+spoking
+spoliate
+spoliation
+spoliator
+spondaic
+spondee
+spondulix
+spondylitis
+sponge
+sponged
+sponger
+spongers
+sponges
+spongier
+spongin
+sponginess
+sponging
+spongioblast
+spongy
+sponsion
+sponson
+sponsor
+sponsored
+sponsorial
+sponsoring
+sponsors
+sponsorship
+spontaneity
+spontaneous
+spontaneously
+spontaneousness
+spontoon
+spoof
+spook
+spookier
+spookily
+spookiness
+spookish
+spooky
+spool
+spooled
+spooler
+spoolers
+spooling
+spools
+spoon
+spoonbill
+spoondrift
+spooned
+spoonerism
+spooney
+spoonful
+spoonfuls
+spoonier
+spooning
+spoons
+spoonsful
+spoony
+spoor
+sporades
+sporadic
+sporadically
+sporadicly
+sporangial
+sporangiophore
+sporangium
+spore
+spore's
+spored
+spores
+sporicidal
+sporicide
+sporiferous
+sporing
+sporocarp
+sporocyst
+sporocystic
+sporocyte
+sporogenesis
+sporogenic
+sporogenous
+sporogonic
+sporogonium
+sporogonos
+sporogony
+sporophore
+sporophyll
+sporophyte
+sporophytic
+sporopollenin
+sporotrichosis
+sporozoan
+sporozoite
+sporran
+sport
+sported
+sportful
+sportfully
+sportfulness
+sportier
+sportiest
+sportily
+sportiness
+sporting
+sportingly
+sportive
+sportively
+sportiveness
+sports
+sportscast
+sportsman
+sportsmanlike
+sportsmanly
+sportsmanship
+sportsmen
+sportswear
+sportswoman
+sportswrite
+sportswriter
+sportswriting
+sporty
+sporulate
+sporulation
+sporulative
+sporule
+Sposato
+spot
+spot's
+spotless
+spotlessly
+spotlessness
+spotlight
+spotlight's
+spotlighted
+spotlighting
+spotlights
+spots
+spottable
+spotted
+spotter
+spotter's
+spotters
+spottier
+spottily
+spottiness
+spotting
+spotty
+spousal
+spouse
+spouse's
+spouses
+spousing
+spout
+spouted
+spouter
+spouting
+spouts
+sprag
+Sprague
+Sprague's
+sprain
+sprained
+sprains
+sprang
+sprat
+Spratly
+sprawl
+sprawled
+sprawling
+sprawls
+spray
+sprayed
+sprayer
+spraying
+sprays
+spread
+spreadability
+spreadable
+spreader
+spreaders
+spreading
+spreadings
+spreads
+spreadsheet
+spreadsheets
+sprechgesang
+sprechstimme
+spree
+spree's
+sprees
+sprent
+sprier
+spriest
+sprig
+sprigging
+sprightful
+sprightfully
+sprightfulness
+sprightlier
+sprightliness
+sprightly
+sprigtail
+spring
+springal
+springald
+springboard
+springbok
+springboks
+springe
+springer
+springers
+Springfield
+Springhaas
+springhalt
+springhead
+springhouse
+springier
+springiest
+springily
+springiness
+springing
+springlet
+springs
+springtail
+springtails
+springtide
+springtime
+springvale
+springwood
+springy
+sprinkle
+sprinkled
+sprinkler
+sprinklered
+sprinkles
+sprinkling
+sprint
+sprinted
+sprinter
+sprinters
+sprinting
+sprints
+sprit
+sprite
+spritsail
+sprocket
+sprocketed
+sprocketing
+sprockets
+Sproul
+Sproul's
+sprout
+sprouted
+sprouting
+sprouts
+spruce
+spruced
+sprucely
+spruceness
+sprucer
+sprucest
+sprucier
+sprucing
+sprucy
+sprue
+spruik
+sprung
+spry
+spryer
+spryest
+spryly
+spryness
+SPSS
+spss
+spud
+spudded
+spudding
+Spuds
+spue
+spuggy
+spume
+spumescent
+spuming
+spumone
+spumoni
+spumous
+spumy
+spun
+spunk
+spunkie
+spunkier
+spunkily
+spunkiness
+spunky
+spur
+spur's
+spurge
+spurious
+spuriously
+spuriousness
+spurn
+spurned
+spurner
+spurning
+spurns
+spurred
+spurrey
+spurreys
+spurrier
+spurring
+spurry
+spurs
+spurt
+spurted
+spurting
+spurtle
+spurts
+sputa
+sputnik
+sputniks
+sputter
+sputtered
+sputterer
+sputum
+spuyten
+spy
+spyglass
+spying
+sqrt
+squab
+squabble
+squabbled
+squabbler
+squabbles
+squabbling
+squabs
+squacco
+squad
+squad's
+squadded
+squadding
+squadron
+squadron's
+squadrons
+squads
+squalane
+squalene
+squalid
+squalidly
+squalidness
+squall
+squall's
+squaller
+squallier
+squalls
+squally
+squalor
+squama
+squamae
+squamate
+squamation
+squamosal
+squamose
+squamous
+squamously
+squamulose
+squander
+squandered
+squanderer
+squandering
+squanders
+square
+squared
+squarely
+squareness
+squarer
+squares
+squarest
+squaresville
+Squaresville
+squaring
+squarish
+squarishly
+squarishness
+squark
+squarrose
+squash
+squashberry
+squashed
+squasher
+squashes
+squashier
+squashily
+squashiness
+squashing
+squashy
+squat
+squatly
+squatness
+squats
+squatted
+squatter
+squatters
+squattest
+squattier
+squatting
+squattocracy
+squatty
+squaw
+squawbush
+squawk
+squawked
+squawker
+squawking
+squawks
+squawroot
+squeak
+squeaked
+squeaker
+squeaking
+squeaks
+squeaky
+squeal
+squealed
+squealer
+squealing
+squeals
+squeamish
+squeamishly
+squeamishness
+squeegee
+squeegeed
+squeegeeing
+squeegees
+squeezability
+squeezable
+squeeze
+squeezed
+squeezer
+squeezes
+squeezing
+squelch
+squelched
+squelcher
+squelches
+squelching
+squelchy
+squeteague
+squib
+Squibb
+Squibbing
+squibs
+squid
+squidded
+squidding
+squids
+squiffed
+squiffy
+squiggle
+squiggled
+squiggles
+squiggling
+squiggly
+squilgee
+squill
+squilla
+squillae
+squills
+squinch
+squinnied
+squinny
+squinnying
+squint
+squinted
+squinter
+squinting
+squintingly
+squints
+squinty
+squirarchy
+squire
+squire's
+squirearchy
+squireen
+squirehood
+squires
+squiring
+squirish
+squirm
+squirmed
+squirming
+squirms
+squirmy
+squirrel
+squirreled
+squirrelfish
+squirreling
+squirrelly
+squirrels
+squirt
+squirted
+squirter
+squirting
+squirts
+squish
+squished
+squishes
+squishier
+squishiest
+squishiness
+squishing
+squishy
+squit
+squiz
+squoosh
+Sr
+Srbija
+Sri
+Sri's
+srinagar
+SSE
+SST
+SSW
+st
+stab
+stabat
+stabbed
+stabber
+stabbing
+stabile
+stabilities
+stability
+stability's
+stabilizable
+stabilization
+stabilization's
+stabilizations
+stabilize
+stabilized
+stabilizer
+stabilizers
+stabilizes
+stabilizing
+stable
+stableboy
+stabled
+stableman
+stablemate
+stablemen
+stableness
+stabler
+stables
+stablest
+stabling
+stablish
+stablishment
+stably
+stabroek
+stabs
+staccato
+staccatos
+stack
+stack's
+stackable
+stacked
+stacker
+stackframe
+stacking
+stacks
+stacte
+Stacy
+Stacy's
+staddle
+staddlestone
+stade
+Stade
+stadholder
+stadia
+stadiometer
+stadium
+stadium's
+stadiums
+stadtholder
+stadtholderate
+stadtholdership
+staff
+staff's
+staffa
+staffed
+staffer
+staffers
+staffing
+staffman
+Stafford
+Staffordshire
+staffs
+stag
+stag's
+stage
+stagecoach
+stagecraft
+staged
+stagehand
+stager
+stagers
+stages
+stagestruck
+stagey
+stagflation
+staggard
+stagger
+staggerbush
+staggered
+staggerer
+staggering
+staggeringly
+staggers
+staggery
+stagging
+staggy
+staghound
+stagier
+stagily
+staginess
+staging
+stagira
+Stagirite
+stagnancy
+stagnant
+stagnantly
+stagnate
+stagnated
+stagnates
+stagnating
+stagnation
+stags
+stagy
+Stahl
+Stahl's
+staid
+staidly
+staidness
+stain
+stainability
+stainable
+stained
+stainer
+staines
+staining
+stainless
+stainlessly
+stains
+stair
+stair's
+staircase
+staircase's
+staircases
+stairhead
+stairs
+stairway
+stairway's
+stairways
+stairwell
+stairwells
+stake
+staked
+stakeholder
+stakeout
+stakes
+Stakhanovism
+staking
+stalactite
+stalactite's
+stalactites
+stalactitic
+stalag
+stalagmite
+stalagmite's
+stalagmites
+stalagmitic
+stale
+staled
+stalely
+stalemate
+staleness
+staler
+stales
+stalest
+Staley
+Staley's
+Stalin
+Stalin's
+Stalinabad
+staling
+Stalingrad
+Stalinism
+Stalinist
+Stalinogrod
+Stalins
+Stalinsk
+stalk
+stalked
+stalker
+stalking
+stalkless
+stalks
+stalky
+stall
+stallard
+stalled
+stalling
+stallings
+stallion
+stallionize
+stallionizes
+stalls
+stalwart
+stalwartize
+stalwartizes
+stalwartly
+stalwartness
+stalworth
+stambul
+stamen
+stamen's
+stamens
+Stamford
+stamina
+staminal
+staminate
+staminode
+staminodium
+staminody
+stammel
+stammer
+stammered
+stammerer
+stammering
+stammers
+stamp
+stamped
+stampede
+stampeded
+stampeder
+stampedes
+stampeding
+stamper
+stampers
+stamping
+stamps
+Stan
+Stan's
+stance
+stance's
+stances
+stanch
+stancher
+stanchest
+stanchion
+stanchioned
+stanchioning
+stanchions
+stand
+standalone
+standard
+standardbred
+standardizable
+standardizable's
+standardizables
+standardization
+standardization's
+standardizations
+standardize
+standardized
+standardizer
+standardizers
+standardizes
+standardizing
+standardly
+standards
+standaway
+standby
+standbys
+standee
+stander
+standeth
+standfast
+standing
+standings
+Standish
+Standish's
+standoff
+standoffish
+standoffishly
+standoffishness
+standout
+standpat
+standpatter
+standpattism
+standpipe
+standpoint
+standpoint's
+standpoints
+stands
+standstill
+stane
+Stanford
+Stanford's
+stang
+Stanhope
+Stanhope's
+Stanislavsky
+stanite
+stank
+Stanley
+Stanleyville
+stannard
+stannaries
+stannary
+stannic
+stanniferous
+stannite
+stannous
+stannum
+stanovoi
+Stans
+stans
+Stanton
+stanza
+stanza's
+stanzaic
+stanzas
+stapedectomized
+stapedectomy
+stapedes
+stapedial
+stapelia
+stapes
+staph
+staphylinid
+staphylococcal
+staphylococcic
+staphylococcus
+staphyloplasty
+staphylorrhaphy
+staple
+stapled
+stapler
+staplers
+staples
+Stapleton
+stapling
+star
+star's
+stara
+starbird
+starboard
+starboarded
+starboarding
+starboards
+starch
+starched
+starches
+starchier
+starchily
+starchiness
+starching
+starchy
+stardom
+stardust
+stare
+stared
+starer
+stares
+starets
+starfish
+starflower
+Stargate
+Stargate's
+stargaze
+stargazer
+stargazes
+stargazing
+staring
+stark
+Starker
+starkest
+Starkey
+starkly
+starkness
+starless
+starlet
+starlet's
+starlets
+starlight
+starlike
+starling
+starlings
+starlit
+Starr
+starre
+starred
+starrier
+starring
+starry
+stars
+starship
+start
+startc
+started
+starter
+starters
+starting
+startle
+startled
+startles
+startling
+startlingly
+startlingness
+starts
+startup
+startup's
+startups
+starvation
+starve
+starved
+starveling
+starver
+starves
+starving
+starwort
+stases
+stash
+stashed
+stashes
+stashing
+stasis
+statable
+statant
+state
+state's
+stateable
+statecraft
+stated
+statedly
+statehood
+statehouse
+stateless
+statelessness
+statelier
+stateliness
+stately
+statement
+statement's
+statements
+Staten
+stater
+stateroom
+states
+stateside
+statesman
+statesman's
+statesmanlike
+statesmanly
+statesmanship
+statesmen
+statewide
+static
+statical
+statically
+statice
+statics
+stating
+station
+stational
+stationaries
+stationarily
+stationarity
+stationary
+stationed
+stationer
+stationeries
+stationery
+stationing
+stationmaster
+stations
+statism
+statist
+statistic
+statistic's
+statistical
+statistically
+statistician
+statistician's
+statisticians
+statisticize
+statisticizes
+statistics
+statius
+stative
+Statler
+stato
+statoblast
+statocyst
+statolatry
+statolith
+stator
+stators
+statoscope
+statuary
+statue
+statue's
+statued
+statues
+statuesque
+statuesquely
+statuesqueness
+statuette
+stature
+status
+statuses
+statutable
+statute
+statute's
+statutes
+statutorily
+statutoriness
+statutory
+statz
+Stauffer
+staunch
+staunchest
+staunchly
+staunchness
+Staunton
+staurolite
+staurolitic
+stauroscope
+Stavanger
+stave
+staved
+staves
+stavesacre
+staving
+Stavropol
+stavropoulos
+stay
+stayed
+stayer
+stayers
+staying
+stays
+staysail
+stdio
+stead
+steadfast
+steadfastly
+steadfastness
+steadied
+steadier
+steadies
+steadiest
+steadily
+steadiness
+steading
+steady
+steadying
+steak
+steak's
+steakhouse
+steaks
+steal
+stealer
+stealing
+steals
+stealth
+stealthier
+stealthily
+stealthiness
+stealthy
+steam
+steamboat
+steamboat's
+steamboats
+steamed
+steamer
+steamers
+steamie
+steamier
+steamily
+steaminess
+steaming
+steamroll
+steamroller
+steams
+steamship
+steamship's
+steamships
+steamtight
+steamy
+steapsin
+stearate
+stearic
+stearin
+stearine
+Stearns
+stearoptene
+steatite
+steatitic
+steatolysis
+steatopygia
+steatopygic
+steatorrhoea
+Steber
+stecher
+stedfast
+steed
+steeds
+steel
+Steele
+Steele's
+steeled
+steelers
+steelhead
+steelie
+steelier
+steelies
+steeliness
+steeling
+steelmaker
+steels
+steelwork
+steelworker
+steelworks
+steely
+steelyard
+Steen
+Steen's
+steenbok
+steep
+steeped
+steepen
+steepened
+steepening
+steeper
+steepest
+steeping
+steeple
+steeple's
+steeplebush
+steeplechase
+steeplechaser
+steeplejack
+steeples
+steeply
+steepness
+steeps
+steer
+steerable
+steerage
+steerageway
+steered
+steerer
+steering
+steers
+steersman
+steeve
+steeves
+steeving
+Stefan
+Stefan's
+Stefansson
+steffens
+Stegodon
+Stegomyia
+stegosaur
+stegosaurus
+Stegosaurus
+steichen
+Steier
+Steiermark
+stein
+Stein
+Steinbeck
+Steinbecks
+steinbecks
+Steinberg
+steiner
+steiners
+Steinitz
+stela
+stelae
+stelar
+stele
+Stella
+stellar
+stellarator
+stellate
+stelliferous
+stelliform
+stellify
+Stellite
+stellular
+stem
+stem's
+stemhead
+stemless
+stemma
+stemmata
+stemmed
+stemmer
+stemmier
+stemming
+stemmy
+stems
+stemson
+stemware
+stench
+stench's
+stenches
+stenchful
+stenchy
+stencil
+stencil's
+stenciled
+stenciler
+stencilers
+stenciling
+stencilize
+stencils
+Stendhal
+stendhal
+Stendler
+steno
+stenobathic
+stenograph
+stenographer
+stenographer's
+stenographers
+stenographic
+stenographically
+stenography
+stenohaline
+stenopetalous
+stenophagous
+stenophyllous
+stenos
+stenosed
+stenosis
+stenotherm
+stenothermal
+stenothermy
+stenotic
+stenotopic
+stenotropic
+stenotype
+stenotypist
+stenotypy
+stentor
+stentorian
+stentorophonic
+step
+step's
+stepbrother
+stepchild
+stepchildren
+stepdame
+stepdaughter
+stepfather
+stephan
+Stephan
+Stephanie
+Stephanie's
+stephanotis
+Stephen
+Stephens
+Stephenson
+stepladder
+stepladders
+steplike
+stepmother
+stepmother's
+stepmothers
+stepparent
+steppe
+stepped
+stepper
+steppes
+stepping
+steprelation
+steps
+stepsister
+stepson
+stepwise
+steradian
+stercoraceous
+stercoricolous
+sterculiaceous
+stere
+stereo
+stereo's
+stereobate
+stereochemical
+stereochemically
+stereochemistry
+stereochrome
+stereochromy
+stereogram
+stereogram's
+stereograms
+stereograph
+stereographic
+stereographically
+stereography
+stereoisomer
+stereoisomeric
+stereoisomerism
+stereoisomers
+stereological
+stereologically
+stereology
+stereometric
+stereometry
+stereomicroscope
+stereomicroscopic
+stereomicroscopically
+stereophonic
+stereophonically
+stereophony
+stereophotographic
+stereophotography
+stereopsis
+stereopticon
+stereoregular
+stereoregularity
+stereos
+stereoscope
+stereoscopic
+stereoscopically
+stereoscopy
+stereospecific
+stereospecifically
+stereospecificity
+stereotape
+stereotaxic
+stereotaxically
+stereotaxis
+stereotomy
+stereotropism
+stereotype
+stereotyped
+stereotyper
+stereotypers
+stereotypes
+stereotypic
+stereotypical
+stereotypically
+stereotyping
+stereotypy
+stereovision
+steric
+sterically
+sterics
+sterigma
+sterilant
+sterile
+sterility
+sterilizabilities
+sterilizability
+sterilizability's
+sterilizable
+sterilizable's
+sterilizables
+sterilization
+sterilization's
+sterilizations
+sterilize
+sterilized
+sterilizer
+sterilizers
+sterilizes
+sterilizing
+sterios
+sterlet
+sterling
+sterlingly
+sterlingness
+sterlitamak
+stern
+Stern
+sterna
+sternal
+Sternberg
+Sternberg's
+sterne
+sternforemost
+sternite
+sternly
+sternmost
+sternness
+Sterno
+sternocostal
+sternpost
+sterns
+sternson
+sternum
+sternutation
+sternutator
+sternutatory
+sternward
+sternwards
+sternway
+steroid
+steroidal
+steroidogenesis
+steroidogenic
+steroids
+sterol
+stertor
+stertorous
+stertorously
+stet
+stethoscope
+stethoscopic
+stethoscopically
+Stetson
+Stetsons
+stetted
+stettin
+stetting
+Steuben
+Steve
+Steve's
+stevedore
+stevedores
+Steven
+Steven's
+stevenage
+stevengraph
+Stevens
+Stevenson
+Stevie
+stevie
+stew
+steward
+steward's
+stewardess
+stewardesses
+stewards
+stewardship
+Stewart
+Stewart's
+stewed
+stewing
+stewpan
+stews
+steyr
+sthenic
+stheno
+stibine
+stibium
+stibnite
+stich
+stichometry
+stichomythia
+stichomythic
+stichomythy
+stick
+stickball
+sticked
+sticker
+stickers
+stickful
+stickhandler
+stickier
+stickiest
+stickily
+stickiness
+sticking
+stickit
+stickle
+stickleback
+stickled
+stickler
+stickling
+stickpin
+sticks
+stickseed
+sticktight
+stickum
+stickup
+stickweed
+stickwork
+sticky
+stickybeak
+sticle
+sticy
+stidger
+stiff
+stiffen
+stiffened
+stiffener
+stiffeners
+stiffening
+stiffens
+stiffer
+stiffest
+stiffish
+stiffly
+stiffness
+stiffnesses
+stiffs
+stifle
+stifled
+stifler
+stifles
+stifling
+stiflingly
+stigma
+stigmal
+stigmas
+stigmasterol
+stigmata
+stigmatic
+stigmatically
+stigmatism
+stigmatist
+stigmatization
+stigmatization's
+stigmatizations
+stigmatize
+stigmatized
+stigmatizer
+stigmatizers
+stigmatizes
+stigmatizing
+Stijl
+stilbene
+stilbestrol
+stilbite
+stile
+stile's
+stiles
+stiletto
+stilicho
+still
+stillage
+stillbirth
+stillbirths
+stillborn
+stilled
+stiller
+stillest
+stillicide
+stilliform
+stilling
+stillman
+stillness
+stillroom
+stills
+Stillson
+Stillsons
+stillwater
+stillwell
+Stillwell
+stilly
+stilt
+stilted
+stiltedly
+stiltedness
+Stilton
+stilts
+Stilwell
+stime
+Stimson
+stimulant
+stimulant's
+stimulants
+stimulate
+stimulated
+stimulates
+stimulating
+stimulation
+stimulations
+stimulative
+stimulator
+stimulators
+stimulatory
+stimuli
+stimulus
+sting
+stingaree
+stinger
+stingier
+stingily
+stinginess
+stinging
+stingingly
+stingless
+stingo
+stingray
+stingray's
+stingrays
+stings
+stingy
+stink
+stinkard
+stinkbug
+stinkbug's
+stinkbugs
+stinker
+stinkers
+stinkhorn
+stinking
+stinkingly
+stinko
+stinkpot
+stinkpotters
+stinks
+stinkstone
+stinkweed
+stinkwood
+stinky
+stint
+stint's
+stinted
+stinter
+stinting
+stints
+stion
+stioning
+stipe
+stiped
+stipel
+stipellate
+stipend
+stipend's
+stipendiary
+stipends
+stipes
+stipitate
+stipites
+stipple
+stippled
+stippler
+stipples
+stippling
+stipular
+stipulate
+stipulated
+stipulates
+stipulating
+stipulation
+stipulations
+stipulator
+stipulatory
+stipule
+stipuled
+stir
+stirabout
+stirk
+Stirling
+stirp
+stirpes
+stirps
+stirred
+stirrer
+stirrer's
+stirrers
+stirring
+stirringly
+stirrings
+stirrup
+stirrups
+stirs
+stitch
+stitched
+stitcher
+stitchery
+stitches
+stitching
+stitchwort
+stithies
+stithy
+stiver
+stoa
+stoat
+stoat's
+stoats
+stob
+stochastic
+stochastically
+stochasticity
+stock
+stockade
+stockade's
+stockaded
+stockades
+stockading
+stockbreeder
+stockbroker
+stockbrokerage
+stockbroking
+stockcar
+stocked
+stocker
+stockers
+stockfish
+Stockhausen
+stockholder
+stockholder's
+stockholders
+Stockholm
+stockier
+stockily
+stockiness
+stockinet
+stockinette
+stocking
+stockinged
+stockings
+stockish
+stockist
+stockjobber
+stockkeeper
+stockman
+stockpile
+stockpiler
+stockpiling
+Stockport
+stockpot
+stockproof
+stockroom
+stocks
+stocktaking
+Stockton
+Stockwood
+stocky
+stockyard
+stockynges
+stodge
+stodgier
+stodgily
+stodginess
+stodging
+stodgy
+stogie
+stogies
+stogy
+stoic
+stoical
+stoically
+stoichiometric
+stoichiometrically
+stoichiometry
+stoicism
+stoics
+stoke
+stoked
+stokehold
+stokehole
+stoker
+stokes
+stokesia
+stoking
+Stokowski
+Stokys
+STOL
+stole
+stole's
+stoled
+stolen
+stoles
+stolid
+stolidity
+stolidly
+stoll
+stollen
+stollens
+stolon
+stolonate
+stoloniferous
+stoloniferously
+stolzenbach
+stoma
+stomach
+stomachache
+stomached
+stomacher
+stomaches
+stomachic
+stomachically
+stomaching
+stomachs
+stomachy
+stomack
+stomal
+stomas
+stomata
+stomatal
+stomate
+stomatic
+stomatitis
+stomatologic
+stomatological
+stomatologist
+stomatology
+stomatoplasty
+stomatopod
+stomodaeal
+stomodaeum
+stomodeal
+stomodeum
+stomp
+stomped
+stomping
+stomps
+stone
+Stone
+Stone's
+stone's
+stoneboat
+stonecast
+stonechat
+stonecrop
+stonecutter
+stonecutters
+stonecutting
+stoned
+stonefish
+stonefly
+stoneground
+Stonehenge
+stonemason
+stonemasonry
+stonemasons
+stoner
+stones
+stonewall
+stoneware
+stonework
+stoneworker
+stonewort
+stoney
+stonier
+stonily
+stoniness
+stoning
+stonk
+stonkered
+stony
+stonyhearted
+stonyheartedness
+stood
+stooge
+stooges
+stooging
+stook
+stool
+stoolie
+stools
+stoop
+stoopball
+stooped
+stooping
+stoops
+stop
+stop's
+stopband
+stopcock
+stopcocks
+stope
+stopes
+stopgap
+stopgap's
+stopgaps
+stoplight
+stoplights
+stopover
+stopovers
+stoppable
+stoppage
+stoppages
+stoppard
+stopped
+stopper
+stopper's
+stoppered
+stoppering
+stoppers
+stopping
+stopple
+stoppled
+stoppling
+stops
+stopwatch
+stopwatches
+storable
+storage
+storage's
+storages
+storax
+store
+stored
+storefront
+storefront's
+storefronts
+storehouse
+storehouse's
+storehouses
+storekeep
+storekeeper
+storekeepers
+storeria
+storeroom
+stores
+storeship
+storewide
+Storey
+Storeyed
+storeyed
+Storeys
+storiated
+storied
+stories
+storing
+stork
+stork's
+storks
+storksbill
+storm
+stormbound
+stormed
+stormier
+stormiest
+stormily
+storminess
+storming
+stormproof
+storms
+stormy
+stornoway
+storr
+storrs
+Storting
+story
+story's
+storyboard
+storyboards
+storybook
+storybooks
+storying
+storyteller
+storytellers
+storytelling
+storywriter
+stoss
+stot
+stotinka
+stotious
+stotter
+Stouffer
+stound
+stoup
+stour
+Stourbridge
+stoush
+stout
+stouten
+stoutened
+stoutening
+stouter
+stoutest
+stouthearted
+stoutheartedly
+stoutheartedness
+stoutish
+stoutly
+stoutness
+stove
+stove's
+stovepipe
+stovepipes
+stover
+stoves
+stow
+stowage
+stowages
+stowaway
+stowaway's
+stowaways
+stowe
+Stowe
+stowed
+stowey
+stowing
+stows
+strabismic
+strabismus
+strabo
+strabotomy
+strachey
+straddle
+straddled
+straddler
+straddlers
+straddles
+straddling
+Stradivari
+Stradivarius
+strafaci
+strafe
+strafer
+strafes
+Strafford
+strafing
+straggle
+straggled
+straggler
+stragglers
+straggles
+stragglier
+straggling
+straggly
+straight
+straightaway
+straightbred
+straightedge
+straighten
+straightened
+straightener
+straighteners
+straightening
+straightens
+straighter
+straightest
+straightforward
+straightforwardly
+straightforwardness
+straightforwards
+straightish
+straightjacket
+straightlaced
+straightly
+straightness
+straightway
+strain
+strained
+strainer
+strainers
+straining
+strainometer
+strainometer's
+strainometers
+strains
+strait
+straiten
+straitened
+straitening
+straitjacket
+straitlaced
+straitlacedly
+straitlacedness
+straitly
+straitness
+straits
+strake
+Stralsund
+stram
+stramash
+stramonium
+stranahan
+strand
+stranded
+strandedness
+strander
+stranding
+strandline
+strandloper
+strands
+strange
+strangely
+strangeness
+stranger
+stranger's
+strangers
+strangest
+strangle
+strangled
+stranglehold
+strangler
+stranglers
+strangles
+strangling
+stranglings
+strangulate
+strangulated
+strangulation
+strangulation's
+strangulations
+strangury
+Stranraer
+strap
+strap's
+straphang
+straphanger
+strapless
+strappado
+strapped
+strapper
+strapping
+straps
+Strasbourg
+strata
+stratagem
+stratagem's
+stratagems
+Stratas
+strategem
+strategems
+strategic
+strategical
+strategically
+strategics
+strategies
+strategist
+strategists
+strategy
+strategy's
+Stratford
+strath
+Strathclyde
+strathspey
+strathspeys
+strati
+straticulate
+stratification
+stratificational
+stratifications
+stratified
+stratifies
+stratiform
+stratify
+stratifying
+stratigraphic
+stratigraphical
+stratigraphically
+stratigraphy
+stratocracy
+stratocumulus
+stratopause
+stratosphere
+stratospheric
+Stratton
+Stratton's
+stratum
+stratus
+Straus
+Strauss
+stravage
+Stravaig
+Stravinsky
+stravinsky
+straw
+straw's
+strawberries
+strawberry
+strawberry's
+strawboard
+strawflower
+strawflowers
+strawman
+straws
+strawworm
+stray
+stray's
+strayed
+strayer
+straying
+strays
+streak
+streaked
+streakier
+streakiness
+streaking
+streaks
+streaky
+stream
+streambed
+streamed
+streamer
+streamers
+streaming
+streamlet
+streamline
+streamlined
+streamliner
+streamlines
+streamlining
+streams
+streamside
+streamy
+streek
+street
+streetcar
+streetcar's
+streetcars
+streeters
+streetlight
+streets
+streetwalker
+streetwalking
+Streisand
+Strelitzia
+strength
+strengthen
+strengthened
+strengthener
+strengthening
+strengthens
+strengthless
+strengthlessness
+strengths
+strenuosity
+strenuous
+strenuously
+strenuousness
+strep
+strepitous
+streptobacillus
+streptococcal
+streptococcic
+streptococcus
+streptokinase
+streptolysin
+streptomyces
+streptomycete
+streptomycin
+streptothricin
+stress
+stressed
+stresses
+stressful
+stressfully
+stressing
+stressless
+stresslessness
+stressor
+stretch
+stretchability
+stretchable
+stretched
+stretcher
+stretchers
+stretches
+stretching
+stretchy
+Stretford
+stretta
+stretti
+stretto
+strettos
+Streusel
+strew
+strewing
+strewment
+strewn
+strews
+strewth
+stria
+striae
+striate
+striated
+striates
+striating
+striation
+strick
+stricken
+Strickland
+Strickland's
+strickle
+strickled
+strickling
+strict
+stricter
+strictest
+striction
+strictly
+strictness
+stricture
+strictures
+stridden
+stride
+stridence
+stridency
+strident
+stridently
+strider
+strides
+striding
+stridor
+stridulate
+stridulation
+stridulatory
+stridulous
+stridulously
+strife
+strifeless
+strigiform
+strigil
+strigose
+strike
+strikebound
+strikebreak
+strikebreaker
+strikebreakers
+strikebreaking
+strikeless
+strikeout
+strikeover
+striker
+strikers
+strikes
+striking
+strikingly
+strimon
+Strindberg
+strine
+string
+string's
+stringboard
+stringcourse
+stringed
+stringency
+stringendo
+stringent
+stringently
+stringer
+stringers
+stringhalt
+stringhalted
+stringier
+stringiest
+stringiness
+stringing
+stringless
+stringpiece
+strings
+stringy
+strip
+strip's
+stripe
+striped
+stripeless
+striper
+stripes
+stripfilm
+stripier
+striping
+stripling
+strippable
+stripped
+stripper
+stripper's
+strippers
+stripping
+strips
+stript
+striptease
+stripteaser
+stripy
+strive
+striven
+striver
+strives
+striving
+strivings
+strobe
+strobe's
+strobed
+strobes
+strobic
+strobila
+strobilaceous
+strobilar
+strobilation
+strobile
+strobilization
+strobilus
+strobing
+stroboscope
+stroboscopic
+stroboscopically
+strobotron
+strode
+stroganoff
+Stroheim
+stroke
+stroked
+strokefinder
+stroker
+strokers
+strokes
+stroking
+stroll
+strolled
+stroller
+strolling
+strolls
+Strom
+Strom's
+stroma
+stromal
+stromata
+stromatal
+stromatic
+stromatolite
+stromatolitic
+Stromberg
+stromboli
+stromeyerite
+strong
+strongbox
+stronger
+strongest
+Strongheart
+strongheart
+stronghold
+strongish
+strongly
+strongman
+strongroom
+strongrooms
+strongyle
+strontia
+strontian
+strontianite
+strontic
+strontium
+strop
+strophanthin
+Strophanthus
+strophe
+strophes
+strophic
+strophoid
+stropped
+stropping
+stroppy
+strops
+stroud
+strouding
+strove
+strow
+strowing
+stroy
+struck
+structural
+structuralism
+structuralist
+structuralists
+structuralization
+structuralization's
+structuralizations
+structuralize
+structuralizes
+structurally
+structure
+structured
+structureless
+structurelessness
+structurer
+structures
+structuring
+strudel
+struggle
+struggled
+struggler
+struggles
+struggling
+strum
+struma
+strumae
+strumas
+strummer
+strumming
+strumose
+strumpet
+strung
+strunt
+strut
+struthious
+struts
+strutted
+strutter
+strutting
+strychnic
+strychnine
+strychninism
+strychninization
+strychninization's
+strychninizations
+strychninize
+strychninizes
+Strymon
+Stu
+Stuart
+stub
+stub's
+stubbed
+stubbing
+stubble
+stubblefield
+Stubblefield
+Stubblefields
+stubblefields
+stubbly
+stubborn
+stubbornly
+stubbornness
+stubbs
+stubby
+stubs
+stucco
+stuccoes
+stuccowork
+stuck
+stud
+stud's
+studbook
+studbooks
+studded
+studding
+studdingsail
+Studebaker
+student
+student's
+students
+studentship
+studentships
+studhorse
+studied
+studiedly
+studiedness
+studier
+studies
+studio
+studio's
+studios
+studious
+studiously
+studiousness
+studs
+studwork
+study
+studying
+stuff
+stuffed
+stuffer
+stuffier
+stuffiest
+stuffily
+stuffiness
+stuffing
+stuffings
+stuffless
+stuffs
+stuffy
+stull
+stultification
+stultify
+stultifying
+stum
+stumble
+stumblebum
+stumbled
+stumbler
+stumbles
+stumbling
+stumblingly
+stumer
+stumming
+stump
+stumpage
+stumped
+stumper
+stumping
+stumps
+stumpy
+stun
+stung
+stunk
+stunned
+stunner
+stunning
+stunningly
+stuns
+stunsail
+stunt
+stunt's
+stunted
+stuntedness
+stunting
+stunts
+stupa
+stupe
+stupefacient
+stupefaction
+stupefy
+stupefying
+stupendous
+stupendously
+stupendousness
+stupid
+stupider
+stupidest
+stupidities
+stupidity
+stupidly
+stupidness
+stupor
+stuporous
+Sturbridge
+Sturbridge's
+sturch
+sturdier
+sturdily
+sturdiness
+sturdy
+sturgeon
+sturley
+Sturm
+Sturm's
+sturmer
+sturt
+stutter
+stuttered
+stutterer
+stuttering
+stutters
+Stuttgart
+Stuyvesant
+sty
+stye
+styes
+Stygian
+stying
+styka
+Stylar
+style
+stylebook
+styled
+styleless
+stylelessness
+styler
+stylers
+styles
+stylet
+styli
+styliform
+styling
+stylish
+stylishly
+stylishness
+stylist
+stylistic
+stylistically
+stylistics
+stylite
+stylites
+stylitic
+stylization
+stylization's
+stylizations
+stylize
+stylized
+stylizer
+stylizers
+stylizes
+stylizing
+stylobate
+stylograph
+stylographic
+stylographical
+stylographically
+stylography
+styloid
+stylolite
+stylopodium
+Stylops
+stylostixis
+stylus
+styluses
+stymie
+stymied
+stymieing
+stymies
+stypsis
+styptic
+styracaceous
+styrax
+styrene
+styrenes
+styria
+Styrofoam
+Styx
+suability
+suable
+suably
+suakin
+suasion
+suasive
+suasively
+suasiveness
+suave
+suavely
+suaveness
+suavity
+sub
+subacetate
+subacid
+subacidly
+subacidness
+subacute
+subacutely
+subadar
+subadult
+subaerial
+subaerially
+subagency
+subagent
+subah
+subahdar
+subalpine
+subaltern
+subalternate
+subalternately
+subalternation
+subangular
+subantarctic
+subapical
+Subapically
+subapostolic
+subaqua
+subaquatic
+subaqueous
+subarctic
+subarea
+subareas
+subarid
+subarmor
+subarmor's
+subarmors
+subassemblage
+subassemblages
+subassembly
+subastral
+subatmospheric
+subatomic
+subaudible
+subaudition
+subauricular
+subaverage
+subaxillary
+subbase
+subbasement
+subbass
+subbing
+subcabinet
+subcalibre
+subcapsular
+subcartilaginous
+subcaste
+subcategorizing
+subcelestial
+subcellular
+subcenter
+subcentral
+subcentrally
+subception
+subchain
+subchannels
+subchaser
+subchloride
+subclass
+subclass's
+subclasses
+subclassifications
+subclavian
+subclimax
+subclinical
+subclinically
+subcluster
+subclusters
+subcollegiate
+subcommand
+subcommands
+subcommittee
+subcommittee's
+subcommittees
+subcommunity
+subcompact
+subcomponent
+subcomponent's
+subcomponents
+subcomputation
+subcomputation's
+subcomputations
+subconcept
+subconscious
+subconsciously
+subconsciousness
+subconstituent
+subcontinent
+subcontinental
+subcontract
+subcontracting
+subcontractor
+subcontraoctave
+subcontrariety
+subcontrary
+subcool
+subcordate
+subcortex
+subcortical
+subcritical
+subcrustal
+subcultural
+subculture
+subculture's
+subcultures
+subcutaneous
+subcutaneously
+subdeacon
+subdeb
+subdebutante
+subdelirium
+subdepot
+subdiaconate
+subdirectories
+subdirectory
+subdistrict
+subdividable
+subdivide
+subdivided
+subdivider
+subdivides
+subdividing
+subdivision
+subdivision's
+subdivisions
+subdominance
+subdominant
+subduct
+subdue
+subdued
+subduedly
+subduer
+subdues
+subduing
+subedit
+subeditor
+subeditorial
+subelement
+subelements
+subemployed
+subemployment
+subentries
+subentry
+subepidermal
+subepidermally
+subepidermis
+subequatorial
+suberect
+suberic
+suberin
+suberization
+suberization's
+suberizations
+suberize
+suberized
+suberizes
+suberizing
+suberose
+subexpression
+subexpression's
+subexpressions
+subfamilies
+subfamily
+subfield
+subfield's
+subfields
+subfile
+subfile's
+subfiles
+subfix
+subflavor
+subflavor's
+subflavors
+subfloor
+subfossil
+subfreezing
+subfusc
+subgenus
+subglacial
+subglacially
+subglottal
+subgoal
+subgoal's
+subgoals
+subgrade
+subgrammar
+subgraph
+subgraphs
+subgross
+subgroup
+subgroup's
+subgrouping
+subgroups
+subhead
+subheading
+subhuman
+subhumanity
+subi
+subic
+subindex
+subinfeud
+subinfeudate
+subinfeudation
+subinfeudatory
+subinstance
+subinstances
+subinterval
+subinterval's
+subintervals
+subirrigate
+subirrigation
+subito
+subj
+subjacency
+subjacent
+subjacently
+subject
+subject's
+subjected
+subjectify
+subjecting
+subjection
+subjective
+subjectively
+subjectiveness
+subjectivism
+subjectivist
+subjectivistic
+subjectivists
+subjectivity
+subjectivization
+subjectivize
+subjectivizes
+subjectless
+subjects
+subjoin
+subjugate
+subjugated
+subjugates
+subjugating
+subjugation
+subjugator
+subjunction
+subjunctive
+subkingdom
+sublanguage
+sublanguages
+sublapsarianism
+sublate
+sublated
+sublating
+sublation
+sublease
+sublet
+sublethal
+sublethally
+sublevel
+sublicense
+sublicensed
+sublicenser
+sublicenses
+sublicensing
+sublieutenant
+sublimable
+sublimate
+sublimated
+sublimates
+sublimating
+sublimation
+sublimations
+sublime
+sublimed
+sublimely
+sublimeness
+sublimer
+subliminal
+subliminally
+subliming
+sublimity
+sublimize
+sublimizes
+sublingual
+sublist
+sublist's
+sublists
+subliterary
+subliterature
+sublittoral
+sublunar
+sublunary
+subluxation
+submachine
+submandibular
+submarginal
+submarginally
+submarine
+submarined
+submariner
+submariners
+submarines
+submarining
+submaxilla
+submaxillary
+submediant
+submental
+submerge
+submerged
+submergence
+submerges
+submergible
+submerging
+submerse
+submersed
+submersible
+submersing
+submersion
+submicrogram
+submicrogram's
+submicrograms
+submicron
+submicroscopic
+submicroscopically
+subminiature
+subminiaturization
+subminiaturize
+subminiaturized
+subminiaturizes
+subminiaturizing
+submiss
+submission
+submission's
+submissions
+submissive
+submissively
+submissiveness
+submit
+submitochondrial
+submits
+submittal
+submitted
+submitter
+submitters
+submitting
+submode
+submodes
+submodule
+submodule's
+submodules
+submontane
+submucosa
+submucosal
+submucosally
+submucous
+submultiple
+subnational
+subnet
+subnets
+subnetwork
+subnetwork's
+subnetworks
+subnormal
+subnormality
+subnormally
+suboceanic
+subopposite
+suboptimal
+suboptimum
+suborbicular
+suborbital
+suborder
+subordinary
+subordinate
+subordinated
+subordinately
+subordinateness
+subordinates
+subordinating
+subordination
+subordinationism
+subordinative
+subordinator
+suborn
+subornation
+suborned
+suborner
+suborning
+suborns
+subotica
+subovate
+suboxide
+suboxides
+subpage
+subpanel
+subpanels
+subpar
+subparagraph
+subparallel
+subparameter
+subparameters
+subpart
+subparts
+subphylum
+subplot
+subplots
+subpoena
+subpoenaed
+subpoenas
+subpolar
+subpopulation
+subpopulations
+subpotency
+subpotent
+subprincipal
+subproblem
+subproblem's
+subproblems
+subprocess
+subprocess's
+subprocesses
+subprocessor
+subprofessional
+subprogram
+subprogram's
+subprograms
+subproject
+subproof
+subproof's
+subproofs
+subpulverizer
+subpulverizer's
+subpulverizers
+subquestion
+subquestion's
+subquestions
+subrange
+subrange's
+subranges
+subregion
+subregional
+subregionally
+subregions
+subreption
+subreptitious
+subreptitiously
+subring
+subrogate
+subrogation
+subroutine
+subroutine's
+subroutines
+subs
+subsaline
+subsample
+subsamples
+subsatellite
+subsaturated
+subsaturation
+subscan
+subscans
+subscapular
+subschema
+subschema's
+subschemas
+subscribe
+subscribed
+subscriber
+subscribers
+subscribes
+subscribing
+subscript
+subscripted
+subscripting
+subscription
+subscription's
+subscriptions
+subscripts
+subsectio
+subsection
+subsection's
+subsections
+subsegment
+subsegment's
+subsegments
+subsentence
+subsequence
+subsequence's
+subsequences
+subsequent
+subsequently
+subsequentness
+subserve
+subservience
+subserviency
+subservient
+subserviently
+subset
+subset's
+subsets
+subshrub
+subshrubby
+subside
+subsided
+subsidence
+subsides
+subsidiaries
+subsidiarily
+subsidiary
+subsidiary's
+subsidies
+subsiding
+subsidizable
+subsidizable's
+subsidizables
+subsidization
+subsidization's
+subsidizations
+subsidize
+subsidized
+subsidizer
+subsidizers
+subsidizes
+subsidizing
+subsidy
+subsidy's
+subsist
+subsisted
+subsistence
+subsistent
+subsisting
+subsists
+subsocial
+subsocietal
+subsoil
+subsoiler
+subsolar
+subsonic
+subsonically
+subspace
+subspace's
+subspaces
+subspecialize
+subspecializes
+subspecialties
+subspecialty
+subspecialty's
+subspecies
+subspecific
+substage
+substance
+substance's
+substanceless
+substances
+substandard
+substandardize
+substandardizes
+substantial
+substantialism
+substantiality
+substantialize
+substantializes
+substantially
+substantialness
+substantiate
+substantiated
+substantiates
+substantiating
+substantiation
+substantiations
+substantiative
+substantival
+substantivally
+substantive
+substantively
+substantiveness
+substantivity
+substantivize
+substantivizes
+substation
+substations
+substerilization
+substituent
+substituents
+substitutability
+substitutable
+substitute
+substituted
+substituter
+substitutes
+substituting
+substitution
+substitutional
+substitutionally
+substitutionary
+substitutions
+substitutive
+substitutively
+substomatal
+substrate
+substrate's
+substrates
+substratosphere
+substratospheric
+substratum
+substring
+substrings
+substructural
+substructure
+substructure's
+substructures
+subsume
+subsumed
+subsumes
+subsuming
+subsumption
+subsurface
+subsystem
+subsystem's
+subsystems
+subtable
+subtables
+subtangent
+subtask
+subtask's
+subtasks
+subteen
+subtemperate
+subtenancy
+subtenant
+subtend
+subtended
+subtends
+subterfuge
+subterfuges
+subterminal
+subternatural
+subterranean
+subterraneanize
+subterraneanizes
+subterraneanly
+subterraneous
+subtest
+subtetanic
+subthreshold
+subtile
+subtilely
+subtileness
+subtiler
+subtilest
+subtilis
+subtilisin
+subtilization
+subtilization's
+subtilizations
+subtilize
+subtilizer
+subtilizers
+subtilizes
+subtilty
+subtitle
+subtitle's
+subtitled
+subtitles
+subtitling
+subtle
+subtleness
+subtler
+subtlest
+subtleties
+subtlety
+subtly
+subtonic
+subtopic
+subtopic's
+subtopics
+subtorrid
+subtotal
+subtotaled
+subtotaling
+subtotals
+subtract
+subtracted
+subtracter
+subtracter's
+subtracters
+subtracting
+subtraction
+subtractions
+subtractive
+subtracts
+subtrahend
+subtrahend's
+subtrahends
+subtreasury
+subtree
+subtree's
+subtrees
+subtropic
+subtropical
+subtropics
+subtype
+subtypes
+subufd
+subufds
+subulate
+subunit
+subunit's
+subunits
+suburb
+suburb's
+suburban
+suburbanite
+suburbanites
+suburbanization
+suburbanization's
+suburbanizations
+suburbanize
+suburbanized
+suburbanizes
+suburbanizing
+suburbia
+suburbicarian
+suburbs
+subvene
+subvention
+subventionary
+subversion
+subversionary
+subversive
+subversively
+subversiveness
+subversives
+subvert
+subverted
+subverter
+subverting
+subverts
+subviral
+subvitalized
+subvitalized's
+subvitalizeds
+subvocal
+subvocally
+subway
+subway's
+subways
+subzero
+succedaneous
+succedaneum
+succedent
+succeed
+succeeded
+succeeder
+succeeding
+succeeds
+succentor
+succeptibility
+success
+successes
+successful
+successfully
+successfulness
+succession
+succession's
+successional
+successionally
+successions
+successive
+successively
+successiveness
+successor
+successor's
+successors
+successorship
+successsive
+succinate
+succinct
+succinctly
+succinctness
+succinic
+succinyl
+succinylcholine
+succor
+succorable
+succorable's
+succorables
+succored
+succorer
+succorer's
+succorers
+succoring
+succorless
+succorlesses
+succors
+succory
+succotash
+succoth
+succuba
+succubi
+succubus
+succulence
+succulent
+succulently
+succumb
+succumbed
+succumbing
+succumbs
+succursal
+succuss
+such
+suchlike
+suck
+sucked
+sucker
+suckered
+suckerfish
+suckering
+suckers
+sucking
+suckle
+suckled
+suckles
+suckling
+sucks
+sucrase
+sucre
+sucrose
+suction
+suctional
+suctorial
+suctorian
+Sudan
+Sudanese
+Sudanic
+sudanic
+sudarium
+sudatorium
+sudatory
+sudbury
+sudd
+sudden
+suddenly
+suddenness
+Sudetenland
+sudetes
+sudor
+sudoriferous
+sudorific
+Sudra
+suds
+sudser
+sudsier
+sudsing
+sudsless
+sudsy
+sue
+sued
+suede
+sueded
+sueding
+suer
+sues
+suet
+suetonius
+suey
+Suez
+suff
+suffer
+sufferable
+sufferableness
+sufferably
+sufferage
+sufferance
+suffered
+sufferer
+sufferers
+suffering
+sufferings
+suffers
+suffice
+sufficed
+sufficer
+suffices
+sufficiency
+sufficient
+sufficiently
+sufficing
+suffiency
+suffix
+suffixation
+suffixed
+suffixer
+suffixes
+suffixing
+sufflate
+suffocate
+suffocated
+suffocates
+suffocating
+suffocatingly
+suffocation
+suffocative
+Suffolk
+suffragan
+suffrage
+suffragette
+suffragettes
+suffragist
+suffragists
+suffruticose
+suffumigate
+suffuse
+suffused
+suffuses
+suffusing
+suffusion
+suffusive
+Sufi
+Sufism
+sufu
+sugar
+sugarcane
+sugarcoat
+sugared
+sugarhouse
+sugaring
+sugarings
+sugarloaf
+sugarplum
+sugars
+sugary
+suggest
+suggested
+suggester
+suggestibility
+suggestible
+suggestibly
+suggesting
+suggestion
+suggestion's
+suggestionize
+suggestionizes
+suggestions
+suggestive
+suggestively
+suggestiveness
+suggests
+suharto
+suicidal
+suicidally
+suicide
+suicide's
+suicided
+suicides
+suiciding
+suing
+suint
+suisse
+suit
+suit's
+suitability
+suitable
+suitableness
+suitably
+suitcase
+suitcase's
+suitcases
+suite
+suited
+suiters
+suites
+suiting
+suitor
+suitor's
+suitors
+suits
+sukarnapura
+Sukarno
+sukarno
+sukhumi
+sukiyaki
+sukkoth
+sulamite
+sulamith
+sulcate
+sulci
+sulcus
+suleiman
+sulfa
+sulfadiazine
+sulfanilamide
+sulfaquinoxaline
+sulfatase
+sulfate
+sulfated
+sulfatide
+sulfatides
+sulfating
+sulfatize
+sulfatizes
+sulfhydryl
+sulfide
+sulfinyl
+sulfite
+sulfitic
+sulfonamide
+sulfonamides
+sulfonate
+sulfonation
+sulfone
+sulfonic
+sulfonium
+sulfonmethane
+sulfonyl
+sulfonylurea
+sulfoxide
+sulfur
+sulfured
+sulfureous
+sulfureously
+sulfureousness
+sulfuret
+sulfuric
+sulfuring
+sulfurization
+sulfurization's
+sulfurizations
+sulfurize
+sulfurizes
+sulfurous
+sulfurously
+sulfurousness
+sulfuryl
+sulk
+sulked
+sulkies
+sulkily
+sulkiness
+sulking
+sulks
+sulky
+sulla
+sullage
+sullen
+sullenly
+sullenness
+sullied
+sullies
+Sullivan
+sully
+sullying
+sulphadiazine
+sulphanilamide
+sulphate
+sulphates
+sulphathiazole
+sulphide
+sulphinyl
+sulphisoxazole
+sulphite
+sulphonamide
+sulphonate
+sulphonated
+sulphone
+sulphonic
+sulphonium
+sulphonmethane
+sulphonyl
+sulphur
+sulphurate
+sulphured
+sulphuret
+sulphuretted
+sulphuric
+sulphurization
+sulphurization's
+sulphurizations
+sulphurize
+sulphurizes
+sulphurou
+sulphurous
+sulphuryl
+sultan
+sultan's
+sultana
+Sultanabad
+sultanate
+sultaness
+sultanize
+sultanizes
+sultans
+sultrier
+sultrily
+sultriness
+sultry
+Sulu
+sulzberger
+Sulzberger
+sum
+sum's
+sumac
+sumach
+Sumatra
+Sumba
+Sumbawa
+sumer
+Sumeria
+Sumerian
+summa
+summability
+summable
+summae
+summand
+summand's
+summands
+summaries
+summarily
+summarization
+summarization's
+summarizations
+summarize
+summarized
+summarizer
+summarizers
+summarizes
+summarizing
+summary
+summary's
+summated
+summates
+summating
+summation
+summation's
+summational
+summations
+summed
+summer
+summer's
+Summerdale
+summered
+summerhouse
+summering
+summerize
+summerizes
+summers
+Summers
+summersault
+summertime
+summerweight
+summerwood
+summery
+summing
+summit
+summitry
+summon
+summoned
+summoner
+summoners
+summoning
+summons
+summonses
+Sumner
+Sumner's
+Sumo
+sump
+sumpter
+sumptuary
+sumptuous
+sumptuously
+sumptuousness
+sums
+Sumter
+sumy
+sun
+sun's
+sunay
+sunbake
+sunbaked
+sunbath
+sunbathe
+sunbather
+sunbeam
+sunbeam's
+sunbeams
+Sunbelt
+Sunbelt's
+sunbird
+sunbonnet
+sunbow
+sunburn
+sunburnt
+sunburst
+sunbursts
+sundae
+sundaes
+Sunday
+Sunday's
+Sundays
+sunder
+sundered
+sundering
+Sunderland
+sunders
+sundew
+sundial
+sundials
+sundog
+sundown
+sundowner
+sundowners
+sundress
+sundresses
+sundries
+sundrops
+sundry
+sundsvall
+sunfast
+sunfish
+sunflower
+sung
+sungari
+sungkiang
+sunglass
+sunglasses
+sunglow
+sungrebe
+sunhat
+sunk
+sunken
+sunlamp
+sunless
+sunlight
+sunlights
+sunlit
+sunn
+sunna
+sunned
+Sunni
+sunnier
+sunnily
+sunniness
+sunning
+Sunnite
+sunny
+Sunnyvale
+sunray
+sunrise
+sunrises
+sunroof
+suns
+sunscald
+sunscreen
+sunscreen's
+sunscreening
+sunscreens
+sunset
+sunsets
+sunshade
+sunshades
+sunshine
+sunshines
+sunshiny
+sunspot
+sunstar
+sunstroke
+sunstruck
+sunsuit
+suntan
+suntanned
+suntanning
+suntrap
+sunup
+sunward
+sunwards
+sunwise
+SUNY
+suo
+Suomi
+sup
+super
+superable
+superableness
+superably
+superabound
+superabundance
+superabundant
+superabundantly
+superacknowledgment
+superacknowledgment's
+superacknowledgments
+superadd
+superaddition
+superagency
+superaltar
+superaltern
+superannuate
+superannuated
+superannuation
+superb
+superbazaar
+superblock
+superbly
+superbness
+supercalender
+supercanonization
+supercanonization's
+supercanonizations
+supercarbonization
+supercarbonization's
+supercarbonizations
+supercarbonize
+supercarbonizes
+supercargo
+supercede
+superceded
+supercedes
+supercharge
+supercharger
+superciliary
+supercilious
+superciliously
+superciliousness
+supercity
+supercivilization
+supercivilization's
+supercivilizations
+supercivilized
+supercivilized's
+supercivilizeds
+superclass
+superclass's
+supercolumnar
+supercomputer
+supercomputer's
+supercomputers
+supercomputing
+superconcept
+superconduct
+superconducting
+superconduction
+superconductive
+superconductivity
+superconductor
+superconductors
+supercool
+supercritical
+supercurrent
+superdense
+superdominant
+supered
+superego
+superego's
+superegos
+superelevate
+superelevation
+supereminence
+supereminent
+supereminently
+superemphasize
+superemphasizes
+superempirical
+superencipher
+superencipherment
+supererogate
+supererogation
+supererogatory
+superfamily
+superfecundation
+superfemale
+superfetation
+superficial
+superficiality
+superficialize
+superficializes
+superficially
+superficialness
+superficies
+superfine
+superfix
+superfluid
+superfluidity
+superfluities
+superfluity
+superfluity's
+superfluous
+superfluously
+superfluousness
+superfuse
+supergalaxy
+supergene
+supergiant
+superglacial
+superheat
+superheater
+superheats
+superhero
+superhet
+superheterodyne
+superhigh
+superhighway
+superhighways
+superhuman
+superhumanity
+superhumanize
+superhumanizes
+superhumanly
+superhumanness
+superhumeral
+superieure
+superimposable
+superimpose
+superimposed
+superimposes
+superimposing
+superimposition
+superincumbent
+superincumbently
+superindividual
+superinduce
+superinduction
+superinfection
+supering
+superintend
+superintendence
+superintendency
+superintendent
+superintendent's
+superintendents
+superior
+superior's
+superiority
+superiorly
+superiors
+superjacent
+superjet
+superlanguage
+superlative
+superlatively
+superlativeness
+superlatives
+superliner
+superload
+superluminal
+superlunar
+superlunary
+supermachine
+supermale
+superman
+Superman's
+supermarket
+supermarket's
+supermarkets
+supermodel
+supermodels
+supermundane
+supernal
+supernally
+supernatant
+supernational
+supernatural
+supernaturalism
+supernaturalist
+supernaturalistic
+supernaturalize
+supernaturalizes
+supernaturally
+supernaturalness
+supernormal
+supernormality
+supernormally
+supernova
+supernova's
+supernovae
+supernovas
+supernumerary
+superorder
+superordinate
+superorganic
+superorganism
+superorganization
+superorganization's
+superorganizations
+superorganize
+superorganizes
+superovulation
+superoxide
+superparasitism
+superpatriot
+superpatriotic
+superpatriotism
+superphosphate
+superphysical
+superposable
+superpose
+superposed
+superposes
+superposing
+superposition
+superpositions
+superpower
+superpowered
+superpowers
+superpredicate
+supersaturate
+supersaturated
+supersaturation
+superscribe
+superscript
+superscripted
+superscripting
+superscription
+superscripts
+supersede
+supersedeas
+superseded
+superseder
+supersedes
+superseding
+supersedure
+supersensible
+supersensitive
+supersensitiveness
+supersensitization
+supersensitization's
+supersensitizations
+supersensory
+superserviceable
+supersession
+supersessive
+superset
+superset's
+supersets
+supersex
+supersonic
+supersonically
+supersonics
+superspecialize
+superspecializes
+superstar
+superstition
+superstition's
+superstitions
+superstitious
+superstitiously
+superstitiousness
+superstratum
+superstruct
+superstructural
+superstructure
+superstructures
+supersubstantial
+supersubtilized
+supersubtilized's
+supersubtilizeds
+supersubtle
+supersubtlety
+supersulphurize
+supersulphurizes
+supersystem
+supertanker
+supertax
+supertitle
+supertitle's
+supertitled
+supertitles
+supertitling
+supertonic
+superuser
+superuser's
+superusers
+supervene
+supervened
+supervenience
+supervenient
+supervention
+supervise
+supervised
+supervisee
+supervises
+supervising
+supervision
+supervisions
+supervisor
+supervisor's
+supervisors
+supervisory
+supinate
+supination
+supinator
+supine
+supinely
+supineness
+suplex
+supper
+supper's
+suppers
+supping
+suppl
+supplant
+supplantation
+supplanted
+supplanter
+supplanting
+supplants
+supple
+suppled
+supplejack
+supplely
+supplement
+supplemental
+supplementaries
+supplementary
+supplementation
+supplemented
+supplementer
+supplementing
+supplements
+suppleness
+suppler
+suppletion
+suppletive
+suppletory
+suppliance
+suppliant
+suppliantly
+supplicant
+supplicant's
+supplicantly
+supplicants
+supplicate
+supplicating
+supplication
+supplicatory
+supplied
+supplier
+supplier's
+suppliers
+supplies
+suppling
+supply
+supply's
+supplying
+support
+supportability
+supportable
+supportableness
+supportably
+supported
+supporter
+supporters
+supporting
+supportingly
+supportive
+supportively
+supports
+supposable
+supposably
+supposal
+suppose
+supposed
+supposedly
+supposer
+supposes
+supposing
+supposition
+supposition's
+suppositional
+suppositionally
+suppositions
+suppositious
+supposititious
+supposititiously
+supposititiousness
+suppositive
+suppositively
+suppositories
+suppository
+suppress
+suppressant
+suppressed
+suppresses
+suppressibility
+suppressible
+suppressing
+suppression
+suppressions
+suppressive
+suppressiveness
+suppressor
+suppressors
+suppurate
+suppuration
+suppurative
+supr
+supra
+supraglottal
+supralapsarian
+supralaryngeal
+supraliminal
+supraliminally
+supramolecular
+supranational
+supranationalism
+supranationalist
+supranationality
+supraorbital
+supraprotest
+suprarational
+suprarenal
+suprasegmental
+supravital
+supravitally
+supremacist
+supremacy
+suprematism
+supreme
+supremely
+supremeness
+supremo
+supremum
+suqutra
+sur
+sura
+surah
+surakarta
+sural
+surat
+surbase
+surbased
+surcease
+surceased
+surceasing
+surcharge
+surcharged
+surcharges
+surcharging
+surcingle
+surcliffe
+surcoat
+surcoats
+surculose
+surd
+sure
+sured
+surefire
+surefooted
+surefootedly
+surefootedness
+surely
+sureness
+surer
+surest
+sureties
+surety
+suretyship
+surf
+surfable
+surface
+surfaced
+surfaceness
+surfacer
+surfacers
+surfaces
+surfacing
+surfactant
+surfactants
+surfbird
+surfbirds
+surfboard
+surfboarder
+surfboards
+surfboat
+surfboats
+surfcasting
+surfeit
+surfeited
+surfeiter
+surfeits
+surfer
+surfer's
+surfers
+surficial
+surfie
+surfing
+surfperch
+surg
+surge
+surged
+surgely
+surgeon
+surgeon's
+surgeoncy
+surgeonfish
+surgeons
+surgeries
+surgerize
+surgerizes
+surgery
+surges
+surgical
+surgically
+surging
+suribachi
+suricate
+Surinam
+Suriname
+surjection
+surjective
+surlier
+surlily
+surliness
+surly
+surmise
+surmised
+surmiser
+surmises
+surmising
+surmount
+surmountable
+surmounted
+surmounting
+surmounts
+surmullet
+surname
+surname's
+surnamed
+surnames
+surpass
+surpassable
+surpassed
+surpasses
+surpassing
+surpassingly
+surplice
+surplus
+surplus's
+surplusage
+surpluses
+surprint
+surprisal
+surprise
+surprise's
+surprised
+surpriser
+surprises
+surprising
+surprisingly
+surra
+surreal
+surrealism
+surrealist
+surrealistic
+surrealistically
+surrealists
+surrebuttal
+surrebutter
+surrejoinder
+surrender
+surrendered
+surrenderer
+surrendering
+surrenders
+surreptitious
+surreptitiously
+surreptitiousness
+surrey
+surreys
+surrogate
+surrogate's
+surrogates
+surrogation
+surround
+surrounded
+surrounding
+surroundings
+surrounds
+surroyal
+sursum
+surtax
+surtout
+surveil
+surveillance
+surveillances
+surveillant
+survey
+surveyed
+surveying
+surveyor
+surveyor's
+surveyors
+surveys
+survivability
+survivable
+survival
+survivalist
+survivalists
+survivals
+survivance
+survive
+survived
+surviver
+survives
+surviving
+survivor
+survivor's
+survivors
+survivorship
+Sus
+susa
+susah
+Susan
+Susan's
+Susanna
+Susanne
+Susanne's
+susceptance
+susceptibility
+susceptible
+susceptive
+susceptiveness
+susceptivity
+suseptible
+sushi
+Susian
+Susie
+Susie's
+suslik
+suspect
+suspected
+suspecter
+suspecting
+suspects
+suspend
+suspended
+suspender
+suspender's
+suspenders
+suspending
+suspends
+suspense
+suspenseful
+suspenses
+suspension
+suspensions
+suspensive
+suspensively
+suspensoid
+suspensor
+suspensory
+suspicion
+suspicion's
+suspicioned
+suspicioning
+suspicions
+suspicious
+suspiciously
+suspiciousness
+suspiration
+suspire
+suspired
+suspiring
+Susquehanna
+susquehanna
+Susquehanna's
+suss
+Sussex
+Sussex's
+susso
+sustain
+sustainable
+sustained
+sustainer
+sustaining
+sustainment
+sustains
+sustenance
+sustentacular
+sustentation
+sustentative
+sustention
+Susu
+susurrant
+susurrate
+susurration
+susurrous
+susurrus
+Sutcliffe
+Sutherland
+Sutherland's
+sutlej
+sutler
+sutra
+suttee
+Sutton
+Sutton's
+sutural
+suturally
+suture
+sutured
+sutures
+suturing
+suva
+Suvorov
+Suwanee
+Suwanee's
+Suwannee
+Suzanne
+Suzanne's
+suzerain
+suzerainty
+Suzuki
+Suzuki's
+Svalbard
+svelte
+sveltely
+svelteness
+Sverdlovsk
+sverige
+Svetlana
+Svetlana's
+Svetlanov
+svizzera
+SW
+swab
+swabbed
+swabber
+swabbie
+swabbies
+swabbing
+swabby
+Swabia
+Swabian
+Swabian's
+Swabians
+swabs
+swacked
+swaddle
+swaddled
+swaddling
+swadesh
+Swadeshi
+swag
+swage
+swagger
+swaggered
+swaggering
+swagging
+swaging
+swagman
+Swahili
+Swahili's
+swain
+swain's
+swainish
+swainishness
+swains
+swale
+swallow
+swallowable
+swallowed
+swallower
+swallowing
+swallows
+swallowtail
+swallowwort
+swam
+swami
+swamp
+swamped
+swamper
+swampier
+swampiness
+swamping
+swampland
+swampland's
+swamplands
+swamps
+swampy
+swan
+swan's
+swanage
+Swanee
+swang
+swanherd
+swank
+swanker
+swankier
+swankily
+swankiness
+swanky
+swanlike
+swannery
+swanning
+swans
+swansdown
+Swansea
+Swansea's
+swanskin
+Swanson
+swap
+swappable
+swapped
+swapper
+swapper's
+swappers
+swapping
+swaps
+swaraj
+sward
+swarf
+swarm
+swarmed
+swarmer
+swarming
+swarms
+swart
+swarthier
+swarthiness
+Swarthmore
+Swarthout
+Swarthout's
+swarthy
+swartness
+swartz
+Swartz
+swash
+swashbuckle
+swashbuckler
+swashbuckling
+swasher
+swastika
+swat
+swatch
+swatches
+swath
+swath's
+swathe
+swathed
+swather
+swathes
+swathing
+swathings
+Swatow
+swats
+swatted
+swatter
+swatting
+sway
+swayback
+swaybacked
+swayed
+swayer
+swaying
+sways
+Swazi
+Swaziland
+swear
+swearer
+swearing
+swears
+swearword
+sweat
+sweatband
+sweatbox
+sweated
+sweater
+sweaters
+sweatier
+sweatily
+sweatiness
+sweating
+sweatpants
+sweats
+sweatshirt
+sweatshop
+sweatshop's
+sweatshops
+sweatsocks
+sweaty
+sweazey
+Swede
+Sweden
+Swedenborg
+Swedenborgianism
+Swedes
+Swedish
+sweelinck
+Sweeney
+Sweeneys
+Sweeny
+sweep
+sweepback
+sweeper
+sweepers
+sweepier
+sweeping
+sweepingly
+sweepingness
+sweepings
+sweeps
+sweepstake
+sweepstakes
+sweepy
+sweet
+sweetbread
+sweetbread's
+sweetbreads
+sweetbrier
+sweeten
+sweetened
+sweetener
+sweeteners
+sweetening
+sweetenings
+sweetens
+sweeter
+sweetest
+sweetheart
+sweetheart's
+sweethearts
+sweetie
+sweetie's
+sweeties
+sweetiewife
+sweeting
+sweetish
+sweetishly
+sweetly
+sweetman
+sweetmeal
+sweetmeat
+sweetness
+sweets
+sweetshop
+sweetsop
+swell
+swelled
+swellhead
+swellheaded
+swellheadedness
+swelling
+swellings
+swells
+swelter
+sweltered
+sweltering
+swelteringly
+Swenson
+swept
+sweptback
+sweptwing
+swerve
+swerved
+swerves
+swerving
+sweven
+sweyn
+swidden
+swift
+swifter
+swiftest
+swiftie
+swiftlet
+swiftly
+swiftness
+swig
+swigger
+swigging
+swill
+swiller
+swim
+swimmable
+swimmer
+swimmer's
+swimmeret
+swimmers
+swimmier
+swimmily
+swimminess
+swimming
+swimmingly
+swimmy
+swims
+swimsuit
+swimsuit's
+swimsuits
+swinburne
+Swinburne
+swindle
+swindled
+swindler
+swindles
+swindling
+swindon
+swine
+swineherd
+swinepox
+swing
+swingable
+swingably
+swingboat
+swinge
+swingeing
+swinger
+swingers
+swingier
+swinging
+swingingly
+swingle
+swingletree
+swingometer
+swingometers
+swings
+swingy
+swinish
+swinishly
+swinishness
+Swink
+swipe
+swiped
+swipes
+swiping
+swirl
+swirled
+swirler
+swirlier
+swirling
+swirlingly
+swirls
+swirly
+swish
+swished
+swisher
+swishier
+swishingly
+swishy
+swiss
+switch
+switch's
+switchable
+switchback
+switchback's
+switchbacks
+switchblade
+switchboard
+switchboard's
+switchboards
+switched
+switcher
+switcheroo
+switchers
+switches
+switchgear
+switchgirl
+switchgrass
+switching
+switchings
+switchman
+switchmen
+switchmen's
+switchyard
+swith
+swither
+Swithin
+Switzer
+Switzerland
+swivel
+swiveled
+swiveling
+swivels
+swivet
+swizzle
+swizzled
+swizzler
+swizzling
+swob
+swollen
+swoon
+swooned
+swooner
+swooning
+swooningly
+swoons
+swoop
+swooped
+swooper
+swooping
+swoops
+swoosh
+swop
+sword
+sword's
+swordbill
+swordcraft
+swordfight
+swordfight's
+swordfights
+swordfish
+swordlike
+swordplay
+swordplayer
+swords
+swordsman
+swordsmanship
+swordsmen
+swordstick
+swordsticks
+swordtail
+swore
+sworn
+swot
+swots
+swotted
+swotting
+swound
+swounds
+swum
+swung
+swy
+sybaris
+sybarite
+sybaritically
+sybert
+Sybil
+sycamine
+sycamore
+syce
+sycee
+syconium
+sycophancy
+sycophant
+sycophantic
+sycophantically
+sycophantish
+sycophantishly
+sycophantism
+sycophantize
+sycophantizes
+sycophantly
+sycophants
+sycosis
+Sydney
+sydneysider
+syene
+syenite
+syenitic
+Sykes
+syktyvkar
+syllabarium
+syllabary
+syllabi
+syllabic
+syllabically
+syllabicate
+syllabication
+syllabicity
+syllabification
+syllabify
+syllabism
+syllable
+syllable's
+syllabled
+syllables
+syllabling
+syllabogram
+syllabography
+syllabub
+syllabus
+syllepsis
+sylleptic
+syllogism
+syllogism's
+syllogisms
+syllogist
+syllogistic
+syllogistically
+syllogize
+Sylow
+sylph
+sylphid
+sylphlike
+sylva
+sylvan
+Sylvan
+Sylvania
+sylvanite
+sylvanize
+sylvanizes
+sylvanus
+sylvatic
+Sylvester
+Sylvia
+sylviculture
+sylvie
+Sylvie
+Sylvie's
+sylvine
+sylvite
+sym
+symbiont
+symbiontic
+symbiosis
+symbiote
+symbiotic
+symbiotically
+symbol
+symbol's
+symboled
+symbolic
+symbolic's
+symbolical
+symbolically
+symbolics
+symboling
+symbolism
+symbolisms
+symbolist
+symbolistic
+symbolists
+symbolization
+symbolization's
+symbolizations
+symbolize
+symbolized
+symbolizer
+symbolizers
+symbolizes
+symbolizing
+symbology
+symbols
+symington
+Symington
+symmetallism
+symmetric
+symmetrical
+symmetrically
+symmetricalness
+symmetries
+symmetrization
+symmetrization's
+symmetrizations
+symmetrize
+symmetrized
+symmetrizes
+symmetrizing
+symmetry
+symmetry's
+symonds
+Symons
+sympathectomy
+sympathetic
+sympathetically
+sympathies
+sympathin
+sympathize
+sympathized
+sympathizer
+sympathizers
+sympathizes
+sympathizing
+sympathizing's
+sympathizingly
+sympathizings
+sympatholytic
+sympathomimetic
+sympathy
+sympathy's
+sympatric
+sympatrically
+sympatry
+sympetalous
+sympetaly
+symphile
+symphonic
+symphonically
+symphonies
+symphonious
+symphoniously
+symphonist
+symphony
+symphony's
+symphyseal
+symphysial
+symphysis
+symplectic
+sympodial
+sympodially
+sympodium
+symposia
+symposiac
+symposiarch
+symposiast
+symposium
+symposiums
+symptom
+symptom's
+symptomatic
+symptomatically
+symptomatologic
+symptomatological
+symptomatologically
+symptomatology
+symptomize
+symptomizes
+symptomless
+symptoms
+synaeresis
+synaesthesis
+synagog
+synagogal
+synagogue
+synagogues
+synalepha
+synaloepha
+synapse
+synapse's
+synapsed
+synapses
+synapsing
+synapsis
+synaptic
+synaptically
+synaptosomal
+synaptosome
+synarchy
+synarthrodial
+synarthrodially
+synarthrosis
+sync
+syncarp
+syncarpous
+syncarpy
+synch
+synching
+synchro
+synchrocyclotron
+synchroflash
+synchromesh
+synchrometer
+synchronal
+synchroneity
+synchronic
+synchronical
+synchronically
+synchronism
+synchronistic
+synchronizable
+synchronizable's
+synchronizables
+synchronization
+synchronization's
+synchronizations
+synchronize
+synchronized
+synchronizer
+synchronizers
+synchronizes
+synchronizing
+synchronous
+synchronously
+synchronousness
+synchrony
+synchros
+synchroscope
+synchrotron
+syncing
+synclastic
+synclinal
+syncline
+synclinorium
+syncom
+syncopal
+syncopate
+syncopated
+syncopation
+syncopative
+syncopator
+syncope
+syncretic
+syncretism
+syncretist
+syncretistic
+syncretize
+syncretized
+syncretizes
+syncretizing
+syncrisis
+syncytial
+syncytium
+syndactyl
+syndactylism
+syndactyly
+syndesis
+syndesmosis
+syndesmotic
+syndetic
+syndetically
+syndic
+syndical
+syndicalism
+syndicalist
+syndicalize
+syndicalizes
+syndicate
+syndicated
+syndicates
+syndicating
+syndication
+syndicator
+syndics
+syndrome
+syndrome's
+syndromes
+syne
+synecdoche
+synecdochic
+synecdochical
+synecdochically
+synecious
+synecologic
+synecological
+synecologically
+synecology
+synectic
+synectically
+synectics
+synephrine
+syneresis
+synergetic
+synergic
+synergically
+synergid
+synergism
+synergist
+synergistic
+synergistically
+synergy
+synesis
+synesthesia
+synesthetic
+syngamy
+Synge
+syngeneic
+synizesis
+synkaryon
+synod
+synodal
+synodic
+synodical
+synods
+synonym
+synonym's
+synonymic
+synonymical
+synonymist
+synonymity
+synonymize
+synonymizes
+synonymous
+synonymously
+synonyms
+synonymy
+synopses
+synopsis
+synopsize
+synoptic
+synoptical
+synoptically
+synostosis
+synovia
+synovial
+synovitis
+synsepalous
+syntactic
+syntactical
+syntactically
+syntacticly
+syntactics
+syntagma
+syntax
+syntaxes
+syntheses
+synthesis
+synthesist
+synthesization
+synthesization's
+synthesizations
+synthesize
+synthesized
+synthesizer
+synthesizers
+synthesizes
+synthesizing
+synthetase
+synthetic
+synthetical
+synthetically
+synthetics
+synthetism
+syntonic
+syntonically
+sypher
+syphilis
+syphilitic
+syphilologist
+syphilology
+syphiloma
+syr
+Syracuse
+syren
+Syria
+Syriac
+Syrian
+Syrian's
+Syrianize
+Syrianizes
+Syrians
+syringa
+syringe
+syringed
+syringes
+syringing
+syringomyelia
+syringomyelic
+syrinx
+syrinxes
+syrphid
+Syrtis
+syrup
+syrupy
+sys
+sysgt
+syssarcosis
+syst
+systaltic
+systat
+system
+system's
+systematic
+systematical
+systematically
+systematicness
+systematics
+systematism
+systematist
+systematization
+systematization's
+systematizations
+systematize
+systematized
+systematizer
+systematizers
+systematizes
+systematizing
+systematology
+systemic
+systemically
+systemizable
+systemizable's
+systemizables
+systemization
+systemization's
+systemizations
+systemize
+systemizer
+systemizers
+systemizes
+systemless
+systems
+systemwide
+systole
+systolic
+sytactic
+syzran
+syzygial
+syzygy
+Szabadka
+Szczecin
+Szechwan
+Szeged
+Szell
+Szerying
+Szeryng
+Szewinska
+Szilard
+Szombathely
+Szymanowski
+TA
+taata
+tab
+tabac
+tabanid
+tabard
+tabaret
+Tabasco
+tabbed
+tabbies
+tabbing
+tabby
+tabellen
+tabernacle
+tabernacle's
+tabernacled
+tabernacles
+tabernacling
+tabernacular
+tabes
+tabescent
+tabetic
+tabla
+tablature
+table
+tableau
+tableau's
+tableaus
+tableaux
+tablecloth
+tablecloths
+tabled
+tableful
+tableland
+tables
+tablespoon
+tablespoon's
+tablespoonful
+tablespoonful's
+tablespoonfuls
+tablespoons
+tablespoonsful
+tablet
+tablet's
+tabletop
+tabletop's
+tabletops
+tablets
+tableware
+tabling
+tabloid
+tabloids
+taboo
+taboo's
+taboos
+tabor
+tabored
+taborer
+taborers
+taboret
+taborets
+taborin
+taboring
+taborins
+tabors
+Tabriz
+tabs
+tabu
+tabula
+tabular
+tabularization
+tabularization's
+tabularizations
+tabularize
+tabularizes
+tabularly
+tabulate
+tabulated
+tabulates
+tabulating
+tabulation
+tabulations
+tabulator
+tabulator's
+tabulators
+Tacamahac
+Tacchino
+tace
+tacet
+tach
+Tachina
+tachinid
+tachism
+tachist
+tachiste
+tachistoscope
+tachistoscopic
+tachistosopically
+tachograph
+tachometer
+tachometer's
+tachometers
+tachometry
+tachs
+tachycardia
+tachygraphic
+tachygraphical
+tachygraphy
+tachylite
+tachylyte
+tachymeter
+tachymeter's
+tachymeters
+tachymetry
+tachyon
+tachyon's
+tachyons
+tachyphylaxis
+tacit
+tacitly
+tacitness
+taciturn
+taciturnity
+Tacitus
+tack
+tackboard
+tacked
+tacker
+tacket
+tackier
+tackies
+tackifier
+tackify
+tackily
+tackiness
+tacking
+tackle
+tackle's
+tackled
+tackler
+tackles
+tackling
+tacks
+tacky
+tacloban
+tacmahack
+taco
+Tacoma
+taconite
+tacos
+tact
+tactful
+tactfully
+tactfulness
+tactic
+tactical
+tactically
+tactician
+tactics
+tactile
+tactilely
+tactility
+taction
+tactless
+tactlessly
+tactlessness
+tactual
+tactually
+tad
+tadmor
+tadpole
+tadpoles
+Tadzhiki
+taegu
+taejon
+tael
+taenia
+taeniacide
+taeniafuge
+taeniasis
+taffeta
+taffetized
+taffies
+taffrail
+taffy
+tafia
+tafilelt
+Taft
+tag
+tag's
+Tagalog
+tagalong
+taganrog
+tagboard
+tagged
+taggers
+tagging
+tagine
+tagines
+tagliatelle
+tagmeme
+tagmemics
+tagore
+tags
+tagus
+tahina
+Tahiti
+Tahoe
+tahr
+tahsil
+tahsildar
+Tai
+Taichung
+taig
+taiga
+tail
+tailback
+tailboard
+tailbone
+tailcoat
+tailcoated
+tailed
+tailer
+tailgate
+tailgated
+tailgater
+tailgating
+tailing
+tailings
+taille
+tailless
+taillight
+taillight's
+taillights
+taillike
+tailor
+tailorbird
+tailored
+tailoress
+tailoring
+tailorization
+tailorization's
+tailorizations
+tailorize
+tailorizes
+tailors
+tailpiece
+tailpipe
+tailplane
+tailrace
+tails
+tailskid
+tailspin
+tailspin's
+tailspins
+tailstock
+tailwater
+tailwind
+tailwind's
+tailwinds
+taimyr
+tain
+Tainan
+taine
+Taino
+taint
+tainted
+taintless
+taints
+taipan
+Taipei
+Taiping
+Taisho
+Taiwan
+taiwanese
+Taiwanese
+taiyuan
+taj
+Tajik
+tajo
+taka
+takahe
+takamatsu
+takao
+take
+takeaway
+takedown
+taken
+takeoff
+takeoffs
+takeout
+takeover
+takeovers
+taker
+takers
+takes
+taketh
+takin
+taking
+takings
+takoradi
+Talaing
+talapoin
+talaria
+talavera
+talbot
+talc
+talca
+talcahuano
+talcose
+talcum
+tale
+tale's
+talebearer
+talebearing
+talent
+talented
+talentless
+talents
+taler
+tales
+talesman
+taleysim
+tali
+taliesin
+taligrade
+talion
+taliped
+talipes
+talipot
+talisman
+talismanic
+talismanically
+talk
+talkathon
+talkative
+talkatively
+talkativeness
+talked
+talker
+talkers
+talkie
+talking
+talks
+talky
+tall
+Talladega
+talladega
+tallage
+Tallahassee
+tallahatchie
+Tallahatchie
+tallahoosa
+Tallahoosa
+tallboy
+tallchief
+Tallchief
+taller
+tallest
+talleyrand
+Talleyrand
+tallied
+tallies
+tallinn
+tallis
+tallish
+tallith
+tallithim
+tallness
+tallow
+tallowy
+tally
+tallyho
+tallying
+tallyman
+Talmud
+talmudic
+talmudical
+Talmudism
+Talmudist
+Talmudization
+Talmudization's
+Talmudizations
+Talmudize
+Talmudizes
+talon
+taloned
+talons
+talos
+taluk
+talus
+Talvela
+talweg
+tam
+tamable
+tamale
+tamandua
+tamarack
+tamarau
+tamarin
+tamarind
+tamarisk
+tamasha
+tamatave
+tamaulipas
+tambac
+tambala
+tambora
+tambour
+tambourer
+tambourine
+Tambov
+tambura
+tamburitza
+tamburlaine
+tame
+tameable
+tamed
+tameless
+tamely
+tameness
+tamer
+Tamerlane
+tames
+tamest
+Tamil
+taming
+tamis
+Tammany
+Tammanyize
+Tammanyizes
+tammerfors
+tammuz
+tammy
+tamp
+Tampa
+tampala
+tamper
+tampere
+tampered
+tamperer
+tampering
+tamperproof
+tampers
+tampico
+tamping
+tampion
+tampon
+Tamworth
+tan
+tana
+tanager
+Tanagra
+Tanaka
+Tanaka's
+tanana
+Tananarive
+tanbark
+tance
+tancred
+tandem
+tandemize
+tandemizes
+tandjungpriok
+tandoori
+tang
+tanga
+Tanganyika
+Tanganyika's
+tanged
+tangelo
+tangency
+tangent
+tangent's
+tangential
+tangentially
+tangents
+tangere
+tangerine
+tangibility
+tangible
+tangibleness
+tangibly
+tangier
+tangle
+tangleberry
+tangled
+tanglement
+tangles
+tangling
+tangly
+tango
+tangos
+tangram
+tangshan
+tanguy
+tangy
+tanh
+tanis
+tanist
+tanjore
+Tanjungpriok
+tank
+tanka
+tankage
+tankard
+tanked
+tanker
+tankers
+tankful
+tanking
+tanks
+tannage
+tannate
+tanned
+Tannenbaum
+tannenbaum
+Tannenberg
+tanner
+tanner's
+tanners
+tannery
+tannest
+tannic
+tannin
+tanning
+tannish
+tans
+tansies
+tansy
+tanta
+tantalate
+tantalic
+tantalite
+tantalization
+tantalization's
+tantalizations
+tantalize
+tantalized
+tantalizer
+tantalizers
+tantalizes
+tantalizing
+tantalizinglies
+tantalizingly
+tantalizingness
+tantalizingnesses
+tantalous
+tantalum
+Tantalus
+tantamount
+tantara
+tantivy
+tanto
+tantra
+tantric
+tantrism
+tantrum
+tantrum's
+tantrums
+Tanya
+Tanzania
+tao
+taoism
+taoist
+taoists
+taos
+tap
+tap's
+tapa
+tapadera
+Tapdance
+tape
+taped
+tapeline
+tapemark
+tapemarks
+taper
+tapered
+taperer
+tapering
+tapers
+tapes
+tapestried
+tapestries
+tapestry
+tapestry's
+tapeta
+tapetum
+tapeworm
+taphole
+taphouse
+taping
+tapings
+tapioca
+tapir
+tapirs
+tapis
+tapley
+tappa
+tapped
+tapper
+tapper's
+tappers
+tappet
+tappets
+tapping
+taproom
+taprooms
+taproot
+taproot's
+taproots
+taps
+tapster
+tapsters
+tar
+Tara
+tara
+tarabulus
+taraday
+taradiddle
+taramasalata
+tarantara
+tarantass
+tarantella
+tarantism
+taranto
+tarantula
+tarantulas
+taras
+tarawa
+taraxacum
+Tarbell
+Tarbell's
+tarbes
+tarboosh
+tarbush
+Tardenoisian
+tardier
+tardies
+tardigrade
+tardily
+tardiness
+tardo
+tardy
+tare
+tarentum
+targe
+target
+targeted
+targeting
+targets
+targo
+Targum
+tarheelia
+tariff
+tariff's
+tariffize
+tariffizes
+tariffs
+tarim
+taring
+Tarkington
+tarlatan
+tarmac
+tarmacadam
+tarn
+tarnal
+tarnation
+tarnish
+tarnishable
+tarnished
+tarnishes
+tarnishing
+tarnishs
+Tarnopol
+taro
+tarok
+taros
+tarot
+tarp
+tarpan
+tarpaper
+tarpapered
+tarpaulin
+tarpaulins
+Tarpeia
+Tarpeian
+tarpon
+tarpons
+Tarquin
+tarradiddle
+tarragon
+tarragona
+tarrant
+tarrasa
+tarre
+tarred
+tarriance
+tarried
+tarries
+tarring
+tarry
+tarrying
+Tarrytown
+tars
+tarsal
+tarshish
+tarsi
+tarsia
+tarsier
+tarsometatarsus
+tarsus
+tart
+tartan
+tartar
+Tartarean
+Tartaric
+tartarization
+tartarization's
+tartarizations
+tartarize
+tartarized
+tartarizes
+tartarous
+tartarughe
+Tartarus
+Tartary
+tartish
+tartishly
+tartlet
+tartlets
+tartly
+tartness
+tartrate
+tartrated
+tartrates
+tarts
+tartu
+tartuffe
+Tartuffe
+taruffi
+Tarzan
+tashi
+tashkent
+tasimeter
+task
+tasked
+tasking
+taskmaster
+taskmistress
+tasks
+taskwork
+tasman
+Tasmania
+Tasmanian
+Tass
+tasse
+tassel
+tassel's
+tasseled
+tasseling
+tassels
+tasset
+tassie
+tassle
+tasso
+taste
+tasted
+tasteful
+tastefully
+tastefulness
+tasteless
+tastelessly
+tastelessness
+tastemaker
+taster
+tasters
+tastes
+tastier
+tastily
+tastiness
+tasting
+tasty
+tat
+tatami
+Tatar
+Tatary
+tatchell
+Tate
+tate
+tater
+tati
+tatian
+tatler
+tatouay
+tatra
+tatras
+tatted
+tatter
+tatterdemalion
+tattered
+tattersall
+tattier
+tatting
+tattle
+tattled
+tattler
+tattles
+tattletale
+tattling
+tattoo
+tattooed
+tattooer
+tattooist
+tattoos
+tatty
+Tatum
+tau
+taught
+taui
+taunt
+taunted
+taunter
+taunting
+tauntingly
+Taunton
+taunts
+taupe
+taupo
+tauranga
+taurine
+taurocholate
+taurocholic
+taurog
+tauromachy
+Taurus
+taussig
+taut
+tauten
+tautened
+tautening
+tautly
+tautness
+tautog
+tautological
+tautologically
+tautologies
+tautologous
+tautologously
+tautology
+tautology's
+tautomer
+tautomeric
+tautomerism
+tautonym
+tautonymic
+tautonymous
+tautonymy
+tav
+tavel
+tavern
+tavern's
+taverna
+taverner
+tavernize
+tavernizes
+taverns
+taw
+tawdrier
+tawdrily
+tawdriness
+tawdry
+tawes
+tawie
+Tawney
+tawney
+tawnier
+tawnies
+tawniness
+tawny
+tawpie
+taws
+tawse
+tax
+taxa
+taxability
+taxable
+taxably
+taxaceous
+taxation
+taxed
+taxeme
+taxemic
+taxer
+taxes
+taxi
+taxi's
+taxicab
+taxicab's
+taxicabs
+taxidermic
+taxidermist
+taxidermist's
+taxidermists
+taxidermy
+taxied
+taxies
+taxiing
+taximan
+taximeter
+taximeter's
+taximeters
+taxing
+taxingly
+taxiplane
+taxiplanes
+taxis
+taxiway
+taxiway's
+taxiways
+taxon
+taxonomic
+taxonomically
+taxonomist
+taxonomist's
+taxonomists
+taxonomy
+taxons
+taxpayer
+taxpayer's
+taxpayers
+taxpaying
+taxus
+taxying
+Tay
+Taylor
+Taylorize
+Taylorizes
+Taylors
+Taymyr
+Tayra
+Tayside
+tazza
+Tbilisi
+Tchad
+tchaikovsky
+Tchaikovsky
+TCP
+Te
+tea
+teacake
+teacart
+teach
+teachability
+teachable
+teachableness
+teachably
+teacher
+teacher's
+teachers
+teachership
+teaches
+teaching
+teachings
+teacup
+teacupful
+teahouse
+teahouses
+teak
+teak's
+teakettle
+teaks
+teakwood
+teal
+Teal
+teals
+team
+team's
+teamed
+teaming
+teammate
+teammates
+teams
+teamster
+teamsters
+teamwork
+teapot
+teapots
+teapoy
+Tear
+tear
+tear's
+teardown
+teardrop
+teardrops
+teared
+tearer
+tearful
+tearfully
+tearfulness
+teargas
+tearier
+tearily
+tearing
+tearjerker
+tearle
+tearless
+tearlessly
+tearlessnss
+tearoom
+tearooms
+tears
+tearstain
+tearstained
+teary
+teas
+tease
+teased
+teasel
+teaseled
+teaseler
+teaselers
+teaseling
+teaser
+teases
+teashop
+teasing
+teasingly
+teaspoon
+teaspoon's
+teaspoonful
+teaspoonful's
+teaspoonfuls
+teaspoons
+teaspoonsful
+teat
+teated
+teatime
+teatro
+teats
+teazel
+teazeled
+teazeling
+teazle
+teazled
+Tebaldi
+tech
+teched
+technetium
+technetronic
+technic
+technical
+technicalities
+technicality
+technicality's
+technicalization
+technicalize
+technicalizes
+technically
+technicalness
+technician
+technician's
+technicians
+Technicolor
+technics
+technion
+Technion
+technique
+technique's
+techniques
+technocommercial
+technocracy
+technocrat
+technocratic
+technography
+technol
+technologic
+technological
+technologically
+technologies
+technologist
+technologist's
+technologists
+technologize
+technology
+technology's
+technostructure
+techy
+tecta
+tectal
+tectonic
+tectonics
+tectonism
+tectorial
+tectum
+tecum
+tecumseh
+ted
+tedded
+tedder
+tedding
+Teddy
+tedious
+tediously
+tediousness
+tedium
+teds
+tee
+teeing
+teem
+teemed
+teeming
+teemingly
+teemingness
+teems
+teen
+teenage
+teenaged
+teenager
+teenagers
+teener
+teenie
+teenier
+teens
+teensier
+teensy
+teentsier
+teentsy
+teeny
+teenybopper
+teepee
+tees
+teesside
+teet
+teeter
+teeterboard
+teetering
+teeth
+teethe
+teethed
+teether
+teethes
+teething
+teetotal
+teetotaled
+teetotaler
+teetotaling
+teetotalism
+teetotalist
+teetotum
+tef
+Teflon
+Teflon's
+teg
+tegmen
+tegmental
+tegmentum
+Tegucigalpa
+Tegucigalpa's
+tegular
+tegument
+tegumental
+tegumentary
+Teheran
+Tehran
+tehuantepec
+teide
+teiid
+teilhard
+tejo
+tektite
+tektites
+tektitic
+Tektronix
+Tektronix's
+tel
+Tel
+tela
+telamon
+telamones
+telanaipura
+telangiectasia
+telangiectasis
+telangiectatic
+telautograph
+tele
+telecamera
+telecast
+telecaster
+telecom
+telecommunicate
+telecommunication
+telecommunications
+telecomunications
+teleconference
+teleconference's
+teleconferenced
+teleconferences
+teleconferencing
+telecourse
+teledu
+Teledyne
+telefacsimile
+telefilm
+Telefunken
+teleg
+telega
+telegenic
+telegnosis
+telegonus
+telegony
+telegram
+telegram's
+telegrams
+telegraph
+telegraphed
+telegrapher
+telegraphers
+telegraphese
+telegraphic
+telegraphically
+telegraphing
+telegraphist
+telegraphs
+telegraphy
+Telegu
+telekinesis
+telekinetic
+telekinetically
+telemachus
+teleman
+Telemann
+telemann
+telemark
+telemeter
+telemeter's
+telemeters
+telemetric
+telemetrically
+telemetry
+telencephalic
+telencephalon
+teleologic
+teleological
+teleologically
+teleologist
+teleology
+teleost
+teleostean
+teleostome
+telepathic
+telepathically
+telepathy
+telephone
+telephoned
+telephoner
+telephoners
+telephones
+telephonic
+telephonically
+telephoning
+telephonist
+telephonists
+telephony
+telephoto
+telephotographic
+telephotography
+teleplay
+teleprinter
+teleprocessing
+teleprompter
+teleran
+telescope
+telescoped
+telescopes
+telescopic
+telescopically
+telescoping
+Telescopium
+telescopy
+telescript
+telesis
+telespectroscope
+telestereoscope
+telesthesia
+telesthetic
+telestich
+teletext
+telethermoscope
+telethon
+teletranscription
+teletube
+teletype
+teletype's
+teletypes
+teletypesetter
+teletypesetting
+teletypewrite
+teletypewriter
+teletypist
+teleutospore
+teleutosporic
+televideo
+teleview
+televiewer
+televise
+televised
+televises
+televising
+television
+televisionally
+televisionary
+televisions
+televisor
+televisor's
+televisors
+televisual
+telewriter
+Telex
+telexed
+telexes
+telexing
+telfer
+telferage
+Telford
+telia
+telial
+telic
+telically
+teliospore
+teliosporic
+telium
+tell
+teller
+tellers
+telli
+telling
+tellingly
+tellings
+tells
+telltale
+telltale's
+telltales
+tellurate
+tellurian
+telluric
+telluride
+tellurion
+tellurite
+tellurium
+tellurize
+tellurized
+tellurizes
+tellurizing
+tellurometer
+tellurometer's
+tellurometers
+tellurous
+tellus
+telly
+telnet
+telnets
+telocentric
+teloic
+telome
+telomeric
+telophase
+telos
+telotaxis
+telpher
+telpherage
+telson
+Telstar
+Telugu
+Tema
+temblor
+temerarious
+temerariously
+temerariousness
+temerity
+Temne
+temp
+Tempe
+tempeh
+temper
+tempera
+temperable
+temperament
+temperamental
+temperamentally
+temperaments
+temperance
+temperate
+temperately
+temperateness
+temperature
+temperature's
+temperatures
+tempered
+temperer
+tempering
+tempers
+tempest
+tempests
+tempestuous
+tempestuously
+tempestuousness
+tempi
+Templar
+template
+template's
+templates
+temple
+temple's
+templed
+Templeman
+templeman
+temples
+templet
+Templeton
+templize
+templizes
+tempo
+temporal
+temporality
+temporalize
+temporalized
+temporalizes
+temporalizing
+temporally
+temporaries
+temporarily
+temporariness
+temporary
+temporization
+temporization's
+temporizations
+temporize
+temporized
+temporizer
+temporizer's
+temporizers
+temporizes
+temporizing
+temporizing's
+temporizingly
+temporizings
+tempos
+tempt
+temptable
+temptation
+temptation's
+temptations
+tempted
+tempter
+tempters
+tempting
+temptingly
+temptress
+tempts
+tempura
+temuco
+ten
+ten's
+tenability
+tenable
+tenableness
+tenably
+tenace
+tenacious
+tenaciously
+tenaciousness
+tenacity
+tenaculum
+tenaille
+tenancies
+tenancy
+tenant
+tenant's
+tenantable
+tenantless
+tenantry
+tenants
+tench
+tenches
+tend
+tenda
+tendance
+tended
+tendencies
+tendencious
+tendency
+tendentious
+tendentiously
+tendentiousness
+tender
+tendered
+tenderfoot
+tenderhearted
+tenderheartedly
+tenderheartedness
+tendering
+tenderization
+tenderize
+tenderized
+tenderizer
+tenderizes
+tenderizing
+tenderloin
+tenderly
+tenderness
+tenderometer
+tenderometer's
+tenderometers
+tenders
+tending
+tendinous
+tendon
+tendons
+tendresse
+tendril
+tendriled
+tendrilous
+tendrils
+tends
+Tenebrae
+tenebrific
+tenebrionid
+tenebrious
+tenebrism
+tenebrist
+tenebrous
+tenedos
+tenement
+tenement's
+tenementary
+tenementization
+tenementization's
+tenementizations
+tenementize
+tenementizes
+tenements
+tenenbaum
+Tenerife
+tenesmus
+tenet
+tenets
+Tenex
+tenex
+tenfold
+teng
+tengri
+tenia
+teniacide
+teniafuge
+teniasis
+teniers
+Tenneco
+tenner
+Tennessee
+Tennessee's
+Tenney
+tenniel
+tennis
+tennist
+tenno
+Tennstedt
+Tennyson
+tenon
+tenor
+tenor's
+tenorite
+tenorrhaphy
+tenors
+tenosynovitis
+tenotomy
+tenour
+tenpenny
+tenpin
+tenpins
+tenpounder
+tenrec
+tens
+tense
+tensed
+tensely
+tenseness
+tenser
+tenses
+tensest
+tensible
+tensile
+tensility
+tensimeter
+tensimeter's
+tensimeters
+tensing
+tensiometer
+tensiometer's
+tensiometers
+tensiometric
+tensiometry
+tension
+tensional
+tensioned
+tensioner
+tensioning
+tensionless
+tensions
+tensity
+tensive
+tensometer
+tensometer's
+tensometers
+tensor
+tensor's
+tensorial
+tensors
+tenspot
+tent
+tentacle
+tentacled
+tentacles
+tentacular
+tentage
+tentation
+tentative
+tentatively
+tentativeness
+tented
+tenter
+tenterhook
+tenterhooks
+tenth
+tenthes
+tenths
+tentie
+tenting
+tentless
+tentmaker
+tents
+tenty
+tenuis
+tenuity
+tenuous
+tenuously
+tenuousness
+tenure
+tenured
+tenures
+tenurial
+tenurially
+tenuto
+Tenzi
+tenzing
+teocalli
+teonanacatl
+teosinte
+tepa
+tepal
+tepee
+tepees
+tepefy
+tephra
+tephrite
+tepic
+tepid
+tepidity
+tepidly
+tepidness
+tequila
+tequila's
+ter
+terai
+teraph
+teraphim
+teratism
+teratogen
+teratogenesis
+teratogenic
+teratogenicity
+teratoid
+teratologic
+teratological
+teratologies
+teratologist
+teratology
+teratoma
+teratomatous
+terbia
+terbium
+terce
+terceira
+tercel
+tercentenary
+tercentennial
+tercept
+tercet
+terebene
+terebic
+terebinth
+terebinthine
+tered
+teredines
+teredo
+Terence
+terephthalate
+terephthalic
+Teresa
+tereshkova
+Teresina
+terest
+terete
+Tereus
+terga
+tergal
+tergite
+tergiversate
+tergiversation
+tergiversator
+tergum
+teriyaki
+term
+termagant
+termagantly
+termcap
+termed
+termer
+terminable
+terminableness
+terminably
+terminal
+terminal's
+terminalization
+terminalization's
+terminalizations
+terminalized
+terminalized's
+terminalizeds
+terminally
+terminals
+terminate
+terminated
+terminates
+terminating
+termination
+terminational
+terminations
+terminative
+terminatively
+terminator
+terminator's
+terminators
+termined
+terming
+termini
+termining
+terminism
+terminological
+terminologically
+terminologies
+terminology
+terminosity
+terminus
+termitarium
+termite
+termites
+termless
+termly
+termor
+terms
+termtime
+tern
+ternary
+ternate
+ternately
+terne
+terneplate
+terni
+ternion
+ternize
+ternizes
+Ternopol
+terotechnology
+terpene
+terpeneless
+terpenic
+terpenoid
+terpineol
+terpolymer
+Terpsichore
+Terpsichore's
+terpsichorean
+terr
+Terra
+terrace
+terraced
+terraces
+terracing
+terrae
+terrain
+terrain's
+terrains
+terram
+terramycin
+Terran
+terrane
+Terrani
+terrapin
+terrapins
+terraqueous
+terrarium
+terrazzo
+Terre
+Terre's
+terrene
+terreplein
+terrestial
+terrestrial
+terrestrial's
+terrestrialize
+terrestrializes
+terrestrially
+terrestrials
+terret
+terrible
+terribleness
+terribly
+terricolous
+terrier
+terrier's
+terriers
+terries
+terrific
+terrifically
+terrificly
+terrified
+terrifies
+terrify
+terrifying
+terrifyingly
+terrigenous
+terrine
+territorial
+territorialism
+territorialist
+territoriality
+territorialization
+territorialization's
+territorializations
+territorialize
+territorializes
+territorially
+territorian
+territories
+territory
+territory's
+terror
+terror's
+terrorism
+terrorist
+terrorist's
+terroristic
+terrorists
+terrorization
+terrorization's
+terrorizations
+terrorize
+terrorized
+terrorizer
+terrorizers
+terrorizes
+terrorizing
+terrorless
+terrors
+terry
+terse
+tersely
+terseness
+terser
+tersest
+tertial
+tertian
+tertiaries
+tertiary
+tertium
+tertre
+tertullian
+teruel
+tervalent
+tery
+terylene
+terza
+terzetto
+tesla
+Tess
+tessellate
+tessellated
+tessellates
+tessellation
+tessera
+Tesseract
+tesseract
+Tessie
+tessie
+tessin
+tessitura
+test
+test's
+testa
+testability
+testable
+testacean
+testaceous
+testacy
+testae
+testament
+testament's
+testamentary
+testaments
+testate
+testator
+testator's
+testators
+testatrix
+testbed
+testcross
+tested
+tester
+tester's
+testers
+testes
+testicle
+testicle's
+testicles
+testicular
+testiculate
+testier
+testified
+testifier
+testifiers
+testifies
+testify
+testifying
+testily
+testimonial
+testimonialization
+testimonialization's
+testimonializations
+testimonialize
+testimonializer
+testimonializers
+testimonializes
+testimonials
+testimonies
+testimony
+testimony's
+testiness
+testing
+testings
+testis
+teston
+testoon
+testosterone
+tests
+testudinal
+testudo
+testy
+tetanal
+tetanic
+tetanically
+tetanization
+tetanize
+tetanized
+tetanizes
+tetanizing
+tetanus
+tetany
+tetartohedral
+tetched
+tetchier
+tetchy
+tete
+teter
+teth
+tether
+tetherball
+tethered
+tethering
+tethers
+Tethys
+Teton
+tetra
+tetrabasic
+tetrabasicity
+tetrabrach
+tetrabutylammonium
+tetracaine
+tetrachlorethylene
+tetrachloride
+tetrachord
+tetracid
+tetracyclic
+tetracycline
+tetrad
+tetradecyl
+tetradic
+tetradrachm
+tetradymite
+tetradynamous
+tetraethyl
+tetraethyllead
+tetrafluoride
+tetragonal
+tetragonally
+tetragonolobus
+tetragram
+tetragrammaton
+tetrahalides
+tetrahedra
+tetrahedral
+tetrahedrally
+tetrahedrite
+tetrahedron
+tetrahydrate
+tetrahydrated
+tetrahydrocannabinol
+tetrahydrofuran
+tetrahydroxy
+tetrahymena
+tetralogy
+tetramer
+tetramer's
+tetrameric
+tetrameron
+tetramerous
+tetramers
+tetrameter
+tetramethyl
+tetramethyllead
+tetraphenyl
+tetraplegia
+tetraploid
+tetraploidy
+tetrapod
+tetrapody
+tetrapterous
+tetrapyrrole
+tetrarch
+tetrarchic
+tetrarchy
+tetrasodium
+tetraspore
+tetrasporic
+tetrastich
+tetrastichous
+tetrasyllable
+tetratomic
+tetravalent
+tetrazolium
+tetrazzini
+tetrode
+tetrodes
+tetrodotoxin
+tetroxide
+tetrxide
+tetryl
+tetter
+tetzel
+Teucer
+Teucrian
+teutoburger
+Teuton
+Teutonic
+Teutonism
+teutonize
+tevere
+tevet
+tewfik
+Tewkesbury
+TeX
+Tex
+TeX's
+Texaco
+Texan
+Texans
+Texas
+Texas's
+Texases
+text
+text's
+textbook
+textbook's
+textbookish
+textbooks
+textile
+textile's
+textiles
+Textron
+texts
+textual
+textualism
+textually
+textuary
+textural
+texturally
+texture
+textured
+textures
+texturing
+texturized
+teyde
+tezel
+th
+thackeray
+thaddeus
+thadentsonyane
+Thai
+Thailand
+thalamencephalon
+thalamic
+thalamically
+thalamus
+thalassemia
+thalassemic
+thalassic
+thalassocracy
+thalassocrat
+thaler
+thales
+Thalia
+Thalia's
+thalidomide
+thalli
+thallic
+thallium
+thalloid
+thallophyte
+thallophytic
+thallous
+thallus
+thalluses
+thalweg
+Thames
+thames
+thammuz
+than
+thanatopsis
+Thanatos
+thane
+thaneship
+thanet
+thanjavur
+thank
+thanked
+thanker
+thankful
+thankfully
+thankfulness
+thanking
+thankless
+thanklessly
+thanklessness
+thanks
+thanksgiving
+thanksgiving's
+thanksgivings
+thankworthy
+thapsus
+thar
+that
+that'd
+that'll
+that's
+thatch
+thatched
+thatcher
+thatcherism
+thatches
+thatching
+thats
+thaumatology
+thaumatrope
+thaumaturge
+thaumaturgic
+thaumaturgist
+thaumaturgy
+thaw
+thawed
+thawing
+thaws
+Thayer
+Thayer's
+the
+Thea
+Thea's
+theaceous
+theanthropism
+thearchy
+theast
+theat
+theater
+theater's
+theatergoer
+theatergoer's
+theatergoers
+theatergoing
+theatergoing's
+theatergoings
+theaterless
+theaterlesses
+theaterlike
+theaterlike's
+theaterlikes
+theaters
+theatric
+theatrical
+theatricalism
+theatricality
+theatricalization
+theatricalization's
+theatricalizations
+theatricalize
+theatricalized
+theatricalizes
+theatricalizing
+theatrically
+theatricals
+theatricize
+theatricizes
+theatrics
+Thebaid
+thebaine
+Thebes
+theca
+thecae
+thecal
+thecate
+thecodont
+thee
+theelin
+theelol
+theft
+theft's
+thefts
+thegn
+theine
+their
+their's
+theirs
+theism
+theist
+theist's
+theistic
+theistical
+theistically
+theists
+Thelma
+them
+thematic
+thematically
+theme
+theme's
+themes
+Themis
+themistocles
+themselves
+then
+thenar
+thenardite
+thence
+thenceforth
+thenceforward
+thenceforwards
+theobromine
+theocentric
+theocentricity
+theocentrism
+theocracy
+theocrasy
+theocrat
+theocratic
+theocratical
+theocratically
+theocritus
+theodicy
+theodolite
+theodolitic
+Theodora
+theodorakis
+Theodore
+Theodoric
+Theodosian
+theodosius
+Theodosius
+theogonic
+theogony
+theol
+theolog
+theologian
+theologian's
+theologians
+theologic
+theological
+theologically
+theologies
+theologization
+theologize
+theologized
+theologizer
+theologizes
+theologizing
+theologue
+theology
+theomachy
+theomancy
+theomania
+theomorphic
+theonomous
+theonomously
+theonomy
+theopathy
+theophagy
+theophanic
+theophany
+Theophilus
+theophobia
+theophrastus
+theophylline
+theorbo
+theorem
+theorem's
+theorematic
+theorems
+theoretic
+theoretical
+theoretically
+theoretician
+theoreticians
+theoretics
+theories
+theorist
+theorist's
+theorists
+theorization
+theorization's
+theorizations
+theorize
+theorized
+theorizer
+theorizers
+theorizes
+theorizing
+theory
+theory's
+theosophical
+theosophically
+theosophist
+theosophy
+therapeusis
+therapeutic
+therapeutically
+therapeutics
+therapeutist
+therapies
+therapist
+therapist's
+therapists
+therapsid
+therapy
+therapy's
+theravada
+there
+there'd
+there'll
+there's
+thereabout
+thereabouts
+thereafter
+thereat
+thereby
+therefor
+therefore
+therefrom
+therein
+thereinafter
+thereinto
+thereof
+thereon
+Theresa
+thereto
+theretofore
+thereunder
+thereunto
+thereupon
+therewith
+therewithal
+therezina
+therfore
+theriac
+theriaca
+theriacal
+therianthropic
+theriomorphic
+therm
+thermae
+thermaesthesia
+thermal
+thermalization
+thermalize
+thermalized
+thermalizes
+thermalizing
+thermally
+thermals
+thermic
+thermically
+thermion
+thermionic
+thermionics
+thermistor
+thermistors
+Thermit
+thermite
+thermite's
+thermo
+thermoanesthesia
+thermoanesthesia's
+thermoanesthesias
+thermobarograph
+thermobarometer
+thermochemical
+thermochemist
+thermochemistry
+thermocline
+thermocoagulation
+thermocouple
+thermocouples
+thermoduric
+thermodynamic
+thermodynamical
+thermodynamically
+thermodynamicist
+thermodynamics
+thermoelastic
+thermoelectric
+thermoelectricity
+thermoelectron
+thermoelement
+Thermofax
+thermoform
+thermoformable
+thermoformed
+thermoforming
+thermogenesis
+thermogram
+thermogram's
+thermograms
+thermograph
+thermographic
+thermographically
+thermography
+thermogravimetric
+thermohaline
+thermojunction
+thermolabile
+thermolability
+thermoluminescence
+thermoluminescent
+thermolysis
+thermolytic
+thermomagnetic
+thermomagnetically
+thermometer
+thermometer's
+thermometerize
+thermometerizes
+thermometers
+thermometric
+thermometrically
+thermometry
+thermomotor
+thermonuclear
+thermoperiodicity
+thermoperiodism
+thermophile
+thermophilic
+thermophilous
+thermophysical
+thermopile
+thermoplastic
+thermoplasticity
+thermopolymerization
+thermopolymerization's
+thermopolymerizations
+thermopower
+thermopylae
+thermoreceptor
+thermoregularity
+thermoregulation
+thermoregulator
+thermoregulatory
+thermoremanence
+thermoremanent
+thermos
+thermoscope
+thermoset
+thermosetting
+thermosiphon
+thermosiphon's
+thermosiphons
+thermosphere
+thermospheric
+thermostability
+thermostable
+thermostat
+thermostat's
+thermostated
+thermostatic
+thermostatical
+thermostatically
+thermostatics
+thermostats
+thermotactic
+thermotaxis
+thermotensile
+thermotherapy
+thermotropic
+thermotropism
+theroelectricity
+theroid
+theropod
+Thersites
+thersitical
+thesaural
+thesauri
+thesaurus
+these
+theses
+Theseus
+thesis
+thespian
+thespians
+thespis
+Thessalonian
+Thessalonians
+Thessaly
+theta
+thetas
+Thetford
+thetic
+thetically
+Thetis
+theurgic
+theurgical
+theurgist
+theurgy
+thew
+they
+they'd
+they'll
+they're
+they've
+thiabendazole
+thiamin
+thiaminase
+thiamine
+thiazide
+thiazine
+thiazole
+thick
+thicken
+thickened
+thickener
+thickeners
+thickening
+thickens
+thicker
+thickest
+thicket
+thicket's
+thicketed
+thickets
+thickety
+thickhead
+thickheaded
+thickish
+thickleaf
+thickly
+thickness
+thicknesses
+thicks
+thickset
+thief
+Thiensville
+thieve
+thievery
+thieves
+thieving
+thievish
+thievishly
+thievishness
+thigh
+thighbone
+thighed
+thighs
+thigmotaxis
+thigmotropism
+thill
+thills
+thimble
+thimble's
+thimbleberry
+thimbleful
+thimbleful's
+thimblerig
+thimblerigger
+thimbles
+thimblesful
+thimbleweed
+thimblewit
+thimerosal
+thin
+thinclad
+thine
+thiner
+thinest
+thing
+thingamabob
+thingamajig
+thingamajig's
+thingamajigs
+thingness
+things
+thingumabob
+thingumajig
+thingummy
+think
+thinkable
+thinkableness
+thinkably
+thinker
+thinkers
+thinking
+thinkingly
+thinkingness
+thinks
+thinly
+thinned
+thinner
+thinners
+thinness
+thinnest
+thinning
+thinnish
+thins
+thioalcohol
+thiocarbamide
+thiocyanate
+thiocyanic
+thiofuran
+thioguanine
+thiol
+thiolic
+thionate
+thionic
+thionine
+thionyl
+thiopental
+thiopentone
+thiophen
+thiophene
+thiophosphate
+thiosinamine
+thiosulfate
+thiosulfuric
+thiosulphate
+thiosulphuric
+thiotepa
+thiouracid
+thiouracil
+thiourea
+thir
+thiram
+third
+thirdhand
+thirdly
+thirds
+thirdstream
+thirl
+thirlage
+thirlmere
+thirst
+thirsted
+thirster
+thirstier
+thirstily
+thirstiness
+thirsts
+thirsty
+thirteen
+thirteens
+thirteenth
+thirties
+thirtieth
+thirty
+thirtyfold
+this
+this'll
+thisbe
+thistle
+thistledown
+thistly
+thither
+thitherto
+thitherward
+thixotropic
+thixotropy
+tho
+thod
+tholdy
+thole
+tholed
+tholeiite
+tholeiitic
+tholepin
+tholer
+tholes
+tholing
+tholos
+Thomas
+Thomism
+Thomistic
+Thomistic's
+Thompson
+Thompson's
+Thomson
+thonburi
+thong
+thonged
+Thor
+thoraces
+thoracic
+thoracically
+thoracoplasty
+thoracotomy
+thorax
+thoraxes
+Thoreau
+thoria
+thorianite
+thoriate
+thoriated
+thoric
+thorite
+thorium
+thorn
+thorn's
+thornback
+thornbill
+Thornburg
+thornbush
+Thorndike
+thornier
+thorniness
+thornless
+thornlike
+thorns
+Thornton
+thorny
+thoron
+thorough
+thoroughbred
+thoroughfare
+thoroughfare's
+thoroughfares
+thoroughgoing
+thoroughly
+thoroughness
+thoroughpaced
+thoroughpin
+thoroughwort
+thorp
+Thorpe
+thorshavn
+Thorstein
+Thorvaldsen
+those
+thoth
+thou
+though
+thought
+thought's
+thoughtful
+thoughtfully
+thoughtfulness
+thoughtless
+thoughtlessly
+thoughtlessness
+thoughts
+thoughtway
+thous
+thousand
+thousandfold
+thousands
+thousandth
+thousandths
+Thrace
+Thrace's
+Thracian
+thraldom
+thrall
+thralldom
+thrash
+thrashed
+thrasher
+thrashes
+thrashing
+thrasonical
+thrasonically
+thrave
+thraw
+thrawart
+thrawn
+thrawnly
+thread
+threadbare
+threadbareness
+threaded
+threader
+threaders
+threadfin
+threadiness
+threading
+threadless
+threadlike
+threadneedle
+threads
+threadworm
+thready
+threap
+threat
+threaten
+threatened
+threatener
+threatening
+threateningly
+threatens
+threats
+three
+three's
+threefold
+threepence
+threepences
+threepenny
+threes
+threescore
+threesome
+thremmatology
+threnode
+threnodic
+threnodist
+threnody
+threonine
+thresh
+threshed
+thresher
+threshing
+threshold
+threshold's
+thresholded
+thresholding
+thresholds
+threw
+thrice
+thrift
+thriftier
+thriftily
+thriftiness
+thriftless
+thriftlessly
+thriftlessness
+thrifty
+thrill
+thrilled
+thriller
+thrillers
+thrilling
+thrillingly
+thrills
+thrips
+thrive
+thrived
+thriven
+thriver
+thrives
+thriving
+thrivingly
+thro
+throat
+throated
+throatier
+throatily
+throatiness
+throating
+throatlash
+throatlatch
+throats
+throaty
+throb
+throbbed
+throbber
+throbbing
+throbs
+throe
+throes
+thrombi
+thrombin
+thrombocyte
+thrombocytic
+thrombocytopenia
+thrombocytopenic
+thromboembolic
+thromboembolism
+thrombogen
+thrombokinase
+thrombophlebitis
+thromboplastic
+thromboplastically
+thromboplastin
+thrombose
+thrombosed
+thromboses
+thrombosis
+thrombospondin
+thrombotic
+thrombus
+throne
+throne's
+Throneberry
+throneberry
+thrones
+throng
+throng's
+thronging
+throngs
+throning
+thronize
+thronizes
+throstle
+throttle
+throttleable
+throttled
+throttlehold
+throttler
+throttles
+throttling
+through
+throughither
+throughly
+throughother
+throughout
+throughput
+throughway
+throve
+throw
+throwaway
+throwback
+thrower
+throwing
+thrown
+throws
+throwster
+thru
+thrum
+thrumming
+thrush
+thrushes
+thrust
+thruster
+thrusters
+thrustful
+thrustfulness
+thrusting
+thrustor
+thrusts
+Thruway
+Thruways
+Thu
+Thuban
+Thuban's
+Thucydides
+thud
+thudded
+thudding
+thuds
+thug
+thug's
+thuggee
+thugs
+Thuja
+Thule
+thulium
+thumb
+thumbed
+thumbhole
+thumbing
+thumbnail
+thumbnut
+thumbprint
+thumbprint's
+thumbprints
+thumbs
+thumbscrew
+thumbstall
+thumbtack
+thumbtack's
+thumbtacked
+thumbtacking
+thumbtacks
+thummim
+thump
+thumped
+thumper
+thumping
+thumps
+thun
+thunder
+thunderbird
+thunderbolt
+thunderbolt's
+thunderbolts
+thunderbox
+thunderclap
+thunderclaps
+thundercloud
+thundercloud's
+thunderclouds
+thundered
+thunderer
+thunderers
+thunderflower
+thunderhead
+thundering
+thunderingly
+thunderous
+thunderously
+thunderpeal
+thunders
+thundershower
+thundershower's
+thundershowers
+thunderstone
+thunderstorm
+thunderstorm's
+thunderstorms
+thunderstrike
+thunderstroke
+thunderstruck
+thundery
+thuner
+thunk
+Thurber
+thurber
+Thurgau
+thurible
+thurifer
+Thuringia
+Thuringian
+thurl
+Thurman
+Thurn
+Thursday
+Thursday's
+Thursdays
+thus
+thusly
+thuya
+thwack
+thwart
+thwarted
+thwarter
+thwarting
+thwartly
+thwarts
+thwartwise
+thwump
+thy
+Thyestes
+thylacine
+thylakoid
+thyme
+thyme's
+thymectomize
+thymectomy
+thymelaeaceous
+thymes
+thymey
+thymic
+thymidine
+thymine
+thymocyte
+thymol
+thymus
+thymy
+thyratron
+thyrglobulin
+thyristor
+thyrocalcitonin
+thyroglobulin
+thyroid
+thyroidal
+thyroidectomized
+thyroidectomy
+thyroiditis
+thyroidization
+thyroidization's
+thyroidizations
+thyroids
+thyronine
+thyrotoxic
+thyrotoxicosis
+thyrotrophic
+thyrotrophin
+thyrotropic
+thyrotropin
+thyroxin
+thyroxine
+thyrse
+thyrsi
+thyrsus
+thysanopteran
+thysanuran
+thyself
+ti
+tia
+tial
+tiality
+tian
+tiara
+tiated
+Tiber
+tiberias
+Tiberius
+tibesti
+Tibet
+Tibetan
+tibia
+tibial
+tibiotarsus
+tibullus
+tibur
+tiburon
+Tiburon
+tic
+tical
+ticino
+ticism
+tick
+ticked
+ticker
+tickers
+ticket
+ticket's
+ticketed
+ticketing
+tickets
+tickicide
+ticking
+tickle
+ticklebrush
+tickled
+tickler
+tickles
+tickling
+ticklish
+ticklishly
+ticklishness
+ticks
+tickseed
+ticktack
+ticktacktoe
+ticktock
+Ticonderoga
+ticonderoga
+tictac
+tidal
+tidally
+tidbit
+tidbits
+tiddledywinks
+tiddler
+tiddly
+tiddlywinks
+tide
+tided
+tideland
+tidelands
+tideless
+tidemark
+tides
+tidewaiter
+tidewater
+tideway
+tidied
+tidier
+tidies
+tidily
+tidiness
+tiding
+tidings
+tidy
+tidying
+tie
+tieback
+tiebreaker
+Tieck
+tieck
+tied
+tieing
+tieless
+tiemannite
+tien
+Tientsin
+Tientsin's
+tiepin
+tiepolo
+tier
+tierce
+tiercel
+tiered
+tierra
+tiers
+ties
+tiff
+tiffany
+tiffin
+tiflis
+tiger
+tiger's
+tigerish
+tigerishly
+tigerishness
+tigerlike
+tigers
+tight
+tighten
+tightened
+tightener
+tighteners
+tightening
+tightenings
+tightens
+tighter
+tightest
+tightfisted
+tightknit
+tightly
+tightness
+tightrope
+tights
+tightwad
+tightwad's
+tightwads
+tightwire
+tiglic
+tiglon
+tigon
+tigress
+tigrinya
+Tigris
+tihwa
+tijuana
+Tijuana
+tike
+tiki
+tikoloshe
+til
+tilapia
+Tilburg
+Tilbury
+tilde
+tildes
+tile
+tiled
+tilefish
+tiler
+tiles
+tiliaceous
+tiling
+till
+tillable
+tillage
+tillandsia
+tilled
+tiller
+tillered
+tillering
+tillerman
+tillers
+tillich
+Tillich
+tillicum
+tillie
+Tillie
+tilling
+tills
+tilly
+Tilsit
+tilt
+tiltable
+tilted
+tilter
+tilters
+tilth
+tilting
+tiltmeter
+tiltmeter's
+tiltmeters
+tilts
+tiltyard
+Tim
+Tim's
+timaru
+timbal
+timbale
+timber
+timbered
+timberhead
+timbering
+timberland
+timberlands
+timberline
+timberman
+timbers
+timberwork
+timberyard
+timbral
+timbre
+timbrel
+timbrelled
+timbuktu
+time
+timecard
+timed
+timekeeper
+timekeeping
+timeless
+timelessly
+timelessness
+timelier
+timeliness
+timely
+timeous
+timeously
+timeout
+timeouts
+timepiece
+timepleaser
+timer
+timers
+times
+timesaving
+timescale
+timescales
+timeserver
+timeservers
+timeserving
+timeshare
+timeshared
+timeshares
+timesharing
+timeslice
+timeslices
+timestamp
+timestamped
+timestamping
+timestamps
+timetable
+timetable's
+timetabled
+timetables
+timetabling
+timework
+timeworker
+timeworn
+Timex
+timid
+timidity
+timidly
+timidness
+timing
+timings
+Timmy
+timmy
+timocracy
+timocratic
+timocratical
+Timon
+Timonize
+Timonizes
+Timor
+timorous
+timorously
+timorousness
+Timoshenko
+timothy
+Timour
+timpani
+timpanist
+Tims
+tin
+tin's
+Tina
+Tina's
+tinamou
+tinc
+tincal
+tinct
+tinctorial
+tinctorially
+tincture
+tinctured
+tincturing
+tindal
+tinder
+tinderbox
+tine
+tine's
+tinea
+tineal
+tineau
+tineid
+tines
+tinfoil
+tinful
+ting
+tinge
+tinged
+tingeing
+tingen
+tinging
+tingle
+tingled
+tingles
+tingling
+tinglingly
+tingly
+tinhorn
+tinier
+tiniest
+tinily
+tininess
+tinker
+tinkered
+tinkerer
+tinkering
+tinkers
+tinkle
+tinkled
+tinkles
+tinkling
+tinkly
+tinman
+tinned
+tinner
+tinnier
+tinniest
+tinnily
+tinniness
+tinning
+tinnitus
+tinny
+tinplate
+tinpot
+tins
+tinsel
+tinseled
+tinselier
+tinseliest
+tinseling
+tinselly
+Tinseltown
+Tinseltown's
+tinsmith
+tinsmiths
+tinstone
+tint
+tintable
+Tintagel
+tinted
+tinter
+tinting
+tintinnabulary
+tintinnabulation
+tintinnabulum
+tintless
+tintoretto
+tints
+tintype
+tinware
+tinwork
+tinworks
+tiny
+Tioga
+tip
+tip's
+tipcart
+tipcat
+tipi
+tipoff
+Tippecanoe
+tippecanoe
+tipped
+tipper
+tipper's
+Tipperary
+tippers
+tippet
+Tippett
+tippier
+tipping
+tipple
+tippled
+tippler
+tipples
+tippling
+tippy
+tips
+tipsier
+tipsily
+tipsiness
+tipstaff
+tipstaves
+tipster
+tipstock
+tipsy
+tiptoe
+tiptoed
+tiptoeing
+tiptop
+tipu
+tirade
+tirades
+tiran
+Tirana
+Tirana's
+tire
+tire's
+tired
+tiredly
+tiredness
+tireless
+tirelessly
+tirelessness
+tires
+tiresias
+tiresome
+tiresomely
+tiresomeness
+tirewoman
+tirich
+tiring
+tiro
+Tirol
+tiros
+tirpitz
+tirso
+Tiruchirapalli
+Tirunelveli
+Tisa
+tisane
+Tishab
+Tisiphone
+tissue
+tissue's
+tissued
+tissues
+tissuey
+tissuing
+tisza
+tit
+tit's
+titan
+titanate
+Titanesque
+titaness
+titania
+titanic
+titanically
+titaniferous
+titanism
+titanite
+titanium
+Titanomachy
+titanosaur
+titanothere
+titanous
+titans
+titbit
+titer
+titers
+titfer
+tithable
+tithe
+tithe's
+tither
+tithes
+tithing
+tithonia
+tithonus
+titi
+titian
+titicaca
+titillate
+titillating
+titillatingly
+titillation
+titillative
+titivate
+titivation
+titlark
+title
+titled
+titleholder
+titleholders
+titles
+titling
+titlist
+titman
+titmice
+titmouse
+titmouse's
+tito
+Tito
+Tito's
+Titograd
+Titoism
+titrant
+titratable
+titrate
+titrated
+titrates
+titrating
+titration
+titrator
+titrimetric
+titrimetrically
+tits
+titter
+tittered
+tittering
+titters
+tittie
+tittivate
+tittle
+tittup
+tittuped
+tittuping
+tittupy
+titubation
+titular
+titularly
+Titus
+tiu
+tiv
+Tivoli
+tizzies
+tizzy
+Tjirebon
+TKO
+Tlaxcala
+Tlemcen
+Tlingit
+Tmesis
+TN
+TNT
+to
+toad
+toad's
+toadeater
+toadeater's
+toadeaters
+toadfish
+toadfish's
+toadfishes
+toadflax
+toadied
+toadies
+toads
+toadstone
+toadstone's
+toadstones
+toadstool
+toady
+toadying
+toadyism
+toast
+toasted
+toaster
+toasters
+toastier
+toasting
+toastmaster
+toastmaster's
+toastmasters
+toastmistress
+toasts
+toasty
+tobacco
+tobacconist
+tobacconist's
+tobacconists
+tobaggon
+tobaggon's
+tobaggons
+Tobago
+Tobey
+tobies
+tobit
+toboggan
+toboggan's
+tobogganer
+tobogganing
+tobogganist
+toboggans
+tobol
+Tobolsk
+Tobruk
+Toby
+Toby's
+tocantins
+toccata
+Tocharian
+tocher
+tocology
+tocopherol
+Tocqueville
+tocsin
+tod
+today
+today'll
+today's
+todays
+Todd
+Todd's
+toddies
+toddle
+toddled
+toddler
+toddlers
+toddles
+toddling
+toddy
+toddy's
+todies
+tody
+toe
+toe's
+toea
+toecap
+toed
+TOEFL
+toehold
+toehold's
+toeholds
+toeing
+toeless
+toenail
+toenails
+toepiece
+toeplate
+toes
+toey
+toff
+toffee
+toffies
+toffy
+toft
+tofu
+tog
+toga
+togaed
+together
+togetherness
+toggery
+togging
+toggle
+toggled
+toggles
+toggling
+Togliatti
+Togo
+Togoland
+togs
+togue
+toheroa
+toil
+toile
+toiled
+toiler
+toilet
+toilet's
+toiletry
+toilets
+toilette
+toilful
+toilfully
+toiling
+toils
+toilsome
+toilsomely
+toilsomeness
+toilworn
+Tojo
+tokamak
+Tokay
+toke
+Tokelau
+token
+token's
+tokenism
+tokens
+Tokharian
+Tokoloshe
+tokonoma
+Tokugawa
+Tokyo
+tola
+Tolan
+Toland
+toland
+Tolbert
+tolbooth
+tolbutamide
+told
+tole
+Toledo
+tolerability
+tolerable
+tolerably
+tolerance
+tolerances
+tolerant
+tolerantly
+tolerate
+tolerated
+tolerates
+tolerating
+toleration
+tolerative
+tolerator
+tolidine
+Tolima
+toling
+Tolkien
+toll
+tollbooth
+tollbooth's
+tollbooths
+tolled
+Toller
+Tolley
+tolley
+tollgate
+tollhouse
+tolling
+tollman
+tolls
+tollway
+Tolly
+tolpuddle
+Tolstoy
+Toltec
+tolu
+toluate
+Toluca
+toluene
+toluic
+toluidine
+toluol
+toluyl
+tolyl
+tolylene
+tolylphosphine
+Tom
+tom
+Tom's
+tom's
+tomahawk
+tomahawk's
+tomahawks
+tomalley
+toman
+tomato
+tomatoes
+tomb
+tomb's
+tombac
+tombigbee
+Tombigbee
+tombless
+tomblike
+tombola
+tombolo
+tombouctou
+tomboy
+tomboyish
+tomboyishness
+tombs
+tombstone
+tombstones
+tomcat
+tomcod
+Tome
+tome
+tomentose
+tomentum
+tomes
+tomfool
+tomfoolery
+Tomlinson
+Tomlinson's
+Tommie
+tommy
+tommyrot
+tomogram
+tomogram's
+tomograms
+tomograph
+tomography
+tomorrow
+tomorrow's
+tomorrows
+Tomowa
+tompion
+Tompkins
+toms
+Tomsk
+tomtit
+ton
+ton's
+tonal
+tonalities
+tonality
+tonally
+Tonbridge
+tondi
+tondo
+tone
+toned
+toneless
+tonelessly
+tonelessness
+toneme
+tonemic
+toner
+tones
+tonetic
+tonetically
+tonetics
+tonette
+tong
+tonga
+Tonga
+tonger
+tongs
+tongue
+tongued
+tongueless
+tonguelike
+tongues
+tonguing
+Toni
+tonic
+tonic's
+tonically
+tonicity
+tonicize
+tonicizes
+tonics
+tonier
+tonight
+toning
+tonio
+Tonio
+tonk
+Tonka
+Tonkin
+tonks
+tonle
+tonn
+tonnage
+tonne
+tonneau
+tonneaus
+tonner
+tonnes
+tonometer
+tonometer's
+tonometers
+tonometric
+tonometry
+tonoplast
+tons
+tonsil
+tonsillar
+tonsillectomy
+tonsillitis
+tonsillotomy
+tonsorial
+tonsure
+tonsured
+tonsuring
+tontine
+tonus
+tony
+too
+toodle
+took
+tool
+toolbox
+toolboxes
+tooled
+tooler
+toolers
+toolhead
+toolholder
+toolhouse
+tooling
+toolkit
+toolkit's
+toolkits
+toolmake
+toolmaker
+toolmakers
+toolmaking
+toolroom
+tools
+toolshed
+toolsmith
+toom
+Toomey
+toomey
+toon
+toot
+tooted
+tooter
+tooth
+toothache
+toothache's
+toothaches
+toothbrush
+toothbrush's
+toothbrushes
+toothbrushing
+toothed
+toothier
+toothily
+toothing
+toothless
+toothlike
+toothpaste
+toothpick
+toothpick's
+toothpicks
+tooths
+toothsome
+toothsomely
+toothsomeness
+toothwort
+toothy
+tooting
+tootle
+tootled
+tootler
+tootling
+toots
+tootsie
+tootsies
+tootsy
+toowoomba
+top
+toparch
+topaz
+topazolite
+topcoat
+topcoats
+topcross
+topdressing
+tope
+toped
+topee
+Topeka
+toper
+topes
+topflight
+topful
+topfull
+topgallant
+topheavy
+Tophet
+tophi
+tophus
+topi
+topiary
+topic
+topic's
+topical
+topicality
+topically
+topics
+toping
+topkick
+topknot
+topless
+toploftical
+toploftily
+toploftiness
+toplofty
+topmast
+topminnow
+topmost
+topnotch
+topnotcher
+topocentric
+topograph
+topographer
+topographic
+topographical
+topographically
+topographies
+topography
+topoi
+topological
+topologically
+topologies
+topologise
+topologist
+topology
+toponym
+toponymic
+toponymical
+toponymy
+topos
+topotype
+topped
+topper
+toppers
+topping
+toppings
+topple
+toppled
+topples
+toppling
+tops
+topsail
+topside
+topsides
+topsoil
+topspin
+topstitch
+Topsy
+topwork
+toque
+tor
+Torah
+torbay
+torc
+torch
+torch's
+torchbearer
+torches
+torchier
+torchlight
+torchon
+torchwood
+tore
+toreador
+torero
+toreutic
+toreutics
+tori
+toric
+Tories
+tories
+torii
+torino
+torment
+tormented
+tormenter
+tormenters
+tormentil
+tormenting
+tormentor
+torments
+torn
+tornadic
+tornado
+tornadoes
+tornados
+tornillo
+toroid
+toroidal
+toroidally
+toroids
+Toronto
+torose
+torpedo
+torpedoed
+torpedoes
+torpedoing
+torpedos
+torpid
+torpidity
+torpidly
+torpor
+torporize
+torporizes
+torquate
+torquay
+torque
+torquemada
+Torquemada
+torquer
+torquers
+torques
+torquing
+torr
+Torrance
+Torrance's
+torre
+torrefy
+torrence
+torrens
+torrent
+torrent's
+torrential
+torrentially
+torrents
+torres
+torricelli
+Torricellian
+torrid
+torridity
+torridly
+torridness
+torsade
+torsi
+torsibility
+torsion
+torsional
+torsionally
+Torsk
+torso
+torsos
+tort
+torte
+tortelier
+tortellini
+torten
+tortes
+torticollis
+tortile
+tortilla
+tortious
+tortiously
+tortoise
+tortoise's
+tortoises
+tortoiseshell
+tortola
+tortoni
+tortricid
+tortrix
+tortuga
+tortuosity
+tortuous
+tortuously
+torture
+tortured
+torturer
+torturers
+tortures
+torturing
+torturous
+torturously
+torula
+torus
+torus's
+toruses
+tory
+Tory
+Toryize
+Toryizes
+Tosca
+Tosca's
+toscana
+toscanini
+Toscanini
+Toscanini's
+tosh
+Toshiba
+Toshiba's
+toss
+tossed
+tosser
+tosses
+tossing
+tosspot
+tot
+total
+total's
+totaled
+totaler
+totaler's
+totalers
+totaling
+totalism
+totalistic
+totalitarian
+totalitarianism
+totalitarianize
+totalities
+totality
+totality's
+totalization
+totalization's
+totalizations
+totalizator
+totalize
+totalized
+totalizer
+totalizers
+totalizes
+totalizing
+totally
+totals
+totaquina
+totaquine
+tote
+toted
+totem
+totemic
+totemically
+totemism
+totemist
+totemistic
+totemite
+totemization
+totemization's
+totemizations
+toter
+totes
+tother
+toting
+totipotency
+totipotent
+toto
+Toto
+tots
+totted
+totter
+tottered
+tottering
+totteringly
+totters
+tottery
+totting
+toucan
+touch
+touchable
+touchback
+touchdown
+touchdowns
+touched
+toucher
+touches
+touchhole
+touchier
+touchiest
+touchily
+touchiness
+touching
+touchingly
+touchline
+touchmark
+touchstone
+touchstones
+touchwood
+touchy
+tough
+toughen
+toughened
+toughening
+toughens
+tougher
+toughest
+toughie
+toughies
+toughly
+toughness
+toughs
+toughy
+toul
+toulon
+Toulouse
+toulouse
+toupee
+tour
+touraco
+touraine
+tourane
+tourbillion
+tourbillon
+tourcoing
+toured
+Tourel
+tourer
+touring
+tourism
+tourist
+tourist's
+touristic
+touristically
+tourists
+touristy
+tourize
+tourizes
+tourmaline
+tournai
+tournament
+tournament's
+tournaments
+tournedos
+tourneur
+tourney
+tourneyed
+tourneying
+tourneys
+tourniquet
+tourniquets
+tours
+touse
+tousing
+tousle
+tousled
+tousles
+tousling
+toussaint
+tout
+touted
+touter
+touting
+touts
+touzle
+tovarich
+tovarish
+tow
+towage
+toward
+towardliness
+towardly
+towards
+towbar
+towboat
+towboats
+towed
+towel
+towel's
+toweled
+toweling
+towelings
+towels
+tower
+towered
+towering
+toweringly
+towerlike
+towers
+towhead
+towheaded
+towhee
+towie
+towing
+towkay
+towline
+towmond
+town
+town's
+townee
+towner
+townhall
+townhouse
+townies
+townlet
+townley
+Townley
+towns
+townscape
+Townsend
+townsfolk
+townshend
+township
+township's
+townships
+townsman
+townsmen
+townspeople
+Townsville
+townswoman
+townwear
+towny
+towpath
+towrope
+tows
+towsley
+Towsley
+toxaemia
+toxalbumin
+toxaphene
+toxemia
+toxemic
+toxic
+toxicant
+toxicity
+toxicogenic
+toxicologic
+toxicological
+toxicologically
+toxicologist
+toxicology
+toxicosis
+toxigenic
+toxigenicity
+toxin
+toxin's
+toxins
+toxoid
+toxophilite
+toxophilites
+toxophily
+toxoplasma
+toxoplasmic
+toxoplasmosis
+toy
+toyama
+toyed
+toyer
+toying
+toylike
+toynbee
+Toynbee
+toyon
+Toyota
+toys
+TP
+trabeate
+trabeated
+trabeation
+trabecula
+trabecular
+trabeculate
+trabzon
+tracasserie
+trace
+traceability
+traceable
+traceableness
+traceably
+traceback
+traceback's
+tracebacks
+traced
+traceless
+tracelessly
+tracepoint
+tracepoint's
+tracepoints
+tracer
+traceried
+tracers
+tracery
+traces
+trachea
+tracheae
+tracheal
+tracheary
+tracheate
+tracheated
+tracheid
+tracheidal
+tracheitis
+tracheobronchial
+tracheolar
+tracheole
+tracheophyte
+tracheostomy
+tracheotomy
+trachoma
+trachomatous
+trachyte
+trachytic
+tracing
+tracings
+track
+trackage
+tracked
+tracker
+trackers
+tracking
+tracklayer
+tracklaying
+trackless
+trackman
+tracks
+trackside
+tracksuit
+trackwalker
+tract
+tract's
+tractability
+tractable
+tractableness
+tractably
+Tractarianism
+Tractarians
+tractarians
+tractate
+tractile
+traction
+tractional
+tractive
+tractor
+tractor's
+tractorization
+tractorization's
+tractorizations
+tractorize
+tractorizes
+tractors
+tracts
+Tracy
+trad
+tradable
+trade
+tradeability
+tradeable
+traded
+trademark
+trademark's
+trademarks
+tradeoff
+tradeoffs
+trader
+traders
+trades
+tradescantia
+tradesman
+tradesmen
+tradespeople
+tradevman
+trading
+tradition
+tradition's
+traditional
+traditionalism
+traditionalistic
+traditionalists
+traditionalize
+traditionalized
+traditionalizes
+traditionally
+traditionary
+traditionize
+traditionizes
+traditionless
+traditions
+traditor
+tradtionalist
+traduce
+traduced
+traducement
+traducer
+traducianism
+traducing
+trafalgar
+traffic
+traffic's
+trafficable
+trafficked
+trafficker
+trafficker's
+traffickers
+trafficking
+traffics
+tragacanth
+tragedian
+tragedians
+tragedienne
+tragedies
+tragedy
+tragedy's
+tragi
+tragic
+tragical
+tragically
+tragicize
+tragicizes
+tragicomedy
+tragicomic
+tragicomical
+tragopan
+tragus
+traherne
+trail
+trailblaze
+trailblazer
+trailblazer's
+trailblazers
+trailblazing
+trailbreaker
+trailed
+trailer
+trailerable
+trailerist
+trailerite
+trailers
+trailership
+trailhead
+trailhead's
+trailheads
+trailing
+trailings
+trailless
+trails
+trailside
+train
+trainability
+trainable
+trainband
+trainbearer
+trained
+trainee
+trainee's
+trainees
+traineeship
+traineeships
+trainer
+trainers
+trainferry
+trainful
+training
+trainload
+trainload's
+trainloads
+trainman
+trainman's
+trainmen
+trains
+trainsick
+traipse
+traipsing
+trait
+trait's
+traitor
+traitor's
+traitoress
+traitorize
+traitorizes
+traitorous
+traitorously
+traitors
+traitress
+traits
+trajan
+traject
+trajection
+trajectories
+trajectory
+trajectory's
+tral
+tralee
+tram
+tramcar
+tramline
+trammel
+trammeled
+trammeler
+trammelers
+trammeling
+trammels
+trammie
+tramming
+tramontane
+tramp
+tramped
+tramper
+tramping
+trample
+trampled
+trampler
+tramples
+trampling
+trampoline
+trampoliner
+trampolining
+trampolinist
+tramps
+tramroad
+tramway
+trance
+trance's
+trancelike
+trances
+trancing
+tranformed
+trangam
+tranmission
+tranmitted
+trannie
+tranquil
+tranquility
+tranquilization
+tranquilization's
+tranquilizations
+tranquilize
+tranquilized
+tranquilizer
+tranquilizer's
+tranquilizers
+tranquilizes
+tranquilizing
+tranquilizing's
+tranquilizingly
+tranquilizings
+tranquillity
+tranquillization
+tranquillize
+tranquillized
+tranquillizer
+tranquillizers
+tranquillizes
+tranquillizing
+tranquilly
+tranquilness
+transact
+transacted
+transacting
+transactinide
+transaction
+transaction's
+transactional
+transactions
+transactor
+transacts
+transalpine
+transaminase
+transamination
+transatlantic
+transaxle
+transcalent
+Transcaucasia
+transceiver
+transceiver's
+transceivers
+transcend
+transcended
+transcendence
+transcendency
+transcendent
+transcendental
+transcendentalism
+transcendentalist
+transcendentalists
+transcendentalize
+transcendentalizes
+transcendentally
+transcendently
+transcending
+transcends
+transconductance
+transcontinental
+transcribe
+transcribed
+transcriber
+transcribers
+transcribes
+transcribing
+transcript
+transcript's
+transcription
+transcription's
+transcriptional
+transcriptionally
+transcriptions
+transcripts
+transcultural
+transculturation
+transcurrent
+transcutaneous
+transduced
+transducer
+transducers
+transducing
+transduction
+transductional
+transect
+transected
+transecting
+transection
+transects
+transept
+transeptal
+transepts
+transfer
+transfer's
+transferability
+transferable
+transferal
+transferal's
+transferals
+transferase
+transfered
+transferee
+transference
+transferential
+transferor
+transferors
+transferral
+transferral's
+transferrals
+transferred
+transferrer
+transferrer's
+transferrers
+transferring
+transfers
+transfiguration
+transfigure
+transfinite
+transfix
+transfixed
+transfixes
+transfixing
+transfixion
+transform
+transformable
+transformant
+transformants
+transformation
+transformation's
+transformational
+transformationalist
+transformations
+transformative
+transformed
+transformer
+transformers
+transforming
+transformism
+transforms
+transfusable
+transfuse
+transfused
+transfusible
+transfusing
+transfusion
+transfusional
+transfusions
+transglottal
+transgranular
+transgress
+transgressed
+transgresses
+transgressing
+transgression
+transgression's
+transgressions
+transgressive
+transgressor
+transgressors
+tranship
+transhumance
+transhumant
+transience
+transiency
+transient
+transiently
+transients
+transilient
+transilluminate
+transillumination
+transilluminator
+transistor
+transistor's
+transistorization
+transistorize
+transistorized
+transistorizes
+transistorizing
+transistors
+transit
+Transite
+Transite's
+transitio
+transition
+transitional
+transitionally
+transitioned
+transitions
+transitive
+transitively
+transitiveness
+transitivity
+transitorily
+transitoriness
+transitory
+transkei
+translatability
+translatable
+translate
+translated
+translates
+translating
+translation
+translational
+translations
+translative
+translator
+translator's
+translators
+translatory
+transliterate
+transliteration
+transliterator
+translocate
+translocation
+translucence
+translucency
+translucent
+translucently
+translunar
+transmarine
+transmembrane
+transmigrant
+transmigrate
+transmigration
+transmigrator
+transmigratory
+transmissibility
+transmissible
+transmission
+transmission's
+transmissions
+transmissive
+transmissivity
+transmissometer
+transmissometer's
+transmissometers
+transmit
+transmits
+transmittable
+transmittal
+transmittance
+transmittancy
+transmitted
+transmitter
+transmitter's
+transmitters
+transmitting
+transmogrification
+transmogrify
+transmontane
+transmountain
+transmundane
+transmutable
+transmutation
+transmutative
+transmute
+transmuted
+transmutes
+transmuting
+transnational
+transnatural
+transoceanic
+transom
+transoms
+transonic
+transpacific
+transpadane
+transparence
+transparencies
+transparency
+transparency's
+transparent
+transparentize
+transparentizes
+transparently
+transparentness
+transpassive
+transpersonal
+transpicuous
+transpierce
+transpiration
+transpirations
+transpire
+transpired
+transpires
+transpiring
+transplacental
+transplacentally
+transplant
+transplantability
+transplantable
+transplantation
+transplanted
+transplanter
+transplanting
+transplants
+transpolar
+transpond
+transponder
+transponders
+transpontine
+transport
+transportability
+transportable
+transportaion
+transportation
+transportational
+transportations
+transported
+transporter
+transporters
+transporting
+transports
+transposable
+transpose
+transposed
+transposes
+transposing
+transposition
+transpositional
+transput
+transputer
+Transputer
+transputers
+transsexual
+transsexualism
+transshape
+transship
+transshipment
+transshipped
+transshipping
+transships
+transthoracic
+transthoracically
+transubstantial
+transubstantiate
+transubstantiation
+transudate
+transudation
+transude
+transuded
+transuding
+transuranic
+transuranium
+Transvaal
+Transvaal's
+transvaluate
+transvaluation
+transvalue
+transversal
+transversally
+transverse
+transversely
+transverses
+transvestism
+transvestite
+transvestitism
+transylvania
+Transylvania
+Transylvania's
+Transylvanian
+tranverse
+trap
+trap's
+trapan
+trapani
+trapdoor
+trapdoors
+trapes
+trapeze
+trapeziform
+trapezist
+trapezium
+trapezius
+trapezohedron
+trapezoid
+trapezoid's
+trapezoidal
+trapezoids
+trapnest
+trappean
+trapped
+trapper
+trapper's
+trappers
+trapping
+trappings
+Trappist
+traprock
+traps
+trapshooter
+trapshooting
+trapunto
+trash
+trashed
+trasher
+trashes
+trashier
+trashiness
+trashing
+trashman
+trashy
+trasimene
+trass
+trattoria
+trauma
+traumas
+traumata
+traumatic
+traumatically
+traumatism
+traumatization
+traumatize
+traumatized
+traumatizes
+traumatizing
+travail
+travails
+travancore
+trave
+travel
+traveled
+traveler
+traveler's
+travelers
+traveling
+travelings
+travelog
+travelog's
+travelogs
+travels
+traversable
+traversal
+traversal's
+traversals
+traverse
+traversed
+traverser
+traverses
+traversing
+travertine
+travesties
+travesty
+travesty's
+Travis
+travois
+travoises
+trawl
+trawler
+trawlerman
+tray
+tray's
+trayal
+trayful
+traymobile
+trays
+treacheries
+treacherous
+treacherously
+treacherousness
+treachery
+treachery's
+treacle
+treacly
+tread
+treaded
+treader
+treading
+treadle
+treadled
+treadless
+treadling
+treadmill
+treads
+treadwell
+Treadwell
+treason
+treasonable
+treasonably
+treasonous
+treasurable
+treasure
+treasured
+treasurer
+treasurership
+treasures
+treasuries
+treasuring
+treasury
+treasury's
+treat
+treatability
+treatable
+treated
+treater
+treaters
+treaties
+treating
+treatise
+treatise's
+treatises
+treatment
+treatment's
+treatments
+treats
+treaty
+treaty's
+trebizond
+treble
+trebled
+trebles
+trebling
+Treblinka
+trebly
+trebuchet
+trebucket
+trecento
+tred
+tredecillion
+tree
+tree's
+treece
+treed
+treehopper
+treeing
+treeless
+treelike
+treen
+treenail
+treename
+treenames
+treenware
+trees
+treetop
+treetop's
+treetops
+tref
+trefoil
+trehala
+trehalase
+trehalose
+treillage
+treitschke
+trek
+trek's
+trekked
+trekker
+trekking
+treks
+trellis
+trellised
+trellises
+trelliswork
+trematode
+tremble
+trembled
+trembler
+trembles
+trembling
+trembly
+tremendous
+tremendously
+tremendousness
+tremolant
+tremolite
+tremolitic
+tremolo
+tremor
+tremor's
+tremors
+tremulant
+tremulous
+tremulously
+tremulousness
+trenail
+trench
+trenchancy
+trenchant
+trenchantly
+trenched
+trencher
+trencherman
+trenchermen
+trenchers
+trenches
+trend
+trendier
+trendily
+trendiness
+trending
+trends
+trendy
+trengganu
+Trent
+trente
+trento
+Trenton
+trepan
+trepanation
+trepang
+trepanned
+trepanning
+trepans
+trephination
+trephine
+trephined
+trephining
+trepid
+trepidant
+trepidation
+treponema
+treponemal
+treponematosis
+treponematous
+treponeme
+trespass
+trespassed
+trespasser
+trespassers
+trespasses
+tress
+tress's
+tressed
+tressel
+tresses
+tressure
+trestle
+trestles
+trestletree
+trestlework
+tret
+trevally
+Trevelyan
+Trevino
+Treviso
+trevithick
+Trevor
+trews
+trey
+treys
+tri
+triable
+triableness
+triac
+triacetate
+triacid
+triad
+triadic
+triadically
+triage
+trial
+trial's
+trialization
+trialogue
+trials
+triamcinolone
+triangle
+triangle's
+triangles
+triangular
+triangularity
+triangularization
+triangularizations
+triangularize
+triangularized
+triangularizes
+triangularizing
+triangularly
+triangulate
+triangulated
+triangulately
+triangulation
+Triangulum
+Trianon
+triarchy
+Triassic
+triatomic
+triaxial
+triaxiality
+triazine
+triazines
+triazole
+trib
+tribade
+tribal
+tribalism
+tribally
+tribasic
+tribe
+tribe's
+tribes
+tribesman
+tribesmen
+triblet
+triboelectric
+triboelectricity
+tribological
+tribologist
+tribology
+triboluminescence
+triboluminescent
+tribophysics
+tribrach
+tribrachic
+tribromide
+tribromoethanol
+tribulate
+tribulation
+tribulation's
+tribulations
+tribunal
+tribunal's
+tribunals
+tribunate
+tribune
+tribune's
+tribunes
+tribuneship
+tributary
+tribute
+tribute's
+tributes
+tributing
+tricarbonyl
+tricarboxylic
+tricarpellary
+tricarpellate
+trice
+tricentenary
+triceps
+tricepses
+triceratops
+trichiasis
+trichina
+trichinal
+Trichinella
+Trichinella's
+trichinize
+trichinopoly
+trichinosis
+trichinous
+trichite
+trichlorfon
+trichloride
+trichloro
+trichloroacetic
+trichloroethane
+trichloroethanol
+trichloroethylene
+trichocyst
+trichocystic
+trichogyne
+trichoid
+trichology
+trichome
+trichomic
+trichomonacidal
+trichomonacide
+trichomonad
+trichomonadal
+trichomonal
+trichomoniasis
+trichopteran
+trichosis
+trichotomous
+trichotomously
+trichotomy
+trichroism
+trichromat
+trichromatic
+trichromatism
+trichrome
+trichuriasis
+tricing
+trick
+tricked
+tricker
+trickeries
+trickery
+trickier
+trickiest
+trickily
+trickiness
+tricking
+trickish
+trickishly
+trickishness
+trickle
+trickled
+trickles
+trickling
+tricks
+tricksier
+tricksiness
+trickster
+tricksy
+tricktrack
+tricky
+triclad
+triclinic
+triclinium
+tricolette
+tricolor
+tricolor's
+tricolored
+tricolors
+tricorn
+tricorne
+tricornered
+tricostate
+tricot
+tricotine
+tricotyledonous
+tricritical
+tricriticality
+tricrotic
+trictrac
+tricuspid
+tricycle
+tricycles
+tricyclic
+tricyclohexyl
+tridactyl
+trident
+tridentate
+Tridentine
+tridents
+tridentum
+tridiagonal
+tridimensional
+tridimensionality
+triduum
+triecious
+tried
+triene
+triennial
+triennially
+triennium
+trier
+trierarch
+trierarchy
+triers
+tries
+trieste
+triethyl
+trifacial
+trifid
+trifle
+trifled
+trifler
+trifles
+trifling
+trifluoride
+trifluralin
+trifocal
+trifold
+trifoliate
+trifoliolate
+trifolium
+triforium
+triform
+trifurcate
+trifurcation
+trig
+trigeminal
+trigger
+triggered
+triggerfish
+triggering
+triggerman
+triggers
+trigging
+triglyceride
+triglycerides
+triglyph
+triglyphic
+triglyphical
+trigon
+trigonal
+trigonally
+trigonometric
+trigonometrical
+trigonometrically
+trigonometry
+trigonous
+trigram
+trigrams
+trigraph
+trigraphic
+trihedral
+trihedron
+trihybrid
+trihydrate
+trihydric
+trihydroxy
+triiodomethane
+triiodothyronine
+trijet
+trike
+trilateral
+trilaterality
+trilaterally
+trilateration
+trilbies
+trilby
+trilemma
+trilinear
+trilingual
+trilingually
+triliteral
+triliteralism
+trilithon
+trill
+trilled
+triller
+trillion
+trillionize
+trillionizes
+trillions
+trillionth
+trillium
+trilobate
+trilobation
+trilobed
+trilobite
+trilocular
+triloculate
+trilogy
+trim
+trimaran
+Trimble
+trimble
+trimer
+trimeric
+trimerization
+trimerization's
+trimerizations
+trimerous
+trimester
+trimestral
+trimestrial
+trimeter
+trimethadione
+trimetric
+trimetrogon
+trimly
+trimmed
+trimmer
+trimmest
+trimming
+trimmings
+trimness
+trimolecular
+trimonthly
+trimorph
+trimorphic
+trimorphism
+trimorphous
+trimotor
+trims
+trimurti
+trinacria
+trinal
+trinary
+trincomalee
+trindle
+trindled
+trindling
+trine
+Trinidad
+Trinil
+trinitarian
+trinitarians
+trinitrobenzene
+trinitrocresol
+trinitroglycerin
+trinitrophenol
+trinitrotoluene
+trinity
+trinket
+trinket's
+trinketed
+trinketer
+trinketry
+trinkets
+trinkums
+trinocular
+trinomial
+trinucleotide
+trio
+triode
+triodes
+trioecious
+triol
+triolein
+triolet
+trios
+triose
+trioxide
+trip
+trip's
+tripack
+tripalmitin
+tripartite
+tripartition
+tripe
+tripersonal
+triphammer
+triphammer's
+triphammers
+triphenyl
+triphenylarsine
+triphenylmethane
+triphenylphosphine
+triphenylstibine
+triphibian
+triphibious
+triphosphate
+triphosphopyridine
+triphthong
+triphthongal
+tripinnate
+tripinnately
+Tripitaka
+triplane
+triple
+tripled
+triples
+triplet
+triplet's
+tripletail
+triplets
+Triplett
+Triplett's
+triplex
+triplicate
+triplication
+triplicity
+tripling
+triplite
+triploblastic
+triploid
+triploidy
+triply
+tripod
+tripodal
+tripods
+tripody
+tripoli
+tripolitania
+tripolyphosphate
+tripos
+tripped
+tripper
+trippet
+tripping
+trippingly
+trips
+triptane
+tripterous
+triptolemus
+triptych
+triptyque
+tripura
+tripwire
+triquetrous
+triradiate
+trireme
+tris
+trisaccharide
+trisect
+trisection
+trisector
+triserial
+triskaidekaphobia
+triskele
+triskelion
+trismegistus
+trismus
+trisoctahedron
+trisodium
+trisome
+trisomic
+trisomy
+Tristan
+tristate
+triste
+tristearin
+tristeza
+tristful
+tristfully
+tristfulness
+tristich
+tristichous
+tristimulus
+trisubstituted
+trisulfide
+trisulphide
+trisyllabic
+trisyllabicall
+trisyllable
+trit
+tritanopia
+trite
+tritely
+triteness
+triter
+tritest
+tritheism
+tritheist
+tritheistic
+tritheistical
+trithing
+tritiate
+tritiated
+triticale
+Triticum
+tritium
+tritium's
+tritoma
+triton
+tritone
+triturable
+triturate
+trituration
+triturator
+triumph
+triumphal
+triumphant
+triumphantly
+triumphed
+triumphing
+triumphs
+triumvir
+triumviral
+triumvirate
+triune
+triunitarian
+trivalent
+trivalve
+trivandrum
+trivet
+trivia
+trivial
+trivialities
+triviality
+trivialization
+trivialize
+trivialized
+trivializes
+trivializing
+trivially
+trivium
+triweekly
+troas
+troat
+trobriand
+Trobriand
+trocar
+trochaic
+trochal
+trochanter
+trochanteral
+trochanteric
+trochar
+troche
+trochee
+trochelminth
+trochilus
+trochlea
+trochlear
+trochoid
+trochoidal
+trochophore
+trod
+trodden
+trode
+troff
+troff's
+troffer
+trog
+troglodyte
+troglodytic
+trogon
+trograd
+troika
+troilism
+troilite
+troilus
+trois
+Trojan
+troll
+troll's
+trolley
+trolley's
+trolleybus
+trolleyed
+trolleys
+trollied
+trollies
+trollop
+trollope
+trolls
+trolly
+tromba
+trombidiasis
+trombone
+trombone's
+trombones
+trombonist
+Tromelin
+trommel
+tromp
+trona
+Trondheim
+trone
+troop
+trooped
+trooper
+troopers
+trooping
+troops
+troopship
+troopships
+troostite
+trop
+tropaeolin
+tropaeolum
+trope
+Tropez
+tropez
+trophallaxis
+trophic
+trophically
+trophied
+trophies
+trophoblast
+trophoblastic
+trophoplasm
+trophozoite
+trophy
+trophy's
+trophying
+tropic
+tropic's
+tropical
+tropicalization
+tropicalization's
+tropicalizations
+tropicalize
+tropicalized
+tropicalizes
+tropicalizing
+tropically
+tropicbird
+tropics
+tropidoclonion
+tropine
+tropism
+tropisms
+tropistic
+tropocollagen
+tropologic
+tropological
+tropologically
+tropology
+tropomyosin
+tropopause
+tropophilous
+tropophyte
+troposphere
+tropospheric
+tropotaxis
+troppo
+tropylium
+trossachs
+trot
+troth
+trothplight
+trotline
+trots
+Trotsky
+trotsky
+trotskyism
+trotskyist
+trotted
+trotter
+trotting
+trotyl
+troubador
+troubadour
+troubadour's
+troubadours
+trouble
+troubled
+troublemaker
+troublemaker's
+troublemakers
+troubler
+troubles
+troubleshoot
+troubleshooted
+troubleshooter
+troubleshooters
+troubleshooting
+troubleshoots
+troubleshot
+troublesome
+troublesomely
+troublesomeness
+troubling
+troublous
+troublously
+troublousness
+trough
+troughs
+trounce
+trounced
+trounces
+trouncing
+troupe
+trouper
+troupes
+troupial
+trouping
+trouse
+trouser
+trousered
+trousers
+trousseau
+trousseaus
+trousseaux
+trout
+troutier
+Troutman
+trouts
+trouty
+trove
+trover
+trow
+Trowbridge
+trowel
+trowel's
+troweled
+troweler
+trowelers
+troweling
+trowels
+Troy
+troy
+Troyanos
+troyes
+truancy
+truant
+truant's
+truantry
+truants
+truce
+trucial
+trucing
+truck
+truckage
+trucked
+Truckee
+truckee
+trucker
+truckers
+truckie
+trucking
+truckle
+truckled
+truckler
+truckline
+truckling
+truckload
+truckload's
+truckloads
+truckman
+truckmaster
+trucks
+truculence
+truculency
+truculent
+truculently
+Trudeau
+Trudeau's
+trudge
+trudged
+trudgen
+trudger
+trudges
+trudging
+Trudy
+true
+trueborn
+trued
+truehearted
+trueheartedness
+trueing
+truelove
+trueness
+truepenny
+truer
+trues
+truest
+Truffaut
+truffle
+truffle's
+truffled
+truffles
+trug
+trugs
+truing
+truism
+truism's
+truisms
+truistic
+Trujillo
+trujillo
+Truk
+truk
+trull
+truly
+Truman
+Trumbull
+trumeau
+trump
+trumped
+trumpery
+trumpet
+trumpeted
+trumpeter
+trumpeting
+trumpetlike
+trumpets
+trumpetweed
+trumps
+truncate
+truncated
+truncates
+truncating
+truncation
+truncation's
+truncations
+truncheon
+truncheons
+trundle
+trundled
+trundler
+trundles
+trundling
+trunk
+trunk's
+trunked
+trunkfish
+trunkful
+trunks
+trunnel
+trunnion
+trunnions
+Truro
+truss
+trusser
+trusses
+trussing
+trust
+trustability
+trustable
+trustbuster
+trusted
+trustee
+trustee's
+trusteed
+trusteeing
+trustees
+trusteeship
+truster
+trustful
+trustfully
+trustfulness
+trustier
+trusties
+trustiness
+trusting
+trustingly
+trustless
+trusts
+trustworthily
+trustworthiness
+trustworthy
+trusty
+truth
+truthful
+truthfully
+truthfulness
+truths
+TRW
+try
+trying
+tryingly
+tryma
+tryout
+trypanosome
+trypanosomiasis
+tryparsamide
+trypsin
+trypsinize
+trypsinizes
+trypsinogen
+tryptamine
+tryptic
+tryptophan
+tryptophane
+tryptophanyl
+trysail
+tryst
+trytophan
+tryworks
+tsade
+tsana
+tsar
+tsarevich
+tsarevitch
+tsarevna
+tsarina
+tsarism
+tsarist
+tsaritsyn
+tselinograd
+tset
+tsetse
+tsetses
+tshiluba
+tshombe
+tsinan
+tsinghai
+tsingtao
+tsingyuan
+tso
+tsonga
+tsotsi
+tsugaru
+tsukahara
+tsunami
+tsunamic
+Tsunematsu
+tsunematsu
+tsushima
+tsutsugamushi
+tswana
+TTL
+TTY
+tty
+tty's
+ttys
+Tuamotu
+Tuareg
+tuart
+tuatara
+tub
+tub's
+tuba
+tubal
+tubate
+tubbable
+tubbed
+tubber
+tubbier
+tubbing
+tubby
+tube
+tubed
+tubeless
+tubelike
+tuber
+tubercle
+tubercled
+tubercular
+tubercularly
+tuberculate
+tuberculated
+tuberculation
+tuberculin
+tuberculinization
+tuberculinization's
+tuberculinizations
+tuberculinize
+tuberculinizes
+tuberculoid
+tuberculosis
+tuberculous
+tuberculously
+tuberization
+tuberization's
+tuberizations
+tuberize
+tuberizes
+tuberose
+tuberosity
+tuberous
+tubers
+tubes
+tubful
+tubifex
+tubifexes
+tubificid
+tubing
+tubman
+tubocurarine
+tubs
+tubuai
+tubular
+tubularity
+tubularly
+tubule
+tubules
+tubuliflorous
+tubulization
+tubulization's
+tubulizations
+tubulous
+Tucana
+tuchun
+tuck
+tuckahoe
+tucked
+tucker
+Tucker
+tuckered
+tuckering
+tucket
+tucking
+tucks
+Tuckwell
+tucotuco
+Tucson
+Tudor
+Tue
+tuebor
+tuel
+Tuesday
+Tuesday's
+Tuesdays
+tufa
+tufaceous
+tuff
+tuffaceous
+tuffet
+tuft
+tuft's
+tufted
+tufter
+tufts
+tufty
+tug
+tugboat
+tugela
+tugged
+tugger
+tugging
+tugrik
+tugs
+tui
+tuileries
+tuille
+tuition
+tuitional
+tuitions
+tula
+Tulane
+tularaemia
+tularemia
+tularemic
+tulation
+tulatory
+tule
+tulip
+tulip's
+tulips
+tulipwood
+tull
+tulle
+tullibee
+tully
+Tulsa
+tum
+tumble
+tumblebug
+tumbled
+tumbledown
+tumblehome
+tumbler
+tumblerful
+tumblers
+tumbles
+tumbleweed
+tumbling
+tumbrel
+tumbrels
+tumbril
+tumefaciens
+tumefacient
+tumefaction
+tumefactive
+tumefy
+tumescence
+tumescent
+tumid
+tumidity
+tumidly
+tummies
+tummy
+tummy's
+tumor
+tumor's
+tumoral
+tumored
+tumorigenic
+tumorigenicity
+tumorlike
+tumorlike's
+tumorlikes
+tumorous
+tumors
+tump
+tumpline
+tumular
+tumulose
+tumult
+tumult's
+tumults
+tumultuary
+tumultuous
+tumultuously
+tumultuousness
+tumulus
+tun
+tuna
+tunability
+tunable
+tunableness
+tunably
+tunas
+Tunbridge
+tundish
+tundra
+tune
+tuneable
+tuned
+tuneful
+tunefully
+tunefulness
+tuneless
+tunelessly
+tuner
+tuners
+tunes
+tunesmith
+tung
+tungstate
+tungsten
+tungstic
+tungstite
+tungstous
+tungting
+Tungus
+Tungusic
+tunguska
+tunic
+tunic's
+tunica
+tunicae
+tunicate
+tunicated
+tunicle
+tunics
+tuning
+tuning's
+tunings
+Tunis
+Tunisia
+Tunisian
+tunnage
+tunnel
+tunneled
+tunneler
+tunnelers
+tunneling
+tunnelings
+tunnellike
+tunnels
+tunny
+tup
+tupamaro
+tupelo
+Tupi
+tuple
+tuple's
+tuples
+tuppence
+tuppenny
+tupping
+tupungato
+tuque
+turaco
+tural
+Turanian
+turban
+turban's
+turbaned
+turbanned
+turbans
+turbary
+turbellarian
+turbid
+turbidimeter
+turbidimeter's
+turbidimeters
+turbidimetric
+turbidimetrically
+turbidimetry
+turbidite
+turbidity
+turbidly
+turbidness
+turbinal
+turbinate
+turbinated
+turbinates
+turbine
+turbines
+turbit
+turbjet
+turbo
+turbocar
+turbocharge
+turbocharger
+turboelectric
+turbofan
+turbogenerator
+turbojet
+turboprop
+turbos
+turboshaft
+turbosupercharged
+turbosupercharger
+turbot
+turbots
+turbulence
+turbulence's
+turbulency
+turbulent
+turbulently
+Turco
+turd
+turdine
+ture
+tured
+tureen
+turenne
+turf
+turfman
+turfski
+turfskiing
+turfy
+turgenev
+turgent
+turgescence
+turgescent
+turgid
+turgidity
+turgidly
+turgidness
+turgite
+turgor
+turgot
+Turin
+Turing
+Turing's
+turion
+turishcheva
+turk
+turkestan
+turkey
+Turkey
+turkey's
+turkeys
+Turki
+Turkic
+Turkish
+Turkism
+Turkize
+Turkizes
+Turkmen
+Turkoman
+turks
+Turks
+turku
+turmeric
+turmoil
+turmoil's
+turmoils
+turn
+turnable
+turnabout
+turnaround
+turnarounds
+turnbuckle
+turncoat
+turncock
+turndown
+turned
+turner
+turners
+turnery
+turning
+turnings
+turnip
+turnip's
+turnips
+turnkey
+turnkeys
+turnoff
+turnout
+turnouts
+turnover
+turnovers
+turnpike
+turnpikes
+turnround
+turns
+turnsole
+turnspit
+turnstile
+turnstone
+turntable
+turnup
+turnverein
+turpentine
+turpentinic
+turpentinous
+turpeth
+turpin
+turpitude
+turps
+turquois
+turquoise
+turret
+turret's
+turreted
+turrets
+turtle
+turtle's
+turtleback
+turtlebacks
+turtledove
+turtlehead
+turtleneck
+turtles
+turtling
+turves
+turvy
+Tuscaloosa
+Tuscan
+Tuscanize
+Tuscanizes
+Tuscany
+tusche
+tusculum
+tush
+tusk
+Tuskegee
+tusker
+tuskers
+tusklike
+tusks
+tussah
+tussaud
+tussis
+tussive
+tussle
+tussled
+tussles
+tussling
+tussock
+tussocks
+tussocky
+tussore
+tut
+Tutankhamen
+tutankhamen
+tutee
+tutees
+tutelage
+tutelar
+tutelary
+Tutenkhamon
+tutiorism
+tutor
+tutorage
+tutored
+tutoress
+tutorial
+tutorial's
+tutorials
+tutoring
+tutorization
+tutorization's
+tutorizations
+tutorize
+tutorizes
+tutors
+tutorship
+tutoyer
+tutsan
+tutsi
+tutti
+Tuttle
+tutty
+tutu
+tutuila
+tuva
+Tuvalu
+tux
+tuxedo
+tuxedo's
+tuxedoed
+tuxedos
+tuxtla
+tuyere
+TV
+TV's
+TVA
+tver
+TWA
+twaddle
+twaddled
+twaddler
+twaddles
+twaddling
+twae
+twain
+twang
+twanging
+twangy
+twas
+twat
+twattle
+twayblade
+tweak
+tweaked
+tweaker
+tweaking
+tweaks
+twee
+tweed
+tweeddale
+tweedier
+tweediness
+tweedledum
+tweedsmuir
+tweedy
+tween
+tweeny
+tweet
+tweeter
+tweeze
+tweezed
+tweezer
+tweezers
+tweezing
+twelfth
+twelfths
+Twelfthtide
+twelve
+twelvefold
+twelvemo
+twelvemonth
+twelves
+twenties
+twentieth
+twenty
+twentyfold
+twerp
+Twi
+twice
+Twickenham
+twiddle
+twiddled
+twiddles
+twiddling
+twig
+twig's
+twigged
+twigging
+twiggy
+twigs
+twilight
+twilight's
+twilights
+twilit
+twill
+twilled
+twilling
+twin
+twin's
+twinberry
+twinborn
+twine
+twined
+twiner
+twines
+twinflower
+twinge
+twingeing
+twinges
+twinging
+twining
+twinkle
+twinkled
+twinkler
+twinkles
+twinkling
+twinkly
+twinning
+twins
+twinship
+twiny
+twirl
+twirled
+twirler
+twirling
+twirlingly
+twirls
+twirly
+twirp
+twist
+twisted
+twister
+twisters
+twisting
+twists
+twisty
+twit
+twitch
+twitched
+twitcher
+twitchily
+twitching
+twitchy
+twite
+twitted
+twitter
+twittered
+twitterer
+twittering
+twittery
+twitting
+twixt
+two
+two's
+twofer
+twofold
+twohandedness
+Twombly
+Twombly's
+twopence
+twopences
+twopenny
+twos
+twosome
+TWP
+TWX
+TX
+Tyburn
+Tyburn's
+Tyche
+tychism
+tycho
+tycoon
+tye
+tying
+tyke
+tyke's
+tykes
+Tyler
+Tylerize
+Tylerizes
+tylopod
+tylosis
+tymbal
+tympan
+tympani
+tympani's
+tympanic
+tympanis
+tympanist
+tympanites
+tympanitic
+tympanitis
+tympanum
+tympanum's
+tympany
+tyndall
+tyndareus
+tynemouth
+tyneside
+Tynwald
+typal
+type
+type's
+typeable
+typeahead
+typebar
+typecase
+typecast
+typed
+typedef
+typedefs
+typeface
+typefounder
+typefounding
+typefoundry
+typeout
+typer
+types
+typescript
+typeset
+typesets
+typesetter
+typesetters
+typesetting
+typewrite
+typewriter
+typewriter's
+typewriters
+typewriting
+typewritten
+typey
+typhlitis
+typhlology
+typhlosole
+typhoeus
+typhogenic
+typhoid
+typhoidin
+Typhon
+typhoon
+typhus
+typic
+typical
+typicality
+typically
+typicalness
+typier
+typification
+typified
+typifies
+typify
+typifying
+typing
+typist
+typist's
+typists
+typo
+typograph
+typographer
+typographic
+typographical
+typographically
+typography
+typological
+typologically
+typologies
+typologist
+typology
+typos
+typothetae
+typy
+tyr
+tyramine
+tyrannic
+tyrannical
+tyrannically
+tyrannicalness
+tyrannicide
+tyrannize
+tyrannized
+tyrannizer
+tyrannizers
+tyrannizes
+tyrannizing
+tyrannizing's
+tyrannizingly
+tyrannizings
+tyrannosaur
+Tyrannosaurus
+tyrannosaurus
+Tyrannosaurus's
+tyrannous
+tyrannously
+tyranny
+tyrant
+tyrant's
+tyrants
+Tyrian
+tyro
+tyrocidin
+tyrocidine
+Tyrol
+Tyrolienne
+Tyrone
+tyros
+tyrosinase
+tyrosine
+tyrothricin
+Tyrr
+Tyrrhenian
+Tyson
+tyumen
+tzaddik
+tzaddikim
+tzar
+tzekung
+Tzeltal
+tzetze
+tzigane
+tzimmes
+tzitzis
+UART
+Ubangi
+ubbelohde
+ubiety
+Ubiquitarian
+ubiquitous
+ubiquitously
+ubiquitousness
+ubiquity
+ucayali
+ucca
+uccello
+UCLA
+udaipur
+udal
+Udall
+udall
+udder
+Ude
+udine
+udmurt
+udo
+udometer
+uele
+ufa
+ufd
+ufo
+ufology
+ugali
+Uganda
+ugaritic
+ugh
+ugli
+uglier
+ugliest
+uglification
+uglify
+uglily
+ugliness
+ugly
+Ugrian
+Ugric
+UHF
+uhlan
+Uhland
+Uhuru
+Uigur
+Uinta
+uintathere
+Uitlander
+Ujamaa
+Ujiji
+Ujjain
+Ujung
+UK
+Ukase
+Ukiyoe
+Ukraine
+Ukraine's
+Ukrainian
+Ukrainians
+ukulele
+ulama
+Ulan
+Ulbricht
+ulcer
+ulcer's
+ulcerate
+ulcerated
+ulcerates
+ulceration
+ulcerations
+ulcerative
+ulcered
+ulcering
+ulcerogenic
+ulcerous
+ulcers
+uldered
+ulema
+ulexite
+ulfilas
+ullage
+Ullman
+Ullswater
+Ulm
+ulmaceous
+ulna
+ulna's
+ulnar
+ulotrichous
+ulotrichy
+ulpian
+ulster
+Ulsterman
+ulterior
+ulteriorly
+ultima
+ultimacy
+ultimate
+ultimately
+ultimateness
+ultimatum
+ultimo
+ultimogeniture
+ultra
+ultrabasic
+ultracentralizer
+ultracentralizer's
+ultracentralizers
+ultracentrifugal
+ultracentrifugally
+ultracentrifugation
+ultracentrifuge
+ultraconservative
+ultrafashionable
+ultrafast
+ultrafiche
+ultrafilter
+ultrafiltration
+ultrahigh
+ultrahonorable
+ultrahonorable's
+ultrahonorables
+ultraism
+ultraist
+ultraistic
+ultramafic
+ultramarine
+ultramicro
+ultramicrometer
+ultramicrometers
+ultramicroscope
+ultramicroscopes
+ultramicroscopic
+ultramicrotome
+ultramicrotomes
+ultramicrotomy
+ultramodern
+ultramodernist
+ultramontane
+ultramontanism
+ultramundane
+ultranationalism
+ultranationalist
+ultrapure
+ultrapurely
+ultrared
+ultrasecret
+ultrashort
+ultrasonic
+ultrasonically
+ultrasonicate
+ultrasonicated
+ultrasonicates
+ultrasonicating
+ultrasonics
+ultrasound
+ultraspecialization
+ultraspecialization's
+ultraspecializations
+ultrastandardization
+ultrastandardization's
+ultrastandardizations
+ultrastructural
+ultrastructurally
+ultrastructure
+ultrathin
+ultraviolet
+ultravirus
+ultrawet
+Ultrix
+Ultrix's
+ululant
+ululate
+ululation
+ulva
+Ulyanovsk
+Ulysses
+umayyad
+umbel
+umbellate
+umbellifer
+umbelliferous
+umbellule
+umber
+umbered
+umbering
+umberto
+umbilical
+umbilicate
+umbilicated
+umbilication
+umbilici
+umbilicus
+umbilicuses
+umbles
+umbo
+umbonate
+umbones
+umbos
+umbra
+umbrae
+umbrage
+umbrageous
+umbrageously
+umbrageousness
+umbral
+umbrella
+umbrella's
+umbrellas
+umbria
+Umbrian
+Umbriel
+umiak
+umlaut
+ump
+umpirage
+umpire
+umpire's
+umpired
+umpires
+umpiring
+umpteen
+umpteenth
+umpy
+umrcc
+umtali
+un
+UN
+unabashed
+unabashedly
+unabated
+unabatedly
+unabbreviated
+unable
+unabridged
+unaccelerated
+unacceptability
+unacceptable
+unacceptably
+unaccessible
+unacclimatized
+unaccommodated
+unaccompanied
+unaccomplished
+unaccountability
+unaccountable
+unaccountably
+unaccounted
+unaccustomed
+unaccustomedly
+unachievable
+unachieved
+unacknowledged
+unacquainted
+unadaptable
+unadapted
+unadjustable
+unadjusted
+unadopted
+unadorned
+unadulterated
+unadulteratedly
+unadventurous
+unadvised
+unadvisedly
+unaesthetic
+unaffected
+unaffectedly
+unaffectedness
+unaffectionate
+unaffectionately
+unafraid
+unageing
+unaggregated
+unaggressive
+unagonize
+unaided
+Unalaska
+unalcoholized
+unalcoholized's
+unalcoholizeds
+unalienability
+unalienable
+unaligned
+unallocable
+unallocated
+unallocateed
+unalloyed
+unalterability
+unalterable
+unalterableness
+unalterably
+unaltered
+unamazed
+unambiguity
+unambiguous
+unambiguously
+unambitious
+unamortization
+unamortization's
+unamortizations
+unamortized
+unamuno
+unamused
+unamusing
+unanalyzable
+unanalyzed
+unanchor
+unanchored
+unaneled
+unanimalized
+unanimalized's
+unanimalizeds
+unanimity
+unanimous
+unanimously
+unannounced
+unanswerable
+unanswerably
+unanswered
+unantagonizable
+unantagonizable's
+unantagonizables
+unantagonized
+unantagonizing
+unanticipated
+unanticipatedly
+unapologetic
+unapologetically
+unapologizing
+unapostatized
+unapostatized's
+unapostatizeds
+unappealable
+unappealing
+unappealingly
+unappeasable
+unappeasably
+unappetizing
+unappetizingly
+unappreciated
+unappreciation
+unapproachability
+unapproachable
+unapproachably
+unappropriated
+unapt
+unaptly
+unaptness
+unarguable
+unarguably
+unarm
+unarmed
+unarmored
+unarticulated
+unary
+unashamed
+unashamedly
+unaskable
+unasked
+unassailability
+unassailable
+unassailableness
+unassailably
+unassembled
+unassertive
+unassign
+unassigned
+unassigns
+unassisted
+unassuageable
+unassuming
+unassumingness
+unasterisked
+unattach
+unattached
+unattainability
+unattainable
+unattended
+unattenuated
+unattractive
+unattractively
+unattractiveness
+unattributed
+unauthentic
+unauthenticated
+unauthorize
+unauthorized
+unauthorizedly
+unauthorizedness
+unauthorizes
+unavailability
+unavailable
+unavailing
+unavailingly
+unavailingness
+unaverage
+unavoidable
+unavoidably
+unaware
+unawarely
+unawareness
+unawares
+unbacked
+unbalance
+unbalanced
+unbalancedness
+unballasted
+unban
+unbandage
+unbanned
+unbanning
+unbans
+unbaptize
+unbaptized
+unbaptizes
+unbar
+unbarbered
+unbarred
+unbastardized
+unbated
+unbearable
+unbearably
+unbeatable
+unbeatably
+unbeaten
+unbeautiful
+unbeautifully
+unbecome
+unbecoming
+unbecomingly
+unbecomingness
+unbeknown
+unbeknownst
+unbelief
+unbelievable
+unbelievably
+unbeliever
+unbelieving
+unbelievingly
+unbelt
+unbelted
+unbend
+unbendable
+unbending
+unbent
+unbeseeming
+unbetrothed
+unbiased
+unbiasedness
+unbiblical
+unbid
+unbidden
+unbind
+unbirthday
+unbitted
+unblemished
+unblenched
+unblessed
+unblest
+unblinded
+unblinking
+unblinkingly
+unblock
+unblocked
+unblocking
+unblocks
+unblown
+unblushing
+unblushingly
+unbodied
+unbolt
+unbolted
+unboned
+unbonnet
+unbonneted
+unborn
+unbosom
+unbound
+unbounded
+unboundedness
+unbowed
+unbox
+unbrace
+unbraid
+unbranched
+unbreakable
+unbreathable
+unbred
+unbridle
+unbridled
+unbroke
+unbroken
+unbrutalize
+unbrutalized
+unbrutalizes
+unbrutize
+unbrutizes
+unbuckle
+unbudgeable
+unbudgeably
+unbudging
+unbudgingly
+unbuffered
+unbuild
+unbuilt
+unbundle
+unbundled
+unburden
+unburdened
+unbureaucratic
+unburied
+unburned
+unbuttered
+unbutton
+unbuttoned
+unbuttoning
+unbuttons
+uncage
+uncaged
+uncalculated
+uncalculating
+uncalculatingly
+uncalled
+uncanceled
+uncandid
+uncandidly
+uncannily
+uncanniness
+uncanny
+uncanonize
+uncanonized
+uncanonizes
+uncantonized
+uncantonized's
+uncantonizeds
+uncap
+uncapitalized
+uncared
+uncaring
+uncatchable
+uncatechized
+uncatechized's
+uncatechizedness
+uncatechizeds
+uncategorized
+uncatholicize
+uncatholicizes
+uncaught
+uncaused
+uncauterized
+uncauterized's
+uncauterizeds
+unceasing
+unceasingly
+uncelebrated
+uncelestialized
+uncelestialized's
+uncelestializeds
+uncensored
+unceremonious
+unceremoniously
+unceremoniousness
+uncertain
+uncertainly
+uncertainness
+uncertainties
+uncertainty
+uncertified
+unchain
+unchallengeable
+unchallenged
+unchancy
+unchangeability
+unchangeable
+unchangeably
+unchangealeness
+unchanged
+unchanging
+unchangingly
+unchangingness
+uncharacteristic
+uncharacteristically
+uncharacterized
+uncharge
+uncharged
+uncharitable
+uncharitableness
+uncharitably
+uncharted
+unchartered
+unchaste
+unchastely
+unchasteness
+unchastity
+uncheckable
+unchecked
+unchivalrous
+unchivalrously
+unchloridized
+unchloridized's
+unchloridizeds
+unchoke
+unchosen
+unchristian
+unchristianize
+unchristianized
+unchristianizes
+unchurch
+uncial
+uncially
+unciform
+uncil
+uncinaria
+uncinariasis
+uncinate
+uncinus
+uncircularized
+uncircularized's
+uncircularizeds
+uncircumcised
+uncircumcision
+uncivil
+uncivilizable
+uncivilizable's
+uncivilizables
+uncivilize
+uncivilized
+uncivilizedly
+uncivilizedness
+uncivilizes
+uncivilly
+unclad
+unclaimed
+unclamorous
+unclamorously
+unclamorousness
+unclamp
+unclarity
+unclasp
+unclasping
+unclassical
+unclassified
+uncle
+uncle's
+unclean
+uncleanliness
+uncleanly
+uncleanness
+unclear
+uncleared
+unclench
+unclenched
+unclericalize
+unclericalizes
+uncles
+unclimbable
+unclimbableness
+unclinch
+unclipped
+uncloak
+unclog
+unclose
+unclosed
+unclothe
+unclothed
+unclouded
+uncloudedly
+unclustered
+unclutter
+uncluttered
+unco
+uncoated
+uncock
+uncodable
+uncodeable
+uncoded
+uncoffin
+uncoffined
+uncoil
+uncoiled
+uncoiling
+uncoined
+uncolonize
+uncolonized
+uncolonizes
+uncolorable
+uncolorable's
+uncolorables
+uncolorablies
+uncolorably
+uncolored
+uncoloredly
+uncoloredness
+uncoloreds
+uncombable
+uncomfortable
+uncomfortably
+uncomforted
+uncomment
+uncommented
+uncommenting
+uncomments
+uncommercial
+uncommitted
+uncommon
+uncommonly
+uncommonness
+uncommunicable
+uncommunicative
+uncompassionate
+uncompetitive
+uncompetitiveness
+uncomplaining
+uncomplainingly
+uncompleted
+uncomplicated
+uncomplimentary
+uncomprehending
+uncomprehendingly
+uncompress
+uncompressed
+uncompresses
+uncompressing
+uncompromisable
+uncompromising
+uncompromisingly
+uncomputable
+unconceivable
+unconcern
+unconcerned
+unconcernedly
+unconcernedness
+unconditional
+unconditionally
+unconditioned
+unconfined
+unconfirmed
+unconformable
+unconformably
+unconformity
+uncongenial
+uncongeniality
+unconnected
+unconquerable
+unconquerably
+unconscionability
+unconscionable
+unconscionableness
+unconscionably
+unconscious
+unconsciously
+unconsciousness
+unconservative
+unconsidered
+unconsolidated
+unconstitutional
+unconstitutionality
+unconstitutionally
+unconstrained
+unconstraint
+uncontaminated
+uncontested
+uncontrollability
+uncontrollable
+uncontrollably
+uncontrolled
+uncontroversial
+unconventional
+unconventionality
+unconventionalize
+unconventionalizes
+unconventionally
+unconvertible
+unconvinced
+unconvincing
+unconvincingly
+unconvincingness
+uncool
+uncooled
+uncooperative
+uncoordinated
+uncork
+uncorked
+uncorrectable
+uncorrected
+uncorrelated
+uncorseted
+uncountable
+uncountably
+uncounted
+uncouple
+uncoupler
+uncourageous
+uncousinly
+uncouth
+uncouthly
+uncouthness
+uncovenanted
+uncover
+uncovered
+uncovering
+uncovers
+uncreated
+uncritical
+uncritically
+uncriticizable
+uncriticizable's
+uncriticizables
+uncriticized
+uncriticizing
+uncriticizingly
+uncross
+uncrown
+uncrowned
+uncrumple
+uncrushable
+uncrystallizabilities
+uncrystallizability
+uncrystallizability's
+uncrystallizable
+uncrystallizable's
+uncrystallizables
+uncrystallized
+unction
+unctuous
+unctuously
+unctuousness
+uncured
+uncurl
+uncurled
+uncurricularized
+uncurricularized's
+uncurricularizeds
+uncus
+uncut
+uncynical
+uncynically
+undamaged
+undamped
+undated
+undauntable
+undaunted
+undauntedly
+undebatable
+undebatably
+undecagon
+undeceive
+undecidable
+undecided
+undecillion
+undeclared
+undecomposable
+undecorated
+undedicated
+undefended
+undefense
+undefense's
+undefenses
+undefinability
+undefinable
+undefine
+undefined
+undefinedness
+undeflected
+undeformed
+undelete
+undeleted
+undeliverability
+undeliverable
+undemagnetizable
+undemagnetizable's
+undemagnetizables
+undemocratic
+undemocratically
+undemocratize
+undemocratizes
+undemonstrative
+undemonstratively
+undemonstrativeness
+undeniable
+undeniableness
+undeniably
+undenominationalize
+undenominationalizes
+undependable
+undepicted
+under
+underachieve
+underachievers
+underact
+underactivity
+underadjusting
+underage
+underarm
+underbedding
+underbelly
+underbid
+underbidder
+underbody
+underbracing
+underbred
+underbrim
+underbrush
+underbuy
+undercapitalization
+undercapitalization's
+undercapitalizations
+undercapitalize
+undercapitalized
+undercapitalizes
+undercapitalizing
+undercarriage
+undercart
+undercharge
+underclass
+underclassman
+underclassmen
+underclay
+underclothes
+underclothing
+undercoat
+undercoating
+undercolor
+undercolor's
+undercolored
+undercoloring
+undercolorings
+undercolors
+underconsumption
+undercook
+undercooked
+undercool
+undercount
+undercounts
+undercover
+undercroft
+undercurrent
+undercut
+undercutting
+underdevelop
+underdeveloped
+underdevelopment
+underdo
+underdog
+underdone
+underdrawers
+underdress
+underdressed
+undereducated
+undereducation
+underemphasis
+underemphasize
+underemphasized
+underemphasizes
+underemphasizing
+underemployed
+underemployment
+underenumerated
+underenumeration
+underestimate
+underestimated
+underestimates
+underestimating
+underestimation
+underestimations
+underexpose
+underexposure
+underfeed
+underfelt
+underfilled
+underfloor
+underflow
+underflowed
+underflowing
+underflows
+underfoot
+underfur
+undergarment
+undergarments
+undergird
+undergirding
+underglaze
+undergo
+undergoes
+undergoing
+undergone
+undergrad
+undergrad's
+undergrads
+undergraduate
+undergraduate's
+undergraduates
+underground
+undergrounder
+undergrown
+undergrowth
+underhand
+underhanded
+underhandedly
+underhandedness
+underheat
+underhung
+underinsurance
+underivable
+underived
+underlaborer
+underlaborer's
+underlaborers
+underlaid
+underlay
+underlayment
+underlet
+underletting
+underlie
+underlies
+underline
+underlined
+underlinen
+underlines
+underling
+underling's
+underlings
+underlining
+underlinings
+underlip
+underly
+underlying
+undermanned
+undermentioned
+undermine
+undermined
+undermines
+undermining
+undermost
+underneath
+undernourish
+undernourished
+undernourishment
+undernutrition
+underorganization
+underorganization's
+underorganizations
+underoxidize
+underoxidizes
+underpaid
+underpainting
+underpants
+underpart
+underpass
+underpasses
+underpay
+underpayment
+underpayment's
+underpayments
+underpin
+underpinned
+underpinning
+underpinnings
+underpins
+underpitch
+underpitched
+underpitches
+underpitching
+underplay
+underplayed
+underplaying
+underplays
+underplot
+underplots
+underpopulated
+underpowered
+underprice
+underpriced
+underprices
+underpricing
+underprivileged
+underproduction
+underproductive
+underproof
+underprop
+underquote
+underrate
+underrated
+underrealize
+underrealizes
+underregistration
+underreport
+underreported
+underreporting
+underrepresentation
+underrepresented
+underripe
+underrun
+undersaturated
+undersavior
+undersavior's
+undersaviors
+underscore
+underscored
+underscores
+undersea
+underseal
+underseas
+undersecretariat
+undersecretaries
+undersecretary
+undersecretary's
+undersell
+underset
+undersexed
+undersheriff
+undershirt
+undershirt's
+undershirts
+undershoot
+undershooting
+undershoots
+undershorts
+undershot
+undershrub
+underside
+underside's
+undersides
+undersigned
+undersize
+undersized
+undersizes
+undersizing
+underskirt
+underslung
+undersmooth
+undersmoothed
+undersmoothing
+undersmooths
+undersong
+underspent
+underspin
+understaff
+understaffed
+understand
+understandability
+understandable
+understandably
+understanding
+understandingly
+understandings
+understands
+understate
+understated
+understatement
+understatements
+understates
+understating
+understeer
+understood
+understory
+understrapper
+understrength
+understructure
+understructure's
+understructures
+understudies
+understudy
+understudy's
+undersupply
+undersurface
+undertake
+undertaken
+undertaker
+undertaker's
+undertakers
+undertakes
+undertaking
+undertakings
+undertenant
+underthrust
+undertint
+undertone
+undertook
+undertow
+undertow's
+undertows
+undertrick
+undertrump
+undertype
+underused
+underutilization
+underutilize
+underutilized
+undervaluation
+undervalue
+undervalued
+undervaluing
+undervitalized
+undervitalized's
+undervitalizeds
+underwaist
+underwater
+underway
+underwear
+underweight
+underwent
+underwhelm
+underwhelmed
+underwhelming
+underwhelms
+underwing
+underwood
+underwool
+underworld
+underwrite
+underwriter
+underwriters
+underwrites
+underwriting
+undescended
+undeserved
+undesigned
+undesigning
+undesirability
+undesirable
+undesirableness
+undesirably
+undesired
+undetectability
+undetectable
+undetected
+undetermined
+undeveloped
+undeviated
+undeviating
+undeviatingly
+undialectical
+undialyzed
+undialyzed's
+undialyzeds
+undid
+undies
+undifferentiated
+undigested
+undignified
+undiluted
+undiminished
+undimmed
+undine
+undiphthongize
+undiphthongizes
+undiplomatic
+undiplomatically
+undirected
+undirectional
+undisciplined
+undisclosed
+undiscolored
+undiscolored's
+undiscoloreds
+undiscovered
+undiscussed
+undisguised
+undisguisedly
+undishonored
+undismayed
+undisorganized
+undisputed
+undisrupted
+undissociated
+undistinguished
+undistorted
+undistributed
+undisturbed
+undivided
+undo
+undock
+undocumented
+undoer
+undoes
+undogmatic
+undogmatically
+undoing
+undoings
+undomesticated
+undone
+undouble
+undoubled
+undoubted
+undoubtedly
+undrained
+undramatic
+undramatically
+undramatizable
+undramatizable's
+undramatizables
+undramatized
+undramatized's
+undramatizeds
+undrape
+undraw
+undreamed
+undreamt
+undress
+undressed
+undresses
+undressing
+undried
+undrinkable
+undro
+undrunk
+undset
+undualize
+undualizes
+undue
+undulant
+undulate
+undulated
+undulates
+undulating
+undulation
+undulations
+undulatory
+unduly
+undumper
+undumper's
+undutiful
+undutifully
+undutifulness
+undying
+une
+unearned
+unearth
+unearthed
+unearthing
+unearthliness
+unearthly
+unease
+uneasily
+uneasiness
+uneasy
+uneconomic
+uneconomical
+uneconomizing
+unedited
+uneducated
+unelected
+unembellished
+unemotional
+unemotionally
+unemphatic
+unemphatically
+unemployability
+unemployable
+unemployed
+unemployment
+unenamored
+unenamored's
+unenamoreds
+unencroachable
+unencumbered
+unendeavored
+unending
+unendingly
+unendurable
+unendurableness
+unendurably
+unenergized
+unenergized's
+unenergizeds
+unenforcable
+unenforceable
+unenforcible
+unenlightening
+unenthusiastic
+unenthusiastically
+unenumerated
+unenunciated
+unenviable
+unenvied
+unepitomized
+unequal
+unequaled
+unequalize
+unequalized
+unequalizes
+unequally
+unequivocably
+unequivocal
+unequivocally
+unerring
+unerringly
+UNESCO
+unessential
+unethically
+uneulogized
+uneulogized's
+uneulogizeds
+unevaluated
+unevangelized
+unevangelized's
+unevangelizeds
+uneven
+unevenly
+unevenness
+uneventful
+uneventfully
+unexamined
+unexampled
+unexceptionable
+unexceptionableness
+unexceptionably
+unexceptional
+unexceptionally
+unexcited
+unexcused
+unexpanded
+unexpected
+unexpectedly
+unexpectedness
+unexpended
+unexperienced
+unexplainable
+unexplained
+unexploited
+unexplored
+unexpressed
+unexpressive
+unextended
+unfaded
+unfading
+unfadingly
+unfailing
+unfailingly
+unfailingness
+unfair
+unfairly
+unfairness
+unfaith
+unfaithful
+unfaithfully
+unfaithfulness
+unfaltering
+unfalteringly
+unfamiliar
+unfamiliarity
+unfamiliarized
+unfamiliarly
+unfancy
+unfashionable
+unfashionably
+unfasten
+unfastened
+unfathered
+unfathomable
+unfavorable
+unfavorable's
+unfavorableness
+unfavorables
+unfavorably
+unfavored
+unfavored's
+unfavoring
+unfavoring's
+unfavorings
+unfavorite
+unfavorite's
+unfavorites
+unfeathered
+unfederated
+unfeeling
+unfeelingly
+unfeelingness
+unfeigned
+unfeignedly
+unfelt
+unfenced
+unfertile
+unfertilizable
+unfertilizable's
+unfertilizables
+unfertilized
+unfetter
+unfettered
+unfeudalize
+unfeudalized
+unfeudalizes
+unfilial
+unfilially
+unfilled
+unfindable
+unfinished
+unfired
+unfit
+unfitly
+unfitness
+unfitted
+unfitting
+unfix
+unfixable
+unfixed
+unflagging
+unflaggingly
+unflappability
+unflappable
+unflattering
+unflatteringly
+unflavored
+unfledged
+unflinching
+unflinchingly
+unfocused
+unfold
+unfolded
+unfolding
+unfoldment
+unfolds
+unforced
+unforeseen
+unforgeable
+unforgettability
+unforgettable
+unforgettably
+unforgivable
+unforgiveable
+unforgiveably
+unforgiving
+unforgivingness
+unformalized
+unformatted
+unformed
+unforseen
+unforthcoming
+unfortunate
+unfortunately
+unfortunates
+unfossilized
+unfossilized's
+unfossilizeds
+unfounded
+unfraternizing
+unfraternizing's
+unfraternizings
+unfreeze
+unfrequented
+unfriended
+unfriendliness
+unfriendly
+unfrock
+unfrocking
+unfrosted
+unfrozen
+unfruitful
+unfruitfully
+unfruitfulness
+unfulfilled
+unfunded
+unfunnily
+unfurl
+unfurled
+unfurnished
+unfussy
+ungainliness
+ungainly
+ungallant
+ungallantly
+ungalvanized
+ungalvanized's
+ungalvanizeds
+ungaretti
+ungava
+ungelatinizable
+ungelatinizable's
+ungelatinizables
+ungelatinized
+ungelatinized's
+ungelatinizeds
+ungeneralized
+ungenerosity
+ungenerous
+ungenerously
+ungentilize
+ungentilizes
+ungentlemanize
+ungentlemanizes
+ungird
+ungirt
+unglamorous
+unglazed
+unglue
+unglued
+ungodliness
+ungodly
+ungospelized
+ungospelized's
+ungospelizeds
+ungot
+ungotten
+ungovernable
+ungoverned
+ungraceful
+ungracefully
+ungracefulness
+ungracious
+ungraciously
+ungraded
+ungrammatical
+ungrammaticality
+ungraphitized
+ungraphitized's
+ungraphitizeds
+ungrateful
+ungratefully
+ungratefulness
+ungratified
+ungrounded
+ungrudging
+ungual
+unguard
+unguarded
+unguardedly
+unguardedness
+unguent
+unguessable
+unguessed
+unguiculate
+unguided
+unguinous
+unguis
+ungula
+ungulate
+unguligrade
+unhair
+unhallow
+unhallowed
+unhampered
+unhand
+unhandily
+unhandiness
+unhandsome
+unhandsomely
+unhandy
+unhappier
+unhappiest
+unhappily
+unhappiness
+unhappy
+unharbor
+unharbor's
+unharbored
+unharmed
+unharmonious
+unharmonize
+unharmonized
+unharmonizes
+unharness
+unhealthily
+unhealthiness
+unhealthy
+unheard
+unheated
+unheeded
+unheeding
+unhelm
+unhelpful
+unhelpfully
+unheralded
+unheroize
+unheroizes
+unhesitant
+unhesitating
+unhesitatingly
+unhinge
+unhinged
+unhitch
+unhitched
+unhitches
+unhitching
+unholiness
+unholy
+unhonorable
+unhonorable's
+unhonorables
+unhonorablies
+unhonorably
+unhonored
+unhood
+unhook
+unhooked
+unhooking
+unhooks
+unhoped
+unhorse
+unhorsed
+unhouseled
+unhumored
+unhurried
+unhurriedly
+unhurt
+unhydrolyzed
+unhydrolyzed's
+unhydrolyzeds
+unhypnotizable
+unhypnotizable's
+unhypnotizables
+unhypnotize
+unhypnotizes
+unhysterical
+unhysterically
+uni
+unialgal
+Uniat
+uniaxial
+uniaxially
+unibus
+Unibus
+unibuss
+unicameral
+unicamerally
+unicef
+unicellular
+unicellularity
+unicolour
+unicorn
+unicorn's
+unicorns
+unicostate
+unicycle
+unicyclist
+unideal
+unidealized
+unidentifiable
+unidentified
+unidimensional
+unidirection
+unidirectional
+unidirectionality
+unidirectionally
+unidolized
+unidolized's
+unidolizeds
+unifactorial
+unifiable
+unification
+unifications
+unified
+unifier
+unifiers
+unifies
+unifilar
+unifoliate
+unifoliolate
+uniform
+uniformally
+uniformed
+uniforming
+uniformitarian
+uniformitarianism
+uniformities
+uniformity
+uniformization
+uniformization's
+uniformizations
+uniformize
+uniformizes
+uniformly
+uniformness
+uniforms
+unify
+unifying
+unijugate
+unilateral
+unilateralist
+unilateralists
+unilateralization
+unilateralization's
+unilateralizations
+unilateralize
+unilateralizes
+unilaterally
+unilinear
+unilingual
+uniliteral
+unilluminating
+unillusioned
+unilocular
+unimaginable
+unimaginably
+unimaginative
+unimaginatively
+unimak
+unimmortalize
+unimmortalized
+unimmortalizes
+unimodal
+unimodular
+unimpaired
+unimpassioned
+unimpeachable
+unimpeachably
+unimpeded
+unimplemented
+unimportance
+unimportant
+unimposing
+unimpressed
+unimpressive
+unimproved
+unincorporated
+unindented
+unindividualize
+unindividualized
+unindividualizes
+unindustrialized
+unindustrialized's
+unindustrializeds
+uninfected
+uninfluenced
+uninfluential
+uninformative
+uninformatively
+uninformed
+uninhabited
+uninhibited
+uninhibitedly
+uninhibitedness
+uninitializable
+uninitialized
+uninitiate
+uninitiated
+uninjectable
+uninjured
+uninominal
+uninspired
+uninspiring
+uninstantiated
+uninsulated
+unintelligence
+unintelligent
+unintelligently
+unintelligibility
+unintelligible
+unintelligibleness
+unintelligibly
+unintended
+unintentional
+unintentionally
+uninterested
+uninteresting
+uninterestingly
+uninterpretable
+uninterpreted
+uninterruptable
+uninterrupted
+uninterruptedly
+uninterruptedness
+uninterviewed
+uninucleate
+uninvaginated
+uninvited
+uninvolved
+union
+Union
+union's
+unionism
+unionist
+unionists
+unionization
+unionization's
+unionizations
+unionize
+unionized
+unionizer
+unionizers
+unionizes
+unionizing
+unions
+uniparental
+uniparentally
+uniparous
+unipersonal
+uniplanar
+uniplex
+UniPlus
+UniPlus's
+unipod
+unipolar
+unipolarity
+uniprocessor
+uniprocessor's
+uniprocessors
+unique
+uniquely
+uniqueness
+uniramous
+Uniroyal
+uniseptate
+uniserial
+unisex
+unisexual
+unisexuality
+unisexually
+UniSoft
+UniSoft's
+unison
+Unisys
+unit
+unit's
+unitage
+unital
+unitalicized
+unitarian
+unitarianism
+Unitarianize
+Unitarianizes
+unitarians
+unitarily
+unitarity
+unitary
+unite
+united
+United
+unitedly
+unitemized
+uniter
+uniterm
+unites
+unities
+uniting
+unitive
+unitization
+unitize
+unitized
+unitizes
+unitizing
+units
+unity
+unity's
+Univac
+univalent
+univalve
+univalve's
+univalves
+univariate
+universal
+universalism
+universalist
+universalistic
+universality
+universalization
+universalization's
+universalizations
+universalize
+universalized
+universalizer
+universalizers
+universalizes
+universalizing
+universally
+universalness
+universals
+universe
+universe's
+universes
+universities
+university
+university's
+univocal
+univocally
+Unix
+Unix's
+UNIX's
+unjacketed
+unjam
+unjammed
+unjamming
+unjoined
+unjournalized
+unjust
+unjustifiable
+unjustified
+unjustly
+unjustness
+unkempt
+unkenned
+unkennel
+unkenneled
+unkenneling
+unkind
+unkindliness
+unkindly
+unkindness
+unkink
+unknit
+unknowable
+unknowing
+unknowingly
+unknown
+unknowns
+unlabeled
+unlabialize
+unlabializes
+unlaborable
+unlaborable's
+unlaborables
+unlabored
+unlabored's
+unlaboring
+unlaboring's
+unlaborings
+unlace
+unlaced
+unlacing
+unlade
+unlamented
+unlash
+unlashed
+unlatch
+unlaundered
+unlawful
+unlawfully
+unlawfulness
+unlay
+unlead
+unleaded
+unlearn
+unlearned
+unleash
+unleashed
+unleashes
+unleashing
+unleavened
+unlegalized
+unless
+unlettable
+unlettered
+unleveled
+unleveling
+unliberalized
+unlicensed
+unlicked
+unlike
+unlikelihood
+unlikelihoods
+unlikeliness
+unlikely
+unlikeness
+unlimber
+unlimbered
+unlimbering
+unlimbers
+unlimited
+unlimitedly
+unlined
+unlink
+unlinked
+unlinking
+unlinks
+unlisted
+unliterary
+unlive
+unload
+unloaded
+unloader
+unloaders
+unloading
+unloads
+unlocalizable
+unlocalizable's
+unlocalizables
+unlocalize
+unlocalized
+unlocalizes
+unlock
+unlocked
+unlocking
+unlocks
+unlogged
+unloose
+unloosen
+unloved
+unloveliness
+unlovely
+unluckily
+unluckiness
+unlucky
+unmade
+unmagnetized
+unmagnetized's
+unmagnetizeds
+unmagnified
+unmaintainable
+unmaintained
+unmake
+unmalicious
+unmaliciously
+unman
+unmanageable
+unmanageably
+unmanaged
+unmanliness
+unmanly
+unmanned
+unmannered
+unmanneredly
+unmannerliness
+unmannerly
+unmapped
+unmaps
+unmarked
+unmarred
+unmarried
+unmarrieds
+unmask
+unmasked
+unmatchable
+unmatched
+unmate
+unmated
+unmates
+unmating
+unmeaning
+unmeant
+unmeasurable
+unmeasured
+unmechanize
+unmechanized
+unmechanizes
+unmediatized
+unmediatized's
+unmediatizeds
+unmeet
+unmemorable
+unmemorably
+unmemorialized
+unmemorialized's
+unmemorializeds
+unmemorized
+unmentionable
+unmentionables
+unmentioned
+unmercerized
+unmercerized's
+unmercerizeds
+unmerciful
+unmercifully
+unmeritorious
+unmeshed
+unmesmerize
+unmesmerized
+unmesmerizes
+unmet
+unmetalized
+unmetalized's
+unmetalizeds
+unmethodical
+unmethodized
+unmethodized's
+unmethodizeds
+unmethodizing
+unmethodizing's
+unmethodizings
+unmindful
+unmineralized
+unmineralized's
+unmineralizeds
+unminimized
+unmissionized
+unmissionized's
+unmissionizeds
+unmistakable
+unmistakably
+unmitigatd
+unmitigated
+unmitigatedly
+unmitigatedness
+unmixed
+unmobilized
+unmobilized's
+unmobilizeds
+unmodeled
+unmoderated
+unmodernize
+unmodernized
+unmodernizes
+unmodifiable
+unmodified
+unmolested
+unmonopolize
+unmonopolized
+unmonopolizes
+unmonopolizing
+unmonopolizings
+unmoor
+unmoral
+unmorality
+unmoralize
+unmoralized
+unmoralizes
+unmoralizing
+unmoralizings
+unmotivated
+unmotorized
+unmount
+unmountable
+unmounted
+unmoved
+unmoving
+unmuffle
+unmunicipalized
+unmunicipalized's
+unmunicipalizeds
+unmurmuring
+unmusical
+unmutualized
+unmutualized's
+unmutualizeds
+unmuzzle
+unmyelinated
+unmysticize
+unmysticizes
+unnail
+unnameable
+unnamed
+unnationalized
+unnatural
+unnaturalizable
+unnaturalizable's
+unnaturalizables
+unnaturalize
+unnaturalized
+unnaturalizes
+unnaturally
+unnaturalness
+unnecessarily
+unnecessary
+unneeded
+unnegated
+unneighbored
+unneighborlike
+unneighborlike's
+unneighborlikes
+unneighborliness
+unneighborly
+unnerve
+unnerved
+unnerves
+unnerving
+unnervingly
+unneutralized
+unnitrogenized
+unnitrogenized's
+unnitrogenizeds
+unnormalize
+unnormalized
+unnormalizes
+unnormalizing
+unnoticed
+unnourished
+unnumbered
+uno
+unobservable
+unobservables
+unobserved
+unobtainable
+unobtrusive
+unobtrusively
+unobtrusiveness
+unoccupied
+unofficial
+unofficially
+unopenable
+unopened
+unoptimize
+unoptimized
+unoptimizes
+unoptimizing
+unordered
+unorganizable
+unorganizable's
+unorganizables
+unorganized
+unorganizedly
+unorganizedness
+unoriginals
+unorthodox
+unorthodoxly
+unorthodoxy
+unoxidizable
+unoxidizable's
+unoxidizables
+unoxidized
+unoxygenized
+unoxygenized's
+unoxygenizeds
+unpack
+unpackage
+unpackaged
+unpackages
+unpackaging
+unpacked
+unpacker
+unpacking
+unpacks
+unpaddable
+unpadded
+unpaganize
+unpaganizes
+unpaged
+unpaid
+unpaintable
+unpainted
+unpaired
+unpalatability
+unpalatable
+unparagonized
+unparagonized's
+unparagonizeds
+unparalleled
+unparalyzed
+unparalyzed's
+unparalyzeds
+unparameterized
+unparceled
+unparliamentary
+unparsed
+unparticularized
+unparticularized's
+unparticularizeds
+unparticularizing
+unparticularizing's
+unparticularizings
+unpartisan
+unpartitioned
+unpatriotic
+unpatronizable
+unpatronizable's
+unpatronizables
+unpatronized
+unpatronizing
+unpatronizing's
+unpauperized
+unpauperized's
+unpauperizeds
+unpaved
+unpeg
+unpenalized
+unpeople
+unperceived
+unperfect
+unperforated
+unperformed
+unperson
+unperturbed
+unperturbedly
+unphilosophize
+unphilosophized
+unphilosophizes
+unphosphatized
+unphosphatized's
+unphosphatizeds
+unphysical
+unpick
+unpicturesque
+unpile
+unpin
+unplaced
+unplagiarized
+unplagiarized's
+unplagiarizeds
+unplagued
+unplanned
+unpleasant
+unpleasantly
+unpleasantness
+unpleased
+unplowed
+unplug
+unplugged
+unplugging
+unplugs
+unplumbed
+unpoeticized
+unpoeticized's
+unpoeticizeds
+unpoetize
+unpoetized
+unpoetizes
+unpolarizable
+unpolarizable's
+unpolarizables
+unpolarized
+unpolarized's
+unpolarizeds
+unpolitic
+unpolitical
+unpolled
+unpolluted
+unpolymerized
+unpolymerized's
+unpolymerizeds
+unpopular
+unpopularity
+unpopularize
+unpopularizes
+unpracticed
+unprecedented
+unprecedentedly
+unpredictability
+unpredictable
+unpredictably
+unpredicted
+unpreemphasized
+unpregnant
+unprejudiced
+unpremeditated
+unprepared
+unprepossessing
+unprescribed
+unpreserved
+unpretending
+unpretentious
+unpretentiously
+unpretentiousness
+unpriced
+unprimed
+unprincipled
+unprincipledness
+unprintable
+unprinted
+unprivileged
+unproblematic
+unproblematical
+unproblematically
+unprocessed
+unprocurable
+unproductive
+unprofessed
+unprofessional
+unprofitable
+unprofitableness
+unprofitably
+unprojected
+unpromising
+unpromisingly
+unprompted
+unpronounceable
+unpronounced
+unpropagated
+unpropertied
+unprotected
+unprotectedly
+unprotestantize
+unprotestantizes
+unprovability
+unprovable
+unproved
+unproven
+unprovided
+unprovocative
+unpublished
+unpulverize
+unpulverized
+unpulverizes
+unpunched
+unpunished
+unqualified
+unqualifiedly
+unquantifiable
+unquenched
+unquestionable
+unquestionably
+unquestioned
+unquestioning
+unquestioningly
+unquiet
+unquietly
+unquietness
+unquote
+unquoted
+unradicalize
+unradicalizes
+unrancored
+unrancored's
+unrancoreds
+unranked
+unrated
+unravel
+unraveled
+unraveler
+unravelers
+unraveling
+unravels
+unreachable
+unreacted
+unreactive
+unread
+unreadability
+unreadable
+unreadiness
+unready
+unreal
+unrealism
+unrealistic
+unrealistically
+unreality
+unrealizable
+unrealizable's
+unrealizables
+unrealize
+unrealized
+unrealizes
+unrealizing
+unrealizings
+unreason
+unreasonable
+unreasonableness
+unreasonably
+unreasoning
+unreasoningly
+unreassuringly
+unreceptive
+unreckonable
+unrecognizable
+unrecognized
+unrecognizing
+unrecognizingly
+unreconnoitered
+unreconnoitered's
+unreconnoitereds
+unreconstructed
+unrecordable
+unrecorded
+unrecoverable
+unredeemable
+unredeemed
+unreel
+unreeling
+unreeve
+unreferenced
+unrefined
+unreflected
+unreflective
+unregenerate
+unregister
+unregistered
+unregistering
+unregisters
+unregulated
+unrehearsed
+unreinforced
+unrelated
+unreleased
+unrelenting
+unrelentingly
+unreliabilities
+unreliability
+unreliable
+unreliably
+unrelieved
+unreligious
+unremarkable
+unremarked
+unremitting
+unremittingly
+unremunerated
+unreorganized
+unrepair
+unrepentant
+unreported
+unrepresentable
+unrepresentative
+unrepresented
+unrequested
+unrequited
+unreserve
+unreserved
+unreservedly
+unreservedness
+unresisted
+unresisting
+unresolved
+unresponsive
+unresponsively
+unresponsiveness
+unrest
+unrestrained
+unrestrainedly
+unrestrainedness
+unrestraint
+unrestricted
+unrestrictedly
+unrestrictive
+unreturned
+unrevealing
+unrevelationize
+unrevelationizes
+unrewarding
+unriddle
+unrifled
+unrig
+unrighteous
+unrighteously
+unrighteousness
+unrip
+unripe
+unripeness
+unrivaled
+unrobe
+unroll
+unrolled
+unrolling
+unrolls
+unromantic
+unromantically
+unromanticized
+unromanticized's
+unromanticizeds
+unroof
+unroot
+unrotate
+unrotated
+unround
+unrounded
+unroyalized
+unroyalized's
+unroyalizeds
+unruffled
+unruled
+unruliness
+unruly
+unrumored
+unrwa
+unsabered
+unsaddle
+unsafe
+unsafely
+unsafety
+unsaid
+unsalted
+unsanitary
+unsatirize
+unsatirized
+unsatirizes
+unsatisfactorily
+unsatisfactory
+unsatisfiability
+unsatisfiable
+unsatisfied
+unsatisfying
+unsaturate
+unsaturated
+unsaved
+unsavored
+unsavoredly
+unsavoredness
+unsavories
+unsavorilies
+unsavorily
+unsavoriness
+unsavory
+unsavory's
+unsay
+unsayable
+unscandalize
+unscandalized
+unscandalizes
+unscathed
+unscepter
+unscepter's
+unsceptered
+unscepters
+unscheduled
+unschematized
+unschematized's
+unschematizeds
+unschooled
+unscientific
+unscientifically
+unscramble
+unscrambled
+unscrambler
+unscrambles
+unscrambling
+unscratched
+unscreened
+unscrew
+unscrewed
+unscrewing
+unscrews
+unscripted
+unscrupulous
+unscrupulously
+unscrupulousness
+unscrutinized
+unscrutinizing
+unscrutinizingly
+unseal
+unsealed
+unsealing
+unseals
+unseam
+unsearchable
+unsearchably
+unseasonable
+unseasonableness
+unseasonably
+unseasoned
+unseat
+unsectarianize
+unsectarianizes
+unsecularize
+unsecularized
+unsecularizes
+unsecured
+unsee
+unseeded
+unseeing
+unseemly
+unseen
+unsegmented
+unsegregated
+unsel
+unselected
+unselective
+unselfconscious
+unselfconsciousness
+unselfish
+unselfishly
+unselfishness
+unsensitize
+unsensitized
+unsensitizes
+unsensualize
+unsensualized
+unsensualizes
+unsent
+unsentimentalize
+unsentimentalizes
+unsepulcher
+unsepulchered
+unsepulchers
+unserved
+unserviceable
+unserviced
+unservile
+unset
+unsettle
+unsettled
+unsettledness
+unsettlement
+unsettling
+unsettlingly
+unsew
+unsex
+unshackle
+unshaded
+unshakable
+unshakeable
+unshaken
+unshapen
+unshared
+unsharpened
+unshaved
+unshaven
+unsheathe
+unsheathing
+unshed
+unshell
+unshelled
+unsheltered
+unshielded
+unshift
+unship
+unshockability
+unshockable
+unshod
+unshped
+unsight
+unsighted
+unsightly
+unsignalized
+unsignalized's
+unsignalizeds
+unsigned
+unsimplified
+unsinkable
+unsiphon
+unsiphon's
+unsiphons
+unsized
+unskilful
+unskilled
+unskillful
+unskillfully
+unskillfulness
+unslaked
+unsling
+unslinged
+unslinging
+unslings
+unsloped
+unslung
+unsmiling
+unsmilingly
+unsnap
+unsnapped
+unsnapping
+unsnaps
+unsnarl
+unsociability
+unsociable
+unsociableness
+unsociably
+unsocial
+unsocialized
+unsocially
+unsold
+unsolder
+unsolemnize
+unsolemnized
+unsolemnizes
+unsolicited
+unsolvable
+unsolved
+unsophisticated
+unsophistication
+unsorted
+unsought
+unsound
+unsounded
+unsoundly
+unsoundness
+unsparing
+unsparingly
+unspeak
+unspeakable
+unspeakably
+unspeaking
+unspecialized
+unspecializing
+unspecifed
+unspecific
+unspecified
+unspecify
+unspectacular
+unspecterlike
+unspecterlike's
+unspecterlikes
+unspent
+unsphere
+unspiritualize
+unspiritualized
+unspiritualizes
+unspoiled
+unspoken
+unsportsmanlike
+unspotted
+unsprayed
+unsprocketed
+unsprung
+unstable
+unstableness
+unstably
+unstacked
+unstacks
+unstained
+unstandardized
+unstapled
+unstaring
+unstate
+unstated
+unsteadily
+unsteadiness
+unsteady
+unsteel
+unstemmed
+unstep
+unsterilized
+unstick
+unstigmatized
+unstigmatized's
+unstigmatizeds
+unstilted
+unstinting
+unstintingly
+unstoicize
+unstoicizes
+unstop
+unstoppable
+unstoppably
+unstopped
+unstrained
+unstrap
+unstratified
+unstreamed
+unstressed
+unstriated
+unstring
+unstriped
+unstructured
+unstrung
+unstuck
+unstudied
+unstuffy
+unsubscripted
+unsubsidized
+unsubstantial
+unsubstantiality
+unsubstantialize
+unsubstantializes
+unsubstantially
+unsubstantiated
+unsubstituted
+unsubtle
+unsuccess
+unsuccessful
+unsuccessfully
+unsuccorable
+unsuccorable's
+unsuccorables
+unsuccored
+unsuffixed
+unsuggestive
+unsuitability
+unsuitable
+unsuitably
+unsuited
+unsulphurized
+unsulphurized's
+unsulphurizeds
+unsummarized
+unsung
+unsupernaturalize
+unsupernaturalized
+unsupernaturalizes
+unsupportable
+unsupported
+unsupportive
+unsure
+unsurmountable
+unsurpassed
+unsurprised
+unsurprising
+unsurprisingly
+unsuspected
+unsuspecting
+unsuspended
+unswathe
+unswear
+unswerving
+unsymbolized
+unsymmetrical
+unsymmetrically
+unsymmetrized
+unsymmetrized's
+unsymmetrizeds
+unsympathetic
+unsympathizabilities
+unsympathizability
+unsympathizability's
+unsympathizable
+unsympathizable's
+unsympathizables
+unsympathized
+unsympathizing
+unsympathizing's
+unsympathizingly
+unsympathizings
+unsynchronized
+unsynthesized
+unsystematic
+unsystematized
+unsystematizedly
+unsystematizing
+unsystemizable
+unsystemizable's
+unsystemizables
+untamed
+untampered
+untangle
+untantalized
+untantalizing
+untantalizing's
+untantalizings
+untaped
+untapped
+untartarized
+untartarized's
+untartarizeds
+untaught
+unteach
+untechnicalize
+untechnicalizes
+untellable
+untemporizing
+untemporizing's
+untemporizings
+untenability
+untenable
+untenanted
+untented
+unter
+unterminated
+unterrorized
+unterwalden
+untestable
+untested
+untether
+unthaw
+unthematic
+untheorizable
+untheorizable's
+untheorizables
+unthink
+unthinkability
+unthinkable
+unthinkably
+unthinking
+unthinkingly
+unthought
+unthread
+unthrone
+untidily
+untidiness
+untidy
+untie
+untied
+unties
+until
+untimeliness
+untimely
+untimeous
+untitled
+unto
+untold
+untouchability
+untouchable
+untouchable's
+untouchables
+untouched
+untoward
+untowardly
+untowardness
+untraceability
+untraceable
+untraced
+untracked
+untraditional
+untrained
+untrammeled
+untranquilized
+untransformed
+untranslated
+untransposed
+untravelled
+untread
+untreated
+untried
+untrod
+untrodden
+untroubled
+untrue
+untruly
+untruss
+untrusted
+untrustworthiness
+untruth
+untruthful
+untruthfully
+untruthfulness
+untuck
+untune
+untutored
+untwine
+untwist
+untwisted
+untying
+untyped
+untypical
+unusable
+unused
+unusual
+unusually
+unusualness
+unutilizable
+unutilizable's
+unutilizables
+unutterable
+unutterably
+unuttered
+unvacuolated
+unvalued
+unvaporized
+unvaporized's
+unvaporizeds
+unvarnished
+unvarying
+unvectorizable
+unveil
+unveiled
+unveiling
+unveils
+unventilated
+unverbalized
+unverified
+unvictimized
+unvisited
+unvisualized
+unvitalized
+unvitalized's
+unvitalizeds
+unvitriolized
+unvitriolized's
+unvitriolizeds
+unvocal
+unvocalized
+unvocalized's
+unvocalizeds
+unvoice
+unvoiced
+unvolatilize
+unvolatilized
+unvolatilizes
+unvulcanized
+unvulcanized's
+unvulcanizeds
+unvulgarize
+unvulgarized
+unvulgarizes
+unwaged
+unwaivering
+unwanted
+unwarily
+unwariness
+unwarrant
+unwarrantable
+unwarrantably
+unwarranted
+unwary
+unwashed
+unwashedness
+unwatched
+unwavering
+unwaveringly
+unwearied
+unweariedly
+unweave
+unwed
+unweeting
+unweetingly
+unweighed
+unweight
+unweighted
+unwelcome
+unwell
+unwept
+unwesternized
+unwesternized's
+unwesternizeds
+unwholesome
+unwholesomely
+unwieldily
+unwieldiness
+unwieldy
+unwilled
+unwilling
+unwillingly
+unwillingness
+unwind
+unwinder
+unwinders
+unwinding
+unwinds
+unwinking
+unwinnable
+unwire
+unwired
+unwisdom
+unwise
+unwisely
+unwiser
+unwisest
+unwish
+unwished
+unwitnessed
+unwitting
+unwittingly
+unwomanize
+unwomanized
+unwomanizes
+unwomanly
+unwonted
+unwontedly
+unwontedness
+unworkable
+unworldliness
+unworldly
+unworn
+unworthily
+unworthiness
+unworthy
+unwound
+unwounded
+unwoven
+unwrap
+unwrapped
+unwrapping
+unwraps
+unwreathe
+unwrinkled
+unwritable
+unwritten
+unyielded
+unyielding
+unyieldingly
+unyoke
+unzio
+unzip
+up
+upanishad
+uparrow
+upas
+upbeat
+upbraid
+upbraider
+upbring
+upbringing
+upbuild
+upbuilder
+upcast
+upchuck
+upcome
+upcoming
+upcountry
+update
+updated
+updater
+updates
+updating
+updo
+updos
+updraft
+upend
+upfield
+upgrade
+upgraded
+upgrades
+upgrading
+upgrowth
+upheaval
+upheavals
+upheave
+upheaver
+upheld
+uphill
+uphold
+upholder
+upholders
+upholding
+upholds
+upholster
+upholstered
+upholsterer
+upholsterers
+upholstering
+upholsters
+upholstery
+uphoster
+uphroe
+upkeep
+upland
+uplander
+uplands
+uplift
+uplifted
+uplifter
+uplifting
+uplifts
+upload
+uploaded
+uploading
+uploads
+upmanship
+upmost
+upolu
+upon
+upped
+upper
+upperbound
+upperbounds
+uppercase
+uppercased
+uppercases
+uppercasing
+upperclassman
+upperclassmen
+uppercut
+uppermost
+upperpart
+uppers
+upping
+uppish
+uppishly
+uppishness
+uppity
+uppityness
+uppsala
+upraise
+upraised
+uprear
+upright
+uprightly
+uprightness
+uprise
+upriser
+uprising
+uprising's
+uprisings
+upriver
+uproar
+uproarious
+uproariously
+uproariousness
+uproot
+uprooted
+uprooter
+uprooting
+uproots
+uprouse
+uprush
+ups
+upsadaisy
+upsala
+upset
+upsets
+upsetter
+upsetting
+upshift
+upshot
+upshot's
+upshots
+upside
+upsides
+upsilon
+upslope
+upspring
+upstage
+upstaged
+upstages
+upstaging
+upstairs
+upstand
+upstanding
+upstandingness
+upstart
+upstate
+upstater
+upstream
+upstretched
+upstroke
+upsurge
+upsweep
+upswell
+upswept
+upswing
+upswings
+uptake
+upthrow
+upthrust
+uptight
+uptightness
+uptilt
+uptime
+upto
+Upton
+uptown
+uptrend
+upturn
+upturned
+upturning
+upturns
+upward
+upwardly
+upwardness
+upwards
+upwell
+upwind
+uracil
+uraei
+uraemia
+uraeus
+Ural
+Uralic
+uralite
+uralitic
+uranalysis
+Urania
+Uranian
+uranic
+uranide
+uraninite
+uranism
+uranite
+uranium
+uranographic
+uranographical
+uranography
+uranological
+uranology
+uranometry
+uranous
+Uranus
+uranyl
+urate
+uratic
+urban
+Urbana
+urbane
+urbanely
+urbanism
+urbanist
+urbanistic
+urbanistically
+urbanite
+urbanites
+urbanity
+urbanization
+urbanization's
+urbanizations
+urbanize
+urbanized
+urbanizes
+urbanizing
+urbanologist
+urbanology
+urbiculture
+urceolate
+urchin
+urchin's
+urchins
+Urdu
+ure
+urea
+urease
+uredinial
+uredinium
+urediospore
+uredium
+Uredo
+uredosorus
+uredospore
+uredostage
+ureide
+uremia
+uremic
+ureotelic
+ureotelism
+ureter
+ureteral
+ureteric
+urethan
+urethane
+urethanes
+urethra
+urethral
+urethritis
+urethroscope
+uretic
+urey
+urfa
+urga
+urge
+urged
+urgencies
+urgency
+urgent
+urgently
+urger
+urges
+urging
+urgings
+Uri
+Uriah
+uric
+uricosuric
+uricotelic
+uricotelism
+uridine
+Uriel
+urim
+urinal
+urinals
+urinalysis
+urinant
+urinary
+urinate
+urinated
+urinates
+urinating
+urination
+urine
+uriniferous
+urinogenital
+urinometer
+urinometer's
+urinometers
+urinous
+Uris
+urmia
+Urmston
+urn
+urn's
+Urnfield
+urning
+urns
+urochord
+urochordal
+urochordate
+urochrome
+urodele
+urogenital
+urogenous
+urokinase
+urol
+urolith
+urolithiasis
+urologic
+urological
+urologist
+urology
+uropod
+uropygial
+uropygium
+uroscopy
+urostyle
+Urquhart
+urquhart
+Ursa
+ursine
+Ursula
+Ursuline
+urticaceous
+urticaria
+urticarial
+urticate
+urtication
+uruapan
+Uruguay
+urumchi
+urundi
+urus
+urushiol
+us
+USA
+usability
+usable
+usableness
+usably
+USAF
+usage
+usages
+usance
+USART
+USC
+USC's
+USDA
+use
+useably
+used
+useful
+usefully
+usefulness
+useless
+uselessly
+uselessness
+Usenet
+Usenet's
+Usenix
+Usenix's
+user
+user's
+username
+usernames
+users
+uses
+useway
+USG
+USG's
+USGS
+ushant
+ushas
+usher
+ushered
+usherette
+ushering
+ushers
+USIA
+using
+USN
+usnach
+usnea
+uspallata
+USPS
+usquebaugh
+usrio
+ussher
+USSR
+ussuri
+ustashi
+Ustinov
+ustulation
+ustyurt
+usual
+usually
+usualness
+usufruct
+usufructuary
+usumbura
+usurer
+usurious
+usuriously
+usuriousness
+usurp
+usurpation
+usurped
+usurper
+usury
+UT
+Utah
+Utah's
+utamaro
+ute
+uteca
+utensil
+utensil's
+utensils
+utep
+uterine
+uterus
+uteruses
+utgard
+uther
+Utica
+utile
+utilitarian
+utilitarianism
+utilitarianize
+utilitarianizes
+utilities
+utility
+utility's
+utilizabilities
+utilizability
+utilizable
+utilizable's
+utilizables
+utilization
+utilize
+utilized
+utilizer
+utilizers
+utilizes
+utilizing
+utiny
+utmost
+utopia
+utopian
+utopian's
+utopianism
+Utopianize
+utopianizer
+utopianizer's
+utopianizers
+Utopianizes
+utopians
+utopias
+utopism
+utopist
+utopistic
+Utrecht
+Utrecht's
+utricle
+utricular
+utricularia
+utriculitis
+utriculus
+utrillo
+uttar
+utter
+utterable
+utterance
+utterance's
+utterances
+uttered
+utterer
+uttering
+utterly
+uttermost
+utters
+uttium
+uucp
+uucp's
+UV
+uvarovite
+uvea
+uveal
+uvedale
+uveitis
+uvula
+uvular
+uvularly
+uvulitis
+Uxbridge
+uxmal
+uxorial
+uxoricide
+uxorious
+uxoriously
+uxoriousness
+Uzbek
+Uzi
+Uzi's
+VA
+Vaal
+Vaasa
+VAC
+vacancies
+vacancy
+vacancy's
+vacant
+vacantly
+vacantness
+vacate
+vacated
+vacates
+vacating
+vacation
+vacationed
+vacationer
+vacationers
+vacationing
+vacationist
+vacationland
+vacationless
+vacations
+vaccinal
+vaccinate
+vaccinated
+vaccinates
+vaccinating
+vaccination
+vaccinations
+vaccinator
+vaccinators
+vaccine
+vaccines
+vaccinia
+vaccinial
+vaccinization
+vaccinization's
+vaccinizations
+vacherin
+vacillate
+vacillated
+vacillates
+vacillating
+vacillatingly
+vacillation
+vacillations
+vacillator
+vacillator's
+vacillators
+vacua
+vacuity
+vacuo
+vacuolar
+vacuolate
+vacuolated
+vacuolates
+vacuolating
+vacuolation
+vacuole
+vacuoles
+vacuolization
+vacuolization's
+vacuolizations
+vacuous
+vacuously
+vacuousness
+vacuum
+vacuumed
+vacuuming
+vacuumize
+vacuumized
+vacuumizes
+vacuumizing
+vacuums
+vadodara
+vadose
+Vaduz
+VAG
+vagabond
+vagabond's
+vagabondage
+vagabondish
+vagabondism
+vagabondize
+vagabondizer
+vagabondizers
+vagabondizes
+vagabonds
+vagal
+vagally
+vagaries
+vagarious
+vagariously
+vagary
+vagary's
+vagile
+vagility
+vagina
+vagina's
+vaginal
+vaginally
+vaginas
+vaginate
+vaginectomy
+vaginismus
+vaginitis
+vagotomy
+vagotonia
+vagotonic
+vagotropic
+vagrancy
+vagrant
+vagrantize
+vagrantizes
+vagrantly
+vagrants
+vague
+vaguely
+vagueness
+vaguer
+vaguest
+vagus
+vahana
+Vail
+vain
+vainglorious
+vaingloriously
+vaingloriousness
+vainglory
+vainly
+vainness
+Vaishnava
+vaisya
+valais
+valance
+valanced
+valances
+valdai
+valdemar
+valdivia
+vale
+vale's
+valediction
+valedictorian
+valedictorian's
+valedictory
+valence
+valence's
+valences
+Valencia
+Valenciennes
+valencies
+valency
+valens
+valentine
+valentine's
+valentines
+Valentinian
+valera
+valerian
+valerianaceous
+valeric
+Valerie
+Valery
+Valery's
+vales
+valet
+valet's
+valeta
+valets
+valetta
+valetudinarian
+valetudinarianism
+valetudinary
+valgus
+Valhalla
+valiance
+valiancy
+valiant
+valiantly
+valiantness
+valid
+validate
+validated
+validates
+validating
+validation
+validations
+validity
+validly
+validness
+valine
+valise
+valises
+Valjakka
+Valkyrie
+valladolid
+vallation
+valle
+vallecula
+vallecular
+Valletta
+Valletta's
+valley
+valley's
+valleys
+vallombrosa
+Valois
+valona
+valonia
+valor
+valor's
+valorization
+valorization's
+valorizations
+valorize
+valorized
+valorizes
+valorizing
+valorous
+valorously
+valors
+Valparaiso
+valuable
+valuableness
+valuables
+valuably
+valuate
+valuated
+valuates
+valuating
+valuation
+valuation's
+valuational
+valuationally
+valuations
+valuator
+valuators
+value
+valued
+valueless
+valuelessness
+valuer
+valuers
+values
+valuing
+valuta
+valvate
+valve
+valve's
+valved
+valves
+valving
+valvular
+valvule
+valvulitis
+vambrace
+vamoose
+vamoosed
+vamooses
+vamoosing
+vamp
+vamper
+vampire
+vampires
+vampirism
+vampirize
+vampirizes
+vampish
+van
+van's
+vanadate
+vanadic
+vanadinite
+vanadium
+vanadous
+vanaspati
+vanbrugh
+Vance
+Vancement
+Vancouver
+Vanda
+vandal
+vandalism
+vandalistic
+vandalization
+vandalization's
+vandalizations
+vandalize
+vandalized
+vandalizes
+vandalizing
+vandals
+Vandenberg
+Vanderbilt
+vanderburgh
+Vanderburgh
+Vanderpoel
+Vanderpoel's
+Vandyke
+vandyked
+vane
+vane's
+vaned
+vanes
+Vanessa
+Vanessa's
+vang
+vanguard
+vanguardism
+vanguardist
+vanilla
+vanillic
+vanillin
+Vanir
+vanish
+vanished
+vanisher
+vanishes
+vanishing
+vanishingly
+vanities
+vanity
+vanquish
+vanquishable
+vanquished
+vanquisher
+vanquishes
+vanquishing
+vanquishment
+vans
+vansittart
+vantage
+vantages
+vanua
+Vanuatu
+vanward
+vanzetti
+vapid
+vapidity
+vapidly
+vapidness
+vapor
+vapor's
+vaporabilities
+vaporability
+vaporability's
+vaporable
+vaporable's
+vaporables
+vapored
+vaporer
+vaporer's
+vaporers
+vaporescence
+vaporetto
+vaporier
+vaporiest
+vaporific
+vaporimeter
+vaporing
+vaporing's
+vaporingly
+vaporings
+vaporish
+vaporishness
+vaporizable
+vaporizable's
+vaporizables
+vaporization
+vaporization's
+vaporizations
+vaporize
+vaporized
+vaporizer
+vaporizers
+vaporizes
+vaporizing
+vaporless
+vaporlesses
+vaporlike
+vaporlike's
+vaporlikes
+vaporous
+vaporously
+vaporousness
+vapors
+vapory
+vaquero
+VAR
+vara
+varactor
+Varady
+varanasi
+Varangian
+vardar
+vardon
+varec
+varese
+Varga
+vargas
+varia
+variability
+variable
+variable's
+variableness
+variables
+variablity
+variably
+variac
+Varian
+variance
+variance's
+variances
+variant
+variantly
+variants
+variate
+variated
+variates
+variating
+variation
+variation's
+variational
+variationally
+variations
+varicella
+varicellate
+varicelloid
+varices
+varicocele
+varicolored
+varicolored's
+varicoloreds
+varicose
+varicosed
+varicosis
+varicosity
+varicotomy
+varied
+variedly
+variegate
+variegated
+variegation
+variegator
+varier
+varies
+varietal
+varietally
+varieties
+variety
+variety's
+variform
+variocoupler
+variola
+variolate
+variole
+variolite
+varioloid
+variolous
+variometer
+variometer's
+variometers
+variorum
+various
+variously
+variousness
+variscite
+varisized
+varistor
+Varitype
+Varitype's
+varityper
+Varityping
+varix
+varlet
+varletry
+varmint
+varna
+varnish
+varnish's
+varnished
+varnisher
+varnishers
+varnishes
+varnishing
+varnishy
+varro
+varsity
+Varuna
+varus
+varve
+varved
+vary
+varying
+varyingly
+varyings
+vas
+vasal
+vasari
+vasco
+vascular
+vascularity
+vascularization
+vascularization's
+vascularizations
+vascularize
+vascularized
+vascularizes
+vascularizing
+vasculature
+vasculum
+vase
+vase's
+vasectomies
+vasectomy
+vaselike
+Vaseline
+vases
+vashti
+vasiform
+vasoactive
+vasoactivity
+vasoconstriction
+vasoconstrictive
+vasoconstrictor
+vasodilatation
+vasodilation
+vasodilator
+vasoinhibitor
+vasomotor
+vasopressin
+vasopressor
+vasoregulatory
+vasospasm
+vasospastic
+vasotocin
+Vasquez
+Vasquez's
+vassal
+vassalage
+vassalization
+vassalize
+vassalized
+vassalizes
+vassalizing
+vassals
+Vassar
+Vassar's
+vast
+vaster
+vastest
+vastitude
+vastity
+vastly
+vastness
+vasty
+vat
+vat's
+vatic
+Vatican
+Vaticanism
+Vaticanization
+Vaticanization's
+Vaticanizations
+Vaticanize
+Vaticanizes
+vaticide
+vaticinal
+vaticinate
+vaticination
+vaticinator
+vats
+vatted
+vatting
+vauban
+vaucluse
+vaud
+vaudeville
+vaudevillian
+Vaudois
+Vaughan
+Vaughan's
+Vaughn
+vault
+vaulted
+vaulter
+vaulting
+vaults
+vaulty
+vaunt
+vaunted
+vaunter
+vauntful
+vauntingly
+vaunty
+vav
+vavasor
+vaward
+Vax
+VAX
+Vax's
+VCR
+VDU
+veal
+vealer
+vealing
+vealy
+Veasy
+Veblen
+vectograph
+vectographic
+vector
+vector's
+vectorcardiogram
+vectorcardiogram's
+vectorcardiograms
+vectorcardiographic
+vectorcardiography
+vectored
+vectorial
+vectoring
+vectorizable
+vectorization
+vectorize
+vectorized
+vectorizer
+vectorizers
+vectorizes
+vectorizing
+vectors
+Veda
+Veda's
+Vedalia
+Vedanta
+Vedda
+Veddoid
+Vedernikov
+vedette
+Vedic
+vee
+veep
+veer
+veered
+veeries
+veering
+veeringly
+veers
+veery
+veg
+Vega
+vegan
+Veganism
+Vegas
+vegetable
+vegetable's
+vegetables
+vegetablize
+vegetablizes
+vegetably
+vegetal
+vegetarian
+vegetarian's
+vegetarianism
+vegetarians
+vegetate
+vegetated
+vegetates
+vegetating
+vegetation
+vegetational
+vegetationally
+vegetative
+vegetatively
+vegetativeness
+vegete
+vegetive
+vehemence
+vehement
+vehemently
+vehicle
+vehicle's
+vehicles
+vehicular
+veii
+veil
+veiled
+veiling
+veils
+vein
+veinal
+veined
+veiner
+veining
+veinlet
+veins
+veinstone
+veinule
+veiny
+vela
+velamen
+velamentous
+velamina
+velar
+velarium
+velarization
+velarize
+velarized
+velarizes
+velarizing
+Velasquez
+velate
+velcro
+veld
+veldskoen
+veldt
+veldt's
+veldts
+veleta
+veliger
+velitation
+velites
+Vella
+Vella's
+velleity
+vellicate
+vellore
+vellum
+veloce
+velocimeter
+velocimeter's
+velocimeters
+velocipede
+velocities
+velocity
+velocity's
+velodrome
+velopment
+velour
+velours
+Velsen
+velum
+velure
+velutinous
+velvet
+velveteen
+velvety
+vena
+venae
+venal
+venality
+venalization
+venalization's
+venalizations
+venalize
+venalizes
+venally
+venatic
+venation
+venational
+vend
+Venda
+vendable
+vendace
+vendaces
+vendee
+vender
+vendetta
+vendibility
+vendible
+vendibly
+vending
+vendition
+vendor
+vendor's
+vendors
+vendue
+veneeal
+veneer
+veneerer
+veneering
+venenate
+venenation
+venenose
+venepuncture
+venerability
+venerable
+venerableness
+venerably
+venerate
+venerated
+venerates
+venerating
+veneration
+venerations
+venerator
+venereal
+venereological
+venereologist
+venereology
+venerology
+venery
+venesection
+Veneti
+Venetia
+venetian
+Venetian
+Venetian's
+Venetians
+Venetic
+Veneto
+Veneto's
+Venezia
+Venezuela
+Venezuelan
+venge
+vengeance
+vengeful
+vengefully
+vengefulness
+venging
+venial
+venially
+venialness
+Venice
+venin
+venipuncture
+venire
+venireman
+venisection
+venison
+Venizelos
+venlo
+Venn
+venography
+venom
+venomization
+venomization's
+venomizations
+venomize
+venomizes
+venomous
+venomously
+venomousness
+Venora
+venose
+venosity
+venous
+venously
+vent
+ventage
+ventail
+vented
+venter
+ventilate
+ventilated
+ventilates
+ventilating
+ventilation
+ventilations
+ventilative
+ventilator
+ventilatory
+venting
+ventless
+ventral
+ventrally
+ventricle
+ventricle's
+ventricles
+ventricose
+ventricular
+ventriculus
+ventriloquial
+ventriloquially
+ventriloquism
+ventriloquist
+ventriloquist's
+ventriloquistic
+ventriloquists
+ventriloquize
+ventriloquized
+ventriloquizes
+ventriloquizing
+ventriloquy
+ventris
+ventrolateral
+ventrolaterally
+ventromedial
+vents
+Ventura
+ventura
+Ventura's
+venture
+ventured
+venturer
+venturers
+ventures
+venturesome
+venturesomely
+venturesomeness
+venturi
+venturing
+venturings
+venturis
+venturous
+venturously
+venturousness
+venue
+venue's
+venues
+venule
+Venus
+Venusberg
+Venusian
+Venusians
+Vera
+veracious
+veraciously
+veraciousness
+veracity
+Veracruz
+veranda
+veranda's
+verandaed
+verandah
+verandahed
+verandas
+veratrine
+veratrum
+verb
+verb's
+verbal
+verbalism
+verbalist
+verbalistic
+verbalization
+verbalization's
+verbalizations
+verbalize
+verbalized
+verbalizer
+verbalizers
+verbalizes
+verbalizing
+verbally
+verbatim
+verbena
+verbenaceous
+verbenas
+verbiage
+verbicide
+verbid
+verbify
+verbigeration
+verbile
+verbose
+verbosely
+verboseness
+verbosity
+verbs
+vercelli
+vercingetorix
+verdancy
+verdant
+verdantly
+Verde
+Verde's
+Verderer
+verderer
+verderor
+Verdi
+Verdi's
+verdict
+verdicts
+verdigris
+verdin
+verdun
+verdure
+verdured
+verdurous
+verdurousness
+verecund
+vereeniging
+verge
+vergeboard
+verger
+verges
+vergil
+Vergil
+verglas
+veridic
+veridical
+veridicality
+veridically
+verier
+veriest
+verifiability
+verifiable
+verifiableness
+verifiably
+verification
+verifications
+verified
+verifier
+verifier's
+verifiers
+verifies
+verify
+verifying
+verily
+verisimilar
+verisimilarly
+verisimilitude
+verisimilitudinous
+verism
+verismo
+verist
+veristic
+veritable
+veritableness
+veritably
+verity
+verjuice
+verkrampte
+Verlag
+verlaine
+verligte
+vermeer
+vermeil
+vermeiled
+vermeiles
+vermeiling
+vermian
+vermicelli
+vermicide
+vermicular
+vermiculate
+vermiculated
+vermiculation
+vermiculite
+vermiform
+vermifuge
+vermilion
+vermilionize
+vermilionizes
+vermillion
+vermin
+vermination
+verminosis
+verminous
+verminously
+vermis
+vermivorous
+Vermont
+vermouth
+Vern
+vern
+Verna
+Verna's
+vernacle
+vernacular
+vernacularism
+vernacularization
+vernacularization's
+vernacularizations
+vernacularize
+vernacularizes
+vernacularly
+vernal
+vernalization
+vernalization's
+vernalizations
+vernalize
+vernalized
+vernalizes
+vernalizing
+vernally
+vernation
+Verne
+vernicle
+vernier
+vernissage
+Vernoleninsk
+Vernon
+verny
+Verona
+Veronal
+Veronese
+Veronica
+verrazano
+Verrett
+verrocchio
+verruca
+verrucae
+verrucose
+versa
+versabraille
+Versailles
+versal
+versant
+versatec
+Versatec
+Versatec's
+versatile
+versatilely
+versatileness
+versatility
+verse
+versed
+verseman
+verser
+verses
+verset
+versicle
+versicolor
+versicolored
+versicular
+versification
+versifier
+versify
+versine
+versing
+version
+versional
+versionize
+versionizes
+versions
+verso
+versos
+verst
+versus
+vert
+vertebra
+vertebrae
+vertebral
+vertebrally
+vertebrate
+vertebrate's
+vertebrates
+vertebration
+vertex
+vertexes
+vertical
+verticality
+vertically
+verticalness
+verticals
+vertices
+verticil
+verticillaster
+verticillate
+verticillte
+vertiginous
+vertiginously
+vertigo
+vertu
+Vertumnus
+verulamium
+vervain
+verve
+vervet
+verwoerd
+very
+vesalius
+vesical
+vesicant
+vesicate
+vesication
+vesicle
+vesicles
+vesicular
+vesicularity
+vesicularly
+vesiculate
+vesiculation
+vespasian
+vesper
+vesperal
+vespers
+vespertilionine
+vespertinal
+vespertine
+vespiary
+vespid
+vespine
+vespucci
+vessel
+vessel's
+vessels
+vest
+vesta
+vestal
+vestally
+vested
+vestee
+vestiary
+vestibular
+vestibule
+vestibuled
+vestige
+vestige's
+vestiges
+vestigial
+vestigially
+vesting
+vestlike
+vestment
+vestmental
+vestments
+vestries
+vestry
+vestryize
+vestryizes
+vestryman
+vests
+vesture
+vestured
+vestures
+vesturing
+vesuvian
+vesuvianite
+Vesuvius
+vesuvius
+vet
+vetch
+vetchling
+veteran
+veteran's
+veteranize
+veteranizes
+veterans
+veterinarian
+veterinarian's
+veterinarians
+veterinary
+vetiver
+veto
+vetoed
+vetoer
+vetoes
+vetoing
+vetted
+vetting
+vex
+vexation
+vexatious
+vexatiously
+vexatiousness
+vexed
+vexedly
+vexes
+vexillary
+vexillologic
+vexillological
+vexillologist
+vexillology
+vexillum
+vexing
+VGA
+VHF
+vi
+vi's
+via
+viability
+viable
+viably
+viaduct
+viaducts
+vial
+vial's
+vialed
+vialing
+vials
+viand
+viands
+viareggio
+viaticum
+viator
+vibes
+vibist
+vibraculum
+vibraharp
+vibraharpist
+vibrance
+vibrancy
+vibrant
+vibrantly
+vibraphone
+vibraphonist
+vibrate
+vibrated
+vibrates
+vibratile
+vibratility
+vibrating
+vibration
+vibrational
+vibrationless
+vibrations
+vibrato
+vibrator
+vibratory
+vibrio
+vibrion
+vibrionic
+vibriosis
+vibrissa
+vibrissae
+vibronic
+viburnum
+Vic
+vic
+Vic's
+vicar
+vicarage
+vicarate
+vicarial
+vicariate
+vicarious
+vicariously
+vicariousness
+vicarship
+vice
+vice's
+vicegerency
+vicegerent
+vicenary
+vicennial
+vicenza
+viceregal
+viceregally
+vicereine
+viceroy
+viceroyalty
+viceroyship
+vices
+Vichy
+Vichy's
+vichyssoise
+vicinage
+vicinal
+vicing
+vicinities
+vicinity
+vicious
+viciously
+viciousness
+vicissitude
+vicissitude's
+vicissitudes
+vicissitudinous
+Vickers
+vickers
+Vickie
+Vickie's
+Vicksburg
+Vicksburg's
+Vicky
+Vicky's
+vico
+vicomte
+victim
+victim's
+victimizable
+victimizable's
+victimizables
+victimization
+victimization's
+victimizations
+victimize
+victimized
+victimizer
+victimizers
+victimizes
+victimizing
+victims
+victor
+victor's
+Victoria
+Victoria's
+Victorian
+victoriana
+Victorianize
+Victorianizes
+Victorians
+victories
+victorious
+victoriously
+victoriousness
+victors
+victory
+victory's
+victress
+Victrola
+Victrola's
+Victrolas
+victual
+victualage
+victualed
+victualer
+victualers
+victualess
+victualing
+victuals
+vicuna
+Vida
+Vida's
+Vidal
+vidal
+Vidal's
+vide
+videlicet
+video
+videophone
+videos
+videotape
+videotape's
+videotaped
+videotapes
+videotaping
+videotex
+vidette
+vidhan
+vidicon
+viduity
+vie
+vied
+Vienna
+Vienna's
+vienne
+Viennese
+Viennese's
+Vientiane
+Vientiane's
+vier
+Vierne
+vies
+Viet
+Vietcong
+Vietminh
+Vietnam
+Vietnam's
+Vietnamese
+Vietnamese's
+Vietnamization
+Vietnamize
+Vietnamized
+Vietnamizes
+Vietnamizing
+view
+viewable
+viewed
+viewer
+viewers
+viewfinder
+viewfinder's
+viewfinders
+viewgraph
+viewgraph's
+viewgraphes
+viewing
+viewings
+viewless
+viewlessly
+viewpoint
+viewpoint's
+viewpoints
+viewport
+viewport's
+viewports
+views
+viewscan
+viewy
+vigesimal
+vigil
+vigilance
+vigilant
+vigilante
+vigilante's
+vigilantes
+vigilantism
+vigilantly
+vigintillion
+vignette
+vignette's
+vignetted
+vignetter
+vignettes
+vignetting
+vignettist
+vignola
+vigny
+vigo
+vigor
+vigor's
+vigorish
+vigorist
+vigorist's
+vigorists
+vigorless
+vigoroso
+vigorous
+vigorously
+vigorousness
+vigors
+Vihuela
+vii
+viii
+Viipuri
+Vijayawada
+Viking
+Vikings
+Vikram
+Vilayet
+vile
+vilely
+vileness
+viler
+vilest
+vilification
+vilifications
+vilified
+vilifier
+vilifies
+vilify
+vilifying
+vilipend
+villa
+villa's
+Villach
+villadom
+village
+village's
+villager
+villagers
+villagery
+villages
+Villahermosa
+villain
+villain's
+Villainage
+villainess
+villainous
+villainously
+villainousness
+villains
+villainy
+villanella
+villanelle
+Villanovan
+Villars
+villas
+villatic
+villein
+villenage
+Villeneuve
+Villeurbanne
+villi
+Villiers
+villiform
+Villon
+villosity
+villous
+villus
+Vilnius
+vim
+vimen
+Viminal
+vimineous
+vina
+vinaceous
+vinaigrette
+vinal
+vinasse
+vinblastine
+vinca
+Vince
+Vincennes
+Vincent
+Vincent's
+Vinci
+Vinci's
+vincible
+vincristine
+vinculum
+Vindhya
+vindicable
+vindicate
+vindicated
+vindicates
+vindicating
+vindication
+vindicative
+vindicator
+vindicators
+vindicatory
+vindictive
+vindictively
+vindictiveness
+vine
+vine's
+vineal
+vinedresser
+vinedressers
+vinegar
+vinegarette
+vinegarish
+vinegarroon
+vinegars
+vinegary
+Vineland
+vinery
+vines
+vineyard
+vineyard's
+vineyardist
+vineyards
+vinic
+viniculture
+vinier
+viniferous
+vinification
+vinificator
+vining
+Vinland
+vinnitsa
+vino
+vinosity
+vinous
+vinously
+Vinson
+vintage
+vintager
+vintages
+vintner
+viny
+vinyl
+vinylic
+vinylidene
+viol
+viola
+violability
+violable
+violableness
+violably
+violaceous
+violaceously
+violate
+violated
+violates
+violating
+violation
+violations
+violative
+violator
+violator's
+violators
+violence
+violent
+violently
+violet
+violet's
+violets
+violin
+violin's
+violinist
+violinist's
+violinists
+violins
+violist
+violoncello
+violone
+viomycin
+viosterol
+viper
+viper's
+viperine
+viperish
+viperous
+viperously
+vipers
+viraginous
+virago
+viral
+virally
+Virchow
+virelay
+viremia
+viremic
+viren
+vireo
+vires
+virescence
+virescent
+virga
+virgate
+Virgil
+Virgil's
+virgin
+virgin's
+virginal
+virginally
+Virginia
+Virginia's
+Virginian
+Virginians
+virginity
+virginium
+virgins
+Virgo
+Virgo's
+Virgos
+virgulate
+virgule
+virial
+viricidal
+viricide
+virid
+viridescent
+viridian
+viridity
+virile
+virilism
+virility
+virion
+virologic
+virological
+virologically
+virologist
+virology
+viroses
+virosis
+virtu
+virtual
+virtuality
+virtualize
+virtualizes
+virtually
+virtue
+virtue's
+virtueless
+virtues
+virtuosa
+virtuosi
+virtuosic
+virtuosity
+virtuoso
+virtuoso's
+virtuosos
+virtuous
+virtuously
+virtuousness
+virucidal
+virucide
+virulence
+virulency
+virulent
+virulently
+viruliferous
+virus
+virus's
+viruses
+virustatic
+vis
+visa
+visaed
+visage
+visaged
+visaing
+Visakhapatnam
+visas
+Visayan
+Visby
+viscacha
+viscera
+visceral
+viscerally
+viscerogenic
+visceromotor
+viscid
+viscidity
+viscidly
+viscoelastic
+viscoelasticity
+viscoid
+viscometer
+viscometer's
+viscometers
+viscometric
+viscometry
+Visconti
+viscose
+viscosimeter
+viscosimeter's
+viscosimeters
+viscosimetric
+viscosities
+viscosity
+viscount
+viscount's
+viscountcy
+viscountess
+viscounts
+viscounty
+viscous
+viscously
+viscousness
+viscus
+vise
+vised
+viselike
+Viseu
+Vishakhapatnam
+Vishinsky
+Vishnu
+visibilities
+visibility
+visible
+visibleness
+visibly
+Visigoth
+Visigoths
+vising
+vision
+vision's
+visional
+visionally
+visionariness
+visionary
+visioned
+visioning
+visionize
+visionizes
+visionless
+visions
+visit
+visitable
+visitant
+visitation
+visitation's
+visitational
+visitations
+visitatorial
+visited
+visiting
+visitor
+visitor's
+visitors
+visits
+visive
+visor
+visor's
+visored
+visorless
+visors
+vista
+vista's
+vistaed
+vistas
+vistula
+visual
+visualization
+visualization's
+visualizations
+visualize
+visualized
+visualizer
+visualizers
+visualizes
+visualizing
+visually
+visuals
+vita
+vitaceous
+vitae
+vital
+vitalism
+vitalist
+vitalistic
+vitality
+vitalization
+vitalization's
+vitalizations
+vitalize
+vitalized
+vitalizer
+vitalizers
+vitalizes
+vitalizing
+vitalizing's
+vitalizingly
+vitalizings
+vitally
+vitals
+vitamer
+vitameric
+vitamin
+vitamin's
+vitaminization
+vitaminize
+vitaminizes
+vitamins
+vitaphone
+vitascope
+Vitebsk
+vitellin
+vitelline
+vitellogenesis
+vitellus
+vitiate
+vitiated
+vitiates
+vitiating
+vitiation
+vitiator
+viticultural
+viticulture
+viticulturist
+vitiligo
+vitiosity
+vitite
+Vito
+Vito's
+vitoria
+vitrain
+vitreous
+vitreously
+vitreousness
+vitrescence
+vitrescent
+vitric
+vitrifiable
+vitrification
+vitriform
+vitrify
+vitrine
+vitriol
+vitriolic
+vitriolizable
+vitriolizable's
+vitriolizables
+vitriolization
+vitriolization's
+vitriolizations
+vitriolize
+vitriolizer
+vitriolizers
+vitriolizes
+vitro
+vitruvius
+vitta
+vittae
+vittate
+vittle
+vittles
+vituline
+vituperate
+vituperation
+vituperative
+vituperatively
+vituperator
+vituperatory
+Vitus
+vitus
+viva
+vivace
+vivacious
+vivaciously
+vivaciousness
+vivacity
+Vivaldi
+vivarium
+vive
+viverrid
+viverrine
+vivers
+Vivian
+vivid
+vividly
+vividness
+vivific
+vivification
+vivified
+vivifier
+vivify
+viviparity
+viviparous
+viviparously
+viviparousness
+vivisect
+vivisection
+vivisectional
+vivisectionally
+vivisectionist
+vivisector
+vivo
+vixen
+vixenish
+vixenishly
+vixenishness
+viyella
+viz
+Vizagapatam
+vizard
+Vizcacha
+vizier
+vizierate
+vizierial
+viziership
+vizor
+Vizsla
+Vlaardingen
+Vlach
+Vladikavkaz
+Vladimir
+Vladivostok
+Vlaminck
+Vlei
+VLF
+Vlissingen
+VLSI
+Vltava
+VMS
+vms
+VMS's
+vocable
+vocabular
+vocabularian
+vocabularianism
+vocabularies
+vocabulary
+vocal
+vocalic
+vocalically
+vocalism
+vocalist
+vocalists
+vocality
+vocalization
+vocalization's
+vocalizations
+vocalize
+vocalized
+vocalizer
+vocalizers
+vocalizes
+vocalizing
+vocally
+vocals
+vocate
+vocation
+vocation's
+vocational
+vocationalism
+vocationalist
+vocationalization
+vocationalization's
+vocationalizations
+vocationalize
+vocationalizes
+vocationally
+vocations
+vocative
+vocatively
+vociferant
+vociferate
+vociferation
+vociferator
+vociferous
+vociferously
+vociferousness
+vocoded
+vocoder
+vodka
+vodka's
+Voetsek
+Voetstoots
+Vogel
+Vogelweide
+vogue
+voguish
+voguishness
+Vogul
+voice
+voiceband
+voiced
+voicedness
+voiceful
+voicefulness
+voiceless
+voicelessly
+voicelessness
+voiceprint
+voicer
+voicers
+voices
+voicing
+void
+voidable
+voidableness
+voidage
+voidance
+voided
+voider
+voiding
+voidness
+voids
+voila
+voile
+voiotia
+voir
+voix
+vojvodina
+Vol
+Volans
+volant
+volante
+Volapuk
+volar
+volatile
+volatileness
+volatiles
+volatilities
+volatility
+volatilizable
+volatilizable's
+volatilizables
+volatilization
+volatilization's
+volatilizations
+volatilize
+volatilized
+volatilizer
+volatilizers
+volatilizes
+volatilizing
+volcanic
+volcanically
+volcanicity
+volcanism
+volcano
+volcano's
+volcanoes
+volcanologic
+volcanological
+volcanologist
+volcanology
+volcanos
+vole
+voles
+Volga
+Volgograd
+volitant
+volition
+volitional
+volitionality
+volitionally
+volitive
+volkslied
+volkslieder
+Volkswagen
+Volkswagens
+volley
+volleyball
+volleyball's
+volleyballs
+volleyed
+volleyer
+volleying
+volleys
+vologda
+volost
+volplane
+volplaned
+volplaning
+Volsci
+Volscian
+Volstead
+volsung
+volsunga
+volt
+Volta
+voltage
+voltages
+voltaic
+Voltaire
+voltaism
+voltameter
+voltameter's
+voltameters
+voltametric
+voltammeter
+Volterra
+Volterra's
+voltize
+voltizes
+voltmeter
+voltmeter's
+voltmeters
+volts
+volturno
+volubility
+voluble
+volubleness
+volubly
+volume
+volume's
+volumed
+volumes
+volumeter
+volumeter's
+volumeters
+volumetric
+volumetrically
+voluming
+voluminosity
+voluminous
+voluminously
+voluminousness
+voluntarily
+voluntariness
+voluntarism
+voluntarist
+voluntaristic
+voluntary
+voluntaryism
+voluntaryist
+volunteer
+volunteered
+volunteering
+volunteerism
+volunteers
+voluptuary
+voluptuous
+voluptuously
+volute
+voluted
+volutin
+volution
+volva
+volvement
+Volvo
+volvox
+volvulus
+vomer
+vomerine
+vomit
+vomited
+vomiter
+vomiting
+vomitory
+vomits
+vomiturition
+vomitus
+Von
+von
+voodoo
+voodooism
+voodooist
+voodooistic
+voodoos
+voortrekker
+voracious
+voraciously
+voraciousness
+voracity
+Vorarlberg
+vored
+Voronezh
+Voroshilov
+Voroshilovgrad
+Voroshilovsk
+vorster
+vortex
+vortexes
+vortical
+vortically
+vorticella
+vortices
+vorticism
+vorticist
+vorticity
+vorticose
+vortiginous
+Vortumnus
+vosges
+Voss
+vostok
+votaress
+votarist
+votary
+vote
+voted
+voteless
+voter
+voters
+votes
+voting
+votive
+votively
+votiveness
+votress
+Votyak
+vouch
+vouchee
+voucher
+vouchers
+vouches
+vouching
+vouchsafe
+vouchsafed
+vouchsafement
+vouchsafes
+vouchsafing
+vouge
+Vought
+Vought's
+voussoir
+Vouvray
+vow
+vowed
+vowel
+vowel's
+vowelization
+vowelization's
+vowelizations
+vowelize
+vowelized
+vowelizes
+vowelizing
+vowels
+vower
+vowing
+vows
+vox
+voyage
+voyaged
+voyager
+voyagers
+voyages
+voyageur
+voyageurs
+voyaging
+voyagings
+voyeur
+voyeurism
+voyeuristic
+voyeuristically
+voyeurs
+Vreeland
+Vreeland's
+Vries
+vroom
+vs
+VT
+VTOL
+Vuelta
+vuillard
+Vulcan
+vulcanian
+vulcanicity
+Vulcanism
+Vulcanite
+vulcanizable
+vulcanizable's
+vulcanizables
+vulcanizate
+vulcanization
+vulcanization's
+vulcanizations
+vulcanize
+vulcanized
+vulcanizer
+vulcanizers
+vulcanizes
+vulcanizing
+vulcanologist
+vulcanology
+vulgar
+vulgarian
+vulgaris
+vulgarism
+vulgarity
+vulgarization
+vulgarization's
+vulgarizations
+vulgarize
+vulgarized
+vulgarizer
+vulgarizers
+vulgarizes
+vulgarizing
+vulgarly
+vulgate
+vulgus
+vulnerabilities
+vulnerability
+vulnerable
+vulnerableness
+vulnerably
+vulnerary
+Vulpecula
+vulpine
+vulterine
+vulture
+vulture's
+vulturelike
+vultures
+vulturine
+vulturous
+vulva
+vulvae
+vulval
+vulvar
+vulviform
+vulvitis
+vulvovaginitis
+Vyatka
+vyborg
+vying
+Vyshinsky
+Vyvyan
+WA
+WAAC
+WAAF
+Waals
+Waart
+Wabash
+wabble
+wabbled
+wabbles
+wabbling
+WAC
+wace
+wackier
+wackily
+wackiness
+wacko
+wacko's
+wackos
+wacky
+Waco
+wad
+wadable
+wadai
+wadded
+Waddenzee
+wadder
+waddie
+waddied
+waddies
+wadding
+Waddington
+waddle
+waddled
+waddler
+waddles
+waddling
+waddy
+waddying
+wade
+Wade's
+wadeable
+waded
+wader
+waders
+wades
+wadi
+wading
+wadmal
+wads
+wadset
+Wadsworth
+Wadsworth's
+wafer
+wafer's
+wafered
+wafering
+wafers
+waffle
+waffle's
+waffled
+waffles
+waffling
+waft
+waftage
+wafter
+wafture
+wag
+wage
+waged
+wageless
+wager
+wagered
+wagerer
+wagering
+wagers
+wages
+wageworker
+wagged
+wagger
+waggery
+wagging
+waggish
+waggishly
+waggishness
+waggle
+waggled
+waggles
+waggling
+waggly
+waging
+Wagner
+Wagnerian
+Wagnerize
+Wagnerizes
+wagon
+wagon's
+wagoneer
+wagoneer's
+wagoneers
+wagoner
+wagoner's
+wagoners
+wagonette
+wagonette's
+wagonettes
+wagonload
+wagonload's
+wagonloads
+wagons
+wagram
+wags
+wagtail
+wah
+Wahhabi
+wahine
+Wahl
+Wahl's
+wahoo
+wahoos
+waif
+Waikato
+Waikiki
+wail
+wailed
+wailer
+wailful
+wailfully
+wailing
+wails
+wain
+wained
+wainscot
+wainscoted
+wainscoting
+wainscots
+wainscotting
+Wainwright
+waist
+waist's
+waistband
+waistcloth
+waistcoat
+waistcoat's
+waistcoated
+waistcoats
+waisted
+waister
+waistline
+waists
+wait
+Waite
+Waite's
+waited
+waiter
+waiter's
+waiters
+waiting
+waitress
+waitress's
+waitresses
+waits
+waive
+waived
+waiver
+waiverable
+waivers
+waives
+waiving
+Wajda
+Wakashan
+Wakayama
+wake
+waked
+Wakefield
+wakeful
+wakefully
+wakefulness
+wakeless
+waken
+wakened
+wakener
+wakening
+waker
+Wakerife
+wakerobin
+wakes
+wakeup
+waking
+Waksman
+Walach
+Walachia
+Walbridge
+Walbrzych
+Walcheren
+Walcott
+Waldemar
+Walden
+Waldenburg
+Waldensian
+Waldgrave
+Waldheim
+Waldo
+Waldorf
+Waldron
+Waldron's
+wale
+waler
+wales
+Waley
+walfish
+Walford
+Walgreen
+walhalla
+waling
+walk
+walkable
+walkabout
+walkaway
+walked
+walker
+walkers
+walkie
+walking
+walkingstick
+walkley
+walkout
+walkover
+walks
+walkway
+walkway's
+walkways
+wall
+wall's
+wallaby
+Wallace
+Wallachia
+wallah
+wallaroo
+wallasey
+wallboard
+walled
+Wallenstein
+wallenstein
+waller
+wallet
+wallet's
+wallets
+walleye
+walleyed
+wallflower
+wallies
+walling
+Wallis
+Walloon
+wallop
+walloped
+walloper
+walloping
+wallops
+wallow
+wallowed
+wallower
+wallowing
+wallows
+wallpaper
+wallpapers
+walls
+Wallsend
+wally
+Wally's
+walnut
+walnut's
+walnuts
+Walpole
+Walpurgis
+walrus
+walrus's
+walruses
+Walsall
+Walsh
+Walsingham
+Walt
+Walter
+Walters
+Waltham
+Waltham's
+Walther
+Walton
+waltz
+waltzed
+waltzer
+waltzes
+waltzing
+Walvis
+Walworth
+wamble
+wambled
+wambling
+wame
+wampum
+wan
+Wand
+wand
+wander
+wandered
+wanderer
+wanderers
+wandering
+wanderings
+wanderlust
+wanderoo
+wanders
+wandoo
+Wandsworth
+wane
+waned
+wanes
+waney
+Wang
+wanganui
+wangle
+wangled
+wangler
+wangles
+wangling
+wanhsien
+wanier
+waning
+wank
+wankel
+wankie
+wanly
+wanna
+wanner
+wanness
+wannest
+wanning
+Wansee
+wansee
+wansley
+Wansley
+want
+wanted
+wanter
+wanting
+wanton
+wantoner
+wantonly
+wantonness
+wants
+wany
+Wapentake
+wapiti
+wapitis
+Wappenshaw
+Wappinger
+Wappinger's
+war
+war's
+Waragi
+Warangal
+waratah
+Warbeck
+warble
+warbled
+warbler
+warbles
+warbling
+warbonnet
+Warburton
+ward
+Ward
+warded
+warden
+wardens
+wardenship
+warder
+wardership
+wardian
+warding
+wardle
+wardmote
+wardress
+wardrobe
+wardrobe's
+wardrobes
+wardroom
+wardrooms
+wards
+wardship
+ware
+warehouse
+warehoused
+warehouseman
+warehousemen
+warehouser
+warehouses
+warehousing
+wareroom
+wares
+warfare
+Warfarin
+Warfield
+Warfield's
+warhead
+warheads
+Warhol
+warhorse
+warhorses
+warier
+wariest
+warily
+wariness
+waring
+Warison
+warless
+Warley
+warlike
+warlock
+warlord
+warlordism
+warlords
+warm
+warmed
+warmer
+warmers
+warmest
+warmhearted
+warmheartedly
+warmheartedness
+warming
+warmish
+warmly
+warmness
+warmonger
+warmongering
+warmongers
+warms
+warmth
+warmup
+warn
+warned
+warner
+warning
+warningly
+warnings
+Warnock
+Warnock's
+warns
+warp
+warp's
+warpage
+warpath
+warped
+warper
+warping
+warplane
+warplane's
+warplanes
+warps
+warrant
+warrantable
+warrantableness
+warrantably
+warranted
+warrantee
+warrantees
+warranter
+warranties
+warranting
+warrantless
+warrantor
+warrantors
+warrants
+warranty
+warranty's
+warred
+warren
+Warren
+warrener
+warreners
+warrens
+warrigal
+warring
+Warrington
+warrior
+warrior's
+warriors
+wars
+Warsaw
+Warsaw's
+warship
+warship's
+warships
+warsle
+wart
+wart's
+warta
+Wartburg
+warted
+wartime
+wartimes
+warts
+warty
+Warwick
+Warwick's
+Warwickshire
+wary
+was
+Wasatch
+wash
+washability
+washable
+washaway
+washbasin
+washboard
+washbowl
+Washburn
+washcloth
+washcloths
+washday
+washdays
+washed
+washer
+washerman
+washers
+washerwoman
+washerwomen
+washery
+washes
+washhouse
+washier
+washin
+washing
+washings
+Washington
+Washington's
+washoe
+Washoe
+washout
+washrag
+washroom
+washrooms
+washstand
+washstands
+washtub
+washtubs
+washwoman
+washwomen
+washy
+wasn't
+wasp
+wasp's
+waspish
+waspishly
+waspishness
+wasplike
+wasps
+wassail
+wassailer
+Wasserman
+wassermann
+wast
+wastage
+wastages
+waste
+wastebasket
+wastebaskets
+wasted
+wasteful
+wastefully
+wastefulness
+wasteland
+wastelands
+wastepaper
+waster
+wastes
+wastewater
+wasteweir
+wasting
+wastingly
+wastrel
+wastrels
+Watanabe
+Watanabe's
+watap
+watch
+watchband
+watchcase
+watchdog
+watched
+watcher
+watchers
+watches
+watcheye
+watchful
+watchfully
+watchfulness
+watching
+watchings
+watchmake
+watchmaker
+watchmakers
+watchmaking
+watchman
+watchmen
+watchpoints
+watchstrap
+watchtower
+watchword
+watchword's
+watchwords
+watchworks
+water
+waterage
+waterborne
+waterbrain
+waterbuck
+Waterbury
+watercolor
+watercolor's
+watercolored
+watercoloring
+watercolorist
+watercolorists
+watercolors
+watercourse
+watercraft
+watercress
+watered
+waterer
+waterfall
+waterfall's
+waterfalls
+waterflood
+Waterford
+waterfowl
+waterfowl's
+waterfowler
+waterfront
+Watergate
+waterhole
+waterhole's
+waterholes
+Waterhouse
+waterily
+wateriness
+watering
+waterings
+waterish
+waterishness
+waterless
+waterlessly
+waterlessness
+waterline
+waterlines
+waterlog
+waterlogged
+waterloo
+waterman
+watermanship
+watermark
+watermelon
+waterpower
+waterproof
+waterproofed
+waterproofer
+waterproofing
+waterproofness
+waterproofs
+waters
+waterscape
+watershed
+watersheds
+waterside
+watersider
+waterspout
+watertight
+watertightness
+watertower
+Watertown
+waterway
+waterway's
+waterways
+waterweed
+waterwheel
+waterworks
+waterworn
+watery
+Watford
+Watkins
+Watling
+Watson
+Watson's
+watt
+wattage
+wattages
+Watteau
+Wattenberg
+Wattenscheid
+Watterson
+wattle
+wattlebird
+wattled
+wattles
+wattling
+wattmeter
+wattmeter's
+wattmeters
+Watts
+watts
+Watusi
+Waugh
+waught
+Waukesha
+waukesha
+waul
+Waunona
+waunona
+Waupaca
+waupaca
+Waupun
+waupun
+Wausau
+wausau
+wauwatosa
+Wauwatosa
+wave
+waveband
+wavebands
+waved
+waveform
+waveform's
+waveforms
+wavefront
+wavefront's
+wavefronts
+wavefunction
+wavefunctions
+waveguide
+waveguides
+Waveland
+waveland
+wavelength
+wavelengths
+waveless
+wavelessly
+wavelet
+wavelets
+wavelike
+wavellite
+wavemeter
+wavenumber
+waveoff
+waver
+wavered
+waverer
+wavering
+waveringly
+wavers
+wavery
+waves
+wavier
+wavily
+waviness
+waving
+wavy
+waw
+wawa
+wawl
+wax
+waxberry
+waxbill
+waxed
+waxen
+waxer
+waxers
+waxes
+waxier
+waxiness
+waxing
+waxlike
+waxplant
+waxwing
+waxwing's
+waxwings
+waxwork
+waxworks
+waxy
+way
+way's
+waybill
+wayfarer
+wayfaring
+waygoing
+waylaid
+Wayland
+waylay
+wayless
+Wayne
+Waynesboro
+ways
+wayside
+waysides
+wayward
+waywardly
+waywardness
+wayworn
+wayzgoose
+waziristan
+we
+we'd
+we'll
+we're
+we've
+weak
+weaken
+weakened
+weakener
+weakening
+weakens
+weaker
+weakest
+weakfish
+weakhearted
+weakish
+weakliness
+weakling
+weakly
+weakness
+weakness's
+weaknesses
+weal
+weald
+wealth
+wealthier
+wealthiest
+wealthily
+wealthiness
+wealths
+wealthy
+wean
+weaned
+weaner
+weaning
+weanling
+weapon
+weapon's
+weaponed
+weaponeer
+weaponless
+weaponry
+weapons
+wear
+wearability
+wearable
+wearer
+wearied
+wearier
+wearies
+weariest
+weariful
+wearifully
+wearifulness
+weariless
+wearilessly
+wearily
+weariness
+wearing
+wearingly
+wearisome
+wearisomely
+wearisomeness
+wearproof
+wears
+weary
+wearying
+weasand
+weasel
+weasel's
+weaseled
+weaseling
+weasels
+weather
+weatherability
+weatherbeaten
+weatherboard
+weatherboarding
+weathercock
+weathercock's
+weathercocks
+weathered
+weatherer
+Weatherford
+weatherglass
+weathering
+weatherly
+weatherman
+weatherproof
+weatherproofness
+weathers
+weatherstrip
+weatherstripping
+weatherworn
+weathery
+weave
+weaver
+weaverbird
+weavers
+weaves
+weaving
+web
+web's
+Webb
+Webb's
+webbed
+Webber
+webber
+webbing
+webbs
+webby
+weber
+Webern
+webfoot
+weblike
+webs
+Webster
+Webster's
+Websterville
+webwheel
+wed
+wedded
+weddell
+wedder
+wedding
+wedding's
+weddings
+wedekind
+wedeling
+wedge
+wedged
+wedges
+wedging
+Wedgwood
+wedgy
+wedlock
+Wednesday
+Wednesday's
+Wednesdays
+weds
+wee
+weed
+weeded
+weeder
+weediness
+weeding
+weedkiller
+weedless
+weeds
+weedy
+week
+week's
+weekday
+weekday's
+weekdays
+weekend
+weekend's
+weekender
+weekends
+weeklies
+weekly
+weeknight
+weeknights
+weeks
+weelkes
+ween
+weeny
+weep
+weeped
+weeper
+weepers
+weeping
+weeps
+weepy
+weet
+weever
+weevil
+weeviled
+weevilly
+weevily
+weft
+wefts
+Wehr
+Wehr's
+Wei
+Wei's
+Weibull
+Weibull's
+weider
+Weider
+weidman
+Weidman
+Weierstrass
+Weigela
+weigh
+weighable
+weighbridge
+weighbridges
+weighed
+weigher
+weighing
+weighings
+weighs
+weight
+weighted
+weighter
+weightier
+weightily
+weightiness
+weighting
+weightings
+weightless
+weightlessly
+weightlessness
+weightlifter
+weightlifting
+weights
+weighty
+weihai
+Weikert
+Weikl
+Weill
+Weimar
+weimaraner
+Weinberg
+weiner
+Weiner
+Weinstein
+weir
+weird
+weirdie
+weirdies
+weirdly
+weirdness
+weirdo
+weirdos
+weirs
+Weisenheimer
+Weismannism
+Weiss
+Weisshorn
+Weissman
+Weissmuller
+Weizmann
+weka
+Welch
+Welcher
+Welches
+welcome
+welcomed
+welcomely
+welcomeness
+welcomer
+welcomes
+welcoming
+weld
+weldable
+welded
+welder
+welders
+welding
+weldings
+weldment
+Weldon
+weldor
+welds
+weldwood
+Weldwood
+welfare
+welfarism
+welfarist
+welkin
+welkom
+well
+welland
+wellaway
+wellbeing
+wellborn
+welled
+Weller
+Welles
+Wellesley
+wellesz
+wellhead
+wellies
+welling
+Wellingborough
+wellington
+Wellington
+Wellingtonia
+Wellman
+wellman
+wellness
+wells
+Wellsville
+wellwisher
+wellwisher's
+wellwishers
+Welmers
+welmers
+Welsbach
+welsh
+welsher
+Welshman
+welt
+welter
+weltered
+weltering
+welterweight
+Welton
+welts
+weltschmerz
+Welwitschia
+welwyn
+Wembley
+wen
+Wenceslaus
+wench
+wench's
+wencher
+wenches
+wend
+Wendell
+Wendish
+Wendy
+Wenkel
+Wensleydale
+went
+wentletrap
+Wentworth
+wept
+were
+weren't
+werewolf
+werewolf's
+werewolves
+Werner
+wernerite
+wersh
+wert
+Werther
+Werther's
+weser
+wesker
+weskit
+Wesley
+Wesleyan
+wessex
+Wesson
+west
+westbound
+Westbrook
+Westchester
+wester
+westered
+westering
+westerlies
+westerly
+western
+westerner
+westerners
+Westernism
+westernization
+westernization's
+westernizations
+westernize
+westernized
+westernizes
+westernizing
+westernmost
+Westfalen
+Westfield
+Westhampton
+westing
+Westinghouse
+Westmeath
+Westminster
+Westmore
+Westmorland
+westmost
+Weston
+Westphalia
+Westport
+westward
+westwards
+Westwood
+wet
+wetback
+wetland
+wetlands
+wetly
+wetness
+wets
+wettable
+wetted
+wetter
+Wetterhorn
+wettest
+wetting
+wettish
+Wexford
+Weyerhauser
+Weymouth
+WFF
+wff
+whack
+whacked
+whacker
+whacking
+whacko
+whacks
+whacky
+whale
+whaleback
+whaleboat
+whalebone
+whalebone's
+whalebones
+Whalen
+Whalen's
+whaler
+whales
+whaling
+wham
+whammies
+whamming
+whammy
+whang
+whangarei
+whangee
+whap
+whare
+wharf
+wharfage
+wharfie
+wharfinger
+wharfmaster
+wharfs
+Wharton
+wharve
+wharves
+what
+what'd
+what're
+what's
+whatchamacallit
+whatchamacallit's
+whatchamacallits
+whatever
+Whatley
+Whatley's
+whatnot
+whats
+whatsit
+whatsoever
+whaup
+wheal
+wheat
+wheatear
+wheaten
+Wheatland
+wheatland
+Wheaton
+wheaton
+Wheatstone
+wheatworm
+whee
+wheedle
+wheedled
+wheedles
+wheedling
+wheel
+wheelbarrow
+wheelbarrow's
+wheelbarrows
+wheelbase
+wheelchair
+wheelchair's
+wheeled
+wheeler
+wheelers
+wheelhorse
+wheelhouse
+wheelie
+wheeling
+wheelings
+wheelless
+wheelman
+wheelock
+Wheelock
+wheels
+wheelsman
+wheelwork
+wheelwright
+wheen
+wheeze
+wheezed
+wheezes
+wheezier
+wheezily
+wheeziness
+wheezing
+wheezy
+Whelan
+whelk
+Wheller
+whelm
+whelp
+when
+whenas
+whence
+whencesoever
+whenever
+whens
+whensoever
+where
+where'd
+where're
+where's
+whereabout
+whereabouts
+whereafter
+whereas
+whereat
+whereby
+wherefore
+wherefores
+wherefrom
+wherein
+whereinto
+whereness
+whereof
+whereon
+wheres
+wheresoever
+wheresomever
+wherethrough
+whereto
+whereunto
+whereupon
+wherever
+wherewith
+wherewithal
+wherries
+wherrit
+wherry
+whet
+whether
+whets
+whetstone
+whetted
+whetter
+whetting
+whew
+whey
+wheyface
+which
+whichever
+whichsoever
+whicker
+whickered
+whickering
+whidah
+whidding
+whiff
+whiffle
+whiffled
+whiffler
+whiffles
+whiffletree
+whiffling
+whig
+whigmaleerie
+whigs
+Whikehart
+while
+whiled
+whiles
+whiling
+whilom
+whilst
+whim
+whim's
+whimbrel
+whimper
+whimpered
+whimpering
+whimpers
+whims
+whimsey
+whimseys
+whimsical
+whimsicality
+whimsically
+whimsicalness
+whimsied
+whimsies
+whimsy
+whimsy's
+whin
+whinchat
+whine
+whined
+whiner
+whines
+whiney
+whinge
+whining
+whiningly
+whinnied
+whinnies
+whinny
+whinnying
+whinstone
+whip
+whip's
+whipcord
+whiplash
+whiplashes
+whiplike
+Whippany
+whipped
+whipper
+whipper's
+whippers
+whippersnapper
+whippet
+whippier
+whipping
+whipping's
+whippings
+Whipple
+whippletree
+whippoorwill
+whippy
+whips
+whipsaw
+whipsawed
+whipstall
+whipstitch
+whipstock
+whipworm
+whir
+whirl
+whirlabout
+whirled
+whirler
+whirlies
+whirligig
+whirling
+whirlpool
+whirlpool's
+whirlpools
+whirls
+whirlwind
+whirly
+whirlybird
+whirr
+whirried
+whirring
+whirry
+whirrying
+whish
+whisht
+whisk
+whisked
+whisker
+whiskered
+whiskers
+whiskery
+whiskey
+whiskey's
+whiskeys
+whiskies
+whisking
+whisks
+whisper
+whispered
+whisperer
+whispering
+whisperingly
+whisperings
+whispers
+whispery
+whist
+whistle
+whistleable
+whistled
+whistler
+whistlers
+whistles
+whistling
+whit
+Whitaker
+Whitaker's
+whitby
+Whitcomb
+White
+white
+whitebait
+whitebeam
+whitebeard
+Whiteboy
+whitecap
+Whitechapel
+whited
+whitedamp
+whiteface
+Whitefield
+whitefish
+whitefly
+Whitehall
+whitehead
+Whitehorse
+Whitehorse's
+whiteleaf
+Whiteleaf
+Whiteley
+whiteley
+whitely
+whiten
+whitened
+whitener
+whiteners
+whiteness
+whitening
+whitens
+whiteout
+whiter
+whites
+whitesmith
+whitespace
+whitest
+whitetail
+whitethorn
+whitethroat
+whitewall
+whitewash
+whitewashed
+whitewasher
+whitewashing
+Whitewater
+whitewater
+whitewing
+whitewood
+whitey
+Whitfield
+whither
+whithersoever
+whitherward
+whiting
+whitish
+Whitlam
+Whitley
+Whitlock
+Whitlow
+Whitman
+Whitmanize
+Whitmanizes
+Whitney
+Whitsun
+Whitsuntide
+Whittaker
+Whittier
+Whittington
+whittle
+whittled
+whittler
+whittles
+whittling
+whittlings
+whity
+whiz
+whizbang
+whizz
+whizzbang
+whizzed
+whizzer
+whizzes
+whizzing
+who
+who'd
+who'll
+who's
+who've
+whoa
+whodunit
+whodunit's
+whodunits
+whoever
+whole
+wholefood
+wholehearted
+wholeheartedly
+wholemeal
+wholeness
+wholes
+wholesale
+wholesaled
+wholesaler
+wholesalers
+wholesales
+wholesaling
+wholesome
+wholesomely
+wholesomeness
+wholism
+wholly
+whom
+whomever
+whomp
+whomsoever
+whoop
+whooped
+whoopee
+whooper
+whooping
+whoopla
+whoops
+whoosh
+whop
+whopper
+whoppers
+whopping
+whore
+whore's
+whoredom
+whorehouse
+whoremaster
+whoremonger
+whores
+whoreson
+whoring
+whorish
+whorl
+whorl's
+whorled
+whorls
+whort
+whortle
+whortleberry
+whose
+whosesoever
+whoso
+whosoever
+whump
+whup
+why
+whyalla
+whydah
+whys
+WI
+Wichita
+wick
+wicked
+wickedly
+wickedness
+wicker
+Wickersley
+wickerwork
+wicket
+wicketkeeper
+wicketkeepers
+wicketkeeping
+wickets
+wicking
+wickiup
+Wickliffe
+Wicklow
+wicks
+wickthing
+wicopy
+widdershins
+wide
+widely
+widemouthed
+widen
+widened
+widener
+wideness
+widening
+widens
+wider
+widespread
+widest
+widgeon
+widgeons
+widgery
+widget
+widget's
+widgets
+widgie
+widish
+widnes
+Widor
+widow
+widowed
+widower
+widowerhood
+widowers
+widowhood
+widows
+width
+widths
+widthways
+widthwise
+widukind
+wieland
+Wieland
+wield
+wielded
+wielder
+wielding
+wields
+wieldy
+wien
+wiener
+wieners
+wienerwurst
+wienie
+Wiesbaden
+wife
+wife's
+wifehood
+wifeless
+wifelike
+wifeliness
+wifely
+wig
+wig's
+wigan
+wigeon
+wigeons
+wigged
+wigging
+Wiggins
+wiggle
+wiggled
+wiggler
+wiggles
+wiggling
+wiggly
+wight
+Wightman
+Wightman's
+wiglet
+wigmaker
+Wigner
+wigs
+Wigtown
+wigwag
+wigwam
+Wijngaarden
+wikiup
+Wilberforce
+Wilbur
+Wilbur's
+wilco
+Wilcox
+wild
+wildcard
+wildcarded
+wildcarding
+wildcards
+wildcat
+wildcat's
+wildcats
+wildcatted
+wildcatter
+wildcatting
+wilde
+wildebeest
+wildebeest's
+wilder
+wilderment
+wilderness
+wildest
+wildfire
+wildflower
+wildflower's
+wildflowers
+wildfowl
+wildfowler
+wildfowling
+wilding
+wildish
+wildlife
+wildling
+wildly
+wildness
+wildwood
+wile
+wiled
+wiles
+Wiley
+Wilfred
+wilful
+wilfully
+Wilhelm
+Wilhelmina
+wilhelmshaven
+wilhelmstrasse
+wilier
+wilily
+wiliness
+wiling
+Wilkes
+Wilkie
+Wilkie's
+Wilkins
+Wilkinson
+will
+Willa
+Willa's
+willable
+Willamette
+Willard
+Willcocks
+Willcox
+willed
+Willem
+willemite
+willemstad
+willer
+willet
+willful
+willfully
+willfulness
+William
+Williams
+Williamsburg
+Williamson
+Willie
+Willied
+willies
+Willies
+willing
+willingly
+willingness
+willings
+Willis
+Willisson
+Willisson's
+williwaw
+Willoughby
+willow
+willow's
+willower
+willowherb
+willowlike
+willows
+willowware
+willowy
+willpower
+wills
+willy
+Willy
+willying
+Wilma
+wilmette
+Wilmette
+Wilmington
+wilmslow
+wilno
+Wilshire
+Wilson
+Wilson's
+Wilsonian
+wilt
+wilted
+wilting
+Wilton
+wilts
+Wiltshire
+Wiltshire's
+wily
+wimble
+wimbled
+Wimbledon
+wimbles
+wimbling
+wimp
+wimp's
+wimpier
+wimpiest
+wimple
+wimpled
+wimpling
+wimps
+wimpy
+Wimshurst
+win
+wince
+winced
+winces
+wincey
+Winceyette
+winch
+winched
+Winchell
+winchell
+wincher
+winches
+Winchester
+winchester
+Winchesters
+winching
+wincing
+Winckelmann
+wind
+windage
+windbag
+windbags
+windblown
+windbound
+windbreak
+windbreaks
+windburn
+windburned
+windcheater
+windcheaters
+windchill
+winded
+winder
+windermere
+winders
+windfall
+windflaw
+windflower
+windgall
+windhoek
+windhover
+windier
+windily
+windiness
+winding
+windjammer
+windlass
+windlassed
+windlasses
+windlassing
+windlassly
+windless
+windlessly
+windlessness
+windlestraw
+windmill
+windmill's
+windmilling
+windmills
+window
+window's
+windowed
+windowing
+windowless
+windowpane
+windowpanes
+windows
+windowsill
+windpipe
+windproof
+windrow
+winds
+windsail
+windscreen
+windshield
+windsock
+Windsor
+windstorm
+windsurf
+windsurfed
+windsurfing
+windsurfs
+windswept
+windup
+windward
+windwardly
+windway
+windy
+wine
+winebibber
+wined
+wineglass
+winegrower
+winehead
+Winehead
+winemake
+winemaster
+winepress
+winer
+winers
+winery
+wines
+wineshop
+wineskin
+winey
+Winfield
+wing
+wingback
+wingbeat
+wingbeat's
+wingbeats
+wingding
+winged
+winger
+wingers
+winging
+wingless
+winglessness
+winglet
+winglike
+wingman
+wingmen
+wingover
+wings
+wingspan
+wingspread
+wingspread's
+wingspreads
+wingtip
+wingy
+Winifred
+wining
+winism
+wink
+winked
+winkelried
+winker
+winking
+winkle
+winkled
+winkles
+winkling
+winks
+winless
+winnable
+winnebago
+Winnebago
+winned
+winner
+winner's
+winners
+Winnetka
+Winnie
+winning
+winningly
+winnings
+Winnipeg
+winnipegosis
+winnow
+winnower
+wino
+Winograd
+winooski
+Winooski
+winos
+wins
+Winsborough
+Winsett
+winsett
+Winslow
+winsome
+winsomely
+winsomeness
+Winston
+winter
+wintered
+winterer
+winterfeed
+wintergreen
+wintering
+winterization
+winterization's
+winterizations
+winterize
+winterized
+winterizes
+winterizing
+winterkill
+winterly
+winters
+winterthur
+wintertide
+wintertime
+winterweight
+wintery
+Winthrop
+wintle
+wintrier
+wintrily
+wintriness
+wintry
+winy
+winze
+wipe
+wiped
+wiper
+wipers
+wipes
+wiping
+wipo
+wirable
+wire
+wired
+wiredraw
+wiredrawer
+wiredrawn
+wirehair
+wirehaired
+wireless
+wirelike
+wireman
+wiremen
+wirepuller
+wirer
+wires
+wiretap
+wiretap's
+wiretapper
+wiretapping
+wiretaps
+wirewalker
+wireway
+wirework
+wireworks
+wireworm
+wirier
+wirily
+wiriness
+wiring
+wirings
+wirra
+wirral
+wiry
+wis
+Wisconsin
+Wisconsin's
+wisdom
+wisdoms
+wise
+wiseacre
+wisecrack
+wisecracked
+wisecracker
+wised
+wisely
+Wiseman
+wiseness
+Wisenheimer
+wisenheimer
+wisent
+wiser
+wises
+wisest
+wisewoman
+wish
+wisha
+wishbone
+wished
+wisher
+wishers
+wishes
+wishful
+wishfully
+wishfulness
+wishing
+wishlist
+wishlists
+wishy
+wising
+wislany
+wismar
+wisp
+wisp's
+wispish
+wisps
+wispy
+wist
+wistaria
+wisteria
+wistful
+wistfully
+wistfulness
+wit
+wit's
+witan
+witch
+witchcraft
+witchery
+witches
+witchetty
+witching
+witchlike
+witchy
+wite
+witenagemot
+with
+withal
+withdraw
+withdrawable
+withdrawal
+withdrawal's
+withdrawals
+withdrawer
+withdrawing
+withdrawn
+withdrawnness
+withdraws
+withdrew
+withe
+wither
+withered
+withering
+witheringly
+witherite
+withers
+withershins
+Witherspoon
+witherspoon
+withheld
+withhold
+withholder
+withholders
+withholding
+withholdings
+withholds
+withies
+within
+withindoors
+without
+withoutdoors
+withstand
+withstanding
+withstands
+withstood
+withy
+witless
+witling
+witness
+witnessed
+witnesses
+witnessing
+wits
+Witt
+Witt's
+witted
+Wittenberg
+witter
+Wittgenstein
+Wittgenstein's
+witticism
+wittier
+wittiest
+wittily
+wittiness
+witting
+wittingly
+wittol
+witty
+Witwatersrand
+wive
+wivern
+wives
+wiving
+Wixell
+wiz
+wizard
+wizard's
+wizardly
+wizardry
+wizards
+wizen
+wizened
+woad
+woaded
+woadwaxen
+woald
+Wobbegong
+wobble
+wobbled
+wobbler
+wobbles
+wobbliness
+wobbling
+wobbly
+Wodehouse
+Woden
+wodge
+wodges
+woe
+woebegone
+woebegoneness
+woeful
+woefully
+woeness
+wog
+woggle
+wok
+woke
+woken
+Woking
+Wokingham
+Wolcott
+wold
+Wolds
+wolf
+wolfbane
+Wolfe
+Wolfe's
+wolfenden
+wolfer
+Wolff
+Wolff's
+Wolffian
+wolffish
+Wolfgang
+wolfhound
+wolfish
+wolfishly
+wolfishness
+wolfit
+wolflike
+Wolfram
+wolframite
+wolfsbane
+Wolfsburg
+wollastonite
+Wollongong
+wolly
+Wolof
+wolsey
+wolve
+wolver
+Wolverhampton
+wolverine
+wolverine's
+wolverines
+wolverton
+Wolverton
+wolves
+woman
+woman's
+womanhood
+womanish
+womanishly
+womanishness
+womanization
+womanization's
+womanizations
+womanize
+womanized
+womanizer
+womanizers
+womanizes
+womanizing
+womankind
+womanless
+womanlike
+womanliness
+womanly
+womanpower
+womb
+womb's
+wombat
+wombat's
+wombats
+wombed
+wombs
+women
+women's
+womenfolk
+womenfolks
+womenkind
+womens
+womera
+won
+won't
+wonder
+wondered
+wonderer
+wonderful
+wonderfully
+wonderfulness
+wondering
+wonderingly
+wonderland
+wonderland's
+wonderment
+wonders
+wonderwork
+wondrous
+wondrously
+wondrousness
+Wong
+Wong's
+wonky
+wonning
+wonsan
+wont
+wonted
+wontedly
+wontedness
+wonting
+wonton
+woo
+wood
+wood's
+Woodard
+Woodberry
+woodberry
+woodborer
+Woodbury
+woodcarver
+woodcarving
+woodchat
+woodchopper
+woodchoppers
+woodchuck
+woodchuck's
+woodchucks
+woodcock
+woodcock's
+woodcockize
+woodcockizes
+woodcocks
+woodcraft
+woodcut
+woodcutter
+woodcutters
+woodcutting
+wooded
+wooden
+woodenhead
+woodenheaded
+woodenly
+woodenness
+woodenware
+woodgrain
+woodgraining
+woodgrouse
+woodhen
+woodhook
+woodier
+woodiness
+wooding
+woodland
+woodlander
+woodlark
+Woodlawn
+woodlore
+woodlot
+woodlouse
+woodman
+woodnote
+woodpecker
+woodpecker's
+woodpeckers
+woodpile
+Woodrow
+woodruff
+woodrush
+woods
+woodscrew
+woodseats
+woodser
+woodshed
+Woodsia
+woodside
+woodsman
+Woodstock
+Woodstock's
+woodsy
+Woodward
+Woodwards
+woodwaxen
+woodwind
+woodwork
+woodworker
+woodworking
+woodworm
+Woody
+woody
+Woody's
+woodyard
+wooed
+wooer
+woof
+woofed
+woofer
+woofers
+woofing
+woofs
+wooing
+wool
+wooled
+woolen
+woolenization
+woolenization's
+woolenizations
+woolenize
+woolenizes
+woolens
+woolf
+woolfell
+woolgather
+woolgatherer
+woolgathering
+woolgrower
+woolie
+woolley
+woollier
+woollies
+woolliness
+woolly
+woollybutt
+woolpack
+wools
+woolsack
+woolshed
+woolskin
+Woolworth
+wooly
+Woomera
+Woonsocket
+woop
+woops
+woorali
+woos
+Wooster
+woozier
+woozily
+wooziness
+woozy
+wop
+wops
+Worcester
+Worcestershire
+Worcestershire's
+word
+word's
+wordage
+wordages
+wordbook
+worded
+wordier
+wordily
+wordiness
+wording
+wordings
+wordless
+wordlessly
+wordlessness
+wordmonger
+wordplay
+words
+Wordsworth
+wordy
+wore
+work
+workability
+workable
+workableness
+workably
+workaday
+workaround
+workaround's
+workarounds
+workbag
+workbasket
+workbench
+workbench's
+workbenches
+workboat
+workbook
+workbook's
+workbooks
+workbox
+workday
+worked
+worker
+worker's
+workers
+workfile
+workfiles
+workfolk
+workfolks
+workforce
+workforce's
+workforces
+workgroup
+workgroups
+workhorse
+workhorse's
+workhorses
+workhouse
+workhouses
+working
+workingman
+workingmen
+workings
+workless
+worklessness
+workload
+workloads
+workman
+workmanlike
+workmanly
+workmanship
+workmate
+workmates
+workmen
+workmen's
+workout
+workouts
+workpeople
+workperson
+workpiece
+workpieces
+workplace
+workplace's
+workplaces
+workroom
+workrooms
+works
+worksheet
+worksheets
+workshop
+workshop's
+workshops
+workshy
+worksop
+workspace
+workspaces
+workstation
+workstation's
+workstations
+worktable
+workweek
+workwoman
+world
+world's
+worlders
+worldliness
+worldling
+worldly
+worlds
+worldwide
+worm
+wormcast
+wormed
+wormer
+wormhole
+wormier
+worming
+wormlike
+worms
+wormseed
+wormwood
+wormy
+worn
+worried
+worriedly
+worrier
+worriers
+worries
+worriment
+worrisome
+worrisomely
+worrisomeness
+worry
+worrying
+worryingly
+worrywart
+worse
+worsen
+worsened
+worsening
+worsens
+worser
+worship
+worshiped
+worshiper
+worshiper's
+worshipers
+worshipful
+worshipfully
+worshipfulness
+worshiping
+worshipless
+worships
+worsley
+worst
+worsted
+wort
+worth
+worthful
+worthier
+worthies
+worthiest
+worthily
+worthiness
+worthing
+Worthington
+worthless
+worthlessly
+worthlessness
+worths
+worthwhile
+worthwhileness
+worthy
+wot
+Wotan
+Wotan's
+wotted
+Wotton
+would
+would've
+wouldest
+wouldn't
+wouldst
+Woulfe
+wound
+wounded
+wounding
+woundless
+wounds
+woundwort
+wove
+woven
+wow
+wowser
+Wraac
+wrack
+wracked
+wracking
+wracks
+wraith
+wraiths
+wran
+wrangle
+wrangled
+wrangler
+wranglers
+wrangles
+wrangling
+wrap
+wrap's
+wraparound
+wrapover
+wrapped
+wrapper
+wrapper's
+wrappers
+wrapping
+wrappings
+wrapround
+wraps
+wrapup
+wrasse
+wrath
+wrathful
+wrathfully
+wrathfulness
+wrathy
+wreak
+wreaks
+wreath
+wreathe
+wreathed
+wreathes
+wreathing
+wreaths
+wreathy
+wreck
+wreckage
+wrecked
+wrecker
+wreckers
+wreckfish
+wreckful
+wrecking
+wrecks
+wrekin
+wren
+wren's
+wrench
+wrenched
+wrenches
+wrenching
+wrenchingly
+wrens
+wrest
+wrested
+wrester
+wresting
+wrestle
+wrestled
+wrestler
+wrestles
+wrestling
+wrestlings
+wrests
+wretch
+wretched
+wretchedly
+wretchedness
+wretches
+Wrexham
+wrier
+wriest
+wriggle
+wriggled
+wriggler
+wriggles
+wriggling
+wriggly
+wright
+Wrigley
+wring
+wringer
+wringing
+wrings
+wrinkle
+wrinkled
+wrinkles
+wrinkling
+wrinkly
+wrist
+wrist's
+wristband
+wristlet
+wristlock
+wrists
+wristwatch
+wristwatch's
+wristwatches
+wristy
+writ
+writ's
+writable
+write
+writer
+writer's
+writers
+writes
+writeup
+writeup's
+writeups
+writhe
+writhed
+writhen
+writhes
+writhing
+writing
+writings
+writs
+written
+wroclaw
+wrong
+wrongdo
+wrongdoer
+wrongdoers
+wrongdoing
+wronged
+wronger
+wrongest
+wrongful
+wrongfully
+wrongfulness
+wrongheaded
+wrongheadedly
+wrongheadedness
+wronging
+wrongly
+wrongness
+wrongs
+Wronskian
+wrote
+wroth
+wrought
+wrung
+wry
+wrybill
+wryly
+wryneck
+Wu
+Wu's
+wuchang
+wuhsien
+wuhu
+wulfenite
+wulfila
+wunderkind
+Wunderlich
+wundt
+wuppertal
+wurley
+wurst
+wus
+wusih
+wuthering
+wutsin
+WV
+WWW
+WY
+Wyatt
+Wyatt's
+wycherley
+wycliffe
+Wycliffite
+wye
+Wyeth
+Wyeth's
+Wykeham
+Wylie
+Wylie's
+Wyman
+wynd
+Wynn
+Wynn's
+Wyoming
+wysiwyg
+wyvern
+xanthate
+xanthein
+xanthene
+xanthic
+xanthin
+xanthine
+xanthippe
+xanthochroid
+xanthochroism
+xanthoma
+xanthophyll
+xanthous
+Xanthus
+xanthus
+Xavier
+xci
+xcii
+xciv
+xcix
+xcvi
+xcvii
+Xenakis
+xenakis
+Xenia
+xenia
+Xenix
+Xenix's
+xenocrates
+xenocryst
+xenogamy
+xenogenesis
+xenoglossia
+xenolith
+xenomania
+xenomorphic
+xenon
+xenophanes
+xenophile
+xenophilous
+xenophobe
+xenophobia
+xenophobic
+xenophon
+xerarch
+Xeres
+xeric
+xerically
+xeroderma
+xerographic
+xerographically
+xerography
+xeromorphic
+xerophile
+xerophilous
+xerophily
+xerophthalmia
+xerophyte
+xerosere
+xerosis
+Xerox
+Xerox's
+Xeroxed
+Xeroxes
+Xeroxing
+Xerxes
+xhosa
+Xhosa
+xi
+xii
+xiii
+xiphisternum
+xiphoid
+xiphosuran
+xiv
+xix
+Xmas
+XOR
+xterm
+xterm's
+xuthus
+xv
+xvi
+xvii
+xviii
+xx
+xxi
+xxii
+xxiii
+xxiv
+xxix
+xxv
+xxvi
+xxvii
+xxviii
+xxx
+xxxi
+xxxii
+xxxiii
+xxxiv
+xxxix
+xxxv
+xxxvi
+xxxvii
+xxxviii
+xylan
+xylem
+xylene
+xylidine
+xylocarp
+xylograph
+xylography
+xyloid
+xylol
+xylophagous
+xylophone
+xylophones
+xylophonist
+xylose
+xylotomic
+xylotomical
+xylotomous
+xylotomy
+xylyl
+xyst
+xyster
+yabber
+yabby
+Yablonovy
+yacc
+yacc's
+yacht
+yachters
+yachting
+yachts
+yachtsman
+yachtsmen
+yack
+yacking
+yaffle
+yafo
+yagi
+yah
+yahata
+Yahoo
+Yahweh
+yak
+Yakima
+yakking
+yaks
+Yakut
+Yakutsk
+Yale
+Yalies
+yalies
+Yalta
+Yalu
+yam
+yamagata
+Yamaha
+Yamaha's
+yamani
+yamashita
+yamen
+yammer
+yang
+Yangtze
+yanina
+yank
+yanked
+Yankee
+Yankeeism
+Yankees
+yanking
+yanks
+Yankton
+Yankton's
+Yaounde
+Yaounde's
+yap
+yapok
+yapon
+yapping
+Yaqui
+Yarborough
+yard
+yard's
+yardage
+yardarm
+yardbird
+yarded
+yarding
+yardman
+yardmaster
+yards
+yardstick
+yardstick's
+yardsticks
+yare
+yarely
+Yarkand
+yarmelke
+Yarmouth
+Yarmouth's
+yarmulke
+yarn
+yarn's
+yarned
+yarning
+yarns
+Yaroslavl
+yarrow
+yarwood
+Yashmak
+yataghan
+yate
+Yates
+yauld
+yaunde
+yaup
+yaupon
+yautia
+yaw
+yawata
+yawed
+yawing
+yawl
+yawn
+yawner
+yawning
+yawningly
+yawns
+yawp
+yaws
+yazd
+ycleped
+yclept
+ye
+yea
+Yeager
+yeah
+yean
+yeanling
+year
+year's
+yearbook
+yearling
+yearlong
+yearly
+yearn
+yearned
+yearner
+yearning
+yearningly
+yearnings
+yearns
+years
+yeas
+yeast
+yeast's
+yeastier
+yeastily
+yeastiness
+yeasts
+yeasty
+Yeats
+yecch
+yegg
+Yekaterinburg
+Yekaterinodar
+Yekaterinoslav
+yeld
+Yelisavetgrad
+Yelisavetpol
+Yelizaveta
+yelk
+yell
+yelled
+yeller
+yellerish
+yelling
+yellow
+yellowbark
+yellowbird
+yellowed
+yellower
+yellowest
+yellowhammer
+yellowing
+yellowish
+Yellowknife
+Yellowknife's
+yellowlegs
+yellowness
+yellows
+Yellowstone
+Yellowstone's
+yellowtail
+yellowweed
+yellowwood
+yells
+yelp
+yelped
+yelper
+yelping
+yelps
+Yemen
+yen
+yenan
+Yenisei
+yentai
+Yentl
+Yentl's
+yeoman
+yeomanly
+yeomanry
+yeomen
+yep
+Yerba
+yerevan
+Yerkes
+yes
+yeses
+yeshiva
+yester
+yesterday
+yesterday's
+yesterdays
+yesteryear
+yestreen
+yet
+yeti
+yeuk
+Yevtushenko
+yew
+yezd
+ygerne
+Yid
+Yiddish
+yield
+yielded
+yielder
+yielding
+yields
+yike
+yin
+yingkow
+yip
+yippee
+yipping
+yirr
+ylem
+YMCA
+ymir
+yob
+yod
+yodel
+yodeled
+yodeler
+yodeling
+yodels
+yodle
+yoga
+yogh
+yoghurt
+yoghurt's
+yogi
+yogic
+yogin
+yogurt
+yogurt's
+yohimbine
+yoicks
+yoke
+yoke's
+yokefellow
+yokel
+yokels
+yokes
+yoking
+Yoknapatawpha
+yoknapatawpha
+Yokohama
+yola
+yolk
+yolks
+yolky
+yom
+yon
+yond
+yonder
+yoni
+Yonkers
+yonne
+yonnie
+yore
+Yorick
+York
+York's
+Yorke
+Yorker
+Yorkers
+Yorkist
+Yorkists
+Yorks
+Yorkshire
+Yorkshire's
+Yorktown
+Yoruba
+Yosemite
+Yoshihito
+Yost
+Yost's
+you
+you'd
+you'll
+you're
+you've
+young
+Youngberry
+younger
+youngest
+youngish
+youngling
+youngly
+youngness
+youngster
+youngster's
+youngsters
+Youngstown
+Younker
+your
+your's
+yours
+yourself
+yourselves
+youth
+youth's
+youthes
+youthful
+youthfully
+youthfulness
+youths
+yow
+yowl
+Ypres
+Ypsilanti
+Yquem
+yr
+Yresko
+Ysaye
+Yser
+Yseult
+Yssel
+ytterbia
+ytterbite
+ytterbium
+yttria
+yttriferous
+yttrium
+yuba
+Yuba
+Yucatan
+yucca
+yuck
+Yuga
+Yugoslav
+Yugoslavia
+yuk
+Yukawa
+Yukon
+yulan
+yule
+yuletide
+Yuman
+yummier
+yummy
+yup
+yuppie
+yuppie's
+yuppies
+Yurev
+Yuri
+yuri
+Yurlov
+yurt
+Yuzovka
+yvelines
+Yves
+Yvette
+YWCA
+ywis
+Zaandam
+zabaglione
+Zabrze
+Zacatecas
+Zaccaria
+Zacharias
+Zachary
+zacynthus
+zaffer
+zag
+zagazig
+zagged
+zagging
+Zagreb
+Zagreb's
+zagreus
+zagros
+zags
+Zaibatsu
+Zaire
+Zakai
+Zakuski
+zama
+Zambezi
+Zambia
+Zambia's
+Zamboanga
+Zamenhof
+Zamia
+zamindar
+zamindari
+zamora
+Zan
+Zan's
+Zanasi
+zanier
+zanies
+zanily
+zaniness
+zante
+Zanthoxylum
+zanu
+zany
+Zanzibar
+zap
+zapata
+zaporozhye
+Zapotec
+zappa
+zapped
+zapping
+zaps
+zapu
+zaqaziq
+zaragoza
+zarathustra
+zaratite
+zareba
+zarf
+zarga
+zaria
+zarzuela
+zastruga
+zayin
+zazen
+zeal
+Zealand
+Zealand's
+zealot
+zealotry
+zealous
+zealously
+zealousness
+zeami
+zebec
+zebedee
+zebra
+zebra's
+zebras
+zebrawood
+zebu
+zebulun
+zecchino
+zechariah
+zed
+zedekiah
+zedoary
+zee
+Zeebrugge
+Zeeland
+Zeeman
+zeffirelli
+Zeffirelli
+zein
+Zeiss
+zeist
+zeitgeist
+Zellerbach
+zemindar
+Zemstvo
+Zen
+zenana
+Zend
+zener
+zenith
+zenithal
+Zennist
+Zenobia
+zeolite
+zeolitic
+zephaniah
+zephyr
+zephyrus
+zeppelin
+Zepperitz
+Zermatt
+zero
+zeroed
+zeroes
+zeroing
+zeroize
+zeroized
+zeroizes
+zeroizing
+zeros
+zeroth
+zest
+zestful
+zestfully
+zestfulness
+zestier
+zesty
+zeta
+zetas
+Zetland
+zeugma
+Zeus
+Zeus's
+zeuxis
+Zhdanov
+Zhitomir
+Zhivkov
+Zho
+Zhukov
+zia
+ziaur
+zibeline
+zibet
+Ziegfeld
+Ziegfeld's
+Ziegfelds
+Ziegler
+Ziegler's
+ziff
+zig
+zigged
+zigging
+ziggurat
+ziggy
+Ziggy
+zigzag
+zigzagged
+zigzagger
+zigzagging
+zila
+zilch
+zillion
+zilpah
+Zimbabwe
+Zimmerman
+Zimmerman's
+zinc
+zinc's
+zincate
+zincic
+zinciferous
+zincite
+zinckenite
+zincograph
+zincography
+Zindabad
+zinfandel
+zing
+zinger
+zingiberaceous
+zingier
+zings
+zingy
+zinjanthropus
+zinkenite
+Zinman
+zinnia
+Zinovievsk
+Zinzendorf
+Zion
+Zion's
+Zionism
+Zionist
+Zionist's
+Zionists
+Zions
+zip
+zipangu
+zipped
+zipper
+zippered
+zippers
+zippier
+zipping
+zippy
+zips
+zircalloy
+zircon
+zirconia
+zirconic
+zirconium
+ziska
+zither
+zitherist
+zithers
+zizith
+zlatoust
+zloty
+zlotys
+Zoa
+zoaea
+zoan
+zoantharian
+zoarial
+zoarium
+zobrist
+zodiac
+zodiacal
+zodiacs
+Zoe
+Zoe's
+zoea
+zoffany
+zohar
+zola
+zombi
+zombie
+zombies
+zombiism
+zonal
+zonally
+zonate
+zonated
+zonation
+zond
+zone
+zoned
+zonely
+zoner
+zones
+zoning
+zonk
+zonked
+zonking
+zonks
+zonule
+zoo
+zoo's
+zoochemistry
+zoochore
+zoogenic
+zoogenous
+zoogeographer
+zoogeographic
+zoogeography
+zoogloea
+zoography
+zooid
+zooks
+zoolatry
+zoologic
+zoological
+zoologically
+zoologist
+zoologists
+zoology
+zoom
+zoomed
+zoometry
+zooming
+zoomorphic
+zoomorphism
+zooms
+zoonosis
+zoonotic
+zooparasite
+zooparasitic
+zoophagous
+zoophile
+zoophilia
+zoophilic
+zoophilism
+zoophilous
+zoophobia
+zoophyte
+zoophytic
+zooplankton
+zooplasty
+zoos
+zoosperm
+zoosporal
+zoosporangium
+zoospore
+zoosterol
+zootechnics
+zootomy
+zootoxin
+zootoxins
+zori
+zorilla
+Zorn
+Zoroaster
+Zoroastrian
+Zoroastrianism
+Zoroastrians
+zorrilla
+zoster
+Zouave
+zoug
+zounds
+Zoysia
+zsigmondy
+zucchetto
+zucchini
+zugzwang
+Zuider
+Zuidholland
+Zukerman
+Zulu
+Zulu's
+Zulus
+Zurich
+Zurich's
+Zwilich
+zwitterion
+zwitterionic
+zwitterions
+zygote
+zygote's
+zygotes
+zymurgy
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README
new file mode 100644
index 00000000000..d9ee38b3ca5
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README
@@ -0,0 +1,45 @@
+
+This file contains the contents of the Ispell (ver 3.1.20) word list after
+being expand from there affix compressed form used by Ispell.
+
+Ispell can be found at http://fmg-www.cs.ucla.edu/geoff/ispell.html.
+This wordlist can be found at http://wordlist.sourceforge.net/
+
+These word lists are under the same copyright as Ispell itself:
+
+ Copyright 1993, Geoff Kuenning, Granada Hills, CA
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. All modifications to the source code must be clearly marked as
+ such. Binary redistributions based on modified source code
+ must be clearly marked as modified versions in the documentation
+ and/or other materials provided with the distribution.
+ 4. All advertising materials mentioning features or use of this software
+ must display the following acknowledgment:
+ This product includes software developed by Geoff Kuenning and
+ other unpaid contributors.
+ 5. The name of Geoff Kuenning may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS
+ IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GEOFF
+ KUENNING OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README.txt b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README.txt
new file mode 100644
index 00000000000..81a5e002701
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/README.txt
@@ -0,0 +1,5 @@
+Acceptable open source dictionary as per
+https://dev.eclipse.org/ipzilla/show_bug.cgi?id=1416
+
+File AllWords.txt has been created out of american.*, english.* files as a convenience
+so only one file can be opened and read versus 6. \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.0 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.0
new file mode 100644
index 00000000000..aec70b51d95
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.0
@@ -0,0 +1,239 @@
+acknowledgement
+acknowledgement's
+acknowledgements
+appal
+appals
+apparelled
+archeological
+archeologically
+archeologist
+archeologist's
+archeologists
+archeology
+autodialler
+barrelled
+barrelling
+bevelled
+bevelling
+canalled
+canalling
+cancelled
+canceller
+cancelling
+channelled
+channeller
+channeller's
+channellers
+channelling
+chiselled
+chiseller
+chisellers
+councilor
+councilor's
+counselled
+counselling
+counsellor
+counsellor's
+counsellors
+crystalize
+crystalized
+crystalizer
+crystalizes
+crystalizing
+dialled
+dialler
+dialling
+draught
+draught's
+draughts
+duelled
+dueller
+duelling
+enamelled
+enameller
+enamellers
+enamelling
+enrol
+enrols
+equalled
+equalling
+eviller
+evillest
+focussable
+focussed
+focusser
+focusses
+focussing
+fuelled
+fueller
+fuelling
+fulfil
+fulfils
+funnelled
+funnelling
+glamor
+glamored
+glamoring
+glamors
+glamourize
+glamourized
+glamourizer
+glamourizers
+glamourizes
+glamourizing
+gospeller
+gospellers
+gravelled
+gravelling
+grovelled
+groveller
+grovelling
+grovellingly
+imperilled
+initialled
+initialler
+initialling
+jewelled
+jeweller
+jewellers
+jewelling
+judgement
+judgement's
+judgements
+kidnapped
+kidnapper
+kidnapper's
+kidnappers
+kidnapping
+kidnapping's
+kidnappings
+labelled
+labeller
+labeller's
+labellers
+labelling
+laurelled
+levelled
+leveller
+levellest
+levelling
+marshalled
+marvelled
+marvelling
+marvellous
+marvellously
+marvellousness
+medalled
+medalling
+metalled
+metalling
+misjudgement
+modelled
+modeller
+modelling
+modellings
+multilevelled
+nickelled
+nickelling
+panelled
+panelling
+parametrizable
+parametrization
+parametrization's
+parametrizations
+parametrize
+parametrized
+parametrizes
+parametrizing
+parcelled
+parcelling
+pencilled
+pencilling
+petalled
+pretence
+pretences
+pretencion
+pretencions
+pretencive
+quarrelled
+quarreller
+quarrelling
+queueing
+recrystalized
+recrystalizes
+redialled
+redialling
+refocussed
+refocusses
+refocussing
+refuelled
+refuelling
+relabelled
+relabeller
+relabellers
+relabelling
+remodelled
+remodelling
+revelled
+reveller
+revellers
+revelling
+revellings
+rivalled
+rivalling
+shovelled
+shoveller
+shovelling
+shrivelled
+shrivelling
+signalled
+signaller
+signalling
+spiralled
+spiralling
+squirrelled
+squirrelling
+stencilled
+stenciller
+stencilling
+symbolled
+symbolling
+syphon
+syphon's
+syphoned
+syphoning
+syphons
+totalled
+totaller
+totaller's
+totallers
+totalling
+towelled
+towelling
+travelled
+traveller
+traveller's
+travellers
+travelling
+travellings
+troweller
+tunnelled
+tunneller
+tunnelling
+uncancelled
+uncrystalized
+unequalled
+unfocussed
+unlabelled
+unlevelled
+unparametrized
+unravelled
+unravelling
+unrivalled
+unsyphons
+victualler
+worshipped
+worshipper
+worshipper's
+worshippers
+worshipping
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.1 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.1
new file mode 100644
index 00000000000..615dc5474ed
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.1
@@ -0,0 +1,51 @@
+cancellate
+caviller
+cigaret
+defocussing
+dishevelled
+dowelling
+duellist
+enthral
+enthrals
+gimballed
+glamourous
+glamourously
+glamourousness
+gruelling
+gruellingly
+libeller
+libellous
+pedalled
+pedalling
+programability
+programable
+programed
+programer
+programer's
+programers
+programing
+pummelled
+recrystalize
+recrystalizing
+reprogramed
+reprogramer
+reprogramer's
+reprogramers
+reprograming
+snivelled
+sniveller
+snivelling
+snivellings
+swivelled
+swivelling
+teaselled
+teaselling
+teetotaller
+tinselled
+tinselling
+tyne
+tynes
+untrammelled
+yodelled
+yodeller
+yodelling
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.2 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.2
new file mode 100644
index 00000000000..ba386139468
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/altamer.2
@@ -0,0 +1,90 @@
+asafoetida
+bemedalled
+bimetallist
+bimetallistic
+calliper
+cancellable
+cancellous
+chiselling
+corbelling
+counsellee
+counsellorship
+crenellate
+crenellated
+crenellation
+crystalographical
+crystalographically
+cupellation
+cupeller
+disenthral
+disenthrals
+driveller
+enamellist
+frivolled
+frivoller
+frivolling
+gambolled
+gambolling
+gavelled
+gruelled
+hiccupped
+hiccupping
+hovelled
+judgemental
+kennelled
+kernelled
+labellable
+lapelled
+libellant
+libellee
+marshall
+marshalling
+marshalls
+medallist
+medallists
+metallization
+metallization's
+metallizations
+metallize
+metallized
+metallizes
+metallizing
+microcrystaline
+microcrystalinity
+miocrystaline
+mislabelled
+monometallism
+monometallist
+penciller
+perilled
+photolabelled
+photolabeller
+photolabelling
+precancellation
+prejudgement
+programmist
+programmist's
+programmistic
+programmistics
+programmists
+raveller
+ravelling
+semicrystaline
+snobsnivelling
+subtotalled
+subtotalling
+teazelling
+tendrilled
+trammelled
+trammelling
+trowelled
+trowelling
+unhouselled
+weevilled
+woollen
+woollenization
+woollenization's
+woollenizations
+woollenize
+woollenizes
+woollens
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.0 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.0
new file mode 100644
index 00000000000..935ff42c75e
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.0
@@ -0,0 +1,1835 @@
+acclimatization
+acclimatization's
+acclimatizations
+acclimatized
+accouterment
+accouterment's
+accouterments
+acknowledgment
+acknowledgment's
+acknowledgments
+actualization
+actualization's
+actualizations
+aerosolize
+aerosolized
+agonize
+agonized
+agonizedlies
+agonizedly
+agonizer
+agonizers
+agonizes
+agonizing
+agonizingly
+airfoil
+airfoils
+airplane
+airplane's
+airplanes
+alphabetize
+alphabetized
+alphabetizer
+alphabetizers
+alphabetizes
+alphabetizing
+aluminum
+aluminum's
+aluminums
+amenorrhea
+amortize
+amortized
+amortizes
+amortizing
+amphitheater
+amphitheater's
+amphitheaters
+analog
+analog's
+analogs
+analyzable
+analyze
+analyzed
+analyzer
+analyzers
+analyzes
+analyzing
+anemia
+anemia's
+anemias
+anemic
+anemics
+anesthesia
+anesthesia's
+anesthesias
+anesthetic
+anesthetic's
+anesthetically
+anesthetics
+anesthetize
+anesthetized
+anesthetizer
+anesthetizer's
+anesthetizers
+anesthetizes
+anesthetizing
+anodize
+anodized
+anodizes
+anodizing
+antagonize
+antagonized
+antagonizer
+antagonizers
+antagonizes
+antagonizing
+apologize
+apologized
+apologizer
+apologizers
+apologizes
+apologizing
+appall
+appalls
+appareled
+appetizer
+appetizing
+appetizingly
+arbor
+arbor's
+arbored
+arbors
+archaize
+archaized
+archaizer
+archaizers
+archaizes
+archaizing
+ardor
+ardor's
+ardors
+arithmetize
+arithmetized
+arithmetizes
+armor
+armor's
+armored
+armorer
+armorer's
+armorers
+armoried
+armories
+armoring
+armors
+armory
+armory's
+atomization
+atomization's
+atomizations
+atomize
+atomized
+atomizer
+atomizers
+atomizes
+atomizing
+authorization
+authorization's
+authorizations
+authorize
+authorized
+authorizer
+authorizers
+authorizes
+authorizing
+autodialer
+axiomatization
+axiomatization's
+axiomatizations
+axiomatize
+axiomatized
+axiomatizes
+axiomatizing
+balkanize
+balkanized
+balkanizing
+baptize
+baptized
+baptizer
+baptizers
+baptizes
+baptizing
+barreled
+barreling
+bastardize
+bastardized
+bastardizes
+bastardizing
+bedeviled
+bedeviling
+behavior
+behavior's
+behavioral
+behaviorally
+behaviored
+behaviorism
+behaviorism's
+behaviorisms
+behavioristic
+behavioristics
+behaviors
+behoove
+behoove's
+behooved
+behooves
+behooving
+behooving's
+behoovingly
+behoovings
+belabor
+belabor's
+belabored
+belaboring
+belabors
+beveled
+beveling
+bevelings
+bowdlerize
+bowdlerized
+bowdlerizer
+bowdlerizes
+bowdlerizing
+brutalize
+brutalized
+brutalizes
+brutalizing
+burglarize
+burglarized
+burglarizes
+burglarizing
+busheled
+busheling
+bushelings
+caliber
+calibers
+canaled
+canaling
+canceled
+canceler
+canceling
+candor
+candor's
+candors
+cannibalize
+cannibalized
+cannibalizes
+cannibalizing
+canonicalization
+canonicalize
+canonicalized
+canonicalizes
+canonicalizing
+capitalization
+capitalization's
+capitalizations
+capitalize
+capitalized
+capitalizer
+capitalizers
+capitalizes
+capitalizing
+carbonization
+carbonization's
+carbonizations
+carbonize
+carbonized
+carbonizer
+carbonizers
+carbonizes
+carbonizing
+catalog
+catalog's
+cataloged
+cataloger
+cataloging
+catalogs
+categorization
+categorization's
+categorizations
+categorize
+categorized
+categorizer
+categorizers
+categorizes
+categorizing
+center
+center's
+centered
+centerer
+centerers
+centering
+centerings
+centerpiece
+centerpiece's
+centerpieces
+centers
+centimeter
+centimeter's
+centimeters
+centralization
+centralization's
+centralizations
+centralize
+centralized
+centralizer
+centralizers
+centralizes
+centralizing
+channeled
+channeler
+channeler's
+channelers
+channeling
+characterizable
+characterizable's
+characterizables
+characterization
+characterization's
+characterizations
+characterize
+characterized
+characterizer
+characterizers
+characterizes
+characterizing
+checkbook
+checkbook's
+checkbooks
+chiseled
+chiseler
+chiselers
+civilization
+civilization's
+civilizations
+civilize
+civilized
+civilizedness
+civilizer
+civilizers
+civilizes
+civilizing
+clamor
+clamored
+clamorer
+clamorer's
+clamorers
+clamoring
+clamors
+cognizance
+cognizant
+colonization
+colonization's
+colonizations
+colonize
+colonized
+colonizer
+colonizers
+colonizes
+colonizing
+color
+color's
+colored
+coloreds
+colorer
+colorer's
+colorers
+colorful
+colorfully
+colorfulness
+coloring
+colorings
+colorless
+colorlessly
+colorlessness
+colors
+columnize
+columnized
+columnizes
+columnizing
+compartmentalize
+compartmentalized
+compartmentalizes
+compartmentalizing
+computerize
+computerized
+computerizes
+computerizing
+conceptualization
+conceptualization's
+conceptualizations
+conceptualize
+conceptualized
+conceptualizer
+conceptualizes
+conceptualizing
+counseled
+counseling
+counselor
+counselor's
+counselors
+criticize
+criticized
+criticizer
+criticizers
+criticizes
+criticizing
+criticizinglies
+criticizingly
+crystallize
+crystallized
+crystallizer
+crystallizers
+crystallizes
+crystallizing
+customizable
+customization
+customization's
+customizations
+customize
+customized
+customizer
+customizers
+customizes
+customizing
+decentralization
+decentralization's
+decentralizations
+decentralized
+defense
+defense's
+defensed
+defenseless
+defenselessly
+defenselessness
+defenses
+defensing
+demeanor
+demeanor's
+demeanors
+demoralize
+demoralized
+demoralizer
+demoralizers
+demoralizes
+demoralizing
+demoralizingly
+dialed
+dialer
+dialers
+dialing
+dialings
+dichotomize
+dichotomized
+dichotomizes
+dichotomizing
+digitize
+digitized
+digitizer
+digitizer's
+digitizers
+digitizes
+digitizing
+dishonor
+dishonored
+dishonorer
+dishonorer's
+dishonorers
+dishonoring
+dishonors
+disorganized
+draftsman
+dueled
+dueler
+duelers
+dueling
+duelings
+economize
+economized
+economizer
+economizers
+economizes
+economizing
+editorialize
+editorialized
+editorializer
+editorializes
+editorializing
+enameled
+enameler
+enamelers
+enameling
+enamelings
+endeavor
+endeavor's
+endeavored
+endeavorer
+endeavorer's
+endeavorers
+endeavoring
+endeavors
+enroll
+enrollment
+enrollment's
+enrollments
+enrolls
+epitomize
+epitomized
+epitomizer
+epitomizers
+epitomizes
+epitomizing
+equaled
+equaling
+equalization
+equalization's
+equalizations
+equalize
+equalized
+equalizer
+equalizer's
+equalizers
+equalizes
+equalizing
+equalizings
+esthetic
+esthetic's
+esthetically
+esthetics
+eviler
+evilest
+factorization
+factorization's
+factorizations
+familiarization
+familiarization's
+familiarizations
+familiarize
+familiarized
+familiarizer
+familiarizers
+familiarizes
+familiarizing
+familiarizingly
+fantasize
+fantasized
+fantasizer
+fantasizes
+fantasizing
+favor
+favor's
+favorable
+favorable's
+favorableness
+favorables
+favorably
+favored
+favored's
+favoredly
+favoredness
+favoreds
+favorer
+favorer's
+favorers
+favoring
+favoring's
+favoringly
+favorings
+favorite
+favorite's
+favorites
+favors
+fertilization
+fertilization's
+fertilizations
+fertilize
+fertilized
+fertilizer
+fertilizers
+fertilizes
+fertilizing
+fervor
+fervor's
+fervors
+fiber
+fiber's
+fibered
+fiberglass
+fibers
+finalization
+finalizations
+finalize
+finalized
+finalizes
+finalizing
+flavor
+flavor's
+flavored
+flavorer
+flavorer's
+flavorers
+flavoring
+flavorings
+flavors
+formalization
+formalization's
+formalizations
+formalize
+formalized
+formalizer
+formalizers
+formalizes
+formalizing
+fueled
+fueler
+fuelers
+fueling
+fulfill
+fulfillment
+fulfillment's
+fulfillments
+fulfills
+funneled
+funneling
+generalization
+generalization's
+generalizations
+generalize
+generalized
+generalizer
+generalizers
+generalizes
+generalizing
+glamorize
+glamorized
+glamorizer
+glamorizers
+glamorizes
+glamorizing
+gospeler
+gospelers
+gossiped
+gossiping
+gram
+gram's
+grams
+graveled
+graveling
+groveled
+groveler
+grovelers
+groveling
+grovelingly
+harbor
+harbor's
+harbored
+harborer
+harborer's
+harborers
+harboring
+harbors
+harmonize
+harmonized
+harmonizer
+harmonizers
+harmonizes
+harmonizing
+honor
+honorable
+honorable's
+honorableness
+honorables
+honorablies
+honorably
+honored
+honorer
+honorer's
+honorers
+honoring
+honors
+hospitalize
+hospitalized
+hospitalizes
+hospitalizing
+humor
+humor's
+humored
+humorer
+humorers
+humoring
+humors
+hypothesize
+hypothesized
+hypothesizer
+hypothesizers
+hypothesizes
+hypothesizing
+idealization
+idealization's
+idealizations
+idealize
+idealized
+idealizer
+idealizers
+idealizes
+idealizing
+imperiled
+incognizance
+incognizant
+individualize
+individualized
+individualizer
+individualizers
+individualizes
+individualizing
+individualizingly
+industrialization
+industrialization's
+industrializations
+informalizes
+initialed
+initialer
+initialing
+initialization
+initialization's
+initializations
+initialize
+initialized
+initializer
+initializers
+initializes
+initializing
+institutionalize
+institutionalized
+institutionalizes
+institutionalizing
+internalization
+internalization's
+internalizations
+internalize
+internalized
+internalizes
+internalizing
+italicize
+italicized
+italicizes
+italicizing
+itemization
+itemization's
+itemizations
+itemize
+itemized
+itemizer
+itemizers
+itemizes
+itemizing
+jeopardize
+jeopardized
+jeopardizes
+jeopardizing
+jeweled
+jeweler
+jewelers
+jeweling
+journalize
+journalized
+journalizer
+journalizers
+journalizes
+journalizing
+judgment
+judgment's
+judgments
+kidnaped
+kidnaper
+kidnaper's
+kidnapers
+kidnaping
+kidnaping's
+kidnapings
+kilogram
+kilogram's
+kilograms
+kilometer
+kilometer's
+kilometers
+labeled
+labeler
+labeler's
+labelers
+labeling
+labor
+labored
+labored's
+laboredly
+laboredness
+laborer
+laborer's
+laborers
+laboring
+laboring's
+laboringly
+laborings
+labors
+laureled
+legalization
+legalization's
+legalizations
+legalize
+legalized
+legalizes
+legalizing
+leveled
+leveler
+levelers
+levelest
+leveling
+liberalize
+liberalized
+liberalizer
+liberalizers
+liberalizes
+liberalizing
+license's
+linearizable
+linearize
+linearized
+linearizes
+linearizing
+linearizion
+liter
+liters
+localization
+localization's
+localizations
+localize
+localized
+localizer
+localizers
+localizes
+localizing
+luster
+lustered
+lustering
+lusters
+magnetization
+magnetization's
+magnetizations
+maneuver
+maneuvered
+maneuverer
+maneuvering
+maneuvers
+marveled
+marveling
+marvelous
+marvelously
+marvelousness
+materialize
+materialized
+materializer
+materializers
+materializes
+materializing
+maximize
+maximized
+maximizer
+maximizers
+maximizes
+maximizing
+mechanization
+mechanization's
+mechanizations
+mechanize
+mechanized
+mechanizer
+mechanizers
+mechanizes
+mechanizing
+medaled
+medaling
+memorization
+memorization's
+memorizations
+memorize
+memorized
+memorizer
+memorizers
+memorizes
+memorizing
+metaled
+metaling
+millimeter
+millimeter's
+millimeters
+miniaturization
+miniaturizations
+miniaturize
+miniaturized
+miniaturizes
+miniaturizing
+minimization
+minimization's
+minimizations
+minimize
+minimized
+minimizer
+minimizers
+minimizes
+minimizing
+misjudgment
+misjudgment's
+misjudgments
+miter
+mitered
+miterer
+mitering
+modeled
+modeler
+modelers
+modeling
+modelings
+modernize
+modernized
+modernizer
+modernizers
+modernizes
+modernizing
+modularization
+modularize
+modularized
+modularizes
+modularizing
+motorize
+motorized
+motorizes
+motorizing
+multileveled
+mustache
+mustached
+mustaches
+nationalization
+nationalization's
+nationalizations
+nationalize
+nationalized
+nationalizer
+nationalizers
+nationalizes
+nationalizing
+naturalization
+naturalization's
+naturalizations
+neighbor
+neighbor's
+neighbored
+neighborer
+neighborer's
+neighborers
+neighborhood
+neighborhood's
+neighborhoods
+neighboring
+neighborings
+neighborliness
+neighborly
+neighbors
+neutralize
+neutralized
+neutralizer
+neutralizers
+neutralizes
+neutralizing
+nickeled
+nickeling
+normalization
+normalization's
+normalizations
+normalize
+normalized
+normalizer
+normalizers
+normalizes
+normalizing
+notarize
+notarized
+notarizes
+notarizing
+odor
+odor's
+odored
+odors
+offense
+offense's
+offenses
+optimization
+optimization's
+optimizations
+optimize
+optimized
+optimizer
+optimizer's
+optimizers
+optimizes
+optimizing
+organizable
+organizable's
+organizables
+organization
+organization's
+organizational
+organizational's
+organizationally
+organizationals
+organizations
+organize
+organized
+organizer
+organizers
+organizes
+organizing
+oxidize
+oxidized
+oxidizer
+oxidizers
+oxidizes
+oxidizing
+oxidizings
+pajama
+pajama's
+pajamaed
+pajamas
+paneled
+paneling
+panelings
+paralleled
+paralleling
+parallelization
+parallelization's
+parallelizations
+parallelize
+parallelized
+parallelizer
+parallelizers
+parallelizes
+parallelizing
+paralyze
+paralyzed
+paralyzedlies
+paralyzedly
+paralyzer
+paralyzer's
+paralyzers
+paralyzes
+paralyzing
+paralyzinglies
+paralyzingly
+parameterizable
+parameterization
+parameterization's
+parameterizations
+parameterize
+parameterized
+parameterizes
+parameterizing
+parceled
+parceling
+parenthesized
+parlor
+parlor's
+parlors
+patronize
+patronized
+patronizer
+patronizers
+patronizes
+patronizing
+patronizing's
+patronizingly
+patronizings
+penalize
+penalized
+penalizes
+penalizing
+penciled
+penciling
+pencilings
+personalization
+personalization's
+personalizations
+personalize
+personalized
+personalizes
+personalizing
+petaled
+philosophize
+philosophized
+philosophizer
+philosophizers
+philosophizes
+philosophizing
+plow
+plowed
+plower
+plowing
+plowman
+plows
+pluralization
+pluralization's
+pluralizations
+pluralize
+pluralized
+pluralizer
+pluralizers
+pluralizes
+pluralizing
+polarization
+polarization's
+polarizations
+popularization
+popularization's
+popularizations
+popularize
+popularized
+popularizer
+popularizers
+popularizes
+popularizing
+practiced
+practicer
+practicing
+preinitialize
+preinitialized
+preinitializes
+preinitializing
+pressurize
+pressurized
+pressurizer
+pressurizers
+pressurizes
+pressurizing
+pretense
+pretenses
+pretension
+pretensions
+pretensive
+prioritize
+prioritized
+prioritizer
+prioritizers
+prioritizes
+prioritizing
+prioritizings
+productize
+productized
+productizer
+productizers
+productizes
+productizing
+proselytize
+proselytized
+proselytizer
+proselytizers
+proselytizes
+proselytizing
+publicize
+publicized
+publicizes
+publicizing
+pulverize
+pulverized
+pulverizer
+pulverizers
+pulverizes
+pulverizing
+quantization
+quantization's
+quantizations
+quantize
+quantized
+quantizer
+quantizer's
+quantizers
+quantizes
+quantizing
+quarreled
+quarreler
+quarrelers
+quarreling
+queuing
+randomize
+randomized
+randomizer
+randomizes
+randomizing
+rationalize
+rationalized
+rationalizer
+rationalizers
+rationalizes
+rationalizing
+reacclimatization
+reacclimatization's
+reacclimatizations
+reacknowledgment
+reacknowledgment's
+reacknowledgments
+reactualization
+reactualization's
+reactualizations
+reanalyze
+reanalyzed
+reanalyzer
+reanalyzers
+reanalyzes
+reanalyzing
+reapologizes
+reauthorization
+reauthorization's
+reauthorizations
+reauthorizes
+rebrutalizes
+recapitalization
+recapitalization's
+recapitalizations
+recapitalized
+recapitalizes
+recarbonization
+recarbonization's
+recarbonizations
+recarbonizer
+recarbonizers
+recarbonizes
+recategorized
+recentralization
+recentralization's
+recentralizations
+recentralizes
+recivilization
+recivilization's
+recivilizations
+recivilizes
+recognizability
+recognizable
+recognizably
+recognizance
+recognize
+recognized
+recognizedlies
+recognizedly
+recognizer
+recognizers
+recognizes
+recognizing
+recognizinglies
+recognizingly
+recolonization
+recolonization's
+recolonizations
+recolonizes
+recolored
+recolors
+reconceptualizing
+recriticizes
+recrystallized
+recrystallizes
+redialed
+refavors
+refertilization
+refertilization's
+refertilizations
+refertilizes
+refueled
+refueling
+reharmonizes
+rehonors
+reinitialize
+reinitialized
+reinitializes
+reinitializing
+reitemizes
+relabeled
+relabeler
+relabelers
+relabeling
+remagnetization
+remagnetization's
+remagnetizations
+rematerializes
+rememorizes
+remodeled
+remodeling
+renormalized
+renormalizes
+reorganization
+reorganization's
+reorganizations
+reorganize
+reorganized
+reorganizer
+reorganizers
+reorganizes
+reorganizing
+reoxidizes
+repatronizes
+reprogram
+reprograms
+repulverizes
+resepulchers
+restandardization
+restandardization's
+restandardizations
+restandardizes
+resterilizes
+resymbolization
+resymbolization's
+resymbolizations
+resymbolizes
+resynchronizations
+resynchronized
+resynchronizes
+resynthesizes
+retranquilizes
+reutilization
+reutilizes
+reveled
+reveler
+revelers
+reveling
+revelings
+revisualizes
+revolutionize
+revolutionized
+revolutionizer
+revolutionizers
+revolutionizes
+revolutionizing
+rigor
+rigor's
+rigors
+rivaled
+rivaling
+ruble
+ruble's
+rubles
+rumor
+rumor's
+rumored
+rumorer
+rumorer's
+rumorers
+rumoring
+rumors
+saber
+saber's
+sabered
+sabering
+sabers
+sanitize
+sanitized
+sanitizer
+sanitizes
+sanitizing
+savior
+savior's
+saviors
+savor
+savored
+savorer
+savorer's
+savorers
+savorier
+savories
+savoriest
+savoriness
+savoring
+savoringlies
+savoringly
+savors
+savory
+savory's
+scepter
+scepter's
+sceptered
+sceptering
+scepters
+scrutinize
+scrutinized
+scrutinizer
+scrutinizers
+scrutinizes
+scrutinizing
+scrutinizinglies
+scrutinizingly
+sepulcher
+sepulcher's
+sepulchered
+sepulchers
+sequentialize
+sequentialized
+sequentializes
+sequentializing
+serialization
+serialization's
+serializations
+serialize
+serialized
+serializes
+serializing
+shoveled
+shoveler
+shovelers
+shoveling
+shriveled
+shriveling
+signaled
+signaler
+signalers
+signaling
+siphon
+siphon's
+siphoned
+siphoning
+siphons
+socialize
+socialized
+socializer
+socializes
+socializing
+specialization
+specialization's
+specializations
+specialize
+specialized
+specializer
+specializers
+specializes
+specializing
+specialties
+specialty
+specialty's
+specter
+specter's
+spectered
+specters
+spiraled
+spiraling
+splendor
+splendor's
+splendors
+squirreled
+squirreling
+stabilize
+stabilized
+stabilizer
+stabilizers
+stabilizes
+stabilizing
+standardization
+standardization's
+standardizations
+standardize
+standardized
+standardizer
+standardizers
+standardizes
+standardizing
+stenciled
+stenciler
+stencilers
+stenciling
+sterilization
+sterilization's
+sterilizations
+sterilize
+sterilized
+sterilizer
+sterilizers
+sterilizes
+sterilizing
+stylized
+subsidize
+subsidized
+subsidizer
+subsidizers
+subsidizes
+subsidizing
+succor
+succored
+succorer
+succorer's
+succorers
+succoring
+succors
+summarization
+summarization's
+summarizations
+summarize
+summarized
+summarizer
+summarizers
+summarizes
+summarizing
+symboled
+symboling
+symbolization
+symbolization's
+symbolizations
+symbolize
+symbolized
+symbolizer
+symbolizers
+symbolizes
+symbolizing
+sympathize
+sympathized
+sympathizer
+sympathizers
+sympathizes
+sympathizing
+sympathizing's
+sympathizingly
+sympathizings
+synchronization
+synchronization's
+synchronizations
+synchronize
+synchronized
+synchronizer
+synchronizers
+synchronizes
+synchronizing
+synthesize
+synthesized
+synthesizer
+synthesizers
+synthesizes
+synthesizing
+systematize
+systematized
+systematizer
+systematizers
+systematizes
+systematizing
+tantalize
+tantalized
+tantalizer
+tantalizers
+tantalizes
+tantalizing
+tantalizinglies
+tantalizingly
+tantalizingness
+tantalizingnesses
+terrorize
+terrorized
+terrorizer
+terrorizers
+terrorizes
+terrorizing
+theater
+theater's
+theaters
+theorization
+theorization's
+theorizations
+theorize
+theorized
+theorizer
+theorizers
+theorizes
+theorizing
+tire's
+titer
+titers
+totaled
+totaler
+totaler's
+totalers
+totaling
+toweled
+toweling
+towelings
+tranquilize
+tranquilized
+tranquilizer
+tranquilizer's
+tranquilizers
+tranquilizes
+tranquilizing
+tranquilizing's
+tranquilizingly
+tranquilizings
+transistorize
+transistorized
+transistorizes
+transistorizing
+traveled
+traveler
+traveler's
+travelers
+traveling
+travelings
+trivialize
+trivialized
+trivializes
+trivializing
+troweler
+trowelers
+tumor
+tumor's
+tumored
+tumors
+tunneled
+tunneler
+tunnelers
+tunneling
+tunnelings
+unacclimatized
+unamortized
+unanalyzable
+unanalyzed
+unantagonized
+unantagonizing
+unapologizing
+unappetizing
+unappetizingly
+unarmored
+unauthorized
+unauthorizedly
+unauthorizedness
+unauthorizes
+unbaptized
+unbaptizes
+unbastardized
+unbrutalized
+unbrutalizes
+uncanceled
+uncapitalized
+uncategorized
+uncharacterized
+uncivilized
+uncivilizedly
+uncivilizedness
+uncivilizes
+uncolonized
+uncolonizes
+uncolored
+uncoloredly
+uncoloredness
+uncoloreds
+uncriticized
+uncriticizing
+uncriticizingly
+uncrystallized
+undefenses
+undishonored
+undisorganized
+uneconomizing
+unendeavored
+unepitomized
+unequaled
+unequalized
+unequalizes
+unfamiliarized
+unfavorable
+unfavorable's
+unfavorableness
+unfavorables
+unfavorably
+unfavored
+unfavored's
+unfavorings
+unfavorite
+unfavorite's
+unfavorites
+unfertilized
+unflavored
+unformalized
+ungeneralized
+unharmonized
+unharmonizes
+unhonorables
+unhonorablies
+unhonorably
+unhonored
+unhumored
+unidealized
+unindividualized
+unindividualizes
+uninitialized
+unionization
+unionize
+unionized
+unionizer
+unionizers
+unionizes
+unionizing
+unitalicized
+unitemized
+unjournalized
+unlabeled
+unlabored
+unlabored's
+unlaborings
+unlegalized
+unleveled
+unleveling
+unliberalized
+unlocalized
+unlocalizes
+unmechanized
+unmechanizes
+unmemorized
+unminimized
+unmodernized
+unmodernizes
+unmotorized
+unnationalized
+unneighbored
+unneighborliness
+unneighborly
+unneutralized
+unnormalized
+unnormalizes
+unoptimized
+unoptimizes
+unorganizable
+unorganizable's
+unorganizables
+unorganized
+unorganizedly
+unorganizedness
+unoxidized
+unparalleled
+unparameterized
+unparceled
+unpatronized
+unpatronizing's
+unpenalized
+unphilosophized
+unphilosophizes
+unpopularizes
+unpracticed
+unpulverized
+unpulverizes
+unraveled
+unraveling
+unrecognizable
+unrecognized
+unrecognizing
+unrecognizingly
+unreorganized
+unrivaled
+unrumored
+unsabered
+unsavored
+unsavoredly
+unsavoredness
+unscepters
+unscrutinized
+unscrutinizing
+unscrutinizingly
+unsepulchers
+unsiphons
+unsocialized
+unspecialized
+unspecializing
+unstandardized
+unsterilized
+unsubsidized
+unsuccored
+unsummarized
+unsymbolized
+unsympathized
+unsympathizing
+unsympathizing's
+unsympathizingly
+unsympathizings
+unsynchronized
+unsynthesized
+unsystematized
+unsystematizedly
+unsystematizing
+untantalized
+unterrorized
+untranquilized
+unverbalized
+unvictimized
+unvisualized
+unwomanized
+unwomanizes
+utilization
+utilize
+utilized
+utilizer
+utilizers
+utilizes
+utilizing
+valor
+valor's
+valors
+vandalize
+vandalized
+vandalizes
+vandalizing
+vapor
+vapor's
+vapored
+vaporer
+vaporer's
+vaporers
+vaporing
+vaporing's
+vaporingly
+vaporings
+vapors
+vectorization
+vectorizing
+verbalize
+verbalized
+verbalizer
+verbalizers
+verbalizes
+verbalizing
+victimize
+victimized
+victimizer
+victimizers
+victimizes
+victimizing
+victualer
+victualers
+vigor
+vigor's
+vigors
+visualize
+visualized
+visualizer
+visualizers
+visualizes
+visualizing
+wagoner
+wagoner's
+wagoners
+weaseled
+weaseling
+womanize
+womanized
+womanizer
+womanizers
+womanizes
+womanizing
+worshiped
+worshiper
+worshiper's
+worshipers
+worshiping
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.1 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.1
new file mode 100644
index 00000000000..eb0e6c806ee
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.1
@@ -0,0 +1,741 @@
+Christianizing
+Europeanization
+Europeanization's
+Europeanizations
+Europeanized
+Sanskritize
+acclimatize
+acclimatizer
+acclimatizers
+acclimatizes
+acclimatizing
+actualize
+actualized
+actualizes
+actualizing
+aggrandizement
+aggrandizement's
+aggrandizements
+americanized
+amortization
+amortization's
+amortizations
+animized
+annualized
+asshole
+asshole's
+assholes
+balkanization
+biosynthesized
+bucketfuls
+bureaucratization
+bureaucratization's
+bureaucratizations
+caliper
+calipers
+cancelate
+cancelated
+canonized
+cauterize
+cauterized
+cauterizes
+cauterizing
+caviler
+cavilers
+centerline
+centerlines
+civilizational
+civilizational's
+civilizationals
+cognizable
+colorimeter
+colorimeter's
+colorimeters
+colorimetry
+commercialization
+commercialization's
+commercializations
+communize
+communized
+communizes
+communizing
+computerization
+conventionalized
+crystallization
+crystallization's
+crystallizations
+decentralizing
+deemphasize
+deemphasized
+deemphasizer
+deemphasizers
+deemphasizes
+deemphasizing
+deglycerolized
+dehumanize
+dehumanized
+dehumanizes
+dehumanizing
+demineralization
+demineralization's
+demineralizations
+democratization
+democratization's
+democratizations
+democratize
+democratized
+democratizer
+democratizes
+democratizing
+demoralization
+demoralization's
+demoralizations
+demythologization
+demythologize
+demythologized
+demythologizer
+demythologizes
+demythologizing
+depersonalization
+depersonalization's
+depersonalizations
+depersonalized
+deputized
+destabilize
+destabilized
+destabilizes
+destabilizing
+destigmatization
+desynchronize
+desynchronized
+desynchronizes
+desynchronizing
+detribalize
+detribalized
+detribalizes
+detribalizing
+diagonalizable
+dialyzed
+diarrhea
+diarrhea's
+diarrheal
+diarrheas
+dichotomization
+digitalization
+digitalization's
+digitalizations
+digitization
+diopter
+discolored
+discolored's
+discoloredness
+discoloreds
+discolors
+disfavor
+disfavored
+disfavorer
+disfavorer's
+disfavorers
+disfavoring
+disfavors
+disheveled
+disorganization
+disorganization's
+disorganizations
+doweling
+downdraft
+draftier
+draftiness
+draftsperson
+drafty
+dramatization
+dramatization's
+dramatizations
+dramatize
+dramatized
+dramatizer
+dramatizers
+dramatizes
+dramatizing
+duelist
+duelists
+dynamized
+edema
+edema's
+edemas
+edematous
+emphasize
+emphasized
+emphasizer
+emphasizers
+emphasizes
+emphasizing
+energized
+energizes
+enthrall
+enthralls
+epicenter
+epicenter's
+epicenters
+esthete
+esthetes
+eulogize
+eulogized
+eulogizer
+eulogizers
+eulogizes
+eulogizing
+exorcize
+exorcized
+exorcizes
+exorcizing
+extemporize
+extemporized
+extemporizer
+extemporizers
+extemporizes
+extemporizing
+externalization
+externalization's
+externalizations
+favoritism
+favoritism's
+favoritisms
+federalize
+federalized
+federalizes
+federalizing
+fetid
+fetidly
+fetidness
+fetus
+fetus's
+fetuses
+fiberboard
+fossilized
+fraternize
+fraternized
+fraternizer
+fraternizers
+fraternizes
+fraternizing
+galvanizing
+generalizable
+generalizable's
+generalizables
+germanized
+gimbaled
+glottalization
+glycerolized
+grueling
+gruelingly
+gynecological
+gynecological's
+gynecologicals
+gynecologist
+gynecologist's
+gynecologists
+harmonization
+harmonization's
+harmonizations
+homeomorph
+homeopath
+homogenization
+homogenization's
+homogenizations
+homogenize
+homogenized
+homogenizer
+homogenizers
+homogenizes
+homogenizing
+honoree
+hospitalization
+hospitalization's
+hospitalizations
+humanize
+humanized
+humanizer
+humanizers
+humanizes
+humanizing
+hydrolyzed
+hypnotized
+hypophysectomized
+idolize
+idolized
+idolizer
+idolizers
+idolizes
+idolizing
+immobilize
+immobilized
+immobilizer
+immobilizes
+immobilizing
+immortalized
+immunization
+immunization's
+immunizations
+impersonalized
+industrialized
+industrializing
+inhumanizes
+institutionalization
+institutionalization's
+institutionalizations
+internationalization
+internationalization's
+internationalizations
+internationalized
+ionize
+ionized
+ionizer
+ionizers
+ionizes
+ionizing
+ionizings
+ionizion
+ionizions
+kinesthesis
+kinesthetic
+kinesthetically
+kinesthetics
+legitimize
+legitimized
+legitimizer
+legitimizes
+legitimizing
+libeler
+libelers
+libelous
+libelously
+liberalization
+liberalization's
+liberalizations
+licensable
+lionize
+lionized
+lionizer
+lionizers
+lionizes
+lionizing
+magnetized
+maneuverability
+maneuverable
+marbleized
+marbleizing
+maximization
+maximization's
+maximizations
+memorialized
+mesmerized
+metabolized
+metalization
+metalization's
+metalizations
+metropolitanization
+milligram
+milligram's
+milligrams
+milliliter
+milliliter's
+milliliters
+mineralized
+misbehavior
+misbehavior's
+misbehaviors
+misdemeanor
+misdemeanor's
+misdemeanors
+mobilization
+mobilization's
+mobilizations
+mobilize
+mobilized
+mobilizer
+mobilizes
+mobilizing
+modernization
+modernization's
+modernizations
+monetization
+monetize
+monetized
+monetizes
+monetizing
+monopolization
+monopolization's
+monopolizations
+monopolize
+monopolized
+monopolizer
+monopolizers
+monopolizes
+monopolizing
+multicolor
+multicolor's
+multicolored
+multicolors
+narcotizes
+nasalization
+nasalization's
+nasalizations
+nasalized
+naturalized
+neutralization
+neutralization's
+neutralizations
+nominalized
+novelized
+ocher
+ocher's
+ochers
+operationalization
+operationalizations
+operationalize
+operationalized
+orthogonalization
+orthogonalized
+orthopedic
+orthopedics
+ostracized
+outmaneuver
+outmaneuvered
+outmaneuvering
+outmaneuvers
+overemphasize
+overemphasized
+overemphasizer
+overemphasizers
+overemphasizes
+overemphasizing
+palatalization
+palatalize
+palatalized
+palatalizes
+palatalizing
+palletized
+panelization
+panelized
+parenthesize
+parenthesizes
+parenthesizing
+pasteurization
+pasteurizations
+pedaled
+pedaling
+peptizing
+platinize
+platinized
+platinizes
+platinizing
+plowshare
+plowshare's
+plowshares
+polarize
+polarized
+polarizer
+polarizers
+polarizes
+polarizing
+politicized
+polymerizations
+proletarianization
+proletarianized
+pronominalization
+pronominalize
+pummeled
+pyorrhea
+pyorrhea's
+pyorrheas
+pyrolyze
+pyrolyze's
+pyrolyzer
+pyrolyzes
+radiopasteurization
+radiosterilization
+radiosterilized
+rancor
+rancor's
+rancors
+randomization
+randomization's
+randomizations
+rationalization
+rationalization's
+rationalizations
+reacclimatizes
+reactualizes
+realizabilities
+realizability
+realizability's
+reconceptualization
+recrystallization
+recrystallization's
+recrystallizations
+recrystallize
+recrystallizing
+reemphasize
+reemphasized
+reemphasizer
+reemphasizers
+reemphasizes
+reemphasizing
+regularizing
+reharmonization
+rehumanizes
+remobilization
+remobilization's
+remobilizations
+remobilizes
+remonetization
+remonetize
+remonetized
+remonetizes
+remonetizing
+repopularize
+revaporization
+revaporization's
+revaporizations
+revisualization
+revisualization's
+revisualizations
+revitalization
+revitalize
+revitalized
+revitalizer
+revitalizers
+revitalizes
+revitalizing
+ritualized
+romanticize
+romanticizes
+romanticizing
+rubberized
+satirizes
+scandalized
+scandalizing
+sectionalized
+secularization
+secularization's
+secularizations
+secularized
+sensitized
+sentimentalize
+sentimentalized
+sentimentalizer
+sentimentalizers
+sentimentalizes
+sentimentalizing
+sexualized
+signalizes
+sniveled
+sniveler
+snivelers
+sniveling
+snivelings
+socialization
+socialization's
+socializations
+stabilization
+stabilization's
+stabilizations
+stigmatization
+stigmatization's
+stigmatizations
+stigmatized
+stylization
+stylization's
+stylizations
+subcategorizing
+subsidization
+subsidization's
+subsidizations
+substerilization
+suburbanization
+suburbanization's
+suburbanizations
+suburbanized
+suburbanizing
+swiveled
+swiveling
+systematization
+systematization's
+systematizations
+systemization
+systemization's
+systemizations
+teaseled
+teaseling
+teetotaler
+temporize
+temporized
+temporizer
+temporizer's
+temporizers
+temporizes
+temporizing
+temporizing's
+temporizingly
+temporizings
+theatergoer
+theatergoer's
+theatergoers
+theatergoing
+theatergoing's
+theatergoings
+thru
+tine's
+tinseled
+tinseling
+traditionalized
+travelog
+travelog's
+travelogs
+trialization
+triangularization
+triangularizations
+tricolor
+tricolor's
+tricolored
+tricolors
+tyrannize
+tyrannized
+tyrannizer
+tyrannizers
+tyrannizes
+tyrannizing
+tyrannizing's
+tyrannizingly
+tyrannizings
+unamortization
+unamortization's
+unamortizations
+uncanonized
+uncauterized
+uncauterized's
+uncauterizeds
+undemocratizes
+underutilization
+underutilized
+undialyzed
+undialyzed's
+undialyzeds
+undiscoloreds
+undramatized
+undramatized's
+undramatizeds
+unenergized
+unenergized's
+unenergizeds
+uneulogized
+uneulogized's
+uneulogizeds
+unfossilized
+unfossilized's
+unfossilizeds
+unfraternizing
+unfraternizing's
+unfraternizings
+unhydrolyzed
+unhydrolyzed's
+unhydrolyzeds
+unidolized
+unidolized's
+unidolizeds
+unimmortalized
+unindustrialized
+unindustrialized's
+unindustrializeds
+unitized
+universalize
+universalized
+universalizer
+universalizers
+universalizes
+universalizing
+unmagnetized
+unmagnetized's
+unmagnetizeds
+unmemorialized
+unmemorialized's
+unmemorializeds
+unmesmerized
+unmineralized
+unmineralized's
+unmineralizeds
+unmobilized
+unmobilized's
+unmobilizeds
+unmonopolized
+unmonopolizes
+unnaturalized
+unpatronizing
+unpolarized
+unpolarized's
+unpolarizeds
+unsatirizes
+unsavories
+unsavoriness
+unsavory
+unsavory's
+unscandalized
+unsecularized
+unsensitized
+unsentimentalizes
+unstigmatized
+unstigmatized's
+unstigmatizeds
+untemporizings
+untrammeled
+unvocalized
+unvocalized's
+unvocalizeds
+unvulcanized
+unvulcanized's
+unvulcanizeds
+updraft
+urbanization
+urbanization's
+urbanizations
+urbanized
+vacuolization
+vacuolization's
+vacuolizations
+vaporization
+vaporization's
+vaporizations
+varicolored
+varicolored's
+varicoloreds
+velarize
+velarized
+velarizes
+velarizing
+visualization
+visualization's
+visualizations
+vocalization
+vocalization's
+vocalizations
+vocalize
+vocalized
+vocalizer
+vocalizers
+vocalizes
+vocalizing
+volatilization
+volatilization's
+volatilizations
+vulcanized
+watercolor
+watercolor's
+watercolored
+watercoloring
+watercolorist
+watercolorists
+watercolors
+yodeled
+yodeler
+yodeling
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.2 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.2
new file mode 100644
index 00000000000..133e19e3675
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/american.2
@@ -0,0 +1,6767 @@
+Africanization
+Africanization's
+Africanizations
+Africanize
+Africanized
+Africanizes
+Africanizing
+Afrikanerization
+Afrikanerize
+Afrikanerized
+Afrikanerizes
+Afrikanerizing
+Americanization
+Americanization's
+Americanizations
+Americanize
+Americanizer
+Americanizers
+Americanizes
+Americanizing
+Anglicanize
+Anglicanizes
+Arabianize
+Arabianizes
+Arabicize
+Arabicizes
+Aryanization
+Aryanize
+Aryanized
+Aryanizes
+Aryanizing
+Asiaticization
+Asiaticization's
+Asiaticizations
+Asiaticize
+Asiaticizes
+Assyrianize
+Assyrianizes
+Australianize
+Australianizes
+Austrianize
+Austrianizes
+Babelize
+Babelizes
+Babylonize
+Babylonizes
+Balkanization
+Balkanization's
+Balkanizations
+Balkanize
+Balkanizes
+Berlinize
+Berlinizes
+Bessemerize
+Bessemerizes
+Birminghamize
+Birminghamizes
+Boswellize
+Boswellizes
+Byronize
+Byronizes
+Byzantinize
+Byzantinizes
+Caesarize
+Caesarizes
+Calvinize
+Calvinizes
+Canadianization
+Canadianization's
+Canadianizations
+Canadianize
+Canadianizes
+Caponization
+Catholicization
+Catholicized
+Catholicizing
+Celticize
+Celticizes
+Chablises
+Christianization
+Christianization's
+Christianizations
+Christianize
+Christianizer
+Christianizers
+Christianizes
+Ciceronianize
+Ciceronianizes
+Continentalize
+Continentalizes
+Corinthianize
+Corinthianizes
+Creolization
+Creolize
+Creolized
+Creolizes
+Creolizing
+Cubanize
+Cubanizes
+Czechization
+Czechization's
+Czechizations
+Danization
+Danization's
+Danizations
+Danize
+Danizes
+Darwinize
+Darwinizes
+Doricize
+Doricizes
+Edenization
+Edenization's
+Edenizations
+Edenize
+Edenizes
+Egyptianization
+Egyptianization's
+Egyptianizations
+Egyptianize
+Egyptianizes
+Egyptize
+Egyptizes
+Elizabethanize
+Elizabethanizes
+Englishize
+Englishizes
+Epicurize
+Epicurizes
+Episcopalianize
+Episcopalianizes
+Eskimoized
+Eskimoized's
+Eskimoizeds
+Essenize
+Essenizes
+Etna
+Europeanize
+Europeanizes
+Europeanizing
+Fletcherize
+Fletcherizes
+Francize
+Francizes
+Franklinization
+Franklinization's
+Franklinizations
+Frenchize
+Frenchizes
+Gaelicization
+Gaelicization's
+Gaelicizations
+Gaelicize
+Gaelicizes
+Gallicization
+Gallicize
+Gallicized
+Gallicizes
+Gallicizing
+Gothicize
+Gothicized
+Gothicizer
+Gothicizers
+Gothicizes
+Gothicizing
+Grecianize
+Grecianizes
+Greekize
+Greekizes
+Hanoverianize
+Hanoverianizes
+Hanoverize
+Hanoverizes
+Harvardize
+Harvardizes
+Harveyize
+Harveyizes
+Hattize
+Hattizes
+Hebraicize
+Hebraicizes
+Hegelianize
+Hegelianizes
+Hellenization
+Hellenizations
+Hellenize
+Hellenized
+Hellenizes
+Hellenizing
+Hispanicization
+Hispanicize
+Hispanicized
+Hispanicizes
+Hispanicizing
+Hollywoodize
+Hollywoodizes
+Hoosierize
+Hoosierizes
+Hooverize
+Hooverizes
+Iliadize
+Iliadizes
+Illuminize
+Illuminizes
+Ionicization
+Ionicization's
+Ionicizations
+Ionicize
+Ionicizes
+Iranize
+Iranizes
+Irishize
+Irishizes
+Islamization
+Islamization's
+Islamizations
+Islamize
+Islamized
+Islamizes
+Islamizing
+Israelitize
+Israelitizes
+Italianism
+Italianization
+Italianization's
+Italianizations
+Italianize
+Italianized
+Italianizer
+Italianizers
+Italianizes
+Italianizing
+Jacobinize
+Japanization
+Japanization's
+Japanizations
+Japanize
+Japanized
+Japanizes
+Japanizing
+Jesuitize
+Jesuitized
+Jesuitizes
+Jesuitizing
+Jonathanization
+Jonathanization's
+Jonathanizations
+Latinization
+Latinization's
+Latinizations
+Latinize
+Latinized
+Latinizer
+Latinizers
+Latinizes
+Latinizing
+Lilliputianize
+Lilliputianizes
+Listerize
+Listerizes
+Londonization
+Londonization's
+Londonizations
+Londonize
+Londonizes
+Lutheranize
+Lutheranizer
+Lutheranizers
+Lutheranizes
+Malayize
+Malayizes
+Manhattanize
+Manhattanizes
+Mediterraneanization
+Mediterraneanization's
+Mediterraneanizations
+Mediterraneanize
+Mediterraneanizes
+Melampus
+Mendelize
+Mendelizes
+Mexicanize
+Mexicanizes
+Midlandize
+Midlandizes
+Miltonize
+Miltonized
+Miltonizes
+Miltonizing
+Mohammedanization
+Mohammedanization's
+Mohammedanizations
+Mohammedanize
+Mohammedanized
+Mohammedanizes
+Mohammedanizing
+Molochize
+Molochizes
+Moravianized
+Moravianized's
+Moravianizeds
+Moslemize
+Moslemizes
+Napoleonize
+Napoleonizes
+Negroization
+Negroization's
+Negroizations
+Negroize
+Negroizes
+Newmanize
+Newmanizes
+Nipponize
+Nipponizes
+Normanization
+Normanization's
+Normanizations
+Normanize
+Normanized
+Normanizer
+Normanizers
+Normanizes
+Normanizing
+Occidentalization
+Occidentalization's
+Occidentalizations
+Occidentalize
+Occidentalized
+Occidentalizes
+Occidentalizing
+Olympianize
+Olympianizes
+Ottomanization
+Ottomanization's
+Ottomanizations
+Ottomanize
+Ottomanizes
+Parisianization
+Parisianization's
+Parisianizations
+Parisianize
+Parisianizes
+Pasteurizers
+Paulinize
+Paulinizes
+Paynize
+Paynizes
+Persianization
+Persianization's
+Persianizations
+Persianize
+Persianizes
+Peruvianize
+Peruvianizes
+Philistinize
+Philistinizes
+Presbyterianize
+Presbyterianizes
+Procrusteanize
+Procrusteanizes
+Protestantize
+Protestantizes
+Prussianization
+Prussianization's
+Prussianizations
+Prussianize
+Prussianized
+Prussianizer
+Prussianizers
+Prussianizes
+Prussianizing
+Pullmanize
+Pullmanizes
+Puritanize
+Puritanizer
+Puritanizers
+Puritanizes
+Pythagoreanize
+Pythagoreanizes
+Quakerization
+Quakerization's
+Quakerizations
+Quakerize
+Quakerizes
+Romania
+Romanization
+Romanization's
+Romanizations
+Romanize
+Romanized
+Romanizer
+Romanizers
+Romanizes
+Romanizing
+Russianization's
+Russianizations
+Russianized
+Russianizes
+Russianizing
+Sabbathize
+Sabbathizes
+Saxonization
+Saxonization's
+Saxonizations
+Saxonize
+Saxonizes
+Semiticize
+Semiticizes
+Semitization
+Semitization's
+Semitizations
+Semitize
+Semitizes
+Shakespearize
+Shakespearizes
+Shintoize
+Shintoizes
+Slavicize
+Slavicizes
+Slavization
+Slavization's
+Slavizations
+Slavize
+Slavizes
+Slavonicize
+Slavonicizes
+Sovietized
+Sovietizing
+Spaniardization
+Spaniardization's
+Spaniardizations
+Spaniardize
+Spaniardizes
+Spanishize
+Spanishizes
+Spartanize
+Spartanizes
+Syrianize
+Syrianizes
+Talmudization
+Talmudization's
+Talmudizations
+Talmudize
+Talmudizes
+Tammanyize
+Tammanyizes
+Taylorize
+Taylorizes
+Timonize
+Timonizes
+Toryize
+Toryizes
+Turkize
+Turkizes
+Tuscanize
+Tuscanizes
+Tylerize
+Tylerizes
+Unitarianize
+Unitarianizes
+Utopianize
+Utopianizes
+Vaticanization
+Vaticanization's
+Vaticanizations
+Vaticanize
+Vaticanizes
+Victorianize
+Victorianizes
+Vietnamization
+Vietnamize
+Vietnamized
+Vietnamizes
+Vietnamizing
+Wagnerize
+Wagnerizes
+Whitmanize
+Whitmanizes
+abnormalize
+abnormalizes
+abolitionize
+abolitionizes
+absolutization
+absolutization's
+absolutizations
+absolutize
+absolutizes
+accessorize
+acclimatizable
+acclimatizable's
+acclimatizables
+accouter
+accoutered
+accoutering
+accouters
+acculturize
+acetonization
+acetonization's
+acetonizations
+acetonize
+acetonizes
+achromatization
+achromatize
+achromatized
+achromatizes
+achromatizing
+acidize
+acidizes
+acronymize
+acronymizes
+actionize
+actionizes
+activize
+activizes
+adrenalize
+adrenalizes
+adulterize
+adulterizes
+adverbialize
+adverbializes
+aerosolization
+aestheticize
+aestheticizes
+agatize
+agatizes
+agenize
+aggrandizable
+aggrandizable's
+aggrandizables
+aggrandization
+aggrandize
+aggrandized
+aggrandizer
+aggrandizers
+aggrandizes
+aggrandizing
+agnize
+agnized
+agnizes
+agnizing
+agrarianize
+agrarianizes
+albumenization
+albumenize
+albumenized
+albumenizes
+albumenizing
+albuminization
+albuminization's
+albuminizations
+albuminize
+albuminizes
+alchemize
+alcoholizable
+alcoholizable's
+alcoholizables
+alcoholization
+alcoholization's
+alcoholizations
+alcoholize
+alcoholizes
+algebraization
+algebraization's
+algebraizations
+algebraize
+algebraizes
+alienize
+alienizes
+alkalinization
+alkalinization's
+alkalinizations
+alkalinize
+alkalinizes
+alkalization
+alkalize
+alkalized
+alkalizes
+alkalizing
+allegorization
+allegorize
+allegorized
+allegorizer
+allegorizes
+allegorizing
+alphabetization
+alphabetization's
+alphabetizations
+alternize
+alternizes
+aluminization
+aluminize
+aluminized
+aluminizes
+aluminizing
+amalgamatize
+amalgamatizes
+amalgamization
+amalgamization's
+amalgamizations
+amalgamize
+amalgamizes
+amor
+amor's
+amoralize
+amoralizes
+amorism
+amorism's
+amorisms
+amoristic
+amoristics
+amorphization
+amorphize
+amors
+amortizable
+amortizable's
+amortizables
+amortizement
+amortizement's
+amortizements
+anagrammatization
+anagrammatize
+analogism
+analogism's
+analogisms
+analogize
+analogizes
+analyzation
+anarchize
+anarchizes
+anathematization
+anathematize
+anathematized
+anathematizes
+anathematizing
+anatomize
+anemically
+anesthesiologist
+anesthesiology
+anesthetist
+anesthetization
+anesthetization's
+anesthetizations
+angelicize
+angelicizes
+angelize
+angelizes
+anglicization
+anglicization's
+anglicizations
+anglicize
+anglicized
+anglicizes
+angularization
+angularization's
+angularizations
+angularize
+angularizes
+anhydridization
+anhydridization's
+anhydridizations
+anhydridize
+anhydridizes
+animalization
+animalization's
+animalizations
+animalize
+animalized
+animalizes
+animalizing
+annalize
+annalizes
+annualization
+annualize
+annualizes
+annualizing
+anodization
+antagonization
+antagonization's
+antagonizations
+anthologization
+anthologize
+anthologized
+anthologizer
+anthologizes
+anthologizing
+anthracitization
+anthracitization's
+anthracitizations
+anthropomorphization
+anthropomorphize
+anthropomorphized
+anthropomorphizes
+anthropomorphizing
+anticatalyzer
+anticatalyzer's
+anticatalyzers
+anticentralization
+anticentralization's
+anticentralizations
+anticize
+anticizes
+antiepicenter
+antiepicenter's
+antiepicenters
+antifertilizer
+antifertilizer's
+antifertilizers
+antilabor
+antilabor's
+antilabors
+antioxidizer
+antioxidizer's
+antioxidizers
+antioxidizing
+antioxidizing's
+antioxidizings
+antipathize
+antipathizes
+antiquarianize
+antiquarianizes
+antirumor
+antirumor's
+antirumors
+antisensitize
+antisensitizer
+antisensitizer's
+antisensitizers
+antisensitizes
+antisepticize
+antisepticizes
+antiseptize
+antiseptizes
+antisiphon
+antisiphon's
+antisiphons
+antithesize
+antithesizes
+anviled
+anviling
+aphorize
+aphorized
+aphorizer
+aphorizers
+aphorizes
+aphorizing
+apostatization
+apostatize
+apostatized
+apostatizes
+apostatizing
+apostrophize
+apostrophized
+apostrophizes
+apostrophizing
+apotheosize
+appareling
+appetize
+appetized
+appetizement
+appetizement's
+appetizements
+appetizers
+appetizes
+arabization
+arabize
+arabized
+arabizes
+arabizing
+arbores
+arborization
+arborize
+arborized
+arborizes
+arborizing
+arcticize
+arcticizes
+arithmetization
+arithmetization's
+arithmetizations
+aromatization
+aromatize
+aromatized
+aromatizes
+aromatizing
+arsenicize
+arsenicizes
+arterialization
+arterialization's
+arterializations
+arterialize
+arterialized
+arterializes
+arterializing
+artificialize
+artificializes
+asafetida
+asepticize
+asepticizes
+astigmatizer
+astigmatizer's
+astigmatizers
+asynchronize
+asynchronized
+asynchronizes
+asynchronizing
+atomizability
+atomizable
+atticize
+atticizes
+attitudinization
+attitudinize
+attitudinized
+attitudinizes
+attitudinizing
+autoimmunization
+autoionization
+automatization
+automatization's
+automatizations
+automatize
+automatizes
+autotomize
+avianize
+azotization
+azotize
+azotized
+azotizes
+azotizing
+bachelorize
+bachelorizes
+baconize
+baconizes
+bacterize
+balladize
+balladizes
+balsamize
+balsamizes
+bantamize
+bantamizes
+baptizable
+baptizable's
+baptizables
+baptizement
+baptizement's
+baptizements
+barbarianize
+barbarianizes
+barbarization
+barbarize
+barbarized
+barbarizes
+barbarizing
+baronize
+baronizes
+bastardization
+bastardization's
+bastardizations
+beaverize
+beaverizes
+beclamor
+beclamored
+beclamoring
+beclamors
+becudgeled
+becudgeling
+bedlamize
+bedlamizes
+bedriveled
+bedriveling
+bejeweled
+bejeweling
+bemedaled
+bestialize
+bestialized
+bestializes
+bestializing
+beveler
+bevelers
+bichromatize
+bichromatizes
+bicolor
+bicolored
+bimetalist
+bimetalistic
+biographize
+biographizes
+biologize
+biologizes
+bipolarization
+bipolarize
+bipolarizes
+bister
+bistered
+bituminization
+bituminize
+bituminized
+bituminizes
+bituminizing
+bolshevize
+bonderize
+borize
+borizes
+botanize
+botanized
+botanizes
+botanizing
+boulevardize
+boulevardizes
+bourbonize
+bourbonizes
+bowdlerization
+boweled
+boweling
+brominize
+brominizes
+brutalization
+brutalization's
+brutalizations
+bureaucratize
+bureaucratized
+bureaucratizes
+busheler
+bushelers
+cadaverize
+cadaverizes
+cadmiumize
+cadmiumizes
+canaler
+canalers
+canalization
+canalization's
+canalizations
+canalize
+canalized
+canalizes
+canalizing
+cancelable
+cancelous
+cannibalization
+cannibalization's
+cannibalizations
+canonization
+canonization's
+canonizations
+canonize
+canonizer
+canonizers
+canonizes
+canonizing
+capitalizable
+capitalizable's
+capitalizables
+caponize
+caponized
+caponizes
+caponizing
+capsulization
+capsulize
+capsulized
+capsulizes
+capsulizing
+caracoled
+caracoling
+caramelization
+caramelization's
+caramelizations
+caramelize
+caramelized
+caramelizes
+caramelizing
+carbolization
+carbolize
+carbolized
+carbolizes
+carbolizing
+carbonatization
+carbonatization's
+carbonatizations
+carbonizable
+carbonizable's
+carbonizables
+carburization
+carburize
+carburized
+carburizes
+carburizing
+carnalize
+carnalizes
+caroled
+caroler
+carolers
+caroling
+cartelization
+cartelization's
+cartelizations
+cartelize
+cartelizes
+castorized
+castorized's
+castorizeds
+catabolize
+cataloguize
+cataloguizes
+catalyze
+catalyzer
+catalyzer's
+catalyzers
+catalyzes
+catechizable
+catechizable's
+catechizables
+catechization
+catechization's
+catechizations
+catechize
+catechized
+catechizer
+catechizers
+catechizes
+catechizing
+catheterization
+catheterization's
+catheterizations
+catheterize
+catheterizes
+catheti
+catheti's
+cathetis
+catholicize
+catholicizer
+catholicizers
+catholicizes
+causticization
+causticization's
+causticizations
+causticize
+causticizer
+causticizers
+causticizes
+cauterization
+cauterization's
+cauterizations
+cavilation
+caviled
+caviling
+cavilings
+celestialize
+celestializes
+centerable
+centerable's
+centerables
+centerboard
+centerless
+centigram
+centigram's
+centigrams
+centiliter
+centrifugalization
+centrifugalization's
+centrifugalizations
+centrifugalize
+centrifugalizes
+cephalization
+cerebralization
+cerebralization's
+cerebralizations
+cerebralize
+cerebralizes
+ceremonialize
+ceremonializes
+chameleonize
+chameleonizes
+championize
+championizes
+channelization
+channelization's
+channelizations
+channelize
+channelizes
+chattelization
+chattelization's
+chattelizations
+chattelize
+chattelizes
+cheerfulize
+cheerfulizes
+chemicalization
+chemicalization's
+chemicalizations
+chemicalize
+chemicalizes
+chiseling
+chiselings
+chloridize
+chloridizes
+chlorinize
+chlorinizes
+chloroformization
+chloroformization's
+chloroformizations
+chloroformize
+chloroformizes
+chorization
+chorization's
+chorizations
+chromatize
+chromatizes
+chromicize
+chromicizes
+chromize
+chromized
+chromizes
+chromizing
+chronologize
+chronologizes
+cinchonize
+cinematize
+circularization
+circularization's
+circularizations
+circularize
+circularized
+circularizer
+circularizers
+circularizes
+circularizing
+citizenize
+citizenizes
+civilianization
+civilianizations
+civilianize
+civilianized
+civilianizes
+civilianizing
+civilizable
+civilizable's
+civilizables
+clangor
+clangor's
+clangored
+clangoring
+clangors
+classicalize
+classicalizes
+classicization
+classicize
+classicized
+classicizes
+classicizing
+clericalize
+clericalizes
+climatize
+climatizes
+coalize
+coalizer
+coalizers
+coalizes
+cocainization
+cocainization's
+cocainizations
+cocainize
+cocainizes
+coeducationalize
+coeducationalizes
+coenamor
+coenamored
+coenamoring
+coenamors
+coequalize
+coequalizes
+cognizably
+cognize
+cognized
+cognizer
+cognizers
+cognizes
+cognizing
+collateralize
+collectivization
+collectivization's
+collectivizations
+collectivize
+collectivized
+collectivizes
+colloquialize
+colloquializes
+colonialize
+colonializes
+colonizabilities
+colonizability
+colonizability's
+colonizable
+colonizable's
+colonizables
+colonizationist
+colonizationist's
+colonizationists
+colorabilities
+colorability
+colorability's
+colorable
+colorable's
+colorableness
+colorables
+colorablies
+colorably
+colorama
+colorant
+colorants
+colorcast
+colorcaster
+colorcasters
+colorfast
+colorfastness
+colorific
+colorimetric
+colorimetrically
+colorism
+colorisms
+colorist
+colorist's
+coloristic
+coloristically
+coloristics
+colorists
+colorization
+colorization's
+colorizations
+colorize
+colorizes
+colorman
+colormap
+colormap's
+colormaps
+colormen
+columnization
+columnization's
+columnizations
+commercialize
+commercialized
+commercializes
+commercializing
+commonize
+commonizes
+communalization
+communalization's
+communalizations
+communalize
+communalized
+communalizer
+communalizers
+communalizes
+communalizing
+communization
+communization's
+communizations
+companionize
+companionizes
+compartmentalization
+compartmentalization's
+compartmentalizations
+compartmentize
+compartmentizes
+complementizer
+computerizable
+concenter
+concertize
+concertizer
+concertizers
+concertizes
+concretization
+concretizations
+concretize
+concretized
+concretizes
+concretizing
+conditionalize
+conditionalizes
+confederatize
+confederatizes
+congenialize
+congenializes
+congregationalize
+congregationalizes
+conservatize
+conservatized
+conservatizes
+conservatizing
+consonantize
+consonantizes
+constitutionalization
+constitutionalization's
+constitutionalizations
+constitutionalize
+constitutionalizes
+containerization
+containerize
+containerized
+containerizes
+containerizing
+contemporization
+contemporize
+contemporized
+contemporizes
+contemporizing
+controversialize
+controversializes
+conundrumize
+conundrumizes
+conventionalization
+conventionalization's
+conventionalizations
+conventionalize
+conventionalizes
+conventionalizing
+conventionize
+conventionizes
+conversationize
+conversationizes
+conveyorize
+conveyorized
+conveyorizes
+conveyorizing
+convivialize
+convivializes
+copolymerization
+copolymerization's
+copolymerizations
+copolymerize
+copolymerized
+copolymerizes
+copolymerizing
+copperization
+copperization's
+copperizations
+copperize
+copperizes
+coraled
+corbeled
+corbeling
+corbelings
+cordialize
+cordializes
+corporealization
+corporealization's
+corporealizations
+corporealize
+corporealizes
+cosmopolitanization
+cosmopolitanization's
+cosmopolitanizations
+cosmopolitanize
+cosmopolitanizes
+cottonization
+cottonization's
+cottonizations
+cottonize
+cottonizes
+councilorship
+counselee
+counselorship
+crawlerize
+crawlerizes
+creaturize
+creaturizes
+crenelate
+crenelated
+crenelates
+crenelation
+creneled
+creneling
+cretinization
+cretinization's
+cretinizations
+cretinize
+cretinizes
+criminalization
+criminalization's
+criminalize
+criticizable
+criticizable's
+criticizables
+crofterization
+crofterization's
+crofterizations
+crofterize
+crofterizes
+cruelize
+cruelizes
+crystallizabilities
+crystallizability
+crystallizability's
+crystallizable
+crystallizable's
+crystallizables
+cudgeled
+cudgeler
+cudgelers
+cudgeling
+cudgelings
+culturization
+culturization's
+culturizations
+culturize
+culturizes
+cupelation
+cupeled
+cupeler
+cupelers
+cupeling
+curarize
+curarized
+curarizes
+curarizing
+curatize
+curatizes
+curricularization
+curricularization's
+curricularizations
+curricularize
+curricularizes
+cutinize
+cutinized
+cutinizes
+cutinizing
+cutization
+cutization's
+cutizations
+cyclization
+cyclization's
+cyclizations
+cyclize
+cyclized
+cyclizes
+cyclizing
+dandyize
+dandyizes
+dastardize
+dastardizes
+deaconize
+deaconizes
+deaminize
+decaliter
+decaliters
+decameter
+decameter's
+decameters
+decarbonization
+decarbonize
+decarbonized
+decarbonizer
+decarbonizes
+decarbonizing
+decarburization
+decarburize
+decarburized
+decarburizes
+decarburizing
+decasualization
+decentralizationist
+decentralize
+decentralizes
+decigram
+decigram's
+decigrams
+deciliter
+deciliters
+decimalization
+decimalization's
+decimalizations
+decimalize
+decimalized
+decimalizes
+decimalizing
+decimeter
+decimeter's
+decimeters
+decolonization
+decolonize
+decolonized
+decolonizes
+decolonizing
+decolor
+decolorant
+decolorants
+decolorate
+decolorated
+decolorates
+decolored
+decoloring
+decolorise
+decolorised
+decolorises
+decolorization
+decolorize
+decolorized
+decolorizer
+decolorizes
+decolors
+decriminalization
+decriminalization's
+decriminalize
+deemphasization
+deemphasization's
+deenergize
+deenergized
+deenergizer
+deenergizes
+deenergizing
+defeminize
+defeminized
+defeminizes
+defeminizing
+defenseman
+definitization
+definitization's
+definitizations
+definitize
+definitized
+definitizes
+definitizing
+deflectionization
+deflectionization's
+deflectionizations
+deflectionize
+deflectionizes
+deformalize
+defunctionalization
+defunctionalization's
+defunctionalizations
+defunctionalize
+defunctionalizes
+dehumanization
+dehumanization's
+dehumanizations
+dehypnotization
+dehypnotize
+dehypnotized
+dehypnotizes
+dehypnotizing
+deindustrialization
+deindustrialize
+deionization
+deionize
+deionizes
+dekagram
+dekagram's
+dekagrams
+dekaliter
+dekameter
+dekameter's
+dekameters
+delimitize
+delimitizes
+delocalization
+delocalize
+deluster
+demagnetizable
+demagnetizable's
+demagnetizables
+demagnetization
+demagnetization's
+demagnetizations
+demagnetize
+demagnetized
+demagnetizer
+demagnetizers
+demagnetizes
+demagnetizing
+dematerialization
+dematerialize
+dematerialized
+dematerializes
+dematerializing
+demilitarization
+demilitarize
+demilitarized
+demilitarizes
+demilitarizing
+demineralize
+demineralized
+demineralizer
+demineralizes
+demineralizing
+demobilization
+demobilize
+demobilized
+demobilizes
+demobilizing
+demonetization
+demonetize
+demonetized
+demonetizes
+demonetizing
+demonization
+demonize
+demonized
+demonizes
+demonizing
+denationalization
+denationalize
+denationalized
+denationalizes
+denationalizing
+denaturalization
+denaturalize
+denaturalized
+denaturalizes
+denaturalizing
+denaturization
+denaturization's
+denaturizations
+denaturize
+denaturizer
+denaturizers
+denaturizes
+denicotinize
+denizenize
+denizenizes
+denominationalize
+denominationalizes
+denormalize
+dentalization
+dentalization's
+dentalizations
+dentalize
+dentalizes
+denuclearization
+denuclearize
+denuclearized
+denuclearizes
+denuclearizing
+deodorize
+deodorized
+deodorizes
+deodorizing
+deoxidizer
+departmentalization
+departmentalization's
+departmentalizations
+departmentalize
+departmentalizes
+departmentization
+departmentization's
+departmentizations
+departmentize
+departmentizes
+depersonalize
+depersonalizes
+depersonalizing
+depolarization
+depolarization's
+depolarizations
+depolarize
+depolarized
+depolarizer
+depolarizers
+depolarizes
+depolarizing
+depoliticization
+depoliticize
+depoliticized
+depoliticizes
+depoliticizing
+depolymerization
+depolymerize
+depolymerized
+depolymerizes
+depolymerizing
+depressurization
+depressurize
+depressurized
+depressurizes
+depressurizing
+deputationize
+deputationizes
+deputization
+deputize
+deputizes
+deputizing
+derationalization
+derationalization's
+derationalizations
+derationalize
+derationalizes
+deratization
+deratization's
+deratizations
+derealization
+deregulationize
+deregulationizes
+desalinization
+desalinize
+desensitization
+desensitization's
+desensitizations
+desensitize
+desensitized
+desensitizer
+desensitizers
+desensitizes
+desensitizing
+desexualization
+desexualize
+desexualized
+desexualizes
+desexualizing
+despiritualization
+despiritualize
+despotize
+despotizes
+destabilization
+destalinize
+destalinized
+destalinizes
+destalinizing
+desterilize
+desulfurization
+desulfurize
+desulphurization
+desulphurize
+desulphurized
+desulphurizes
+desulphurizing
+desynchronization
+detribalization
+detribalization's
+detribalizations
+develed
+develing
+deviled
+deviling
+devilize
+devilizes
+devitalization
+devitalize
+devitalized
+devitalizes
+devitalizing
+devocalize
+devolatilization
+devolatilize
+devolatilized
+devolatilizes
+devolatilizing
+diabolization
+diabolize
+diabolized
+diabolizes
+diabolizing
+diagonalization
+diagonalize
+diagonalizes
+dialecticize
+dialecticizes
+dialist
+dialists
+dialyzabilities
+dialyzability
+dialyzability's
+dialyzable
+dialyzable's
+dialyzables
+dialyze
+dialyzer
+dialyzer's
+dialyzers
+dialyzes
+diamondize
+diamondizes
+diarrheic
+diarrhetic
+dieselization
+dieselization's
+dieselizations
+dieselize
+dieselizes
+differentialize
+differentializes
+digitalize
+digitalized
+digitalizes
+digitalizing
+dimensionalization
+dimensionalize
+dimensionalized
+dimensionalizes
+dimensionalizing
+dimerization
+dimerization's
+dimerizations
+dimerize
+dimerized
+dimerizes
+dimerizing
+diminutivize
+diminutivizes
+diphthongization
+diphthongization's
+diphthongizations
+diphthongize
+diphthongizes
+diplomatize
+diplomatizes
+disangularize
+disangularizes
+disauthorize
+disauthorizes
+disboweled
+disboweling
+discanonization
+discanonization's
+discanonizations
+discanonize
+discanonizes
+discolor
+discolor's
+discoloration
+discoloring
+discolorization
+discolorization's
+discolorizations
+discolorment
+discolorment's
+discolorments
+discretization
+discretize
+disdenominationalize
+disdenominationalizes
+disdiplomatize
+disdiplomatizes
+disemboweled
+disemboweling
+disenamor
+disenamor's
+disenamors
+disenthrall
+disenthralls
+disharmonize
+disharmonizes
+disheveler
+disheveling
+dishonorable
+dishonorable's
+dishonorableness
+dishonorables
+dishonorablies
+dishonorably
+dishumanize
+dishumanizes
+dishumor
+dishumored
+dishumors
+disillusionize
+disillusionizer
+disillusionizers
+disillusionizes
+disindividualize
+disindividualizes
+dismalize
+dismalizes
+disnaturalization
+disnaturalization's
+disnaturalizations
+disnaturalize
+disnaturalizes
+disorganize
+disorganizer
+disorganizers
+disorganizes
+disorganizing
+disozonize
+disozonizes
+dispapalize
+dispapalizes
+dispauperize
+dispauperizes
+dispersonalize
+dispersonalizes
+dispopularize
+dispopularizes
+disrealize
+disrealizes
+disscepter
+disscepter's
+disscepters
+disseize
+disseized
+disseizes
+disseizin
+disseizing
+disseizins
+disseizor
+disseizors
+dissensualize
+dissensualizes
+dissocialize
+dissympathize
+dissympathizes
+disutilize
+disutilizes
+divinization
+divinization's
+divinizations
+divinize
+divinized
+divinizes
+divinizing
+dizequalise
+dizequalise's
+dizequaliser
+dizequalisers
+dizequalises
+dizorganisation
+dizorganise
+dockization
+dockization's
+dockizations
+dockize
+dockizes
+doctorization
+doctorization's
+doctorizations
+doctorize
+doctorizes
+doctrinization
+doctrinization's
+doctrinizations
+doctrinize
+doctrinizes
+documentize
+documentizes
+dogmatization
+dogmatize
+dogmatizer
+dognaped
+dognaping
+dolomitization
+dolomitization's
+dolomitizations
+dolomitize
+dolomitizes
+dolor
+domesticize
+domesticizes
+doweled
+doweler
+draftboard
+draftily
+draftsmanship
+dragonize
+dragonizes
+dramatizable
+dramatizable's
+dramatizables
+driveled
+driveler
+drivelers
+driveling
+dualization
+dualization's
+dualizations
+dualize
+dualizes
+ductilize
+ductilizes
+easternize
+ebonization
+ebonize
+ebonized
+ebonizes
+ebonizing
+ecclesiasticize
+ecclesiasticizes
+echoize
+echoizes
+eclecticize
+eclecticizes
+economization
+economization's
+economizations
+ecstaticize
+ecstaticizes
+editorialization
+effectualize
+effectualizes
+effeminatize
+effeminatizes
+egoize
+egoizer
+egoizers
+egoizes
+egyptus
+elasticization
+elasticize
+elasticized
+elasticizer
+elasticizers
+elasticizes
+elasticizing
+electricalize
+electricalizes
+electricize
+electricizes
+electroanesthesia
+electroanesthesia's
+electroanesthesias
+electrocauterization
+electrocauterization's
+electrocauterizations
+electrodialyze
+electrodialyzer
+electrodialyzer's
+electrodialyzers
+electrodialyzes
+electrogalvanize
+electrogalvanizes
+electrohomeopathies
+electrohomeopathy
+electrohomeopathy's
+electrolyze
+electrolyzed
+electrolyzes
+electrolyzing
+electromagnetizable
+electrotonize
+electrotonizes
+elegize
+elegized
+elegizes
+elegizing
+elementalize
+elementalizes
+emblematicize
+emblematicizes
+emblematization
+emblematize
+emblematized
+emblematizes
+emblematizing
+emblemize
+emblemizes
+embolization
+emboweled
+emboweling
+emotionalization
+emotionalization's
+emotionalizations
+emotionalize
+emotionalized
+emotionalizes
+emotionalizing
+emotionize
+emotionizes
+empaneled
+empaneling
+empathize
+empathized
+empathizes
+empathizing
+emulsionize
+emulsionizes
+enamelist
+enamelists
+enamor
+enamor's
+enamored
+enamored's
+enamoredness
+enamoreds
+enamoring
+enamorment
+enamorment's
+enamorments
+enamors
+enarbor
+enarbor's
+enarbors
+encarnalization
+encarnalize
+encarnalized
+encarnalizes
+encarnalizing
+encolor
+encolor's
+encolored
+encoloring
+encolors
+energization
+energize
+energizer
+energizers
+energizing
+engram
+engram's
+engrams
+engrandize
+engrandizement
+engrandizement's
+engrandizements
+engrandizes
+enhypostatize
+enhypostatizes
+enolization
+enolization's
+enolizations
+enolize
+enolizes
+ensepulcher
+ensepulcher's
+ensepulchers
+ensorceled
+ensorcels
+enthrallment
+enthrallment's
+enthrallments
+enthronization
+enthronization's
+enthronizations
+enthronize
+enthronizes
+entomologize
+entomologized
+entomologizes
+entomologizing
+envapor
+envapor's
+envapors
+envenomization
+eonism
+eonism's
+eonisms
+epigrammatization
+epigrammatize
+epigrammatized
+epigrammatizer
+epigrammatizes
+epigrammatizing
+epitaphize
+epitaphizes
+epithetize
+epithetizes
+epitomization
+epitomization's
+epitomizations
+epoches
+equestrianize
+equestrianizes
+ergotized
+ergotizes
+eroticization
+eroticize
+eroticized
+eroticizes
+eroticizing
+esophagus
+essentialize
+essentializes
+esterization
+esterization's
+esterizations
+esterize
+esterizes
+esthesia
+esthesiometer
+esthesiometer's
+esthesiometers
+esthesis
+eternalization
+eternalization's
+eternalizations
+eternalize
+eternalized
+eternalizes
+eternalizing
+eternize
+eternized
+eternizes
+eternizing
+etherealization
+etherealization's
+etherealizations
+etherealize
+etherealized
+etherealizes
+etherealizing
+etherization
+etherization's
+etherizations
+etherize
+etherized
+etherizer
+etherizers
+etherizes
+etherizing
+ethicization
+ethicize
+ethicized
+ethicizes
+ethicizing
+ethnicize
+ethnicizes
+etiologies
+etiology
+etiology's
+etymologization
+etymologize
+etymologized
+etymologizes
+etymologizing
+euhemerize
+eulogization
+eulogization's
+eulogizations
+euphemize
+euphemized
+euphemizer
+euphemizes
+euphemizing
+euphonization
+euphonize
+euphonized
+euphonizes
+euphonizing
+evangelization
+evangelization's
+evangelizations
+evangelize
+evangelized
+evangelizer
+evangelizers
+evangelizes
+evangelizing
+eventualize
+eventualizes
+evolutionize
+evolutionizes
+excursionize
+excursionizes
+exhibitionize
+exhibitionizes
+existentialize
+existentializes
+experimentalize
+experimentalizes
+experimentize
+experimentizes
+extemporization
+extemporization's
+extemporizations
+exteriorization
+exteriorization's
+exteriorizations
+exteriorize
+exteriorized
+exteriorizes
+exteriorizing
+externalize
+externalized
+externalizes
+externalizing
+facsimilize
+facsimilizes
+factorize
+factorized
+factorizes
+factorizing
+fanaticize
+fanaticized
+fanaticizes
+fanaticizing
+faradization
+faradization's
+faradizations
+faradize
+faradized
+faradizer
+faradizers
+faradizes
+faradizing
+fascisticization
+fascisticization's
+fascisticizations
+fascisticize
+fascisticizes
+fascistization
+fascistization's
+fascistizations
+fascistize
+fascistized
+fascistizes
+fascistizing
+fashionize
+fashionizes
+fatalize
+fatalizes
+favorless
+favorlesses
+fecundize
+fecundizes
+federalization
+federalization's
+federalizations
+femalize
+femalizes
+feminization
+feminizations
+feminize
+feminized
+feminizes
+feminizing
+ferreled
+ferreling
+ferritization
+ferritization's
+ferritizations
+fertilizable
+fertilizable's
+fertilizables
+fertilizational
+fertilizational's
+fertilizationals
+fervorless
+fervorlesses
+fetalization
+fetalization's
+fetalizations
+fetishization
+fetishization's
+fetishizations
+fetishize
+fetishized
+fetishizes
+fetishizing
+feudalizable
+feudalizable's
+feudalizables
+feudalization
+feudalization's
+feudalizations
+feudalize
+feudalized
+feudalizes
+feudalizing
+fiberization
+fiberize
+fiberized
+fiberizer
+fiberizer's
+fiberizers
+fiberizes
+fiberizing
+fiberless
+fiberlesses
+fibrize
+fibrizer
+fibrizers
+fibrizes
+fictionalization
+fictionalize
+fictionalized
+fictionalizes
+fictionalizing
+fictionization
+fictionization's
+fictionizations
+fictionize
+fictionizes
+figurize
+figurizes
+filmize
+filmizes
+fiscalization
+fiscalization's
+fiscalizations
+fiscalize
+fiscalizes
+flamboyantize
+flamboyantizes
+flanneled
+flanneling
+flavorful
+flavorfully
+flavorless
+flavorlesses
+flavorsome
+flavory
+floralize
+floralizes
+fluidization
+fluidization's
+fluidizations
+fluidize
+fluidized
+fluidizer
+fluidizes
+fluidizing
+fluoridization
+fluoridization's
+fluoridizations
+fluoridize
+fluoridizes
+focalization
+focalization's
+focalizations
+focalize
+focalized
+focalizes
+focalizing
+foreignization
+foreignization's
+foreignizations
+foreignize
+foreignizes
+forejudgment
+forejudgment's
+forejudgments
+formalizable
+formularization
+formularizations
+formularize
+formularized
+formularizer
+formularizes
+formularizing
+formulization
+formulizations
+formulize
+formulized
+formulizes
+formulizing
+forumize
+forumizes
+fossiled
+fossilizable
+fossilizable's
+fossilizables
+fossilization
+fossilization's
+fossilizations
+fossilize
+fossilizes
+fossilizing
+fractionalization
+fractionalize
+fractionalized
+fractionalizes
+fractionalizing
+fractionization
+fractionization's
+fractionizations
+fractionize
+fractionizes
+fragmentize
+fragmentized
+fragmentizer
+fragmentizes
+fragmentizing
+fraternization
+fraternization's
+fraternizations
+frictionize
+frictionizes
+frivoled
+frivoler
+frivoling
+fuelizer
+fuelizer's
+fuelizers
+functionalize
+functionalizes
+functionize
+functionizes
+funeralize
+funeralizes
+funneler
+futilize
+futilizes
+futurize
+futurizes
+gallantize
+gallantizes
+galvanization
+galvanization's
+galvanizations
+galvanize
+galvanized
+galvanizer
+galvanizers
+galvanizes
+gamboled
+gamboling
+gardenize
+gardenizes
+gaveled
+gaveler
+gaveling
+gelatinizabilities
+gelatinizability
+gelatinizability's
+gelatinizable
+gelatinizable's
+gelatinizables
+gelatinization
+gelatinization's
+gelatinizations
+gelatinize
+gelatinized
+gelatinizer
+gelatinizers
+gelatinizes
+gelatinizing
+generalizability
+generalizational
+genialize
+genializes
+genteelize
+genteelizes
+gentilization
+gentilization's
+gentilizations
+gentilize
+gentilizes
+gentlemanize
+gentlemanizes
+geologize
+geologized
+geologizes
+geologizing
+geometricize
+geometricizes
+geometrize
+geometrized
+geometrizes
+geometrizing
+germanization
+germanization's
+germanizations
+germanize
+germanizer
+germanizers
+germanizes
+germanizing
+ghettoization
+ghettoization's
+ghettoizations
+ghettoize
+ghettoized
+ghettoizes
+ghettoizing
+giantize
+giantizes
+gimbaling
+glacialize
+glacializes
+glamorization
+glamorizations
+glamorless
+globalization
+globalizations
+globalize
+globalized
+globalizes
+globalizing
+glottalize
+glottalizes
+gluttonize
+gluttonizes
+glycerinize
+glycerinizes
+glycerolize
+glycerolizes
+glycogenize
+glycogenizes
+gnosticize
+gnosticizer
+gnosticizers
+gnosticizes
+goddize
+goddizes
+goiter
+goiters
+gonorrhea
+gonorrheal
+gorgonize
+gorgonized
+gorgonizes
+gorgonizing
+gormandize
+gormandized
+gormandizer
+gormandizes
+gormandizing
+gospelize
+gospelizes
+gourmandize
+gourmandized
+gourmandizes
+gourmandizing
+governmentalize
+governmentalized
+governmentalizes
+governmentalizing
+grammaticize
+grammaticizes
+grangerize
+grangerized
+grangerizer
+grangerizes
+grangerizing
+granitization
+granitization's
+granitizations
+granitize
+granitizes
+granulize
+granulizes
+graphitizable
+graphitization
+graphitization's
+graphitizations
+graphitize
+graphitizes
+grecize
+grecized
+grecizing
+grueled
+grueler
+gruelers
+gutturalization
+gutturalization's
+gutturalizations
+gutturalize
+gutturalized
+gutturalizes
+gutturalizing
+gynecocrat
+gynecocratic
+gynecologic
+gynecologics
+gynecologies
+gynecology
+gynecology's
+gyrostabilizer
+habitualize
+habitualizes
+hamletization
+hamletization's
+hamletizations
+hamletize
+hamletizes
+handseled
+handseling
+hanseled
+hanseling
+harborage
+harborages
+harborful
+harborless
+harborlesses
+harmonizable
+harmonizable's
+harmonizables
+hatcheled
+hatcheling
+hazardize
+hazardizes
+heathenization
+heathenize
+heathenized
+heathenizes
+heathenizing
+heavenize
+heavenizes
+hebraization
+hebraizations
+hebraize
+hebraized
+hebraizes
+hebraizing
+hectogram
+hectogram's
+hectograms
+hectoliter
+hectometer
+hectometer's
+hectometers
+heparinize
+hepatize
+hepatized
+hepatizes
+hepatizing
+heraldize
+heraldizes
+hereticize
+hereticizes
+heroinize
+heroinizes
+heroization
+heroization's
+heroizations
+heroize
+heroized
+heroizes
+heroizing
+hiccup
+hiccuped
+hiccuping
+hiccups
+hirseled
+hirseling
+historicize
+historicized
+historicizes
+historicizing
+homeopathic
+homeopathically
+homeopathies
+homeopathy
+homeopathy's
+homeostasis
+homeostatic
+homeotypic
+hominization
+hominized
+homologization
+homologize
+homologized
+homologizer
+homologizes
+homologizing
+honorabilities
+honorability
+honorability's
+honorableship
+honorableship's
+honorableships
+honorless
+honorlesses
+hoodlumize
+hoodlumizes
+hooliganize
+hooliganizes
+horizontalization
+horizontalization's
+horizontalizations
+horizontalize
+horizontalizes
+hormonize
+hormonizes
+horrorize
+horrorizes
+hostilize
+hostilizes
+hotelization
+hotelization's
+hotelizations
+hotelize
+hotelizes
+houseled
+houseling
+houselings
+hoveled
+hoveler
+hovelers
+hoveling
+hucksterize
+hucksterizes
+humanitarianize
+humanitarianizes
+humanization
+humanization's
+humanizations
+humoral
+humorize
+humorizes
+humorless
+humorlesses
+humorlessness
+humorsome
+hurricanize
+hurricanizes
+hyalinization
+hyalinization's
+hyalinizations
+hyalinize
+hyalinizes
+hybridizable
+hybridizable's
+hybridizables
+hybridization
+hybridization's
+hybridizations
+hybridize
+hybridized
+hybridizer
+hybridizers
+hybridizes
+hybridizing
+hydrocaryaceous
+hydrocaryaceouses
+hydrogenization
+hydrogenization's
+hydrogenizations
+hydrogenize
+hydrogenized
+hydrogenizes
+hydrogenizing
+hydrolyzable
+hydrolyzable's
+hydrolyzables
+hydrolyze
+hydrolyze's
+hydrolyzes
+hydroxylization
+hydroxylization's
+hydroxylizations
+hydroxylize
+hydroxylizes
+hygienization
+hygienization's
+hygienizations
+hygienize
+hygienizes
+hyperbolize
+hyperbolized
+hyperbolizes
+hyperbolizing
+hypercatharsises
+hypercivilization
+hypercivilization's
+hypercivilizations
+hypercivilized
+hypercivilized's
+hypercivilizeds
+hypercriticize
+hypercriticizes
+hyperemphasize
+hyperemphasizes
+hyperesthesia
+hyperesthetic
+hyperimmunization
+hyperimmunization's
+hyperimmunizations
+hyperimmunize
+hyperimmunizes
+hyperinsulinization
+hyperinsulinization's
+hyperinsulinizations
+hyperinsulinize
+hyperinsulinizes
+hyperoxygenize
+hyperoxygenizes
+hyperparasitize
+hyperparasitizes
+hyperrealize
+hyperrealizes
+hypersensitization
+hypersensitization's
+hypersensitizations
+hypersensitize
+hypersensitized
+hypersensitizes
+hypersensitizing
+hyperspiritualizing
+hyperspiritualizing's
+hyperspiritualizings
+hyperthyroidization
+hyperthyroidization's
+hyperthyroidizations
+hyperthyroidize
+hyperthyroidizes
+hypervitalization
+hypervitalization's
+hypervitalizations
+hypervitalize
+hypervitalizes
+hyphenization
+hyphenization's
+hyphenizations
+hyphenize
+hyphenizes
+hypnotizabilities
+hypnotizability
+hypnotizability's
+hypnotizable
+hypnotizable's
+hypnotizables
+hypnotization
+hypnotization's
+hypnotizations
+hypnotize
+hypnotizer
+hypnotizers
+hypnotizes
+hypnotizing
+hypocenter
+hyposensitization
+hyposensitize
+hypostatization
+hypostatization's
+hypostatizations
+hypostatize
+hypostatizes
+hysterectomize
+hysterectomized
+hysterectomizes
+hysterectomizing
+ichneumonized
+ichneumonized's
+ichneumonizeds
+idiotize
+idiotizes
+idolatrize
+idolatrized
+idolatrizes
+idolatrizing
+idolization
+idolization's
+idolizations
+illegalization
+illegalize
+illegalized
+illegalizes
+illegalizing
+illegitimatize
+illegitimatizes
+illutation
+illutation's
+illutations
+immaterialization
+immaterialize
+immaterialized
+immaterializes
+immaterializing
+immobilization
+immobilization's
+immobilizations
+immoralize
+immoralizes
+immortalizable
+immortalizable's
+immortalizables
+immortalization
+immortalization's
+immortalizations
+immortalize
+immortalizer
+immortalizers
+immortalizes
+immortalizing
+immunize
+immunized
+immunizes
+immunizing
+impactionize
+impactionizes
+impaneled
+impaneling
+imperialization
+imperialization's
+imperializations
+imperialize
+imperializes
+imperiling
+impersonalization
+impersonalization's
+impersonalizations
+impersonalize
+impersonalizes
+impersonalizing
+improvizatorize
+improvizatorizes
+individualization
+individualization's
+individualizations
+indraft
+industrialize
+industrializes
+inferiorize
+inferiorizes
+infernalize
+infernalizes
+infidelize
+infidelizes
+infinitize
+infinitizes
+informalize
+inhumanize
+initializable
+insolubilization
+insolubilize
+institutionize
+institutionizes
+instrumentalize
+instrumentalizes
+insularize
+insularizes
+insurrectionize
+insurrectionizes
+integralization
+integralization's
+integralizations
+integralize
+integralizes
+intellectualization
+intellectualization's
+intellectualizations
+intellectualize
+intellectualized
+intellectualizer
+intellectualizers
+intellectualizes
+intellectualizing
+intercivilization
+intercivilization's
+intercivilizations
+intercolonization
+intercolonization's
+intercolonizations
+intercrystallization
+intercrystallization's
+intercrystallizations
+intercrystallize
+intercrystallizes
+interhybridize
+interhybridizes
+interiorization
+interiorize
+interiorized
+interiorizes
+interiorizing
+interjectionalize
+interjectionalizes
+interjectionize
+interjectionizes
+interjudgment
+interjudgment's
+interjudgments
+internationalize
+internationalizes
+internationalizing
+interorganizational
+intraorganization
+intraorganization's
+intraorganizations
+iodization
+iodize
+iodized
+iodizer
+iodizers
+iodizes
+iodizing
+ionizable
+ionizable's
+ionizables
+ionization
+ionization's
+ionizations
+ironize
+ironizes
+irrationalize
+irrationalizes
+irregularize
+irregularizes
+isochronization
+isochronize
+isochronized
+isochronizes
+isochronizing
+isoimmunization
+isoimmunization's
+isoimmunizations
+isoimmunize
+isoimmunizes
+isomerization
+isomerization's
+isomerizations
+isomerize
+isomerized
+isomerizeparabolization
+isomerizes
+isomerizing
+italicization
+italicization's
+italicizations
+jargonization
+jargonization's
+jargonizations
+jargonize
+jargonized
+jargonizes
+jargonizing
+jasperize
+jasperizes
+jeopardization
+jeweleries
+jewelery
+journalization
+journalization's
+journalizations
+jovialize
+jovializes
+judgmental
+judicialize
+judicializes
+juvenilize
+juvenilizes
+kaolinization
+kaolinization's
+kaolinizations
+kaolinize
+kaolinizes
+kenneled
+kenneling
+keratinization
+keratinize
+keratinized
+keratinizes
+keratinizing
+kerneled
+kerneling
+ketonization
+ketonization's
+ketonizations
+ketonize
+ketonizes
+kiloliter
+kiloliter's
+kiloliters
+kinesthesia
+kyanize
+kyanized
+kyanizes
+kyanizing
+labelable
+labialization
+labialization's
+labializations
+labialize
+labialized
+labializes
+labializing
+labilization
+labilization's
+labilizations
+labilize
+labilizes
+laborabilities
+laborability
+laborability's
+laborable
+laborable's
+laborables
+laborhood
+laborhood's
+laborhoods
+laborism
+laborism's
+laborisms
+laborist
+laborist's
+laborists
+laborite
+laborite's
+laborites
+laborless
+laborlesses
+labour's
+lackluster
+laconize
+laconized
+laconizes
+laconizing
+lactonized
+laicization
+laicizations
+laicize
+laicized
+laicizes
+laicizing
+lapeled
+latentize
+latentizes
+lateralization
+lateralization's
+lateralizations
+lateralize
+lateralizes
+laterization
+laterization's
+laterizations
+laureling
+leatherize
+leatherizes
+legitimatize
+legitimatized
+legitimatizes
+legitimatizing
+legitimization
+legitimization's
+legitimizations
+lethalize
+lethalizes
+leukemia
+lexiconize
+lexiconizes
+libelant
+libelants
+libeled
+libelee
+libelees
+libeling
+lichenization
+lichenization's
+lichenizations
+lichenize
+lichenizes
+lignitize
+lignitizes
+linearization
+linearization's
+linearizations
+linenize
+linenizer
+linenizers
+linenizes
+lingualize
+lingualizes
+lionizable
+lionizable's
+lionizables
+lionization
+lionization's
+lionizations
+liquidization
+liquidize
+liquidized
+liquidizer
+liquidizers
+liquidizes
+liquidizing
+literalization
+literalization's
+literalizations
+literalize
+literalized
+literalizer
+literalizers
+literalizes
+lithographize
+lithographizes
+localizable
+localizable's
+localizables
+logicalization
+logicalization's
+logicalizations
+logicalize
+logicalizes
+logicize
+logicized
+logicizes
+logicizing
+logorrhea
+logorrhea's
+logorrheas
+louver
+louvered
+louvers
+loyalize
+loyalizes
+lumbarization
+lumbarization's
+lumbarizations
+lunatize
+lunatizes
+lusterless
+lusterware
+luteinization
+luteinize
+lyophilization
+lyophilize
+lyophilized
+lyophilizer
+lyricize
+lyricized
+lyricizes
+lyricizing
+lysogenization
+lysogenize
+macadamization
+macadamize
+macadamized
+macadamizes
+macadamizing
+macarize
+macarized
+macarizes
+macarizing
+machinization
+machinization's
+machinizations
+machinize
+machinizes
+magicalize
+magicalizes
+magnetizabilities
+magnetizability
+magnetizability's
+magnetizable
+magnetizable's
+magnetizables
+magnetize
+magnetizer
+magnetizers
+magnetizes
+magnetizing
+mahoganize
+mahoganized
+mahoganizes
+mahoganizing
+majorize
+majorizes
+malleablize
+malleablizes
+malodor
+mandarinize
+mandarinizes
+mannerize
+mannerizes
+marbleize
+marbleizes
+marginalization
+marginalize
+marginalized
+marginalizes
+marginalizing
+marsupialization
+marsupialization's
+marsupializations
+marsupialize
+marsupializes
+martialization
+martialization's
+martializations
+martialize
+martializes
+martyrization
+martyrization's
+martyrizations
+martyrize
+martyrized
+martyrizer
+martyrizers
+martyrizes
+martyrizing
+marveler
+masculinization
+masculinization's
+masculinizations
+masculinize
+masculinized
+masculinizes
+masculinizing
+materialization
+materialization's
+materializations
+maternalize
+maternalizes
+mathematicize
+mathematicizes
+mathematization
+matronize
+matronized
+matronizes
+matronizing
+maudlinize
+maudlinizes
+mazurka
+mazurka's
+mazurkas
+mechanicalization
+mechanicalization's
+mechanicalizations
+mechanicalize
+mechanicalizes
+mechanizable
+medalist
+medalists
+medalize
+medalizes
+medialization
+medialization's
+medializations
+medialize
+medializes
+mediatization
+mediatization's
+mediatizations
+mediatize
+mediatized
+mediatizes
+mediatizing
+medievalize
+medievalizes
+mediumization
+mediumization's
+mediumizations
+mediumize
+mediumizes
+melanization
+melanize
+melanized
+melanizes
+melanizing
+melodization
+melodize
+melodized
+melodizer
+melodizes
+melodizing
+melodramatization
+melodramatize
+melodramatized
+melodramatizes
+melodramatizing
+memorialization
+memorialization's
+memorializations
+memorialize
+memorializer
+memorializers
+memorializes
+memorializing
+memorizable
+memorizable's
+memorizables
+mentalization
+mentalization's
+mentalizations
+mentalize
+mentalizes
+mercerization
+mercerization's
+mercerizations
+mercerize
+mercerized
+mercerizer
+mercerizers
+mercerizes
+mercerizing
+mercurialization
+mercurialization's
+mercurializations
+mercurialize
+mercurializes
+mesmerizabilities
+mesmerizability
+mesmerizability's
+mesmerizable
+mesmerizable's
+mesmerizables
+mesmerization
+mesmerization's
+mesmerizations
+mesmerize
+mesmerizer
+mesmerizers
+mesmerizes
+mesmerizing
+metabolizable
+metabolizable's
+metabolizables
+metabolize
+metabolizes
+metabolizing
+metacenter
+metagram
+metagram's
+metagrams
+metalize
+metalized
+metalizes
+metalizing
+metallicize
+metallicizes
+metamerization
+metamerization's
+metamerizations
+metamerized
+metamerized's
+metamerizeds
+metaphonize
+metaphonizes
+metaphorize
+metaphorizes
+metaphysicize
+metaphysicizes
+metastasize
+metastasized
+metastasizes
+metastasizing
+meteorization
+meteorization's
+meteorizations
+meteorize
+meteorizes
+methodization
+methodization's
+methodizations
+methodize
+methodized
+methodizer
+methodizers
+methodizes
+methodizing
+metricize
+metricized
+metricizes
+metricizing
+metropolitanize
+metropolitanizes
+microgram
+microgram's
+micrograms
+microliter
+microliter's
+microliters
+micromillimeter
+micromillimeter's
+micromillimeters
+microminiaturization
+microminiaturize
+microminiaturized
+microminiaturizer
+microminiaturizers
+microminiaturizes
+microminiaturizing
+micronization
+micronization's
+micronizations
+micronize
+micronizes
+micropolarization
+micropolarization's
+micropolarizations
+microscopize
+microscopizes
+militarization
+militarizations
+militarize
+militarized
+militarizes
+militarizing
+millionize
+millionizes
+mineralizable
+mineralizable's
+mineralizables
+mineralization
+mineralization's
+mineralizations
+mineralize
+mineralizer
+mineralizers
+mineralizes
+mineralizing
+miraculize
+miraculized
+miraculizes
+miraculizing
+mirrorize
+mirrorizes
+misalphabetize
+misalphabetizes
+misanthropize
+misanthropized
+misanthropizes
+misanthropizing
+misauthorization
+misauthorization's
+misauthorizations
+misauthorize
+misauthorizes
+misbaptize
+misbaptizes
+miscanonize
+miscanonizes
+mischaracterization
+mischaracterization's
+mischaracterizations
+mischaracterize
+mischaracterizes
+miscolor
+miscolor's
+miscolored
+miscoloring
+miscolors
+misendeavor
+misendeavor's
+misendeavors
+mislabeled
+mislabeling
+mislabor
+mislabor's
+mislabored
+mislaboring
+mislabors
+misorganization
+misorganization's
+misorganizations
+misorganize
+misorganizes
+misrealize
+misrealizes
+misrecognize
+misrecognizes
+misrouting
+missionarize
+missionarizes
+missionization
+missionize
+missionized
+missionizer
+missionizers
+missionizes
+missionizing
+mizanthropise
+mizanthropises
+mobilizable
+mobilizable's
+mobilizables
+modalize
+modalizes
+modernizable
+modernizable's
+modernizables
+moisturization
+moisturize
+moisturized
+moisturizer
+moisturizers
+moisturizes
+moisturizing
+molarization
+molarizations
+monarchize
+monarchizer
+monarchizers
+monarchizes
+monasticize
+monasticizes
+mongrelization
+mongrelizations
+mongrelize
+mongrelized
+mongrelizer
+mongrelizes
+mongrelizing
+monochordize
+monochordizes
+monologize
+monologized
+monologizes
+monologizing
+monometalism
+monometalist
+monopolizable
+monopolizable's
+monopolizables
+monotonize
+monotonizes
+monumentalization
+monumentalization's
+monumentalizations
+monumentalize
+monumentalized
+monumentalizes
+monumentalizing
+moralization
+moralization's
+moralizations
+moralize
+moralized
+moralizer
+moralizers
+moralizes
+moralizing
+moralizinglies
+moralizingly
+morbidize
+morbidizes
+morphinization
+morphinization's
+morphinizations
+morphinize
+morphinizes
+morseled
+morseling
+morselization
+morselization's
+morselizations
+morselize
+morselizes
+mortalize
+mortalizes
+mortarize
+mortarizes
+motorization
+motorization's
+motorizations
+multifibered
+multifibered's
+multifibereds
+municipalization
+municipalization's
+municipalizations
+municipalize
+municipalized
+municipalizer
+municipalizers
+municipalizes
+municipalizing
+muscularize
+muscularizes
+museumize
+museumizes
+musicalization
+musicalization's
+musicalizations
+musicalize
+musicalizes
+mutualization
+mutualization's
+mutualizations
+mutualize
+mutualized
+mutualizes
+mutualizing
+myelinization
+myelinization's
+myelinizations
+mysticize
+mysticizes
+mythicization
+mythicize
+mythicized
+mythicizer
+mythicizers
+mythicizes
+mythicizing
+mythize
+mythizes
+mythologization
+mythologize
+mythologized
+mythologizer
+mythologizes
+mythologizing
+nakedize
+nakedizes
+nanogram
+nanograms
+nanometer
+nanometers
+narcotization
+narcotize
+narcotized
+narcotizing
+nasalize
+nasalizes
+nasalizing
+naturalize
+naturalizer
+naturalizers
+naturalizes
+naturalizing
+naturize
+naturizes
+nebularization
+nebularization's
+nebularizations
+nebularize
+nebularizes
+nebulization
+nebulizations
+nebulize
+nebulized
+nebulizer
+nebulizes
+nebulizing
+necrotize
+necrotized
+necrotizes
+necrotizing
+nectarize
+nectarizes
+neighborless
+neighborlesses
+neighborlike
+neighborlike's
+neighborlikes
+neighborship
+neighborship's
+neighborships
+neologization
+neologize
+neologized
+neologizes
+neologizing
+neuroticize
+neuroticizes
+newspaperized
+newspaperized's
+newspaperizeds
+nickelization
+nickelization's
+nickelizations
+nickelize
+nickelizes
+nicotinize
+nicotinizes
+nightingalize
+nightingalizes
+niter
+nitridization
+nitridization's
+nitridizations
+nitridize
+nitridizes
+nitrogenization
+nitrogenization's
+nitrogenizations
+nitrogenize
+nitrogenized
+nitrogenizes
+nitrogenizing
+nodulize
+nodulizes
+nomadization
+nomadization's
+nomadizations
+nomadize
+nomadized
+nomadizes
+nomadizing
+nominalize
+nominalizes
+nominalizing
+nonacknowledgment
+nonacknowledgment's
+nonacknowledgments
+nonanesthetized
+nonapostatizing
+nonapostatizing's
+nonapostatizings
+noncanonization
+noncanonization's
+noncanonizations
+noncartelized
+noncartelized's
+noncartelizeds
+noncatechizable
+noncatechizable's
+noncatechizables
+noncivilized
+noncivilized's
+noncivilizeds
+noncoloring
+noncoloring's
+noncolorings
+noncrystallizable
+noncrystallizable's
+noncrystallizables
+noncrystallized
+noncrystallized's
+noncrystallizeds
+noncrystallizing
+noncrystallizing's
+noncrystallizings
+nondemobilization
+nondemobilization's
+nondemobilizations
+nondialyzing
+nondialyzing's
+nondialyzings
+nondimensionalize
+nondimensionalized
+nonfavorite
+nonfavorite's
+nonfavorites
+nonfulfillment
+nonfulfillment's
+nonfulfillments
+nongalvanized
+nongalvanized's
+nongalvanizeds
+nongelatinizing
+nongelatinizing's
+nongelatinizings
+nonhydrolyzable
+nonhydrolyzable's
+nonhydrolyzables
+nonimmunized
+nonimmunized's
+nonimmunizeds
+nonionized
+nonionized's
+nonionizeds
+nonionizing
+nonionizing's
+nonionizings
+nonlocalized
+nonlocalized's
+nonlocalizeds
+nonmagnetizable
+nonmagnetizable's
+nonmagnetizables
+nonnitrogenized
+nonnitrogenized's
+nonnitrogenizeds
+nonorganization
+nonorganization's
+nonorganizations
+nonoxidizable
+nonoxidizable's
+nonoxidizables
+nonoxidizing
+nonoxidizing's
+nonoxidizings
+nonparlor
+nonparlor's
+nonparlors
+nonpenalized
+nonpenalized's
+nonpenalizeds
+nonphosphorized
+nonphosphorized's
+nonphosphorizeds
+nonpolarizable
+nonpolarizable's
+nonpolarizables
+nonpolarized
+nonpolarizing
+nonpolarizing's
+nonpolarizings
+nonrationalized
+nonrationalized's
+nonrationalizeds
+nonrealization
+nonrealization's
+nonrealizations
+nonrecognized
+nonrecognized's
+nonrecognizeds
+nonschematized
+nonschematized's
+nonschematizeds
+nonsensitized
+nonsensitized's
+nonsensitizeds
+nonspecialized
+nonspecialized's
+nonspecializeds
+nonstandardized
+nonstandardized's
+nonstandardizeds
+nonstylized
+nonstylized's
+nonstylizeds
+nonsympathizer
+nonsympathizer's
+nonsympathizers
+nonsynthesized
+nonsynthesized's
+nonsynthesizeds
+nontemporizing
+nontemporizing's
+nontemporizings
+nonutilized
+nonutilized's
+nonutilizeds
+nonvisualized
+nonvisualized's
+nonvisualizeds
+nonvolatilized
+nonvolatilized's
+nonvolatilizeds
+nonvulcanizable
+nonvulcanizable's
+nonvulcanizables
+normalizable
+northernize
+northernizes
+nosize
+notarization
+notarizations
+nothingize
+nothingizes
+nounize
+nounizes
+novelization
+novelization's
+novelizations
+novelize
+novelizer
+novelizers
+novelizes
+novelizing
+nuptialize
+nuptializes
+obelize
+obelized
+obelizes
+obelizing
+objectivize
+objectivizes
+objectization
+objectization's
+objectizations
+objectize
+objectizes
+oblivionize
+oblivionizes
+ocherous
+odorful
+odorize
+odorized
+odorizer
+odorizes
+odorizing
+odorless
+odorlesses
+offenseless
+offenselesses
+offenselessly
+officialization
+officialization's
+officializations
+officialize
+officializes
+onionized
+onionized's
+onionizeds
+opaled
+opalize
+opalizes
+operatize
+operatizes
+optionalize
+optionalizes
+oralization
+oralization's
+oralizations
+oralize
+oralizes
+orangize
+orangizes
+oratorize
+oratorizes
+organizabilities
+organizability
+organizability's
+organizationist
+organizationist's
+organizationists
+orientalization
+orientalization's
+orientalizations
+orientalize
+orientalized
+orientalizes
+orientalizing
+orientization
+orientization's
+orientizations
+orientize
+orientizes
+ornamentalize
+ornamentalizes
+orphanize
+orphanizes
+orthocenter
+orthogonalize
+orthogonalizes
+orthogonalizing
+orthopedically
+orthopedist
+ostracizable
+ostracizable's
+ostracizables
+ostracization
+ostracization's
+ostracizations
+ostracize
+ostracizer
+ostracizers
+ostracizes
+ostracizing
+outcaviled
+outcaviling
+outclamor
+outclamor's
+outclamors
+outhumor
+outhumor's
+outhumored
+outhumoring
+outhumors
+outhyperbolize
+outhyperbolizes
+outlabor
+outlabor's
+outlabors
+outrivaled
+outrivaling
+outsavor
+outsavor's
+outsavoring
+outsavors
+outsplendor
+outsplendor's
+outsplendors
+outtyrannize
+outtyrannizes
+ovalization
+ovalization's
+ovalizations
+ovalize
+ovalizes
+ovariectomized
+overagonize
+overagonizes
+overbrutalize
+overbrutalizes
+overcapitalization
+overcapitalization's
+overcapitalizations
+overcapitalize
+overcapitalized
+overcapitalizes
+overcapitalizing
+overcentralization
+overcentralization's
+overcentralizations
+overcentralize
+overcentralizes
+overcivilization
+overcivilization's
+overcivilizations
+overcivilize
+overcivilizes
+overclamor
+overclamor's
+overclamors
+overcolor
+overcolor's
+overcolors
+overcriticize
+overcriticizes
+overdoctrinize
+overdoctrinizes
+overemotionalize
+overemotionalizes
+overfavor
+overfavor's
+overfavorable
+overfavorable's
+overfavorables
+overfavorablies
+overfavorably
+overfavors
+overfertilization
+overgeneralize
+overgeneralizes
+overhonor
+overhonor's
+overhonors
+overhumanize
+overhumanizes
+overindustrialization
+overindustrialization's
+overindustrializations
+overindustrialize
+overindustrializes
+overjudgment
+overjudgment's
+overjudgments
+overlabor
+overlabor's
+overlabors
+overnationalization
+overnationalization's
+overnationalizations
+overrapturize
+overrapturizes
+overrationalize
+overrationalizes
+oversentimentalize
+oversentimentalizes
+overspecialization
+overspecialization's
+overspecializations
+overspecialize
+overspecialized
+overspecializes
+oversystematize
+oversystematizes
+overunionized
+overunionized's
+overunionizeds
+overurbanization
+overurbanization's
+overurbanizations
+overwomanize
+overwomanizes
+oxidizabilities
+oxidizability
+oxidizability's
+oxidizable
+oxidizable's
+oxidizables
+oxidization
+oxidization's
+oxidizations
+oxidizement
+oxidizement's
+oxidizements
+oxygenizable
+oxygenizable's
+oxygenizables
+oxygenize
+oxygenizement
+oxygenizement's
+oxygenizements
+oxygenizer
+oxygenizers
+oxygenizes
+ozonization
+ozonization's
+ozonizations
+ozonize
+ozonized
+ozonizer
+ozonizers
+ozonizes
+ozonizing
+packetization
+packetize
+packetized
+packetizer
+packetizer's
+packetizers
+packetizes
+packetizing
+paeanize
+paeanizes
+paganization
+paganization's
+paganizations
+paganize
+paganized
+paganizer
+paganizers
+paganizes
+paganizing
+palatization
+palatization's
+palatizations
+palatize
+palatizes
+palladiumize
+palladiumizes
+palletization
+palletizations
+palletize
+palletizer
+palletizes
+palletizing
+pamperize
+pamperizes
+pamphletize
+pamphletizes
+panderize
+panderizes
+pantheonization
+pantheonization's
+pantheonizations
+pantheonize
+pantheonizes
+papalization
+papalization's
+papalizations
+papalize
+papalizer
+papalizers
+papalizes
+parabolize
+parabolized
+parabolizes
+parabolizing
+paraffinize
+paraffinizes
+paragraphize
+paragraphizes
+paralyzation
+parasitization
+parasitize
+parasitized
+parasitizes
+parasitizing
+parathyroidectomize
+parathyroidectomized
+parathyroidectomizes
+parathyroidectomizing
+parceler
+parchmentize
+parchmentizes
+parenthesization
+parfocalization
+parfocalize
+parochialization
+parochialization's
+parochializations
+parochialize
+parochializes
+parrotize
+parrotizes
+parsonize
+parsonizes
+partialize
+partializes
+particularization
+particularization's
+particularizations
+particularize
+particularized
+particularizes
+particularizing
+partisanize
+partisanizes
+pasteurize
+pasteurized
+pasteurizer
+pasteurizes
+pasteurizing
+pastoralize
+pastoralizes
+pastorize
+pastorizes
+paternalize
+paternalizes
+patronizable
+patronizable's
+patronizables
+patronization
+patronization's
+patronizations
+patternize
+patternizes
+pauperization
+pauperization's
+pauperizations
+pauperize
+pauperized
+pauperizer
+pauperizers
+pauperizes
+pauperizing
+pavior
+pearlization
+pearlize
+pearlized
+pearlizes
+pearlizing
+peasantize
+peasantizes
+pectization
+pectize
+pectized
+pectizes
+pectizing
+peculiarize
+peculiarizes
+pedaler
+pedalers
+pedantize
+pedantizes
+pedestaled
+pedestaling
+pedestrianization
+pedestrianize
+pedestrianized
+pedestrianizes
+pedestrianizing
+pelletization
+pelletizations
+pelletize
+pelletized
+pelletizer
+pelletizes
+pelletizing
+pemmicanization
+pemmicanization's
+pemmicanizations
+pemmicanize
+pemmicanizes
+penalizable
+penalizable's
+penalizables
+penalization
+penalization's
+penalizations
+penciler
+pencilers
+peptizable
+peptizable's
+peptizables
+peptization
+peptization's
+peptizations
+peptize
+peptized
+peptizer
+peptizers
+peptizes
+peptonization
+peptonize
+peptonized
+peptonizes
+peptonizing
+percussionize
+percussionizes
+perennialize
+perennializes
+perfectivize
+perfectivizes
+periled
+periling
+periodicalize
+periodicalizes
+periodization
+periodizations
+periodize
+periodized
+periodizes
+periodizing
+peroxidize
+peroxidizement
+peroxidizement's
+peroxidizements
+peroxidizes
+personization
+personization's
+personizations
+personize
+personizes
+petrolization
+petrolization's
+petrolizations
+petrolize
+petrolizes
+phagocytize
+phagocytizes
+phantomize
+phantomizer
+phantomizers
+phantomizes
+phenolization
+phenolization's
+phenolizations
+phenolize
+phenolizes
+phenomenalization
+phenomenalization's
+phenomenalizations
+phenomenalize
+phenomenalizes
+philanthropize
+philanthropizes
+philosophization
+philosophization's
+philosophizations
+phlebotomization
+phlebotomize
+phlebotomized
+phlebotomizes
+phlebotomizing
+phoneticization
+phoneticization's
+phoneticizations
+phoneticize
+phoneticizes
+phosphatization
+phosphatization's
+phosphatizations
+phosphatize
+phosphatized
+phosphatizes
+phosphatizing
+phosphorize
+phosphorizes
+photocatalyzer
+photocatalyzer's
+photocatalyzers
+photographize
+photographizes
+photoionization
+photoionization's
+photoionizations
+photoisomerization
+photoisomerization's
+photoisomerizations
+photolabeled
+photolabeler
+photolabeling
+photolyzable
+photolyze
+photolyzed
+photolyzes
+photolyzing
+photopolymerization
+photopolymerization's
+photopolymerizations
+photosensitization
+photosensitization's
+photosensitizations
+photosensitize
+photosensitized
+photosensitizer
+photosensitizers
+photosensitizes
+photosensitizing
+photosynthesize
+photosynthesized
+photosynthesizes
+photosynthesizing
+piaster
+picogram
+picogram's
+picograms
+picometer
+picometer's
+picometers
+pictorialization
+pictorialization's
+pictorializations
+pictorialize
+pictorialized
+pictorializes
+pictorializing
+picturization
+picturization's
+picturizations
+picturize
+picturized
+picturizes
+picturizing
+pidginization
+pidginize
+pidginized
+pidginizes
+pidginizing
+pigmentize
+pigmentizes
+pilgrimize
+pilgrimizes
+pillarize
+pillarizes
+piratize
+piratizes
+pistoled
+pistoling
+plagiarization
+plagiarization's
+plagiarizations
+plagiarize
+plagiarized
+plagiarizer
+plagiarizers
+plagiarizes
+plagiarizing
+plasmolyze
+plasticization
+plasticization's
+plasticizations
+plasticize
+plasticized
+plasticizer
+plasticizers
+plasticizes
+plasticizing
+platinization
+platinization's
+platinizations
+platitudinization
+platitudinize
+platitudinized
+platitudinizes
+platitudinizing
+platonization
+platonize
+platonized
+platonizes
+platonizing
+plebeianize
+plebeianizes
+plowable
+plowboy
+plowhead
+poeticization
+poeticize
+poeticized
+poeticizes
+poeticizing
+poetization
+poetization's
+poetizations
+poetize
+poetized
+poetizer
+poetizers
+poetizes
+poetizing
+pogromize
+pogromizes
+polarizabilities
+polarizability
+polarizability's
+polarizable
+polarizable's
+polarizables
+polemicize
+polemicized
+polemicizes
+polemicizing
+polemize
+polemized
+polemizes
+polemizing
+policize
+policizer
+policizers
+policizes
+politicalize
+politicalizes
+politicization
+politicize
+politicizer
+politicizers
+politicizes
+politicizing
+politize
+politizes
+pollenizer
+pollinize
+pollinized
+pollinizer
+pollinizes
+pollinizing
+polychromatize
+polychromatizes
+polychromize
+polychromizes
+polygamize
+polygamizes
+polymerization
+polymerization's
+polymerize
+polymerizes
+polysulphurization
+polysulphurization's
+polysulphurizations
+pommeled
+pommeling
+porcelainization
+porcelainization's
+porcelainizations
+porcelainize
+porcelainizes
+portionize
+portionizes
+positivize
+positivizes
+posterize
+posterizes
+postsynchronization
+posturize
+posturizes
+potentialization
+potentialization's
+potentializations
+potentialize
+potentializes
+potentize
+potentizes
+powderization
+powderization's
+powderizations
+powderize
+powderizer
+powderizers
+powderizes
+practicalization
+practicalization's
+practicalizations
+practicalize
+practicalizer
+practicalizers
+practicalizes
+preacherize
+preacherizes
+preacknowledgment
+preacknowledgment's
+preacknowledgments
+preanesthetic
+preanesthetics
+prebaptize
+prebaptizes
+precancelation
+precisionize
+precisionizes
+precivilization
+precivilization's
+precivilizations
+precolor
+precolor's
+precolorable
+precolorable's
+precolorables
+precoloring
+precolorings
+precolors
+preconization
+preconization's
+preconizations
+preconize
+preconizer
+preconizers
+preconizes
+precriticize
+precriticizes
+prefavor
+prefavor's
+prefavorable
+prefavorable's
+prefavorables
+prefavorablies
+prefavorably
+prefavorite
+prefavorite's
+prefavorites
+prefavors
+prefertilization
+prefertilization's
+prefertilizations
+prefertilize
+prefertilizes
+preflavor
+preflavor's
+preflavoring
+preflavorings
+preflavors
+pregalvanize
+pregalvanizes
+prehumor
+prehumor's
+prehumors
+prejudgment
+prejudgment's
+prejudgments
+prelabor
+prelabor's
+prelabors
+prelatize
+prelatizes
+prelocalization
+prelocalization's
+prelocalizations
+preludize
+preludizes
+premonopolize
+premonopolizes
+preoffense
+preoffense's
+preoffenses
+preorganization
+preorganization's
+preorganizations
+preorganize
+preorganizes
+preoxidize
+preoxidized
+preoxidizes
+preoxidizing
+preprogram
+prerecognize
+prerecognizes
+prespecialize
+prespecializes
+presplendor
+presplendor's
+presplendors
+pressurization
+prestandardization
+prestandardization's
+prestandardizations
+prestandardize
+prestandardizes
+presympathize
+presympathizes
+preutilizable
+preutilizable's
+preutilizables
+preutilization
+preutilization's
+preutilizations
+preutilize
+preutilizes
+prioritization
+priorization
+priorizations
+priorize
+priorized
+priorizes
+priorizing
+privatization
+privatize
+privatized
+privatizing
+problemize
+problemizes
+processionize
+processionizes
+proctorization
+proctorization's
+proctorizations
+proctorize
+proctorizes
+prodigalize
+prodigalizes
+profanize
+profanizes
+professionalization
+professionalization's
+professionalizations
+professionalize
+professionalized
+professionalizes
+professionalizing
+professionize
+professionizes
+programist
+programist's
+programistic
+programistics
+programists
+proletarianize
+proletarianizes
+proletarianizing
+prologize
+prologuize
+prologuizer
+prologuizers
+prologuizes
+prolusionize
+prolusionizes
+propagandize
+propagandized
+propagandizes
+propagandizing
+prophetize
+prophetizes
+propositionize
+propositionizes
+propretor
+proselytization
+proselytization's
+proselytizations
+protectionize
+protectionizes
+protocoled
+protocoling
+protocolization
+protocolization's
+protocolizations
+protocolize
+protocolizes
+proverbialize
+proverbializes
+proverbize
+proverbizes
+provincialization
+provincialization's
+provincializations
+provincialize
+provincializes
+pseudoanemia
+pseudoanemia's
+pseudoanemias
+pseudoanemic
+pseudoanemics
+pseudoedema
+pseudoedema's
+pseudoedemas
+pseudographize
+pseudographizes
+psychoanalyze
+psychoanalyzer
+psychoanalyzer's
+psychoanalyzers
+psychoanalyzes
+psychologization
+psychologize
+psychologized
+psychologizes
+psychologizing
+psycoanalyze
+puebloization
+puebloization's
+puebloizations
+puebloize
+puebloizes
+pulpitize
+pulpitizes
+pulverizable
+pulverizable's
+pulverizables
+pulverization
+pulverization's
+pulverizations
+pummeler
+pummeling
+pupilize
+pupilizes
+puppetize
+puppetizes
+pyorrheal
+pyramidize
+pyramidizes
+pyridinize
+pyridinizes
+pyritization
+pyritization's
+pyritizations
+pyritize
+pyritizes
+pyrolyzable
+pyrolyzate
+pythonize
+pythonizes
+quarrelous
+quarterization
+quarterization's
+quarterizations
+quininize
+quininizes
+racemization
+racemize
+racemized
+racemizes
+racemizing
+racialization
+racialization's
+racializations
+racialize
+racializes
+radialization
+radialization's
+radializations
+radialize
+radializes
+radicalization
+radicalization's
+radicalizations
+radicalize
+radicalized
+radicalizes
+radicalizing
+radiosterilize
+radiosterilizes
+radiosterilizing
+radiumization
+radiumization's
+radiumizations
+radiumize
+radiumizes
+rapturize
+rapturizes
+rascalize
+rascalizes
+rationalizable
+rationalizable's
+rationalizables
+raveled
+raveler
+ravelers
+raveling
+ravelings
+reacclimatize
+reactualize
+realisticize
+realisticizes
+reanimalize
+reanimalizes
+reapologize
+reauthorize
+rebaptization
+rebaptization's
+rebaptizations
+rebourbonize
+rebourbonizes
+rebrutalize
+recanalization
+recapitalize
+recarbonize
+recausticize
+recausticizes
+recentralize
+reciprocalize
+reciprocalizes
+recivilize
+recolonize
+recolor
+recolor's
+recoloring
+reconnoiter
+reconnoitered
+reconnoiterer
+reconnoiterer's
+reconnoiterers
+reconnoitering
+reconnoiters
+recriticize
+redialer
+redialing
+refavor
+refavor's
+refertilize
+reflectorize
+reflectorized
+reflectorizes
+reflectorizing
+reforestization
+reforestization's
+reforestize
+reforestizes
+regalize
+regalizes
+regalvanization
+regalvanization's
+regalvanizations
+regalvanize
+regalvanizes
+regionalization
+regionalization's
+regionalizations
+regionalize
+regionalized
+regionalizes
+regionalizing
+regularization
+regularization's
+regularizations
+regularize
+regularized
+regularizer
+regularizers
+regularizes
+reharmonize
+rehonor
+rehonor's
+rehumanization
+rehumanize
+rehybridize
+rehybridizes
+reinitialization
+reitemize
+relativization
+relativization's
+relativizations
+relativize
+relativized
+relativizes
+relativizing
+religionize
+religionizes
+remagnetize
+remagnetizes
+rematerialize
+rememorize
+remilitarization
+remilitarize
+remineralization
+remineralization's
+remineralizations
+remineralize
+remineralizes
+remobilize
+rencounter
+renormalization
+renormalize
+renormalizing
+reobjectivization
+reobjectivization's
+reobjectivizations
+reobjectivize
+reobjectivizes
+reorganizational
+reorganizationist
+reorganizationist's
+reorganizationists
+reoxidize
+reoxygenize
+reoxygenizes
+repaganization
+repaganization's
+repaganizations
+repaganize
+repaganizer
+repaganizers
+repaganizes
+repatronize
+repersonalize
+rephosphorization
+rephosphorization's
+rephosphorizations
+rephosphorize
+rephosphorizes
+repolymerization
+repolymerization's
+repolymerizations
+repolymerize
+repolymerizes
+reprivatization
+reprivatization's
+reprivatizations
+reprivatize
+reprivatizes
+republicanization
+republicanization's
+republicanizations
+republicanize
+republicanized
+republicanizer
+republicanizers
+republicanizes
+republicanizing
+repulverize
+reroyalize
+reroyalizes
+resensitization
+resensitization's
+resensitizations
+resensitize
+resensitizes
+resepulcher
+resinize
+resinizes
+resolemnize
+resolemnizes
+restandardize
+resterilize
+restigmatize
+restigmatizes
+resurrectionize
+resurrectionizes
+resymbolize
+resynchronization
+resynchronize
+resynchronizing
+resynthesize
+retinize
+retinizes
+retranquilize
+reutilize
+revalorization
+revalorization's
+revalorizations
+revalorize
+revalorized
+revalorizes
+revalorizing
+revaporize
+revaporizes
+revelationize
+revelationizes
+revisualize
+revitalization's
+revitalizations
+revivalize
+revivalizes
+revolatilize
+revolatilizes
+revolutionizement
+revolutionizement's
+revolutionizements
+rhapsodize
+rhapsodized
+rhapsodizes
+rhapsodizing
+rhythmicize
+rhythmicizes
+rhythmizable
+rhythmizable's
+rhythmizables
+rhythmization
+rhythmization's
+rhythmizations
+rhythmize
+rhythmizes
+ridiculize
+ridiculizes
+ritualization
+ritualize
+ritualizes
+ritualizing
+rivaless
+rivalesses
+rivalize
+rivalizes
+robotization
+robotization's
+robotizations
+robotize
+robotizes
+roentgenize
+romanticization
+routinization
+routinization's
+routinizations
+routinize
+routinizes
+roweled
+roweling
+royalization
+royalization's
+royalizations
+royalize
+royalizes
+rubberization
+rubberize
+rubberizes
+rubberizing
+rubricize
+rubricizes
+ruffianize
+ruffianizes
+ruggedization
+ruggedize
+ruggedized
+ruggedizes
+ruggedizing
+rumormonger
+rumormonger's
+rumormongers
+ruralization
+ruralization's
+ruralizations
+ruralize
+ruralized
+ruralizes
+ruralizing
+russianization
+russianize
+rusticize
+rusticizes
+saberlike
+saberlike's
+saberlikes
+sabertooth
+sacralization
+sacralization's
+sacralizations
+sacramentize
+sacramentizes
+sailorizing
+sailorizing's
+sailorizings
+salinization
+salinize
+salinizes
+saltpeter
+saltpeter's
+saltpeters
+sandaled
+sandaling
+sanitization
+sapientize
+sapientizes
+satanize
+satanizes
+satinize
+satinizes
+satirizable
+satirizable's
+satirizables
+satirize
+satirized
+satirizer
+satirizers
+satirizing
+savagize
+savagizes
+saviorhood
+saviorhood's
+saviorhoods
+saviorship
+saviorship's
+saviorships
+savorilies
+savorily
+savorless
+savorlesses
+savorous
+scandaled
+scandaling
+scandalization
+scandalization's
+scandalizations
+scandalize
+scandalizer
+scandalizers
+scandalizes
+scenarioization
+scenarioization's
+scenarioizations
+scenarioize
+scenarioizes
+scenarization
+scenarization's
+scenarizations
+scenarize
+scenarizes
+scepterless
+scepterlesses
+schedulize
+schedulizes
+schematization
+schematization's
+schematizations
+schematize
+schematized
+schematizer
+schematizers
+schematizes
+schematizing
+schismatize
+schismatized
+schismatizes
+schismatizing
+sclerotization
+sclerotized
+scripturalize
+scripturalizes
+scrutinization
+scrutinization's
+scrutinizations
+seborrhea
+seborrheic
+sectarianization
+sectarianize
+sectarianized
+sectarianizes
+sectarianizing
+sectionalization
+sectionalization's
+sectionalizations
+sectionalize
+sectionalizes
+sectionalizing
+sectionize
+sectionizes
+secularize
+secularizer
+secularizers
+secularizes
+secularizing
+semicarbonize
+semicarbonizes
+semicivilization
+semicivilization's
+semicivilizations
+semicivilized
+semicivilized's
+semicivilizeds
+semifossilized
+semifossilized's
+semifossilizeds
+semihonor
+semihonor's
+semihonors
+semihumanized
+semihumanized's
+semihumanizeds
+semimercerized
+semimercerized's
+semimercerizeds
+semimineralized
+semimineralized's
+semimineralizeds
+seminarize
+seminarizes
+seminationalization
+seminationalization's
+seminationalizations
+semiorganized
+semiorganized's
+semiorganizeds
+semioxidized
+semioxidized's
+semioxidizeds
+semioxygenized
+semioxygenized's
+semioxygenizeds
+semiprofessionalized
+semiprofessionalized's
+semiprofessionalizeds
+semivulcanized
+semivulcanized's
+semivulcanizeds
+senilize
+senilizes
+sensationalize
+sensationalized
+sensationalizes
+sensationalizing
+sensitization
+sensitization's
+sensitizations
+sensitize
+sensitizer
+sensitizers
+sensitizes
+sensitizing
+sensize
+sensizes
+sensualization
+sensualization's
+sensualizations
+sensualize
+sensualized
+sensualizes
+sensualizing
+sentimentalization
+sentimentalization's
+sentimentalizations
+sentineled
+sentineling
+sepaled
+septicization
+septicization's
+septicizations
+sepulchralize
+sepulchralizes
+serenize
+serenizes
+serializability
+serializable
+sermonize
+sermonized
+sermonizer
+sermonizers
+sermonizes
+sermonizing
+serpentinization
+serpentinization's
+serpentinizations
+serpentinize
+serpentinizes
+serpentize
+serpentizes
+servilize
+servilizes
+severalize
+severalizes
+severization
+severization's
+severizations
+severize
+severizes
+sexualization
+sexualization's
+sexualizations
+sexualize
+sexualizes
+shepherdize
+shepherdizes
+siderealize
+siderealizes
+signalization
+signalize
+signalized
+signalizing
+signatories
+silicatization
+silicatization's
+silicatizations
+silicidize
+silicidizes
+siliconize
+siliconizes
+silverize
+silverizer
+silverizers
+silverizes
+similarize
+similarizes
+similize
+similizes
+simonize
+singularization
+singularization's
+singularizations
+singularize
+singularizes
+sinicize
+sinicized
+sinicizes
+sinicizing
+siphonless
+siphonlesses
+siphonlike
+siphonlike's
+siphonlikes
+siphonophore
+siphonostele
+siphonostelic
+siphonostely
+sirenize
+sirenizes
+sisterize
+sisterizes
+skeletonization
+skeletonization's
+skeletonizations
+skeletonize
+skeletonized
+skeletonizer
+skeletonizers
+skeletonizes
+skeletonizing
+skepticize
+skepticizes
+slenderize
+slenderized
+slenderizes
+slenderizing
+sloganize
+sloganizes
+snobsniveling
+soberize
+soberized
+soberizes
+soberizing
+sockdologizing
+solarization
+solarization's
+solarizations
+solarize
+solarized
+solarizes
+solarizing
+soldierize
+soldierizes
+solecize
+solecized
+solecizes
+solecizing
+solemnization
+solemnization's
+solemnizations
+solemnize
+solemnized
+solemnizer
+solemnizers
+solemnizes
+solemnizing
+soliloquization
+soliloquize
+soliloquized
+soliloquizer
+soliloquizers
+soliloquizes
+soliloquizing
+soliloquizing's
+soliloquizingly
+soliloquizings
+solmization
+solubilization
+solubilize
+solubilized
+solubilizes
+solubilizing
+solutize
+solutizer
+solutizers
+solutizes
+sonantized
+sonantized's
+sonantizeds
+sonnetize
+sonnetizes
+southernize
+southernizes
+sovietization
+sovietization's
+sovietizations
+sovietize
+sovietizes
+spatialization
+spatialization's
+spatializations
+spatialize
+spatializes
+specificize
+specificizes
+specimenize
+specimenizes
+specterlike
+specterlike's
+specterlikes
+spheroidize
+spheroidizes
+spiralization
+spiralization's
+spiralizations
+spiralize
+spiralizes
+spiritize
+spiritizes
+spiritualization
+spiritualization's
+spiritualizations
+spiritualize
+spiritualized
+spiritualizer
+spiritualizers
+spiritualizes
+spiritualizing
+spirochetal
+spirochete
+spirochete's
+spirochetes
+spirochetosis
+splenectomized
+stabilizable
+stallionize
+stallionizes
+stalwartize
+stalwartizes
+standardizable
+standardizable's
+standardizables
+stapedectomized
+statisticize
+statisticizes
+stencilize
+sterilizabilities
+sterilizability
+sterilizability's
+sterilizable
+sterilizable's
+sterilizables
+stigmatize
+stigmatizer
+stigmatizers
+stigmatizes
+stigmatizing
+strobilization
+structuralization
+structuralization's
+structuralizations
+structuralize
+structuralizes
+strychninization
+strychninization's
+strychninizations
+strychninize
+strychninizes
+stylize
+stylizer
+stylizers
+stylizes
+stylizing
+subarmor
+subarmor's
+subarmors
+subcenter
+suberization
+suberization's
+suberizations
+suberize
+suberized
+suberizes
+suberizing
+subflavor
+subflavor's
+subflavors
+subjectivization
+subjectivize
+subjectivizes
+sublimize
+sublimizes
+subminiaturization
+subminiaturize
+subminiaturized
+subminiaturizes
+subminiaturizing
+subpulverizer
+subpulverizer's
+subpulverizers
+subsidizable
+subsidizable's
+subsidizables
+subspecialize
+subspecializes
+subspecialties
+subspecialty
+subspecialty's
+substandardize
+substandardizes
+substantialize
+substantializes
+substantivize
+substantivizes
+subterraneanize
+subterraneanizes
+subtilization
+subtilization's
+subtilizations
+subtilize
+subtilizer
+subtilizers
+subtilizes
+subtotaled
+subtotaling
+suburbanize
+suburbanizes
+subvitalized
+subvitalized's
+subvitalizeds
+succorable
+succorable's
+succorables
+succorless
+succorlesses
+suggestionize
+suggestionizes
+sulfatize
+sulfatizes
+sulfurization
+sulfurization's
+sulfurizations
+sulfurize
+sulfurizes
+sulphurization
+sulphurization's
+sulphurizations
+sulphurize
+sulphurizes
+sultanize
+sultanizes
+summerize
+summerizes
+superacknowledgment
+superacknowledgment's
+superacknowledgments
+supercanonization
+supercanonization's
+supercanonizations
+supercarbonization
+supercarbonization's
+supercarbonizations
+supercarbonize
+supercarbonizes
+supercivilization
+supercivilization's
+supercivilizations
+supercivilized
+supercivilized's
+supercivilizeds
+superemphasize
+superemphasizes
+superficialize
+superficializes
+superhumanize
+superhumanizes
+supernaturalize
+supernaturalizes
+superorganization
+superorganization's
+superorganizations
+superorganize
+superorganizes
+supersensitization
+supersensitization's
+supersensitizations
+superspecialize
+superspecializes
+supersubtilized
+supersubtilized's
+supersubtilizeds
+supersulphurize
+supersulphurizes
+surgerize
+surgerizes
+sycophantize
+sycophantizes
+syllogize
+sylvanize
+sylvanizes
+symmetrization
+symmetrization's
+symmetrizations
+symmetrize
+symmetrized
+symmetrizes
+symmetrizing
+symptomize
+symptomizes
+synchronizable
+synchronizable's
+synchronizables
+syncretize
+syncretized
+syncretizes
+syncretizing
+syndicalize
+syndicalizes
+synesthesia
+synesthetic
+synonymize
+synonymizes
+synopsize
+synthesization
+synthesization's
+synthesizations
+systemizable
+systemizable's
+systemizables
+systemize
+systemizer
+systemizers
+systemizes
+taboret
+taborets
+tabularization
+tabularization's
+tabularizations
+tabularize
+tabularizes
+taffetized
+tailorization
+tailorization's
+tailorizations
+tailorize
+tailorizes
+tambura
+tandemize
+tandemizes
+tantalization
+tantalization's
+tantalizations
+tariffize
+tariffizes
+tartarization
+tartarization's
+tartarizations
+tartarize
+tartarized
+tartarizes
+tasseled
+tasseling
+tassels
+tavernize
+tavernizes
+teaseler
+teaselers
+teazeled
+teazeling
+technicalization
+technicalize
+technicalizes
+technologize
+teetotaled
+teetotaling
+telesthesia
+telesthetic
+tellurize
+tellurized
+tellurizes
+tellurizing
+templize
+templizes
+temporalize
+temporalized
+temporalizes
+temporalizing
+temporization
+temporization's
+temporizations
+tenderization
+tenderize
+tenderized
+tenderizer
+tenderizes
+tenderizing
+tendriled
+tenementization
+tenementization's
+tenementizations
+tenementize
+tenementizes
+terminalization
+terminalization's
+terminalizations
+terminalized
+terminalized's
+terminalizeds
+ternize
+ternizes
+terrestrialize
+terrestrializes
+territorialization
+territorialization's
+territorializations
+territorialize
+territorializes
+terrorization
+terrorization's
+terrorizations
+testimonialization
+testimonialization's
+testimonializations
+testimonialize
+testimonializer
+testimonializers
+testimonializes
+tetanization
+tetanize
+tetanized
+tetanizes
+tetanizing
+teutonize
+texturized
+theaterless
+theaterlesses
+theaterlike
+theaterlike's
+theaterlikes
+theatricalization
+theatricalization's
+theatricalizations
+theatricalize
+theatricalized
+theatricalizes
+theatricalizing
+theatricize
+theatricizes
+theologization
+theologize
+theologized
+theologizer
+theologizes
+theologizing
+thermoanesthesia
+thermoanesthesia's
+thermoanesthesias
+thermometerize
+thermometerizes
+thermopolymerization
+thermopolymerization's
+thermopolymerizations
+thermosiphon
+thermosiphon's
+thermosiphons
+thronize
+thronizes
+thymectomize
+thyroidectomized
+thyroidization
+thyroidization's
+thyroidizations
+tinselier
+tinseliest
+tittuped
+tittuping
+tittupy
+tonicize
+tonicizes
+torporize
+torporizes
+totalitarianize
+totalization
+totalization's
+totalizations
+totalizator
+totalize
+totalized
+totalizer
+totalizers
+totalizes
+totalizing
+totemization
+totemization's
+totemizations
+tourize
+tourizes
+tractorization
+tractorization's
+tractorizations
+tractorize
+tractorizes
+traditionalize
+traditionalizes
+traditionize
+traditionizes
+tragicize
+tragicizes
+traitorize
+traitorizes
+trammeled
+trammeler
+trammelers
+trammeling
+tranquilization
+tranquilization's
+tranquilizations
+tranquillization
+tranquillize
+tranquillized
+tranquillizer
+tranquillizers
+tranquillizes
+tranquillizing
+transcendentalize
+transcendentalizes
+transistorization
+transparentize
+transparentizes
+traumatization
+traumatize
+traumatized
+traumatizes
+traumatizing
+triangularize
+triangularized
+triangularizes
+triangularizing
+trichinize
+trillionize
+trillionizes
+trimerization
+trimerization's
+trimerizations
+trivialization
+tropicalization
+tropicalization's
+tropicalizations
+tropicalize
+tropicalized
+tropicalizes
+tropicalizing
+troweled
+troweling
+trypsinize
+trypsinizes
+tuberculinization
+tuberculinization's
+tuberculinizations
+tuberculinize
+tuberculinizes
+tuberization
+tuberization's
+tuberizations
+tuberize
+tuberizes
+tubulization
+tubulization's
+tubulizations
+tutorization
+tutorization's
+tutorizations
+tutorize
+tutorizes
+ultracentralizer
+ultracentralizer's
+ultracentralizers
+ultrahonorable
+ultrahonorable's
+ultrahonorables
+ultraspecialization
+ultraspecialization's
+ultraspecializations
+ultrastandardization
+ultrastandardization's
+ultrastandardizations
+unagonize
+unalcoholized
+unalcoholized's
+unalcoholizeds
+unanimalized
+unanimalized's
+unanimalizeds
+unantagonizable
+unantagonizable's
+unantagonizables
+unapostatized
+unapostatized's
+unapostatizeds
+unauthorize
+unbaptize
+unbrutalize
+unbrutize
+unbrutizes
+uncanonize
+uncanonizes
+uncantonized
+uncantonized's
+uncantonizeds
+uncatechized
+uncatechized's
+uncatechizedness
+uncatechizeds
+uncatholicize
+uncatholicizes
+uncelestialized
+uncelestialized's
+uncelestializeds
+unchloridized
+unchloridized's
+unchloridizeds
+unchristianize
+unchristianized
+unchristianizes
+uncircularized
+uncircularized's
+uncircularizeds
+uncivilizable
+uncivilizable's
+uncivilizables
+uncivilize
+unclericalize
+unclericalizes
+uncolonize
+uncolorable
+uncolorable's
+uncolorables
+uncolorablies
+uncolorably
+unconventionalize
+unconventionalizes
+uncriticizable
+uncriticizable's
+uncriticizables
+uncrystallizabilities
+uncrystallizability
+uncrystallizability's
+uncrystallizable
+uncrystallizable's
+uncrystallizables
+uncurricularized
+uncurricularized's
+uncurricularizeds
+undefense
+undefense's
+undemagnetizable
+undemagnetizable's
+undemagnetizables
+undemocratize
+undenominationalize
+undenominationalizes
+undercapitalization
+undercapitalization's
+undercapitalizations
+undercapitalize
+undercapitalized
+undercapitalizes
+undercapitalizing
+undercolor
+undercolor's
+undercolored
+undercoloring
+undercolorings
+undercolors
+underemphasize
+underemphasized
+underemphasizes
+underemphasizing
+underlaborer
+underlaborer's
+underlaborers
+underorganization
+underorganization's
+underorganizations
+underoxidize
+underoxidizes
+underrealize
+underrealizes
+undersavior
+undersavior's
+undersaviors
+underutilize
+undervitalized
+undervitalized's
+undervitalizeds
+undiphthongize
+undiphthongizes
+undiscolored
+undiscolored's
+undramatizable
+undramatizable's
+undramatizables
+undualize
+undualizes
+unenamored
+unenamored's
+unenamoreds
+unequalize
+unevangelized
+unevangelized's
+unevangelizeds
+unfavoring
+unfavoring's
+unfertilizable
+unfertilizable's
+unfertilizables
+unfeudalize
+unfeudalized
+unfeudalizes
+ungalvanized
+ungalvanized's
+ungalvanizeds
+ungelatinizable
+ungelatinizable's
+ungelatinizables
+ungelatinized
+ungelatinized's
+ungelatinizeds
+ungentilize
+ungentilizes
+ungentlemanize
+ungentlemanizes
+ungospelized
+ungospelized's
+ungospelizeds
+ungraphitized
+ungraphitized's
+ungraphitizeds
+unharbor
+unharbor's
+unharbored
+unharmonize
+unheroize
+unheroizes
+unhonorable
+unhonorable's
+unhouseled
+unhypnotizable
+unhypnotizable's
+unhypnotizables
+unhypnotize
+unhypnotizes
+uniformization
+uniformization's
+uniformizations
+uniformize
+uniformizes
+unilateralization
+unilateralization's
+unilateralizations
+unilateralize
+unilateralizes
+unimmortalize
+unimmortalizes
+unindividualize
+uninitializable
+unionization's
+unionizations
+unitization
+unitize
+unitizes
+unitizing
+universalization
+universalization's
+universalizations
+unkenneled
+unkenneling
+unlabialize
+unlabializes
+unlaborable
+unlaborable's
+unlaborables
+unlaboring
+unlaboring's
+unlocalizable
+unlocalizable's
+unlocalizables
+unlocalize
+unmechanize
+unmediatized
+unmediatized's
+unmediatizeds
+unmercerized
+unmercerized's
+unmercerizeds
+unmesmerize
+unmesmerizes
+unmetalized
+unmetalized's
+unmetalizeds
+unmethodized
+unmethodized's
+unmethodizeds
+unmethodizing
+unmethodizing's
+unmethodizings
+unmissionized
+unmissionized's
+unmissionizeds
+unmodernize
+unmonopolize
+unmonopolizing
+unmonopolizings
+unmoralize
+unmoralized
+unmoralizes
+unmoralizing
+unmoralizings
+unmunicipalized
+unmunicipalized's
+unmunicipalizeds
+unmutualized
+unmutualized's
+unmutualizeds
+unmysticize
+unmysticizes
+unnaturalizable
+unnaturalizable's
+unnaturalizables
+unnaturalize
+unnaturalizes
+unneighborlike
+unneighborlike's
+unneighborlikes
+unnitrogenized
+unnitrogenized's
+unnitrogenizeds
+unnormalize
+unnormalizing
+unoptimize
+unoptimizing
+unoxidizable
+unoxidizable's
+unoxidizables
+unoxygenized
+unoxygenized's
+unoxygenizeds
+unpaganize
+unpaganizes
+unparagonized
+unparagonized's
+unparagonizeds
+unparalyzed
+unparalyzed's
+unparalyzeds
+unparticularized
+unparticularized's
+unparticularizeds
+unparticularizing
+unparticularizing's
+unparticularizings
+unpatronizable
+unpatronizable's
+unpatronizables
+unpauperized
+unpauperized's
+unpauperizeds
+unphilosophize
+unphosphatized
+unphosphatized's
+unphosphatizeds
+unplagiarized
+unplagiarized's
+unplagiarizeds
+unpoeticized
+unpoeticized's
+unpoeticizeds
+unpoetize
+unpoetized
+unpoetizes
+unpolarizable
+unpolarizable's
+unpolarizables
+unpolymerized
+unpolymerized's
+unpolymerizeds
+unpopularize
+unprotestantize
+unprotestantizes
+unpulverize
+unradicalize
+unradicalizes
+unrancored
+unrancored's
+unrancoreds
+unraveler
+unravelers
+unrealizable
+unrealizable's
+unrealizables
+unrealize
+unrealizing
+unrealizings
+unreconnoitered
+unreconnoitered's
+unreconnoitereds
+unrevelationize
+unrevelationizes
+unromanticized
+unromanticized's
+unromanticizeds
+unroyalized
+unroyalized's
+unroyalizeds
+unsatirize
+unsatirized
+unsavorilies
+unsavorily
+unscandalize
+unscandalizes
+unscepter
+unscepter's
+unsceptered
+unschematized
+unschematized's
+unschematizeds
+unsectarianize
+unsectarianizes
+unsecularize
+unsecularizes
+unsensitize
+unsensitizes
+unsensualize
+unsensualized
+unsensualizes
+unsentimentalize
+unsepulcher
+unsepulchered
+unsignalized
+unsignalized's
+unsignalizeds
+unsiphon
+unsiphon's
+unsolemnize
+unsolemnized
+unsolemnizes
+unspecterlike
+unspecterlike's
+unspecterlikes
+unspiritualize
+unspiritualized
+unspiritualizes
+unstoicize
+unstoicizes
+unsubstantialize
+unsubstantializes
+unsuccorable
+unsuccorable's
+unsuccorables
+unsulphurized
+unsulphurized's
+unsulphurizeds
+unsupernaturalize
+unsupernaturalized
+unsupernaturalizes
+unsymmetrized
+unsymmetrized's
+unsymmetrizeds
+unsympathizabilities
+unsympathizability
+unsympathizability's
+unsympathizable
+unsympathizable's
+unsympathizables
+unsystemizable
+unsystemizable's
+unsystemizables
+untantalizing
+untantalizing's
+untantalizings
+untartarized
+untartarized's
+untartarizeds
+untechnicalize
+untechnicalizes
+untemporizing
+untemporizing's
+untheorizable
+untheorizable's
+untheorizables
+unutilizable
+unutilizable's
+unutilizables
+unvaporized
+unvaporized's
+unvaporizeds
+unvectorizable
+unvitalized
+unvitalized's
+unvitalizeds
+unvitriolized
+unvitriolized's
+unvitriolizeds
+unvolatilize
+unvolatilized
+unvolatilizes
+unvulgarize
+unvulgarized
+unvulgarizes
+unwesternized
+unwesternized's
+unwesternizeds
+unwomanize
+urbanize
+urbanizes
+urbanizing
+utilitarianize
+utilitarianizes
+utilizabilities
+utilizability
+utilizable
+utilizable's
+utilizables
+utopianizer
+utopianizer's
+utopianizers
+vaccinization
+vaccinization's
+vaccinizations
+vacuumize
+vacuumized
+vacuumizes
+vacuumizing
+vagabondize
+vagabondizer
+vagabondizers
+vagabondizes
+vagrantize
+vagrantizes
+valorization
+valorization's
+valorizations
+valorize
+valorized
+valorizes
+valorizing
+vampirize
+vampirizes
+vandalization
+vandalization's
+vandalizations
+vaporabilities
+vaporability
+vaporability's
+vaporable
+vaporable's
+vaporables
+vaporier
+vaporiest
+vaporish
+vaporishness
+vaporizable
+vaporizable's
+vaporizables
+vaporize
+vaporized
+vaporizer
+vaporizers
+vaporizes
+vaporizing
+vaporless
+vaporlesses
+vaporlike
+vaporlike's
+vaporlikes
+vapory
+vascularization
+vascularization's
+vascularizations
+vascularize
+vascularized
+vascularizes
+vascularizing
+vassalization
+vassalize
+vassalized
+vassalizes
+vassalizing
+vectorizable
+vectorize
+vectorized
+vectorizer
+vectorizers
+vectorizes
+vegetablize
+vegetablizes
+velarization
+venalization
+venalization's
+venalizations
+venalize
+venalizes
+venomization
+venomization's
+venomizations
+venomize
+venomizes
+ventriloquize
+ventriloquized
+ventriloquizes
+ventriloquizing
+verbalization
+verbalization's
+verbalizations
+vermeiled
+vermeiles
+vermeiling
+vermilionize
+vermilionizes
+vernacularization
+vernacularization's
+vernacularizations
+vernacularize
+vernacularizes
+vernalization
+vernalization's
+vernalizations
+vernalize
+vernalized
+vernalizes
+vernalizing
+versicolor
+versicolored
+versionize
+versionizes
+vestryize
+vestryizes
+veteranize
+veteranizes
+vialed
+vialing
+victimizable
+victimizable's
+victimizables
+victimization
+victimization's
+victimizations
+victualage
+victualed
+victualess
+victualing
+vigorless
+virtualize
+virtualizes
+visionize
+visionizes
+vitalization
+vitalization's
+vitalizations
+vitalize
+vitalized
+vitalizer
+vitalizers
+vitalizes
+vitalizing
+vitalizing's
+vitalizingly
+vitalizings
+vitaminization
+vitaminize
+vitaminizes
+vitriolizable
+vitriolizable's
+vitriolizables
+vitriolization
+vitriolization's
+vitriolizations
+vitriolize
+vitriolizer
+vitriolizers
+vitriolizes
+vocationalization
+vocationalization's
+vocationalizations
+vocationalize
+vocationalizes
+volatilizable
+volatilizable's
+volatilizables
+volatilize
+volatilized
+volatilizer
+volatilizers
+volatilizes
+volatilizing
+voltize
+voltizes
+vowelization
+vowelization's
+vowelizations
+vowelize
+vowelized
+vowelizes
+vowelizing
+vulcanizable
+vulcanizable's
+vulcanizables
+vulcanizate
+vulcanization
+vulcanization's
+vulcanizations
+vulcanize
+vulcanizer
+vulcanizers
+vulcanizes
+vulcanizing
+vulgarization
+vulgarization's
+vulgarizations
+vulgarize
+vulgarized
+vulgarizer
+vulgarizers
+vulgarizes
+vulgarizing
+weeviled
+westernization
+westernization's
+westernizations
+westernize
+westernized
+westernizes
+westernizing
+winterization
+winterization's
+winterizations
+winterize
+winterized
+winterizes
+winterizing
+womanization
+womanization's
+womanizations
+woodcockize
+woodcockizes
+woolenization
+woolenization's
+woolenizations
+woolenize
+woolenizes
+zeroize
+zeroized
+zeroizes
+zeroizing
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.0 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.0
new file mode 100644
index 00000000000..4c1d2cc1f08
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.0
@@ -0,0 +1,1899 @@
+acclimatisation
+acclimatisations
+acclimatised
+accoutrement
+accoutrement's
+accoutrements
+acknowledgement
+acknowledgement's
+acknowledgements
+actualisation
+actualisation's
+actualisations
+aerofoil
+aerofoils
+aeroplane
+aeroplane's
+aeroplanes
+aerosolise
+aerosolised
+aesthetic
+aesthetic's
+aesthetically
+aesthetics
+agonise
+agonised
+agonisedly
+agoniser
+agonisers
+agonises
+agonising
+agonisinglies
+agonisingly
+alphabetise
+alphabetised
+alphabetiser
+alphabetisers
+alphabetises
+alphabetising
+aluminium
+aluminium's
+aluminiums
+amenorrhoea
+amorist
+amorist's
+amorists
+amortise
+amortised
+amortises
+amortising
+amphitheatre
+amphitheatre's
+amphitheatres
+anaemia
+anaemia's
+anaemias
+anaemic
+anaemics
+anaesthesia
+anaesthesia's
+anaesthesias
+anaesthetic
+anaesthetic's
+anaesthetically
+anaesthetics
+anaesthetise
+anaesthetised
+anaesthetiser
+anaesthetisers
+anaesthetises
+anaesthetising
+analogue
+analogue's
+analogues
+analysable
+analyse
+analysed
+analyser
+analysers
+analyses
+analysing
+anodise
+anodised
+anodises
+anodising
+antagonise
+antagonised
+antagoniser
+antagonisers
+antagonises
+antagonising
+apologise
+apologised
+apologiser
+apologisers
+apologises
+apologising
+appal
+appals
+apparelled
+appetiser
+appetising
+appetisingly
+arbour
+arbour's
+arboured
+arbours
+archaise
+archaised
+archaiser
+archaisers
+archaises
+archaising
+ardour
+ardour's
+ardours
+arithmetise
+arithmetised
+arithmetises
+armour
+armour's
+armoured
+armourer
+armourer's
+armourers
+armouried
+armouries
+armouring
+armours
+armoury
+armoury's
+atomisation
+atomisation's
+atomisations
+atomise
+atomised
+atomiser
+atomisers
+atomises
+atomising
+authorisation
+authorisation's
+authorisations
+authorise
+authorised
+authoriser
+authorisers
+authorises
+authorising
+autodialler
+axiomatisation
+axiomatisation's
+axiomatisations
+axiomatise
+axiomatised
+axiomatises
+axiomatising
+balkanise
+balkanised
+balkanising
+baptise
+baptised
+baptiser
+baptisers
+baptises
+baptising
+barrelled
+barrelling
+bastardise
+bastardised
+bastardises
+bastardising
+bedevilled
+bedevilling
+behaviour
+behaviour's
+behavioural
+behaviourally
+behavioured
+behaviourism
+behaviourism's
+behaviourisms
+behaviouristic
+behaviouristics
+behaviours
+behove
+behoved
+behoves
+behoving
+behoving's
+behovingly
+behovings
+belabour
+belabour's
+belaboured
+belabouring
+belabours
+bevelled
+bevelling
+bevellings
+bowdlerise
+bowdlerised
+bowdleriser
+bowdlerises
+bowdlerising
+brutalise
+brutalised
+brutalises
+brutalising
+bushelled
+bushelling
+bushellings
+calibre
+calibres
+canalled
+canalling
+cancelled
+canceller
+cancelling
+candour
+candour's
+candours
+cannibalise
+cannibalised
+cannibalises
+cannibalising
+canonicalisation
+canonicalise
+canonicalised
+canonicalises
+canonicalising
+capitalisation
+capitalisation's
+capitalisations
+capitalise
+capitalised
+capitaliser
+capitalisers
+capitalises
+capitalising
+carbonisation
+carbonisation's
+carbonisations
+carbonise
+carbonised
+carboniser
+carbonisers
+carbonises
+carbonising
+catalogue
+catalogue's
+catalogued
+cataloguer
+catalogues
+cataloguing
+categorisation
+categorisation's
+categorisations
+categorise
+categorised
+categoriser
+categorisers
+categorises
+categorising
+centimetre
+centimetre's
+centimetres
+centralisation
+centralisation's
+centralisations
+centralise
+centralised
+centraliser
+centralisers
+centralises
+centralising
+centre
+centre's
+centred
+centrepiece
+centrepiece's
+centrepieces
+centres
+centring
+channelled
+channeller
+channeller's
+channellers
+channelling
+characterisable
+characterisables
+characterisation
+characterisation's
+characterisations
+characterise
+characterised
+characteriser
+characterisers
+characterises
+characterising
+cheque
+cheque's
+chequebook
+chequebook's
+chequebooks
+chequer
+chequered
+chequers
+cheques
+chiselled
+chiseller
+chisellers
+civilisation
+civilisation's
+civilisations
+civilise
+civilised
+civilisedness
+civiliser
+civilisers
+civilises
+civilising
+clamour
+clamoured
+clamourer
+clamourer's
+clamourers
+clamouring
+clamours
+cognisance
+cognisant
+colonisation
+colonisation's
+colonisations
+colonise
+colonised
+coloniser
+colonisers
+colonises
+colonising
+colour
+colour's
+coloured
+coloureds
+colourer
+colourer's
+colourers
+colourful
+colourfully
+colourfulness
+colouring
+colourings
+colourless
+colourlessly
+colourlessness
+colours
+columnise
+columnised
+columnises
+columnising
+compartmentalise
+compartmentalised
+compartmentalises
+compartmentalising
+computerise
+computerised
+computerises
+computerising
+conceptualisation
+conceptualisation's
+conceptualisations
+conceptualise
+conceptualised
+conceptualiser
+conceptualises
+conceptualising
+counselled
+counselling
+counsellor
+counsellor's
+counsellors
+criticise
+criticised
+criticiser
+criticisers
+criticises
+criticising
+criticisinglies
+criticisingly
+crystallise
+crystallised
+crystalliser
+crystallisers
+crystallises
+crystallising
+customisable
+customisation
+customisation's
+customisations
+customise
+customised
+customiser
+customisers
+customises
+customising
+decentralisation
+decentralisation's
+decentralisations
+decentralised
+defence
+defence's
+defenced
+defenceless
+defencelessly
+defencelessness
+defences
+defencing
+defencive
+demeanour
+demeanour's
+demeanours
+demoralise
+demoralised
+demoraliser
+demoralisers
+demoralises
+demoralising
+demoralisingly
+dialled
+dialler
+diallers
+dialling
+diallings
+dichotomise
+dichotomised
+dichotomises
+dichotomising
+digitise
+digitised
+digitiser
+digitiser's
+digitisers
+digitises
+digitising
+dishonour
+dishonoured
+dishonourer
+dishonourer's
+dishonourers
+dishonouring
+dishonours
+disorganised
+draught
+draught's
+draughts
+draughtsman
+duelled
+dueller
+duellers
+duelling
+duellings
+economise
+economised
+economiser
+economisers
+economises
+economising
+editorialise
+editorialised
+editorialiser
+editorialises
+editorialising
+enamelled
+enameller
+enamellers
+enamelling
+enamellings
+encyclopaedia
+encyclopaedia's
+encyclopaedias
+endeavour
+endeavoured
+endeavourer
+endeavourer's
+endeavourers
+endeavouring
+endeavours
+enrol
+enrolment
+enrolment's
+enrolments
+enrols
+epitomise
+epitomised
+epitomiser
+epitomisers
+epitomises
+epitomising
+equalisation
+equalisation's
+equalisations
+equalise
+equalised
+equaliser
+equaliser's
+equalisers
+equalises
+equalising
+equalisings
+equalled
+equalling
+eviller
+evillest
+factorisation
+factorisation's
+factorisations
+familiarisation
+familiarisation's
+familiarisations
+familiarise
+familiarised
+familiariser
+familiarisers
+familiarises
+familiarising
+familiarisingly
+fantasise
+fantasised
+fantasiser
+fantasises
+fantasising
+favour
+favourable
+favourableness
+favourables
+favourably
+favoured
+favoured's
+favouredly
+favouredness
+favoureds
+favourer
+favourer's
+favourers
+favouring
+favouring's
+favouringly
+favourings
+favourite
+favourite's
+favourites
+favours
+fertilisation
+fertilisation's
+fertilisations
+fertilise
+fertilised
+fertiliser
+fertilisers
+fertilises
+fertilising
+fervour
+fervour's
+fervours
+fibre
+fibre's
+fibred
+fibreglass
+fibres
+finalisation
+finalisations
+finalise
+finalised
+finalises
+finalising
+flavour
+flavour's
+flavoured
+flavourer
+flavourer's
+flavourers
+flavouring
+flavourings
+flavours
+formalisation
+formalisation's
+formalisations
+formalise
+formalised
+formaliser
+formalisers
+formalises
+formalising
+fuelled
+fueller
+fuellers
+fuelling
+fulfil
+fulfilment
+fulfilment's
+fulfilments
+fulfils
+funnelled
+funnelling
+gaol
+generalisation
+generalisation's
+generalisations
+generalise
+generalised
+generaliser
+generalisers
+generalises
+generalising
+glamorise
+glamorised
+glamoriser
+glamorisers
+glamorises
+glamorising
+gospeller
+gospellers
+gossipped
+gossipping
+gramme
+gramme's
+grammes
+gravelled
+gravelling
+grovelled
+groveller
+grovellers
+grovelling
+grovellingly
+harbour
+harbour's
+harboured
+harbourer
+harbourer's
+harbourers
+harbouring
+harbours
+harmonise
+harmonised
+harmoniser
+harmonisers
+harmonises
+harmonising
+honour
+honourable
+honourableness
+honourables
+honourablies
+honourably
+honoured
+honourer
+honourer's
+honourers
+honouring
+honours
+hospitalise
+hospitalised
+hospitalises
+hospitalising
+humour
+humour's
+humoured
+humourer
+humourers
+humouring
+humours
+hypothesise
+hypothesised
+hypothesiser
+hypothesisers
+hypothesises
+hypothesising
+idealisation
+idealisation's
+idealisations
+idealise
+idealised
+idealiser
+idealisers
+idealises
+idealising
+imperilled
+incognisance
+incognisant
+individualise
+individualised
+individualiser
+individualisers
+individualises
+individualising
+individualisingly
+industrialisation
+industrialisation's
+industrialisations
+informalises
+initialisation
+initialisation's
+initialisations
+initialise
+initialised
+initialiser
+initialisers
+initialises
+initialising
+initialled
+initialler
+initialling
+institutionalise
+institutionalised
+institutionalises
+institutionalising
+internalisation
+internalisation's
+internalisations
+internalise
+internalised
+internalises
+internalising
+italicise
+italicised
+italicises
+italicising
+itemisation
+itemisation's
+itemisations
+itemise
+itemised
+itemiser
+itemisers
+itemises
+itemising
+jeopardise
+jeopardised
+jeopardises
+jeopardising
+jewelled
+jeweller
+jewellers
+jewelling
+journalise
+journalised
+journaliser
+journalisers
+journalises
+journalising
+judgement
+judgement's
+judgements
+kidnapped
+kidnapper
+kidnapper's
+kidnappers
+kidnapping
+kidnapping's
+kidnappings
+kilogramme
+kilogramme's
+kilogrammes
+kilometre
+kilometre's
+kilometres
+labelled
+labeller
+labeller's
+labellers
+labelling
+labour
+laboured
+laboured's
+labouredly
+labouredness
+labourer
+labourer's
+labourers
+labouring
+labouring's
+labouringly
+labourings
+labours
+laurelled
+legalisation
+legalisation's
+legalisations
+legalise
+legalised
+legalises
+legalising
+levelled
+leveller
+levellers
+levellest
+levelling
+liberalise
+liberalised
+liberaliser
+liberalisers
+liberalises
+liberalising
+licence
+licence's
+licences
+linearisable
+linearise
+linearised
+linearises
+linearising
+linearision
+litre
+litres
+localisation
+localisation's
+localisations
+localise
+localised
+localiser
+localisers
+localises
+localising
+lustre
+lustred
+lustres
+lustring
+magnetisation
+magnetisation's
+magnetisations
+manoeuvre
+manoeuvred
+manoeuvrer
+manoeuvres
+manoeuvring
+marvelled
+marvelling
+marvellous
+marvellously
+marvellousness
+materialise
+materialised
+materialiser
+materialisers
+materialises
+materialising
+maximise
+maximised
+maximiser
+maximisers
+maximises
+maximising
+mechanisation
+mechanisation's
+mechanisations
+mechanise
+mechanised
+mechaniser
+mechanisers
+mechanises
+mechanising
+medalled
+medalling
+mediaeval
+mediaeval's
+mediaevally
+mediaevals
+memorisation
+memorisation's
+memorisations
+memorise
+memorised
+memoriser
+memorisers
+memorises
+memorising
+metalled
+metalling
+metallisation
+metallisation's
+metallisations
+metre
+metre's
+metred
+metres
+metring
+millimetre
+millimetre's
+millimetres
+miniaturisation
+miniaturisations
+miniaturise
+miniaturised
+miniaturises
+miniaturising
+minimisation
+minimisation's
+minimisations
+minimise
+minimised
+minimiser
+minimisers
+minimises
+minimising
+misjudgement
+mitre
+mitred
+mitrer
+mitring
+modelled
+modeller
+modellers
+modelling
+modellings
+modernise
+modernised
+moderniser
+modernisers
+modernises
+modernising
+modularisation
+modularise
+modularised
+modularises
+modularising
+motorise
+motorised
+motorises
+motorising
+moustache
+moustached
+moustaches
+multilevelled
+nationalisation
+nationalisation's
+nationalisations
+nationalise
+nationalised
+nationaliser
+nationalisers
+nationalises
+nationalising
+naturalisation
+naturalisation's
+naturalisations
+neighbour
+neighbour's
+neighboured
+neighbourer
+neighbourer's
+neighbourers
+neighbourhood
+neighbourhood's
+neighbourhoods
+neighbouring
+neighbourings
+neighbourliness
+neighbourly
+neighbours
+neutralise
+neutralised
+neutraliser
+neutralisers
+neutralises
+neutralising
+nickelled
+nickelling
+normalisation
+normalisation's
+normalisations
+normalise
+normalised
+normaliser
+normalisers
+normalises
+normalising
+notarise
+notarised
+notarises
+notarising
+nought
+noughts
+odour
+odour's
+odoured
+odours
+offence
+offence's
+offences
+offencive
+optimisation
+optimisation's
+optimisations
+optimise
+optimised
+optimiser
+optimiser's
+optimisers
+optimises
+optimising
+organisable
+organisables
+organisation
+organisation's
+organisational
+organisational's
+organisationally
+organisationals
+organisations
+organise
+organised
+organiser
+organisers
+organises
+organising
+oxidise
+oxidised
+oxidiser
+oxidisers
+oxidises
+oxidising
+oxidisings
+panelled
+panelling
+panellings
+parallelisation
+parallelisation's
+parallelisations
+parallelise
+parallelised
+paralleliser
+parallelisers
+parallelises
+parallelising
+parallelled
+parallelling
+paralyse
+paralysed
+paralysedlies
+paralysedly
+paralyser
+paralyser's
+paralysers
+paralyses
+paralysing
+paralysinglies
+paralysingly
+parameterisable
+parameterisation
+parameterisation's
+parameterisations
+parameterise
+parameterised
+parameterises
+parameterising
+parametrisable
+parametrisation
+parametrisation's
+parametrisations
+parametrise
+parametrised
+parametrises
+parametrising
+parcelled
+parcelling
+parenthesised
+parlour
+parlour's
+parlours
+patronise
+patronised
+patroniser
+patronisers
+patronises
+patronising
+patronising's
+patronisingly
+patronisings
+penalise
+penalised
+penalises
+penalising
+pencilled
+pencilling
+pencillings
+personalisation
+personalisation's
+personalisations
+personalise
+personalised
+personalises
+personalising
+petalled
+philosophise
+philosophised
+philosophiser
+philosophisers
+philosophises
+philosophising
+plough
+ploughed
+plougher
+ploughes
+ploughing
+ploughman
+pluralisation
+pluralisation's
+pluralisations
+pluralise
+pluralised
+pluraliser
+pluralisers
+pluralises
+pluralising
+polarisation
+polarisation's
+polarisations
+popularisation
+popularisation's
+popularisations
+popularise
+popularised
+populariser
+popularisers
+popularises
+popularising
+practician
+practise
+practised
+practiser
+practises
+practising
+preinitialise
+preinitialised
+preinitialises
+preinitialising
+pressurise
+pressurised
+pressuriser
+pressurisers
+pressurises
+pressurising
+pretence
+pretences
+pretencion
+pretencions
+pretencive
+prioritise
+prioritised
+prioritiser
+prioritisers
+prioritises
+prioritising
+prioritisings
+productise
+productised
+productiser
+productisers
+productises
+productising
+programme
+programme's
+programmes
+proselytise
+proselytised
+proselytiser
+proselytisers
+proselytises
+proselytising
+publicise
+publicised
+publicises
+publicising
+pulverise
+pulverised
+pulveriser
+pulverisers
+pulverises
+pulverising
+pyjama
+pyjama's
+pyjamaed
+pyjamas
+quantisation
+quantisation's
+quantisations
+quantise
+quantised
+quantiser
+quantiser's
+quantisers
+quantises
+quantising
+quarrelled
+quarreller
+quarrellers
+quarrelling
+queueing
+randomise
+randomised
+randomiser
+randomises
+randomising
+rationalise
+rationalised
+rationaliser
+rationalisers
+rationalises
+rationalising
+reacclimatisation
+reacclimatisation's
+reacclimatisations
+reacknowledgement
+reacknowledgement's
+reacknowledgements
+reactualisation
+reactualisation's
+reactualisations
+realisable
+realisableness
+realisables
+realisablies
+realisably
+realisation
+realisation's
+realisations
+realise
+realised
+realiser
+realisers
+realises
+realising
+realising's
+realisingly
+realisings
+reanalyse
+reanalysed
+reanalyser
+reanalysers
+reanalyses
+reanalysing
+reapologises
+reauthorisation
+reauthorisation's
+reauthorisations
+reauthorises
+rebrutalises
+recapitalisation
+recapitalisation's
+recapitalisations
+recapitalised
+recapitalises
+recarbonisation
+recarbonisation's
+recarbonisations
+recarboniser
+recarbonisers
+recarbonises
+recategorised
+recentralisation
+recentralisation's
+recentralisations
+recentralises
+recivilisation
+recivilisation's
+recivilisations
+recivilises
+recognisability
+recognisable
+recognisably
+recognisance
+recognise
+recognised
+recognisedlies
+recognisedly
+recogniser
+recognisers
+recognises
+recognising
+recognisinglies
+recognisingly
+recolonisation
+recolonisation's
+recolonisations
+recolonises
+recoloured
+recolours
+reconceptualising
+recriticises
+recrystallised
+recrystallises
+redialled
+refavours
+refertilisation
+refertilisation's
+refertilisations
+refertilises
+refuelled
+refuelling
+reharmonises
+rehonours
+reinitialise
+reinitialised
+reinitialises
+reinitialising
+reitemises
+relabelled
+relabeller
+relabellers
+relabelling
+remagnetisation
+remagnetisation's
+remagnetisations
+rematerialises
+rememorises
+remodelled
+remodelling
+renationalised
+renationalises
+renormalised
+renormalises
+reorganisation
+reorganisation's
+reorganisations
+reorganise
+reorganised
+reorganiser
+reorganisers
+reorganises
+reorganising
+reoxidises
+repatronises
+reprogramme
+reprogrammes
+repulverises
+resepulchres
+restandardisation
+restandardisation's
+restandardisations
+restandardises
+resterilises
+resymbolisation
+resymbolisation's
+resymbolisations
+resymbolises
+resynchronisations
+resynchronised
+resynchronises
+resynthesises
+retranquilises
+reutilisation
+reutilises
+revelled
+reveller
+revellers
+revelling
+revellings
+revisualises
+revolutionise
+revolutionised
+revolutioniser
+revolutionisers
+revolutionises
+revolutionising
+rigour
+rigour's
+rigours
+rivalled
+rivalling
+rouble
+rouble's
+roubles
+routeing
+rumour
+rumour's
+rumoured
+rumourer
+rumourer's
+rumourers
+rumouring
+rumours
+sabre
+sabre's
+sabred
+sabres
+sabring
+sanitise
+sanitised
+sanitiser
+sanitises
+sanitising
+saviour
+saviour's
+saviours
+savour
+savoured
+savourer
+savourer's
+savourers
+savourier
+savouries
+savouriest
+savouriness
+savouring
+savouringlies
+savouringly
+savours
+savoury
+savoury's
+sceptre
+sceptre's
+sceptred
+sceptres
+sceptring
+scrutinise
+scrutinised
+scrutiniser
+scrutinisers
+scrutinises
+scrutinising
+scrutinisinglies
+scrutinisingly
+sepulchre
+sepulchre's
+sepulchred
+sepulchres
+sequentialise
+sequentialised
+sequentialises
+sequentialising
+serialisation
+serialisation's
+serialisations
+serialise
+serialised
+serialises
+serialising
+shovelled
+shoveller
+shovellers
+shovelling
+shrivelled
+shrivelling
+signalled
+signaller
+signallers
+signalling
+socialise
+socialised
+socialiser
+socialises
+socialising
+specialisation
+specialisation's
+specialisations
+specialise
+specialised
+specialiser
+specialisers
+specialises
+specialising
+specialities
+speciality
+speciality's
+spectre
+spectre's
+spectred
+spectres
+spiralled
+spiralling
+splendour
+splendour's
+splendours
+squirrelled
+squirrelling
+stabilise
+stabilised
+stabiliser
+stabilisers
+stabilises
+stabilising
+standardisation
+standardisation's
+standardisations
+standardise
+standardised
+standardiser
+standardisers
+standardises
+standardising
+stencilled
+stenciller
+stencillers
+stencilling
+sterilisation
+sterilisation's
+sterilisations
+sterilise
+sterilised
+steriliser
+sterilisers
+sterilises
+sterilising
+stylised
+subsidise
+subsidised
+subsidiser
+subsidisers
+subsidises
+subsidising
+succour
+succoured
+succourer
+succourer's
+succourers
+succouring
+succours
+summarisation
+summarisation's
+summarisations
+summarise
+summarised
+summariser
+summarisers
+summarises
+summarising
+symbolisation
+symbolisation's
+symbolisations
+symbolise
+symbolised
+symboliser
+symbolisers
+symbolises
+symbolising
+symbolled
+symbolling
+sympathise
+sympathised
+sympathiser
+sympathisers
+sympathises
+sympathising
+sympathising's
+sympathisingly
+sympathisings
+synchronisation
+synchronisation's
+synchronisations
+synchronise
+synchronised
+synchroniser
+synchronisers
+synchronises
+synchronising
+synthesise
+synthesised
+synthesiser
+synthesisers
+synthesises
+synthesising
+syphon
+syphon's
+syphoned
+syphoning
+syphons
+systematise
+systematised
+systematiser
+systematisers
+systematises
+systematising
+tantalise
+tantalised
+tantaliser
+tantalisers
+tantalises
+tantalising
+tantalisinglies
+tantalisingly
+tantalisingness
+tantalisingnesses
+terrorise
+terrorised
+terroriser
+terrorisers
+terrorises
+terrorising
+theatre
+theatre's
+theatres
+theorisation
+theorisation's
+theorisations
+theorise
+theorised
+theoriser
+theorisers
+theorises
+theorising
+titre
+titres
+totalled
+totaller
+totaller's
+totallers
+totalling
+towelled
+towelling
+towellings
+tranquilise
+tranquilised
+tranquiliser
+tranquiliser's
+tranquilisers
+tranquilises
+tranquilising
+tranquilising's
+tranquilisingly
+tranquilisings
+transistorise
+transistorised
+transistorises
+transistorising
+travelled
+traveller
+traveller's
+travellers
+travelling
+travellings
+trivialise
+trivialised
+trivialises
+trivialising
+troweller
+trowellers
+tumour
+tumour's
+tumoured
+tumours
+tunnelled
+tunneller
+tunnellers
+tunnelling
+tunnellings
+tyre
+tyre's
+tyres
+unacclimatised
+unaesthetically
+unamortised
+unanalysable
+unanalysed
+unantagonised
+unantagonising
+unapologising
+unappetising
+unappetisingly
+unarmoured
+unauthorised
+unauthorisedly
+unauthorisedness
+unauthorises
+unbaptised
+unbaptises
+unbastardised
+unbrutalised
+unbrutalises
+uncancelled
+uncapitalised
+uncategorised
+uncharacterised
+uncivilised
+uncivilisedly
+uncivilisedness
+uncivilises
+uncolonised
+uncolonises
+uncoloured
+uncolouredly
+uncolouredness
+uncoloureds
+uncriticised
+uncriticising
+uncriticisingly
+uncrystallised
+undefences
+undishonoured
+undisorganised
+uneconomising
+unendeavoured
+unepitomised
+unequalised
+unequalises
+unequalled
+unfamiliarised
+unfavourable
+unfavourableness
+unfavourables
+unfavourably
+unfavoured
+unfavoured's
+unfavourings
+unfavourite
+unfavourite's
+unfavourites
+unfertilised
+unflavoured
+unformalised
+ungeneralised
+unharmonised
+unharmonises
+unhonourables
+unhonourablies
+unhonourably
+unhonoured
+unhumoured
+unidealised
+unindividualised
+unindividualises
+uninitialised
+unionisation
+unionise
+unionised
+unioniser
+unionisers
+unionises
+unionising
+unitalicised
+unitemised
+unjournalised
+unlabelled
+unlaboured
+unlaboured's
+unlabourings
+unlegalised
+unlevelled
+unlevelling
+unliberalised
+unlocalised
+unlocalises
+unmechanised
+unmechanises
+unmemorised
+unminimised
+unmodernised
+unmodernises
+unmotorised
+unnationalised
+unneighboured
+unneighbourliness
+unneighbourly
+unneutralised
+unnormalised
+unnormalises
+unoptimised
+unoptimises
+unorganisable
+unorganisables
+unorganised
+unoxidised
+unparallelled
+unparameterised
+unparametrised
+unparcelled
+unpatronised
+unpatronising's
+unpenalised
+unphilosophised
+unphilosophises
+unpopularises
+unpractised
+unpulverised
+unpulverises
+unravelled
+unravelling
+unrealisables
+unrealised
+unrealises
+unrecognisable
+unrecognised
+unrecognising
+unrecognisingly
+unreorganised
+unrivalled
+unrumoured
+unsabred
+unsavoured
+unsavouredly
+unsavouredness
+unsceptred
+unsceptres
+unscrutinised
+unscrutinising
+unscrutinisingly
+unsepulchred
+unsepulchres
+unsocialised
+unspecialised
+unspecialising
+unstandardised
+unsterilised
+unsubsidised
+unsuccoured
+unsummarised
+unsymbolised
+unsympathised
+unsympathising
+unsympathising's
+unsympathisingly
+unsympathisings
+unsynchronised
+unsynthesised
+unsyphons
+unsystematised
+unsystematisedly
+unsystematising
+untantalised
+unterrorised
+untranquilised
+unverbalised
+unvictimised
+unvisualised
+unwomanised
+unwomanises
+utilisation
+utilise
+utilised
+utiliser
+utilisers
+utilises
+utilising
+valour
+valour's
+valours
+vandalise
+vandalised
+vandalises
+vandalising
+vapour
+vapour's
+vapoured
+vapourer
+vapourers
+vapouring
+vapouringly
+vapourings
+vapours
+vectorisation
+vectorising
+verbalise
+verbalised
+verbaliser
+verbalisers
+verbalises
+verbalising
+victimise
+victimised
+victimiser
+victimisers
+victimises
+victimising
+victualler
+victuallers
+vigour
+vigour's
+vigours
+visualise
+visualised
+visualiser
+visualisers
+visualises
+visualising
+waggon
+waggon's
+waggoner
+waggoner's
+waggoners
+waggons
+wagonner
+wagonner's
+wagonners
+weaselled
+weaselling
+whisky
+whisky's
+whiskys
+womanise
+womanised
+womaniser
+womanisers
+womanises
+womanising
+woollen
+woollens
+worshipped
+worshipper
+worshipper's
+worshippers
+worshipping
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.1 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.1
new file mode 100644
index 00000000000..54c88ee7a30
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.1
@@ -0,0 +1,743 @@
+Christianising
+Europeanisation
+Europeanisation's
+Europeanisations
+Europeanised
+Sanskritise
+acclimatise
+acclimatiser
+acclimatisers
+acclimatises
+acclimatising
+actualise
+actualised
+actualises
+actualising
+aesthete
+aesthetes
+aggrandisement
+aggrandisement's
+aggrandisements
+americanised
+amortisation
+amortisation's
+amortisations
+animised
+annualised
+arsehole
+arsehole's
+arseholes
+balkanisation
+biosynthesised
+bureaucratisation
+bureaucratisation's
+bureaucratisations
+calliper
+callipers
+cancellate
+cancellated
+canonised
+cauterise
+cauterised
+cauterises
+cauterising
+caviller
+cavillers
+centreline
+centrelines
+civilisational
+civilisational's
+civilisationals
+cognisable
+colouration
+colourimeter
+colourimeter's
+colourimeters
+colourimetry
+commercialisation
+commercialisation's
+commercialisations
+communise
+communised
+communises
+communising
+computerisation
+conventionalised
+crystallisation
+crystallisation's
+crystallisations
+decentralising
+deemphasise
+deemphasised
+deemphasiser
+deemphasisers
+deemphasises
+deemphasising
+deglycerolised
+dehumanise
+dehumanised
+dehumanises
+dehumanising
+demineralisation
+demineralisation's
+demineralisations
+democratisation
+democratisation's
+democratisations
+democratise
+democratised
+democratiser
+democratises
+democratising
+demoralisation
+demoralisation's
+demoralisations
+demythologisation
+demythologise
+demythologised
+demythologiser
+demythologises
+demythologising
+depersonalisation
+depersonalisation's
+depersonalisations
+depersonalised
+deputised
+destabilise
+destabilised
+destabilises
+destabilising
+destigmatisation
+desynchronise
+desynchronised
+desynchronises
+desynchronising
+detribalise
+detribalised
+detribalises
+detribalising
+diagonalisable
+dialysed
+diarrhoea
+diarrhoea's
+diarrhoeal
+diarrhoeas
+dichotomisation
+digitalisation
+digitalisation's
+digitalisations
+digitisation
+dioptre
+discoloured
+discoloured's
+discolouredness
+discoloureds
+discolours
+disfavour
+disfavoured
+disfavourer
+disfavourer's
+disfavourers
+disfavouring
+disfavours
+dishevelled
+disorganisation
+disorganisation's
+disorganisations
+dowelling
+downdraught
+dramatisation
+dramatisation's
+dramatisations
+dramatise
+dramatised
+dramatiser
+dramatisers
+dramatises
+dramatising
+draughtier
+draughtiness
+draughtsperson
+draughty
+duellist
+duellists
+dynamised
+emphasise
+emphasised
+emphasiser
+emphasisers
+emphasises
+emphasising
+energised
+energises
+enthral
+enthrals
+epicentre
+epicentre's
+epicentres
+eulogise
+eulogised
+eulogiser
+eulogisers
+eulogises
+eulogising
+exorcise
+exorcised
+exorcises
+exorcising
+extemporise
+extemporised
+extemporiser
+extemporisers
+extemporises
+extemporising
+externalisation
+externalisation's
+externalisations
+favouritism
+favouritism's
+favouritisms
+federalise
+federalised
+federalises
+federalising
+fibreboard
+foetid
+foetidly
+foetidness
+foetus
+foetus's
+foetuses
+fossilised
+fraternise
+fraternised
+fraterniser
+fraternisers
+fraternises
+fraternising
+galvanising
+generalisable
+generalisables
+germanised
+gimballed
+glottalisation
+glycerolised
+gruelling
+gruellingly
+gruellings
+gynaecological
+gynaecological's
+gynaecologicals
+gynaecologist
+gynaecologist's
+gynaecologists
+harmonisation
+harmonisation's
+harmonisations
+homoeomorph
+homoeopath
+homogenisation
+homogenisation's
+homogenisations
+homogenise
+homogenised
+homogeniser
+homogenisers
+homogenises
+homogenising
+honouree
+hospitalisation
+hospitalisation's
+hospitalisations
+humanise
+humanised
+humaniser
+humanisers
+humanises
+humanising
+hydrolysed
+hypnotised
+hypophysectomised
+idolise
+idolised
+idoliser
+idolisers
+idolises
+idolising
+immobilise
+immobilised
+immobiliser
+immobilises
+immobilising
+immortalised
+immunisation
+immunisation's
+immunisations
+impersonalised
+industrialised
+industrialising
+inhumanises
+institutionalisation
+institutionalisation's
+institutionalisations
+internationalisation
+internationalisation's
+internationalisations
+internationalised
+ionise
+ionised
+ioniser
+ionisers
+ionises
+ionising
+ionisings
+ionision
+ionisions
+kinaesthesis
+kinaesthetic
+kinaesthetically
+kinaesthetics
+learnt
+legitimise
+legitimised
+legitimiser
+legitimises
+legitimising
+libeller
+libellers
+libellous
+libellously
+liberalisation
+liberalisation's
+liberalisations
+licenseable
+lionise
+lionised
+lioniser
+lionisers
+lionises
+lionising
+magnetised
+manoeuvrability
+manoeuvrable
+marbleised
+marbleising
+maximisation
+maximisation's
+maximisations
+mediaevalist
+mediaevalist's
+mediaevalists
+memorialised
+mesmerised
+metabolised
+metropolitanisation
+milligramme
+milligramme's
+milligrammes
+millilitre
+millilitre's
+millilitres
+mineralised
+misbehaviour
+misbehaviour's
+misbehaviours
+misdemeanour
+misdemeanour's
+misdemeanours
+mobilisation
+mobilisation's
+mobilisations
+mobilise
+mobilised
+mobiliser
+mobilises
+mobilising
+modernisation
+modernisation's
+modernisations
+monetisation
+monetise
+monetised
+monetises
+monetising
+monopolisation
+monopolisation's
+monopolisations
+monopolise
+monopolised
+monopoliser
+monopolisers
+monopolises
+monopolising
+multicolour
+multicolour's
+multicoloured
+multicolours
+narcotises
+nasalisation
+nasalisation's
+nasalisations
+nasalised
+naturalised
+neutralisation
+neutralisation's
+neutralisations
+nominalised
+novelised
+ochre
+ochre's
+ochres
+oedema
+oedema's
+oedemas
+oedematous
+operationalisation
+operationalisations
+operationalise
+operationalised
+orthogonalisation
+orthogonalised
+orthopaedic
+orthopaedics
+ostracised
+outmanoeuvre
+outmanoeuvred
+outmanoeuvres
+outmanoeuvring
+overemphasise
+overemphasised
+overemphasiser
+overemphasisers
+overemphasises
+overemphasising
+palatalisation
+palatalise
+palatalised
+palatalises
+palatalising
+palletised
+panelisation
+panelised
+parenthesise
+parenthesises
+parenthesising
+pasteurisation
+pasteurisations
+pedalled
+pedalling
+peptising
+platinise
+platinised
+platinises
+platinising
+ploughshare
+ploughshare's
+ploughshares
+polarise
+polarised
+polariser
+polarisers
+polarises
+polarising
+politicised
+polymerisations
+proletarianisation
+proletarianised
+pronominalisation
+pronominalise
+pummelled
+pyorrhoea
+pyorrhoea's
+pyorrhoeas
+pyrolyse
+pyrolyse's
+pyrolyser
+pyrolyses
+radiopasteurisation
+radiosterilisation
+radiosterilised
+rancour
+rancour's
+rancours
+randomisation
+randomisation's
+randomisations
+rationalisation
+rationalisation's
+rationalisations
+reacclimatises
+reactualises
+realisabilities
+realisability
+realisability's
+reconceptualisation
+recrystallisation
+recrystallisation's
+recrystallisations
+recrystallise
+recrystallising
+reemphasise
+reemphasised
+reemphasiser
+reemphasisers
+reemphasises
+reemphasising
+regularising
+reharmonisation
+rehumanises
+remobilisation
+remobilisation's
+remobilisations
+remobilises
+remonetisation
+remonetise
+remonetised
+remonetises
+remonetising
+repopularise
+revaporisation
+revaporisation's
+revaporisations
+revisualisation
+revisualisation's
+revisualisations
+revitalisation
+revitalise
+revitalised
+revitaliser
+revitalisers
+revitalises
+revitalising
+ritualised
+romanticise
+romanticises
+romanticising
+rubberised
+satirises
+scandalised
+scandalising
+sectionalised
+secularisation
+secularisation's
+secularisations
+secularised
+sensitised
+sentimentalise
+sentimentalised
+sentimentaliser
+sentimentalisers
+sentimentalises
+sentimentalising
+sexualised
+signalises
+snivelled
+sniveller
+snivellers
+snivelling
+snivellings
+socialisation
+socialisation's
+socialisations
+stabilisation
+stabilisation's
+stabilisations
+stigmatisation
+stigmatisation's
+stigmatisations
+stigmatised
+stylisation
+stylisation's
+stylisations
+subcategorising
+subsidisation
+subsidisation's
+subsidisations
+substerilisation
+suburbanisation
+suburbanisation's
+suburbanisations
+suburbanised
+suburbanising
+swivelled
+swivelling
+systematisation
+systematisation's
+systematisations
+systemisation
+systemisation's
+systemisations
+teaselled
+teaselling
+teetotaller
+temporise
+temporised
+temporiser
+temporiser's
+temporisers
+temporises
+temporising
+temporising's
+temporisingly
+temporisings
+theatregoer
+theatregoer's
+theatregoers
+theatregoing
+tinselled
+tinselling
+traditionalised
+travelogue
+travelogue's
+travelogues
+trialisation
+triangularisation
+triangularisations
+tricolour
+tricolour's
+tricoloured
+tricolours
+tyne
+tyne's
+tynes
+tyrannise
+tyrannised
+tyranniser
+tyrannisers
+tyrannises
+tyrannising
+tyrannising's
+tyrannisingly
+tyrannisings
+unamortisation
+unamortisation's
+unamortisations
+uncanonised
+uncauterised
+uncauterised's
+uncauteriseds
+undemocratises
+underutilisation
+underutilised
+undialysed
+undialysed's
+undialyseds
+undiscoloureds
+undramatised
+undramatised's
+undramatiseds
+unenergised
+unenergised's
+unenergiseds
+uneulogised
+uneulogised's
+uneulogiseds
+unfossilised
+unfossilised's
+unfossiliseds
+unfraternising
+unfraternising's
+unfraternisings
+unhydrolysed
+unhydrolysed's
+unhydrolyseds
+unidolised
+unidolised's
+unidoliseds
+unimmortalised
+unindustrialised
+unindustrialised's
+unindustrialiseds
+unitised
+universalise
+universalised
+universaliser
+universalisers
+universalises
+universalising
+unlearnt
+unmagnetised
+unmagnetised's
+unmagnetiseds
+unmemorialised
+unmemorialised's
+unmemorialiseds
+unmesmerised
+unmineralised
+unmineralised's
+unmineraliseds
+unmobilised
+unmobilised's
+unmobiliseds
+unmonopolised
+unmonopolises
+unnaturalised
+unpatronising
+unpolarised
+unpolarised's
+unpolariseds
+unsatirises
+unsavouries
+unsavouriness
+unsavoury
+unsavoury's
+unscandalised
+unsecularised
+unsensitised
+unsentimentalises
+unstigmatised
+unstigmatised's
+unstigmatiseds
+untemporisings
+untrammelled
+unvocalised
+unvocalised's
+unvocaliseds
+unvulcanised
+unvulcanised's
+unvulcaniseds
+updraught
+urbanisation
+urbanisation's
+urbanisations
+urbanised
+vacuolisation
+vacuolisation's
+vacuolisations
+vaporisation
+vaporisation's
+vaporisations
+varicoloured
+varicoloured's
+varicoloureds
+velarise
+velarised
+velarises
+velarising
+visualisation
+visualisation's
+visualisations
+vocalisation
+vocalisation's
+vocalisations
+vocalise
+vocalised
+vocaliser
+vocalisers
+vocalises
+vocalising
+volatilisation
+volatilisation's
+volatilisations
+vulcanised
+waggoneer
+watercolour
+watercolour's
+watercoloured
+watercolouring
+watercolourist
+watercolourists
+watercolours
+yodelled
+yodeller
+yodelling
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.2 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.2
new file mode 100644
index 00000000000..096e6785460
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/british.2
@@ -0,0 +1,6688 @@
+Aetna
+Africanisation
+Africanisation's
+Africanisations
+Africanise
+Africanised
+Africanises
+Africanising
+Afrikanerisation
+Afrikanerise
+Afrikanerised
+Afrikanerises
+Afrikanerising
+Americanisation
+Americanisation's
+Americanisations
+Americanise
+Americaniser
+Americanisers
+Americanises
+Americanising
+Anglicanise
+Anglicanises
+Arabianise
+Arabianises
+Arabicise
+Arabicises
+Aryanisation
+Aryanise
+Aryanised
+Aryanises
+Aryanising
+Asiaticisation
+Asiaticisation's
+Asiaticisations
+Asiaticise
+Asiaticises
+Assyrianise
+Assyrianises
+Australianise
+Australianises
+Austrianise
+Austrianises
+Babelise
+Babelises
+Babylonise
+Babylonises
+Balkanisation
+Balkanisation's
+Balkanisations
+Balkanise
+Balkanises
+Berlinise
+Berlinises
+Bessemerise
+Bessemerises
+Birminghamise
+Birminghamises
+Boswellise
+Boswellises
+Byronise
+Byronises
+Byzantinise
+Byzantinises
+Caesarise
+Caesarises
+Calvinise
+Calvinises
+Canadianisation
+Canadianisation's
+Canadianisations
+Canadianise
+Canadianises
+Caponisation
+Catholicisation
+Catholicised
+Catholicising
+Celticise
+Celticises
+Christianisation
+Christianisation's
+Christianisations
+Christianise
+Christianiser
+Christianisers
+Christianises
+Ciceronianise
+Ciceronianises
+Continentalise
+Continentalises
+Corinthianise
+Corinthianises
+Creolisation
+Creolise
+Creolised
+Creolises
+Creolising
+Cubanise
+Cubanises
+Czechisation
+Czechisation's
+Czechisations
+Danisation
+Danisation's
+Danisations
+Danise
+Danises
+Darwinise
+Darwinises
+Doricise
+Doricises
+Edenisation
+Edenisation's
+Edenisations
+Edenise
+Edenises
+Egyptianisation
+Egyptianisation's
+Egyptianisations
+Egyptianise
+Egyptianises
+Egyptise
+Egyptises
+Elizabethanise
+Elizabethanises
+Englishise
+Englishises
+Epicurise
+Epicurises
+Episcopalianise
+Episcopalianises
+Eskimoised
+Eskimoised's
+Eskimoiseds
+Essenise
+Essenises
+Europeanise
+Europeanises
+Europeanising
+Fletcherise
+Fletcherises
+Francise
+Francises
+Franklinisation
+Franklinisation's
+Franklinisations
+Frenchise
+Frenchises
+Gaelicisation
+Gaelicisation's
+Gaelicisations
+Gaelicise
+Gaelicises
+Gallicisation
+Gallicise
+Gallicised
+Gallicises
+Gallicising
+Gothicise
+Gothicised
+Gothiciser
+Gothicisers
+Gothicises
+Gothicising
+Grecianise
+Grecianises
+Greekise
+Greekises
+Hanoverianise
+Hanoverianises
+Hanoverise
+Hanoverises
+Harvardise
+Harvardises
+Harveyise
+Harveyises
+Hattise
+Hattises
+Hebraicise
+Hebraicises
+Hegelianise
+Hegelianises
+Hellenisation
+Hellenisations
+Hellenise
+Hellenised
+Hellenises
+Hellenising
+Hispanicisation
+Hispanicise
+Hispanicised
+Hispanicises
+Hispanicising
+Hollywoodise
+Hollywoodises
+Hoosierise
+Hoosierises
+Hooverise
+Hooverises
+Iliadise
+Iliadises
+Illuminise
+Illuminises
+Ionicisation
+Ionicisation's
+Ionicisations
+Ionicise
+Ionicises
+Iranise
+Iranises
+Irishise
+Irishises
+Islamisation
+Islamisation's
+Islamisations
+Islamise
+Islamised
+Islamises
+Islamising
+Israelitise
+Israelitises
+Italianisation
+Italianisation's
+Italianisations
+Italianise
+Italianised
+Italianiser
+Italianisers
+Italianises
+Italianising
+Jacobinise
+Japanisation
+Japanisation's
+Japanisations
+Japanise
+Japanised
+Japanises
+Japanising
+Jesuitise
+Jesuitised
+Jesuitises
+Jesuitising
+Jonathanisation
+Jonathanisation's
+Jonathanisations
+Latinisation
+Latinisation's
+Latinisations
+Latinise
+Latinised
+Latiniser
+Latinisers
+Latinises
+Latinising
+Lilliputianise
+Lilliputianises
+Listerise
+Listerises
+Londonisation
+Londonisation's
+Londonisations
+Londonise
+Londonises
+Lutheranise
+Lutheraniser
+Lutheranisers
+Lutheranises
+Malayise
+Malayises
+Manhattanise
+Manhattanises
+Mediterraneanisation
+Mediterraneanisation's
+Mediterraneanisations
+Mediterraneanise
+Mediterraneanises
+Mendelise
+Mendelises
+Mexicanise
+Mexicanises
+Midlandise
+Midlandises
+Miltonise
+Miltonised
+Miltonises
+Miltonising
+Mohammedanisation
+Mohammedanisation's
+Mohammedanisations
+Mohammedanise
+Mohammedanised
+Mohammedanises
+Mohammedanising
+Molochise
+Molochises
+Moravianised
+Moravianiseds
+Moslemise
+Moslemises
+Napoleonise
+Napoleonises
+Negroisation
+Negroisation's
+Negroisations
+Negroise
+Negroises
+Newmanise
+Newmanises
+Nipponise
+Nipponises
+Normanisation
+Normanisation's
+Normanisations
+Normanise
+Normanised
+Normaniser
+Normanisers
+Normanises
+Normanising
+Occidentalisation
+Occidentalisation's
+Occidentalisations
+Occidentalise
+Occidentalised
+Occidentalises
+Occidentalising
+Olympianise
+Olympianises
+Ottomanisation
+Ottomanisation's
+Ottomanisations
+Ottomanise
+Ottomanises
+Parisianisation
+Parisianisation's
+Parisianisations
+Parisianise
+Parisianises
+Pasteurisers
+Paulinise
+Paulinises
+Paynise
+Paynises
+Persianisation
+Persianisation's
+Persianisations
+Persianise
+Persianises
+Peruvianise
+Peruvianises
+Philistinise
+Philistinises
+Presbyterianise
+Presbyterianises
+Procrusteanise
+Procrusteanises
+Protestantise
+Protestantises
+Prussianisation
+Prussianisation's
+Prussianisations
+Prussianise
+Prussianised
+Prussianiser
+Prussianisers
+Prussianises
+Prussianising
+Pullmanise
+Pullmanises
+Puritanise
+Puritaniser
+Puritanisers
+Puritanises
+Pythagoreanise
+Pythagoreanises
+Quakerisation
+Quakerisation's
+Quakerisations
+Quakerise
+Quakerises
+Romanisation
+Romanisation's
+Romanisations
+Romanise
+Romanised
+Romaniser
+Romanisers
+Romanises
+Romanising
+Roumania
+Russianisation's
+Russianisations
+Russianised
+Russianises
+Russianising
+Sabbathise
+Sabbathises
+Saxonisation
+Saxonisation's
+Saxonisations
+Saxonise
+Saxonises
+Semiticise
+Semiticises
+Semitisation
+Semitisation's
+Semitisations
+Semitise
+Semitises
+Shakespearise
+Shakespearises
+Shintoise
+Shintoises
+Slavicise
+Slavicises
+Slavisation
+Slavisation's
+Slavisations
+Slavise
+Slavises
+Slavonicise
+Slavonicises
+Sovietised
+Sovietising
+Spaniardisation
+Spaniardisation's
+Spaniardisations
+Spaniardise
+Spaniardises
+Spanishise
+Spanishises
+Spartanise
+Spartanises
+Syrianise
+Syrianises
+Talmudisation
+Talmudisation's
+Talmudisations
+Talmudise
+Talmudises
+Tammanyise
+Tammanyises
+Taylorise
+Taylorises
+Timonise
+Timonises
+Toryise
+Toryises
+Turkise
+Turkises
+Tuscanise
+Tuscanises
+Tylerise
+Tylerises
+Unitarianise
+Unitarianises
+Utopianise
+Utopianises
+Vaticanisation
+Vaticanisation's
+Vaticanisations
+Vaticanise
+Vaticanises
+Victorianise
+Victorianises
+Vietnamisation
+Vietnamise
+Vietnamised
+Vietnamises
+Vietnamising
+Wagnerise
+Wagnerises
+Whitmanise
+Whitmanises
+abnormalise
+abnormalises
+abolitionise
+abolitionises
+absolutisation
+absolutisation's
+absolutisations
+absolutise
+absolutises
+accessorise
+acclimatisable
+acclimatisables
+accoutre
+accoutred
+accoutres
+accoutring
+acculturise
+acetonisation
+acetonisation's
+acetonisations
+acetonise
+acetonises
+achromatisation
+achromatise
+achromatised
+achromatises
+achromatising
+acidise
+acidises
+acronymise
+acronymises
+actionise
+actionises
+activise
+activises
+adrenalise
+adrenalises
+adulterise
+adulterises
+adverbialise
+adverbialises
+aegyptus
+aeon
+aeon's
+aeonism
+aeonism's
+aeonisms
+aeons
+aerodonetics
+aerodrome
+aerogel
+aeromechanic
+aerometry
+aerophagia
+aerophobia
+aerophyte
+aeropropulsion
+aerosolisation
+aerostation
+aesthesia
+aesthesis
+aesthetical
+aesthetician
+aestheticise
+aestheticises
+aestival
+aestivate
+aestivation
+aetiologies
+aetiology
+aetiology's
+agatise
+agatises
+agenise
+aggrandisable
+aggrandisable's
+aggrandisables
+aggrandisation
+aggrandise
+aggrandised
+aggrandiser
+aggrandisers
+aggrandises
+aggrandising
+agnise
+agnised
+agnises
+agnising
+agrarianise
+agrarianises
+alarum
+albumenisation
+albumenise
+albumenised
+albumenises
+albumenising
+albuminisation
+albuminisation's
+albuminisations
+albuminise
+albuminises
+alchemise
+alcoholisable
+alcoholisables
+alcoholisation
+alcoholisation's
+alcoholisations
+alcoholise
+alcoholises
+algebraisation
+algebraisation's
+algebraisations
+algebraise
+algebraises
+alienise
+alienises
+alkalinisation
+alkalinisation's
+alkalinisations
+alkalinise
+alkalinises
+alkalisation
+alkalise
+alkalised
+alkalises
+alkalising
+allegorisation
+allegorise
+allegorised
+allegoriser
+allegorises
+allegorising
+alphabetisation
+alphabetisation's
+alphabetisations
+alternise
+alternises
+aluminisation
+aluminise
+aluminised
+aluminises
+aluminising
+amalgamatise
+amalgamatises
+amalgamisation
+amalgamisation's
+amalgamisations
+amalgamise
+amalgamises
+amoralise
+amoralises
+amorphisation
+amorphise
+amortisable
+amortisables
+amortisement
+amortisement's
+amortisements
+amourism
+amourism's
+amourisms
+amouristic
+amouristics
+anaemically
+anaesthesiologist
+anaesthesiology
+anaesthetisation
+anaesthetisation's
+anaesthetisations
+anaesthetist
+anaesthetization
+anaesthetization's
+anaesthetizations
+anagrammatisation
+anagrammatise
+analogise
+analogises
+analysation
+anarchise
+anarchises
+anathematisation
+anathematise
+anathematised
+anathematises
+anathematising
+anatomise
+angelicise
+angelicises
+angelise
+angelises
+anglicisation
+anglicisation's
+anglicisations
+anglicise
+anglicised
+anglicises
+angularisation
+angularisation's
+angularisations
+angularise
+angularises
+anhydridisation
+anhydridisation's
+anhydridisations
+anhydridise
+anhydridises
+animalisation
+animalisation's
+animalisations
+animalise
+animalised
+animalises
+animalising
+annalise
+annalises
+annualisation
+annualise
+annualises
+annualising
+anodisation
+antagonisation
+antagonisation's
+antagonisations
+anthologisation
+anthologise
+anthologised
+anthologiser
+anthologises
+anthologising
+anthracitisation
+anthracitisation's
+anthracitisations
+anthropomorphisation
+anthropomorphise
+anthropomorphised
+anthropomorphises
+anthropomorphising
+anticatalyser
+anticatalyser's
+anticatalysers
+anticentralisation
+anticentralisation's
+anticentralisations
+anticise
+anticises
+antiepicentre
+antiepicentre's
+antiepicentres
+antifertiliser
+antifertiliser's
+antifertilisers
+antilabour
+antilabour's
+antilabours
+antimediaeval
+antimediaeval's
+antimediaevals
+antioxidiser
+antioxidiser's
+antioxidisers
+antioxidising
+antioxidising's
+antioxidisings
+antipathise
+antipathises
+antiquarianise
+antiquarianises
+antirumour
+antirumour's
+antirumours
+antisensitise
+antisensitiser
+antisensitiser's
+antisensitisers
+antisensitises
+antisepticise
+antisepticises
+antiseptise
+antiseptises
+antisyphon
+antisyphon's
+antisyphons
+antithesise
+anvilled
+anvilling
+aphorise
+aphorised
+aphoriser
+aphorisers
+aphorises
+aphorising
+apostatisation
+apostatise
+apostatised
+apostatises
+apostatising
+apostrophise
+apostrophised
+apostrophises
+apostrophising
+apotheosise
+apparelling
+appetise
+appetised
+appetisement
+appetisement's
+appetisements
+appetisers
+appetises
+arabisation
+arabise
+arabised
+arabises
+arabising
+arborisation
+arborise
+arborised
+arborises
+arborising
+arboures
+arcticise
+arcticises
+arithmetisation
+arithmetisation's
+arithmetisations
+armourless
+aromatisation
+aromatise
+aromatised
+aromatises
+aromatising
+arsenicise
+arsenicises
+arterialisation
+arterialisation's
+arterialisations
+arterialise
+arterialised
+arterialises
+arterialising
+artificialise
+artificialises
+asafoetida
+asepticise
+asepticises
+astigmatiser
+astigmatiser's
+astigmatisers
+asynchronise
+asynchronised
+asynchronises
+asynchronising
+atomisability
+atomisable
+atticise
+atticises
+attitudinisation
+attitudinise
+attitudinised
+attitudinises
+attitudinising
+autoimmunisation
+autoionisation
+automatisation
+automatisation's
+automatisations
+automatise
+automatises
+autotomise
+avianise
+azotisation
+azotise
+azotised
+azotises
+azotising
+bachelorise
+bachelorises
+baconise
+baconises
+bacterise
+balladise
+balladises
+balsamise
+balsamises
+bantamise
+bantamises
+baptisable
+baptisables
+baptisement
+baptisement's
+baptisements
+barbarianise
+barbarianises
+barbarisation
+barbarise
+barbarised
+barbarises
+barbarising
+baronise
+baronises
+bastardisation
+bastardisation's
+bastardisations
+beaverise
+beaverises
+beclamour
+beclamoured
+beclamouring
+beclamours
+becudgelled
+becudgelling
+bedlamise
+bedlamises
+bedrivelled
+bedrivelling
+bejewelled
+bejewelling
+bemedalled
+bestialise
+bestialised
+bestialises
+bestialising
+beveller
+bevellers
+bichromatise
+bichromatises
+bicolour
+bicoloured
+bimetallist
+bimetallistic
+biographise
+biographises
+biologise
+biologises
+bipolarisation
+bipolarise
+bipolarises
+bistre
+bistred
+bituminisation
+bituminise
+bituminised
+bituminises
+bituminising
+bolshevise
+bonderise
+borise
+borises
+botanise
+botanised
+botanises
+botanising
+boulevardise
+boulevardises
+bourbonise
+bourbonises
+bowdlerisation
+bowelled
+bowelling
+brominise
+brominises
+brutalisation
+brutalisation's
+brutalisations
+bureaucratise
+bureaucratised
+bureaucratises
+busheller
+bushellers
+cadaverise
+cadaverises
+cadmiumise
+cadmiumises
+canalisation
+canalisation's
+canalisations
+canalise
+canalised
+canalises
+canalising
+canaller
+canallers
+cancellable
+cancellous
+cannibalisation
+cannibalisation's
+cannibalisations
+canonisation
+canonisation's
+canonisations
+canonise
+canoniser
+canonisers
+canonises
+canonising
+capitalisable
+capitalisables
+caponise
+caponised
+caponises
+caponising
+capsulisation
+capsulise
+capsulised
+capsulises
+capsulising
+caracolled
+caracolling
+caramelisation
+caramelisation's
+caramelisations
+caramelise
+caramelised
+caramelises
+caramelising
+carbolisation
+carbolise
+carbolised
+carbolises
+carbolising
+carbonatisation
+carbonatisation's
+carbonatisations
+carbonisable
+carbonisables
+carburisation
+carburise
+carburised
+carburises
+carburising
+carnalise
+carnalises
+carolled
+caroller
+carollers
+carolling
+cartelisation
+cartelisation's
+cartelisations
+cartelise
+cartelises
+castorised
+castorised's
+castoriseds
+catabolise
+cataloguise
+cataloguises
+catalyse
+catalyser
+catalyser's
+catalysers
+catalyses
+catechisable
+catechisables
+catechisation
+catechisation's
+catechisations
+catechise
+catechised
+catechiser
+catechisers
+catechises
+catechising
+catheterisation
+catheterisation's
+catheterisations
+catheterise
+catheterises
+catholicise
+catholiciser
+catholicisers
+catholicises
+causticisation
+causticisation's
+causticisations
+causticise
+causticiser
+causticisers
+causticises
+cauterisation
+cauterisation's
+cauterisations
+cavillation
+cavilled
+cavilling
+cavillings
+celestialise
+celestialises
+centigramme
+centigramme's
+centigrammes
+centilitre
+centreboard
+centrifugalisation
+centrifugalisation's
+centrifugalisations
+centrifugalise
+centrifugalises
+cephalisation
+cerebralisation
+cerebralisation's
+cerebralisations
+cerebralise
+cerebralises
+ceremonialise
+ceremonialises
+chameleonise
+chameleonises
+championise
+championises
+channelisation
+channelisation's
+channelisations
+channelise
+channelises
+chattelisation
+chattelisation's
+chattelisations
+chattelise
+chattelises
+cheerfulise
+cheerfulises
+chemicalisation
+chemicalisation's
+chemicalisations
+chemicalise
+chemicalises
+chequerboard
+chiselling
+chisellings
+chloridise
+chloridises
+chlorinise
+chlorinises
+chloroformisation
+chloroformisation's
+chloroformisations
+chloroformise
+chloroformises
+chorisation
+chorisation's
+chorisations
+chromatise
+chromatises
+chromicise
+chromicises
+chromise
+chromised
+chromises
+chromising
+chronologise
+chronologises
+cinchonise
+cinematise
+circularisation
+circularisation's
+circularisations
+circularise
+circularised
+circulariser
+circularisers
+circularises
+circularising
+citizenise
+citizenises
+civilianisation
+civilianisations
+civilianise
+civilianised
+civilianises
+civilianising
+civilisable
+civilisables
+clangour
+clangour's
+clangoured
+clangouring
+clangours
+classicalise
+classicalises
+classicisation
+classicise
+classicised
+classicises
+classicising
+clericalise
+clericalises
+climatise
+climatises
+coalise
+coaliser
+coalisers
+coalises
+cocainisation
+cocainisation's
+cocainisations
+cocainise
+cocainises
+coeducationalise
+coeducationalises
+coenamour
+coenamoured
+coenamouring
+coenamours
+coequalise
+coequalises
+cognisably
+cognise
+cognised
+cogniser
+cognisers
+cognises
+cognising
+collateralise
+collectivisation
+collectivisation's
+collectivisations
+collectivise
+collectivised
+collectivises
+colloquialise
+colloquialises
+colonialise
+colonialises
+colonisabilities
+colonisability
+colonisability's
+colonisable
+colonisables
+colonisationist
+colonisationist's
+colonisationists
+colourabilities
+colourability
+colourability's
+colourable
+colourableness
+colourables
+colourablies
+colourably
+colourama
+colourant
+colourants
+colourcast
+colourcaster
+colourcasters
+colourfast
+colourfastness
+colourific
+colourimetric
+colourimetrically
+colourisation
+colourisation's
+colourisations
+colourise
+colourises
+colourism
+colourisms
+colourist
+colourist's
+colouristic
+colouristically
+colouristics
+colourists
+colourman
+colourmap
+colourmap's
+colourmaps
+colourmen
+coloury
+columnisation
+columnisation's
+columnisations
+commercialise
+commercialised
+commercialises
+commercialising
+commonise
+commonises
+communalisation
+communalisation's
+communalisations
+communalise
+communalised
+communaliser
+communalisers
+communalises
+communalising
+communisation
+communisation's
+communisations
+companionise
+companionises
+compartmentalisation
+compartmentalisation's
+compartmentalisations
+compartmentise
+compartmentises
+complementiser
+computerisable
+concentre
+concertise
+concertiser
+concertisers
+concertises
+concretisation
+concretisations
+concretise
+concretised
+concretises
+concretising
+conditionalise
+conditionalises
+confederatise
+confederatises
+congenialise
+congenialises
+congregationalise
+congregationalises
+connexion
+conservatise
+conservatised
+conservatises
+conservatising
+consonantise
+consonantises
+constitutionalisation
+constitutionalisation's
+constitutionalisations
+constitutionalise
+constitutionalises
+containerisation
+containerise
+containerised
+containerises
+containerising
+contemporisation
+contemporise
+contemporised
+contemporises
+contemporising
+controversialise
+controversialises
+conundrumise
+conundrumises
+conventionalisation
+conventionalisation's
+conventionalisations
+conventionalise
+conventionalises
+conventionalising
+conventionise
+conventionises
+conversationise
+conversationises
+conveyorise
+conveyorised
+conveyorises
+conveyorising
+convivialise
+convivialises
+copolymerisation
+copolymerisation's
+copolymerisations
+copolymerise
+copolymerised
+copolymerises
+copolymerising
+copperisation
+copperisation's
+copperisations
+copperise
+copperises
+coralled
+corbelled
+corbelling
+corbellings
+cordialise
+cordialises
+corporealisation
+corporealisation's
+corporealisations
+corporealise
+corporealises
+cosmopolitanisation
+cosmopolitanisation's
+cosmopolitanisations
+cosmopolitanise
+cosmopolitanises
+cottonisation
+cottonisation's
+cottonisations
+cottonise
+cottonises
+councillorship
+counsellee
+counsellorship
+crawlerise
+crawlerises
+creaturise
+creaturises
+crenellate
+crenellated
+crenellates
+crenellation
+crenelled
+crenelling
+cretinisation
+cretinisation's
+cretinisations
+cretinise
+cretinises
+criminalisation
+criminalisation's
+criminalise
+criticisable
+criticisables
+crofterisation
+crofterisation's
+crofterisations
+crofterise
+crofterises
+cruelise
+cruelises
+crystallisabilities
+crystallisability
+crystallisability's
+crystallisable
+crystallisables
+crystallographical
+crystallographically
+cudgelled
+cudgeller
+cudgellers
+cudgelling
+cudgellings
+culturisation
+culturisation's
+culturisations
+culturise
+culturises
+cupellation
+cupelled
+cupeller
+cupellers
+cupelling
+curarise
+curarised
+curarises
+curarising
+curatise
+curatises
+curricularisation
+curricularisation's
+curricularisations
+curricularise
+curricularises
+cutinise
+cutinised
+cutinises
+cutinising
+cutisation
+cutisation's
+cutisations
+cyclisation
+cyclisation's
+cyclisations
+cyclise
+cyclised
+cyclises
+cyclising
+dandyise
+dandyises
+dastardise
+dastardises
+deaconise
+deaconises
+deaminise
+decalitre
+decalitres
+decametre
+decametre's
+decametres
+decarbonisation
+decarbonise
+decarbonised
+decarboniser
+decarbonises
+decarbonising
+decarburisation
+decarburise
+decarburised
+decarburises
+decarburising
+decasualisation
+decentralisationist
+decentralise
+decentralises
+decigramme
+decigramme's
+decigrammes
+decilitre
+decilitres
+decimalisation
+decimalisation's
+decimalisations
+decimalise
+decimalised
+decimalises
+decimalising
+decimetre
+decimetre's
+decimetres
+decolonisation
+decolonised
+decolonises
+decolonising
+decolour
+decolourant
+decolourants
+decolourate
+decolourated
+decolourates
+decoloured
+decolouring
+decolourisation
+decolourise
+decolourised
+decolouriser
+decolourises
+decolours
+decriminalisation
+decriminalisation's
+decriminalise
+deemphasisation
+deemphasisation's
+deenergise
+deenergised
+deenergiser
+deenergises
+deenergising
+defeminise
+defeminised
+defeminises
+defeminising
+defenceman
+definitisation
+definitisation's
+definitisations
+definitise
+definitised
+definitises
+definitising
+deflectionisation
+deflectionisation's
+deflectionisations
+deflectionise
+deflectionises
+deformalise
+defunctionalisation
+defunctionalisation's
+defunctionalisations
+defunctionalise
+defunctionalises
+dehumanisation
+dehumanisation's
+dehumanisations
+dehypnotisation
+dehypnotise
+dehypnotised
+dehypnotises
+dehypnotising
+deindustrialisation
+deindustrialise
+deionisation
+deionise
+deionises
+dekagramme
+dekagramme's
+dekagrammes
+dekalitre
+dekametre
+dekametre's
+dekametres
+delimitise
+delimitises
+delocalisation
+delocalise
+delustre
+demagnetisable
+demagnetisables
+demagnetisation
+demagnetisation's
+demagnetisations
+demagnetise
+demagnetised
+demagnetiser
+demagnetisers
+demagnetises
+demagnetising
+dematerialisation
+dematerialise
+dematerialised
+dematerialises
+dematerialising
+demilitarisation
+demilitarise
+demilitarised
+demilitarises
+demilitarising
+demineralise
+demineralised
+demineraliser
+demineralises
+demineralising
+demobilisation
+demobilise
+demobilised
+demobilises
+demobilising
+demonetisation
+demonetise
+demonetised
+demonetises
+demonetising
+demonisation
+demonise
+demonised
+demonises
+demonising
+denationalisation
+denationalise
+denationalised
+denationalises
+denationalising
+denaturalisation
+denaturalise
+denaturalised
+denaturalises
+denaturalising
+denaturisation
+denaturisation's
+denaturisations
+denaturise
+denaturiser
+denaturisers
+denaturises
+denicotinise
+denizenise
+denizenises
+denominationalise
+denominationalises
+denormalise
+dentalisation
+dentalisation's
+dentalisations
+dentalise
+dentalises
+denuclearisation
+denuclearise
+denuclearised
+denuclearises
+denuclearising
+deodorise
+deodorised
+deodorises
+deodorising
+deoxidiser
+departmentalisation
+departmentalisation's
+departmentalisations
+departmentalise
+departmentalises
+departmentisation
+departmentisation's
+departmentisations
+departmentise
+departmentises
+depersonalise
+depersonalises
+depersonalising
+depolarisation
+depolarisation's
+depolarisations
+depolarise
+depolarised
+depolariser
+depolarisers
+depolarises
+depolarising
+depoliticisation
+depoliticise
+depoliticised
+depoliticises
+depoliticising
+depolymerisation
+depolymerise
+depolymerised
+depolymerises
+depolymerising
+depressurisation
+depressurise
+depressurised
+depressurises
+depressurising
+deputationise
+deputationises
+deputisation
+deputise
+deputises
+deputising
+derationalisation
+derationalisation's
+derationalisations
+derationalise
+derationalises
+deratisation
+deratisation's
+deratisations
+derealisation
+deregulationise
+deregulationises
+desalinisation
+desalinise
+desensitisation
+desensitisation's
+desensitisations
+desensitise
+desensitised
+desensitiser
+desensitisers
+desensitises
+desensitising
+desexualisation
+desexualise
+desexualised
+desexualises
+desexualising
+despiritualisation
+despiritualise
+despotise
+despotises
+destabilisation
+destalinise
+destalinised
+destalinises
+destalinising
+desterilise
+desulphurisation
+desulphurise
+desulphurised
+desulphurises
+desulphurising
+desynchronisation
+detribalisation
+detribalisation's
+detribalisations
+develled
+develling
+devilise
+devilises
+devilled
+devilling
+devitalisation
+devitalise
+devitalised
+devitalises
+devitalising
+devocalise
+devolatilisation
+devolatilise
+devolatilised
+devolatilises
+devolatilising
+diabolisation
+diabolise
+diabolised
+diabolises
+diabolising
+diagonalisation
+diagonalise
+diagonalises
+dialecticise
+dialecticises
+diallist
+diallists
+dialysabilities
+dialysability
+dialysability's
+dialysable
+dialysables
+dialyse
+dialyser
+dialyser's
+dialysers
+dialyses
+diamondise
+diamondises
+diarrhoeic
+diarrhoetic
+dieselisation
+dieselisation's
+dieselisations
+dieselise
+dieselises
+differentialise
+differentialises
+digitalise
+digitalised
+digitalises
+digitalising
+dimensionalisation
+dimensionalise
+dimensionalised
+dimensionalises
+dimensionalising
+dimerisation
+dimerisation's
+dimerisations
+dimerise
+dimerised
+dimerises
+dimerising
+diminutivise
+diminutivises
+diphthongisation
+diphthongisation's
+diphthongisations
+diphthongise
+diphthongises
+diplomatise
+diplomatises
+disangularise
+disangularises
+disauthorise
+disauthorises
+disbowelled
+disbowelling
+discanonisation
+discanonisation's
+discanonisations
+discanonise
+discanonises
+discolour
+discolour's
+discolouration
+discolouring
+discolourisation
+discolourisation's
+discolourisations
+discolourment
+discolourment's
+discolourments
+discretisation
+discretise
+disdenominationalise
+disdenominationalises
+disdiplomatise
+disdiplomatises
+disembowelled
+disembowelling
+disenamour
+disenamour's
+disenamours
+disenthral
+disenthrals
+disequalise
+disequaliser
+disequalisers
+disequalises
+disharmonise
+disharmonises
+disheveller
+dishevelling
+dishonourable
+dishonourableness
+dishonourables
+dishonourablies
+dishonourably
+dishumanise
+dishumanises
+dishumour
+dishumoured
+dishumours
+disillusionise
+disillusioniser
+disillusionisers
+disillusionises
+disindividualise
+disindividualises
+dismalise
+dismalises
+disnaturalisation
+disnaturalisation's
+disnaturalisations
+disnaturalise
+disnaturalises
+disorganise
+disorganiser
+disorganisers
+disorganises
+disorganising
+disorientate
+disorientated
+disorientates
+disorientating
+disozonise
+disozonises
+dispapalise
+dispapalises
+dispauperise
+dispauperises
+dispersonalise
+dispersonalises
+dispopularise
+dispopularises
+disrealise
+disrealises
+dissceptre
+dissceptre's
+dissceptres
+disseise
+disseised
+disseises
+disseisin
+disseising
+disseisins
+disseisor
+disseisors
+dissensualise
+dissensualises
+dissocialise
+dissympathise
+dissympathises
+disutilise
+disutilises
+divinisation
+divinisation's
+divinisations
+divinise
+divinised
+divinises
+divinising
+dockisation
+dockisation's
+dockisations
+dockise
+dockises
+doctorisation
+doctorisation's
+doctorisations
+doctorise
+doctorises
+doctrinisation
+doctrinisation's
+doctrinisations
+doctrinise
+doctrinises
+documentise
+documentises
+dogmatisation
+dogmatise
+dogmatiser
+dognapped
+dognapping
+dolomitisation
+dolomitisation's
+dolomitisations
+dolomitise
+dolomitises
+dolour
+domesticise
+domesticises
+dowelled
+doweller
+dragonise
+dragonises
+dramatisable
+dramatisables
+draughtboard
+draughtily
+draughtsmanship
+drivelled
+driveller
+drivellers
+drivelling
+dualisation
+dualisation's
+dualisations
+dualise
+dualises
+ductilise
+ductilises
+easternise
+ebonisation
+ebonise
+ebonised
+ebonises
+ebonising
+ecclesiasticise
+ecclesiasticises
+echoise
+echoises
+eclecticise
+eclecticises
+economisation
+economisation's
+economisations
+ecstaticise
+ecstaticises
+editorialisation
+effectualise
+effectualises
+effeminatise
+effeminatises
+egoise
+egoiser
+egoisers
+egoises
+elasticisation
+elasticise
+elasticised
+elasticiser
+elasticisers
+elasticises
+elasticising
+electricalise
+electricalises
+electricise
+electricises
+electroanaesthesia
+electroanaesthesia's
+electroanaesthesias
+electrocauterisation
+electrocauterisation's
+electrocauterisations
+electrodialyse
+electrodialyser
+electrodialyser's
+electrodialysers
+electrodialyses
+electrogalvanise
+electrogalvanises
+electrohomoeopathies
+electrohomoeopathy
+electrohomoeopathy's
+electrolyse
+electrolysed
+electrolyses
+electrolysing
+electromagnetisable
+electrotonise
+electrotonises
+elegise
+elegised
+elegises
+elegising
+elementalise
+elementalises
+emblematicise
+emblematicises
+emblematisation
+emblematise
+emblematised
+emblematises
+emblematising
+emblemise
+emblemises
+embolisation
+embowelled
+embowelling
+emotionalisation
+emotionalisation's
+emotionalisations
+emotionalise
+emotionalised
+emotionalises
+emotionalising
+emotionise
+emotionises
+empanelled
+empanelling
+empathise
+empathised
+empathises
+empathising
+emulsionise
+emulsionises
+enamellist
+enamellists
+enamour
+enamour's
+enamoured
+enamoured's
+enamouredness
+enamoureds
+enamouring
+enamourment
+enamourment's
+enamourments
+enamours
+enarbour
+enarbour's
+enarbours
+encarnalisation
+encarnalise
+encarnalised
+encarnalises
+encarnalising
+encolour
+encolour's
+encoloured
+encolouring
+encolours
+encyclopaedic
+encyclopaedically
+encyclopaedism
+encyclopaedist
+energisation
+energise
+energiser
+energisers
+energising
+engramme
+engramme's
+engrammes
+engrandise
+engrandisement
+engrandisement's
+engrandisements
+engrandises
+enhypostatise
+enhypostatises
+enolisation
+enolisation's
+enolisations
+enolise
+enolises
+ensepulchre
+ensepulchre's
+ensepulchres
+ensorcelled
+ensorcells
+enthralment
+enthralment's
+enthralments
+enthronisation
+enthronisation's
+enthronisations
+enthronise
+enthronises
+entomologise
+entomologised
+entomologises
+entomologising
+envapour
+envapour's
+envapours
+envenomisation
+epigrammatisation
+epigrammatise
+epigrammatised
+epigrammatiser
+epigrammatises
+epigrammatising
+epitaphise
+epitaphises
+epithetise
+epithetises
+epitomisation
+epitomisation's
+epitomisations
+equestrianise
+equestrianises
+ergotised
+ergotises
+eroticisation
+eroticise
+eroticised
+eroticises
+eroticising
+essentialise
+essentialises
+esterisation
+esterisation's
+esterisations
+esterise
+esterises
+eternalisation
+eternalisation's
+eternalisations
+eternalise
+eternalised
+eternalises
+eternalising
+eternise
+eternised
+eternises
+eternising
+etherealisation
+etherealisation's
+etherealisations
+etherealise
+etherealised
+etherealises
+etherealising
+etherisation
+etherisation's
+etherisations
+etherise
+etherised
+etheriser
+etherisers
+etherises
+etherising
+ethicisation
+ethicise
+ethicised
+ethicises
+ethicising
+ethnicise
+ethnicises
+etymologisation
+etymologise
+etymologised
+etymologises
+etymologising
+euhemerise
+eulogisation
+eulogisation's
+eulogisations
+euphemise
+euphemised
+euphemiser
+euphemises
+euphemising
+euphonisation
+euphonise
+euphonised
+euphonises
+euphonising
+evangelisation
+evangelisation's
+evangelisations
+evangelise
+evangelised
+evangeliser
+evangelisers
+evangelises
+evangelising
+eventualise
+eventualises
+evolutionise
+evolutionises
+excursionise
+excursionises
+exhibitionise
+exhibitionises
+existentialise
+existentialises
+experimentalise
+experimentalises
+experimentise
+experimentises
+extemporisation
+extemporisation's
+extemporisations
+exteriorisation
+exteriorisation's
+exteriorisations
+exteriorise
+exteriorised
+exteriorises
+exteriorising
+externalise
+externalised
+externalises
+externalising
+facsimilise
+facsimilises
+factorise
+factorised
+factorises
+factorising
+fanaticise
+fanaticised
+fanaticises
+fanaticising
+faradisation
+faradisation's
+faradisations
+faradise
+faradised
+faradiser
+faradisers
+faradises
+faradising
+fascisticisation
+fascisticisation's
+fascisticisations
+fascisticise
+fascisticises
+fascistisation
+fascistisation's
+fascistisations
+fascistise
+fascistised
+fascistises
+fascistising
+fashionise
+fashionises
+fatalise
+fatalises
+favourless
+favourlesses
+fecundise
+fecundises
+federalisation
+federalisation's
+federalisations
+femalise
+femalises
+feminisation
+feminisations
+feminise
+feminised
+feminises
+feminising
+ferrelled
+ferrelling
+ferritisation
+ferritisation's
+ferritisations
+fertilisable
+fertilisables
+fertilisational
+fertilisational's
+fertilisationals
+fervourless
+fervourlesses
+fetishisation
+fetishisation's
+fetishisations
+fetishise
+fetishised
+fetishises
+fetishising
+feudalisable
+feudalisables
+feudalisation
+feudalisation's
+feudalisations
+feudalise
+feudalised
+feudalises
+feudalising
+fibreless
+fibrelesses
+fibrisation
+fibrise
+fibrised
+fibriser
+fibrisers
+fibrises
+fibrising
+fictionalisation
+fictionalise
+fictionalised
+fictionalises
+fictionalising
+fictionisation
+fictionisation's
+fictionisations
+fictionise
+fictionises
+figurise
+figurises
+filmise
+filmises
+fiscalisation
+fiscalisation's
+fiscalisations
+fiscalise
+fiscalises
+flamboyantise
+flamboyantises
+flannelled
+flannelling
+flavourful
+flavourfully
+flavourless
+flavourlesses
+flavoursome
+flavoury
+floralise
+floralises
+fluidisation
+fluidisation's
+fluidisations
+fluidise
+fluidised
+fluidiser
+fluidises
+fluidising
+fluoridisation
+fluoridisation's
+fluoridisations
+fluoridise
+fluoridises
+focalisation
+focalisation's
+focalisations
+focalise
+focalised
+focalises
+focalising
+foetalisation
+foetalisation's
+foetalisations
+foreignisation
+foreignisation's
+foreignisations
+foreignise
+foreignises
+forejudgement
+forejudgement's
+forejudgements
+formalisable
+formularisation
+formularisations
+formularise
+formularised
+formulariser
+formularises
+formularising
+formulisation
+formulisations
+formulise
+formulised
+formulises
+formulising
+forumise
+forumises
+fossilisable
+fossilisables
+fossilisation
+fossilisation's
+fossilisations
+fossilise
+fossilises
+fossilising
+fossilled
+fractionalisation
+fractionalise
+fractionalised
+fractionalises
+fractionalising
+fractionisation
+fractionisation's
+fractionisations
+fractionise
+fractionises
+fragmentise
+fragmentised
+fragmentiser
+fragmentises
+fragmentising
+fraternisation
+fraternisation's
+fraternisations
+frictionise
+frictionises
+frivolled
+frivoller
+frivolling
+fueliser
+fueliser's
+fuelisers
+functionalise
+functionalises
+functionise
+functionises
+funeralise
+funeralises
+funneller
+furore
+furore's
+furores
+futilise
+futilises
+futurise
+futurises
+gallantise
+gallantises
+galvanisation
+galvanisation's
+galvanisations
+galvanise
+galvanised
+galvaniser
+galvanisers
+galvanises
+gambolled
+gambolling
+gardenise
+gardenises
+gavelled
+gaveller
+gavelling
+gelatinisabilities
+gelatinisability
+gelatinisability's
+gelatinisable
+gelatinisables
+gelatinisation
+gelatinisation's
+gelatinisations
+gelatinise
+gelatinised
+gelatiniser
+gelatinisers
+gelatinises
+gelatinising
+generalisability
+generalisational
+genialise
+genialises
+genteelise
+genteelises
+gentilisation
+gentilisation's
+gentilisations
+gentilise
+gentilises
+gentlemanise
+gentlemanises
+geologise
+geologised
+geologises
+geologising
+geometricise
+geometricises
+geometrise
+geometrised
+geometrises
+geometrising
+germanisation
+germanisation's
+germanisations
+germanise
+germaniser
+germanisers
+germanises
+germanising
+ghettoisation
+ghettoisation's
+ghettoisations
+ghettoise
+ghettoised
+ghettoises
+ghettoising
+giantise
+giantises
+gimballing
+glacialise
+glacialises
+glamorisation
+glamorisations
+glamourless
+globalisation
+globalisations
+globalise
+globalised
+globalises
+globalising
+glottalise
+glottalises
+gluttonise
+gluttonises
+glycerinise
+glycerinises
+glycerolise
+glycerolises
+glycogenise
+glycogenises
+gnosticise
+gnosticiser
+gnosticisers
+gnosticises
+goddise
+goddises
+goitre
+goitres
+gonorrhoea
+gonorrhoeal
+gorgonise
+gorgonised
+gorgonises
+gorgonising
+gormandise
+gormandised
+gormandiser
+gormandises
+gormandising
+gospelise
+gospelises
+gourmandise
+gourmandised
+gourmandises
+gourmandising
+governmentalise
+governmentalised
+governmentalises
+governmentalising
+grammaticise
+grammaticises
+grangerise
+grangerised
+grangeriser
+grangerises
+grangerising
+granitisation
+granitisation's
+granitisations
+granitise
+granitises
+granulise
+granulises
+graphitisable
+graphitisation
+graphitisation's
+graphitisations
+graphitise
+graphitises
+grecise
+grecised
+grecising
+gruelled
+grueller
+gruellers
+gutturalisation
+gutturalisation's
+gutturalisations
+gutturalise
+gutturalised
+gutturalises
+gutturalising
+gynaecocrat
+gynaecocratic
+gynaecologic
+gynaecologics
+gynaecologies
+gynaecology
+gynaecology's
+gyrostabiliser
+habitualise
+habitualises
+hamletisation
+hamletisation's
+hamletisations
+hamletise
+hamletises
+handselled
+handselling
+hanselled
+hanselling
+harbourage
+harbourages
+harbourful
+harbourless
+harbourlesses
+harmonisable
+harmonisables
+hatchelled
+hatchelling
+hazardise
+hazardises
+heathenisation
+heathenise
+heathenised
+heathenises
+heathenising
+heavenise
+heavenises
+hebraisation
+hebraisations
+hebraise
+hebraised
+hebraises
+hebraising
+hectogramme
+hectogramme's
+hectogrammes
+hectolitre
+hectometre
+hectometre's
+hectometres
+heparinise
+hepatise
+hepatised
+hepatises
+hepatising
+heraldise
+heraldises
+hereticise
+hereticises
+heroinise
+heroinises
+heroisation
+heroisation's
+heroisations
+heroise
+heroised
+heroises
+heroising
+hiccough
+hiccoughed
+hiccoughes
+hiccoughing
+hirselled
+hirselling
+historicise
+historicised
+historicises
+historicising
+hominisation
+hominised
+homoeopathic
+homoeopathically
+homoeopathies
+homoeopathy
+homoeopathy's
+homoeostasis
+homoeostatic
+homoeotypic
+homologisation
+homologise
+homologised
+homologiser
+homologises
+homologising
+honourabilities
+honourability
+honourability's
+honourableship
+honourableship's
+honourableships
+honourless
+honourlesses
+hoodlumise
+hoodlumises
+hooliganise
+hooliganises
+horizontalisation
+horizontalisation's
+horizontalisations
+horizontalise
+horizontalises
+hormonise
+hormonises
+horrorise
+horrorises
+hostilise
+hostilises
+hotelisation
+hotelisation's
+hotelisations
+hotelise
+hotelises
+houselled
+houselling
+housellings
+hovelled
+hoveller
+hovellers
+hovelling
+hucksterise
+hucksterises
+humanisation
+humanisation's
+humanisations
+humanitarianise
+humanitarianises
+humorise
+humorises
+humoural
+humourless
+humourlesses
+humourlessness
+humoursome
+hurricanise
+hurricanises
+hyalinisation
+hyalinisation's
+hyalinisations
+hyalinise
+hyalinises
+hybridisable
+hybridisables
+hybridisation
+hybridisation's
+hybridisations
+hybridise
+hybridised
+hybridiser
+hybridisers
+hybridises
+hybridising
+hydrogenisation
+hydrogenisation's
+hydrogenisations
+hydrogenise
+hydrogenised
+hydrogenises
+hydrogenising
+hydrolyse
+hydrolyse's
+hydrolyses
+hydroxylisation
+hydroxylisation's
+hydroxylisations
+hydroxylise
+hydroxylises
+hygienisation
+hygienisation's
+hygienisations
+hygienise
+hygienises
+hyperaesthesia
+hyperaesthetic
+hyperbolise
+hyperbolised
+hyperbolises
+hyperbolising
+hypercatharses
+hypercivilisation
+hypercivilisation's
+hypercivilisations
+hypercivilised
+hypercivilised's
+hyperciviliseds
+hypercriticise
+hypercriticises
+hyperemphasise
+hyperemphasises
+hyperimmunisation
+hyperimmunisation's
+hyperimmunisations
+hyperimmunise
+hyperimmunises
+hyperinsulinisation
+hyperinsulinisation's
+hyperinsulinisations
+hyperinsulinise
+hyperinsulinises
+hyperoxygenise
+hyperoxygenises
+hyperparasitise
+hyperparasitises
+hyperrealise
+hyperrealises
+hypersensitisation
+hypersensitisation's
+hypersensitisations
+hypersensitise
+hypersensitised
+hypersensitises
+hypersensitising
+hyperspiritualising
+hyperspiritualising's
+hyperspiritualisings
+hyperthyroidisation
+hyperthyroidisation's
+hyperthyroidisations
+hyperthyroidise
+hyperthyroidises
+hypervitalisation
+hypervitalisation's
+hypervitalisations
+hypervitalise
+hypervitalises
+hyphenisation
+hyphenisation's
+hyphenisations
+hyphenise
+hyphenises
+hypnotisabilities
+hypnotisability
+hypnotisability's
+hypnotisable
+hypnotisables
+hypnotisation
+hypnotisation's
+hypnotisations
+hypnotise
+hypnotiser
+hypnotisers
+hypnotises
+hypnotising
+hypocentre
+hyposensitisation
+hyposensitise
+hypostatisation
+hypostatisation's
+hypostatisations
+hypostatise
+hypostatises
+hysterectomise
+hysterectomised
+hysterectomises
+hysterectomising
+ichneumonised
+ichneumonised's
+ichneumoniseds
+idiotise
+idiotises
+idolatrise
+idolatrised
+idolatrises
+idolatrising
+idolisation
+idolisation's
+idolisations
+illegalisation
+illegalise
+illegalised
+illegalises
+illegalising
+illegitimatise
+illegitimatises
+immaterialisation
+immaterialise
+immaterialised
+immaterialises
+immaterialising
+immobilisation
+immobilisation's
+immobilisations
+immoralise
+immoralises
+immortalisable
+immortalisables
+immortalisation
+immortalisation's
+immortalisations
+immortalise
+immortaliser
+immortalisers
+immortalises
+immortalising
+immunise
+immunised
+immunises
+immunising
+impactionise
+impactionises
+impanelled
+impanelling
+imperialisation
+imperialisation's
+imperialisations
+imperialise
+imperialises
+imperilling
+impersonalisation
+impersonalisation's
+impersonalisations
+impersonalise
+impersonalises
+impersonalising
+improvisatorise
+improvisatorises
+individualisation
+individualisation's
+individualisations
+indraught
+industrialise
+industrialises
+inferiorise
+inferiorises
+infernalise
+infernalises
+infidelise
+infidelises
+infinitise
+infinitises
+informalise
+inhumanise
+initialisable
+initially
+insolubilisation
+insolubilise
+institutionise
+institutionises
+instrumentalise
+instrumentalises
+insularise
+insularises
+insurrectionise
+insurrectionises
+integralisation
+integralisation's
+integralisations
+integralise
+integralises
+intellectualisation
+intellectualisation's
+intellectualisations
+intellectualise
+intellectualised
+intellectualiser
+intellectualisers
+intellectualises
+intellectualising
+intercivilisation
+intercivilisation's
+intercivilisations
+intercolonisation
+intercolonisation's
+intercolonisations
+intercrystallisation
+intercrystallisation's
+intercrystallisations
+intercrystallise
+intercrystallises
+interhybridise
+interhybridises
+interiorisation
+interiorise
+interiorised
+interiorises
+interiorising
+interjectionalise
+interjectionalises
+interjectionise
+interjectionises
+interjudgement
+interjudgement's
+interjudgements
+internationalise
+internationalises
+internationalising
+interorganisational
+intraorganisation
+intraorganisation's
+intraorganisations
+iodisation
+iodise
+iodised
+iodiser
+iodisers
+iodises
+iodising
+ionisable
+ionisables
+ionisation
+ionisation's
+ionisations
+ironise
+ironises
+irrationalise
+irrationalises
+irregularise
+irregularises
+isochronisation
+isochronise
+isochronised
+isochronises
+isochronising
+isoimmunisation
+isoimmunisation's
+isoimmunisations
+isoimmunise
+isoimmunises
+isomerisation
+isomerisation's
+isomerisations
+isomerise
+isomerised
+isomerises
+isomerising
+italicisation
+italicisation's
+italicisations
+jargonisation
+jargonisation's
+jargonisations
+jargonise
+jargonised
+jargonises
+jargonising
+jasperise
+jasperises
+jeopardisation
+jewelleries
+jewellery
+journalisation
+journalisation's
+journalisations
+jovialise
+jovialises
+judgemental
+judicialise
+judicialises
+juvenilise
+juvenilises
+kaolinisation
+kaolinisation's
+kaolinisations
+kaolinise
+kaolinises
+kennelled
+kennelling
+keratinisation
+keratinise
+keratinised
+keratinises
+keratinising
+kernelled
+kernelling
+ketonisation
+ketonisation's
+ketonisations
+ketonise
+ketonises
+kilolitre
+kilolitre's
+kilolitres
+kinaesthesia
+kyanise
+kyanised
+kyanises
+kyanising
+labellable
+labialisation
+labialisation's
+labialisations
+labialise
+labialised
+labialises
+labialising
+labilisation
+labilisation's
+labilisations
+labilise
+labilises
+labourabilities
+labourability
+labourability's
+labourable
+labourables
+labourhood
+labourhood's
+labourhoods
+labourism
+labourism's
+labourisms
+labourist
+labourist's
+labourists
+labourite
+labourite's
+labourites
+labourless
+labourlesses
+lacklustre
+laconise
+laconised
+laconises
+laconising
+lactonised
+laicisation
+laicisations
+laicise
+laicised
+laicises
+laicising
+lapelled
+latentise
+latentises
+lateralisation
+lateralisation's
+lateralisations
+lateralise
+lateralises
+laterisation
+laterisation's
+laterisations
+laurelling
+leatherise
+leatherises
+legitimatise
+legitimatised
+legitimatises
+legitimatising
+legitimisation
+legitimisation's
+legitimisations
+lethalise
+lethalises
+leukaemia
+lexiconise
+lexiconises
+libellant
+libellants
+libelled
+libellee
+libellees
+libelling
+licenceless
+licencelesses
+lichenisation
+lichenisation's
+lichenisations
+lichenise
+lichenises
+lignitise
+lignitises
+linearisation
+linearisation's
+linearisations
+linenise
+lineniser
+linenisers
+linenises
+lingualise
+lingualises
+lionisable
+lionisables
+lionisation
+lionisation's
+lionisations
+liquidisation
+liquidise
+liquidised
+liquidiser
+liquidisers
+liquidises
+liquidising
+literalisation
+literalisation's
+literalisations
+literalise
+literalised
+literaliser
+literalisers
+literalises
+lithographise
+lithographises
+localisable
+localisables
+logicalisation
+logicalisation's
+logicalisations
+logicalise
+logicalises
+logicise
+logicised
+logicises
+logicising
+logorrhoea
+logorrhoea's
+logorrhoeas
+louvre
+louvred
+louvres
+loyalise
+loyalises
+lumbarisation
+lumbarisation's
+lumbarisations
+lunatise
+lunatises
+lustreless
+lustreware
+luteinisation
+luteinise
+lyophilisation
+lyophilise
+lyophilised
+lyophiliser
+lyricise
+lyricised
+lyricises
+lyricising
+lysogenisation
+lysogenise
+macadamisation
+macadamise
+macadamised
+macadamises
+macadamising
+macarise
+macarised
+macarises
+macarising
+machinisation
+machinisation's
+machinisations
+machinise
+machinises
+magicalise
+magicalises
+magnetisabilities
+magnetisability
+magnetisability's
+magnetisable
+magnetisables
+magnetise
+magnetiser
+magnetisers
+magnetises
+magnetising
+mahoganise
+mahoganised
+mahoganises
+mahoganising
+majorise
+majorises
+malleablise
+malleablises
+malodour
+mandarinise
+mandarinises
+mannerise
+mannerises
+marbleise
+marbleises
+marginalisation
+marginalise
+marginalised
+marginalises
+marginalising
+marsupialisation
+marsupialisation's
+marsupialisations
+marsupialise
+marsupialises
+martialisation
+martialisation's
+martialisations
+martialise
+martialises
+martyrisation
+martyrisation's
+martyrisations
+martyrise
+martyrised
+martyriser
+martyrisers
+martyrises
+martyrising
+marveller
+masculinisation
+masculinisation's
+masculinisations
+masculinise
+masculinised
+masculinises
+masculinising
+materialisation
+materialisation's
+materialisations
+maternalise
+maternalises
+mathematicise
+mathematicises
+mathematisation
+matronise
+matronised
+matronises
+matronising
+maudlinise
+maudlinises
+mazourka
+mazourka's
+mazourkas
+mechanicalisation
+mechanicalisation's
+mechanicalisations
+mechanicalise
+mechanicalises
+mechanisable
+medalise
+medalises
+medallist
+medallists
+mediaevalise
+mediaevalises
+mediaevalism
+mediaevalism's
+mediaevalisms
+mediaevalistic
+mediaevalistics
+medialisation
+medialisation's
+medialisations
+medialise
+medialises
+mediatisation
+mediatisation's
+mediatisations
+mediatise
+mediatised
+mediatises
+mediatising
+mediumisation
+mediumisation's
+mediumisations
+mediumise
+mediumises
+melanisation
+melanise
+melanised
+melanises
+melanising
+melodisation
+melodise
+melodised
+melodiser
+melodises
+melodising
+melodramatisation
+melodramatise
+melodramatised
+melodramatises
+melodramatising
+memorialisation
+memorialisation's
+memorialisations
+memorialise
+memorialiser
+memorialisers
+memorialises
+memorialising
+memorisable
+memorisables
+mentalisation
+mentalisation's
+mentalisations
+mentalise
+mentalises
+mercerisation
+mercerisation's
+mercerisations
+mercerise
+mercerised
+merceriser
+mercerisers
+mercerises
+mercerising
+mercurialisation
+mercurialisation's
+mercurialisations
+mercurialise
+mercurialises
+mesmerisabilities
+mesmerisability
+mesmerisability's
+mesmerisable
+mesmerisables
+mesmerisation
+mesmerisation's
+mesmerisations
+mesmerise
+mesmeriser
+mesmerisers
+mesmerises
+mesmerising
+metabolisable
+metabolisables
+metabolise
+metabolises
+metabolising
+metacentre
+metallicise
+metallicises
+metallise
+metallised
+metallises
+metallising
+metamerisation
+metamerisation's
+metamerisations
+metamerised
+metamerised's
+metameriseds
+metaphonise
+metaphonises
+metaphorise
+metaphorises
+metaphysicise
+metaphysicises
+metastasise
+metastasised
+metastasises
+metastasising
+meteorisation
+meteorisation's
+meteorisations
+meteorise
+meteorises
+methodisation
+methodisation's
+methodisations
+methodise
+methodised
+methodiser
+methodisers
+methodises
+methodising
+metricise
+metricised
+metricises
+metricising
+metropolitanise
+metropolitanises
+miaow
+miaowed
+miaowing
+miaows
+microgramme
+microgramme's
+microgrammes
+microlitre
+microlitre's
+microlitres
+micrometre
+micrometre's
+micrometres
+micromillimetre
+micromillimetre's
+micromillimetres
+microminiaturisation
+microminiaturise
+microminiaturised
+microminiaturiser
+microminiaturisers
+microminiaturises
+microminiaturising
+micronisation
+micronisation's
+micronisations
+micronise
+micronises
+micropolarisation
+micropolarisation's
+micropolarisations
+microscopise
+microscopises
+militarisation
+militarisations
+militarise
+militarised
+militarises
+militarising
+millionise
+millionises
+mineralisable
+mineralisables
+mineralisation
+mineralisation's
+mineralisations
+mineralise
+mineraliser
+mineralisers
+mineralises
+mineralising
+miraculise
+miraculised
+miraculises
+miraculising
+mirrorise
+mirrorises
+misalphabetise
+misalphabetises
+misanthropise
+misanthropised
+misanthropises
+misanthropising
+misauthorisation
+misauthorisation's
+misauthorisations
+misauthorise
+misauthorises
+misbaptise
+misbaptises
+miscanonise
+miscanonises
+mischaracterisation
+mischaracterisation's
+mischaracterisations
+mischaracterise
+mischaracterises
+miscolour
+miscolour's
+miscoloured
+miscolouring
+miscolours
+misemphases
+misemphasise
+misemphasises
+misendeavour
+misendeavour's
+misendeavours
+mislabelled
+mislabelling
+mislabour
+mislabour's
+mislaboured
+mislabouring
+mislabours
+misorganisation
+misorganisation's
+misorganisations
+misorganise
+misorganises
+misprise
+misprised
+misprises
+misprising
+misrealise
+misrealises
+misrecognise
+misrecognises
+misrouteing
+missionarise
+missionarises
+missionisation
+missionise
+missionised
+missioniser
+missionisers
+missionises
+missionising
+mobilisable
+mobilisables
+modalise
+modalises
+modernisable
+modernisables
+moisturisation
+moisturise
+moisturised
+moisturiser
+moisturisers
+moisturises
+moisturising
+molarisation
+molarisations
+monarchise
+monarchiser
+monarchisers
+monarchises
+monasticise
+monasticises
+mongrelisation
+mongrelisations
+mongrelise
+mongrelised
+mongreliser
+mongrelises
+mongrelising
+monochordise
+monochordises
+monologise
+monologised
+monologises
+monologising
+monometallism
+monometallist
+monopolisable
+monopolisables
+monotonise
+monotonises
+monumentalisation
+monumentalisation's
+monumentalisations
+monumentalise
+monumentalised
+monumentalises
+monumentalising
+moralisation
+moralisation's
+moralisations
+moralise
+moralised
+moraliser
+moralisers
+moralises
+moralising
+moralisinglies
+moralisingly
+morbidise
+morbidises
+morphinisation
+morphinisation's
+morphinisations
+morphinise
+morphinises
+morselisation
+morselisation's
+morselisations
+morselise
+morselises
+morselled
+morselling
+mortalise
+mortalises
+mortarise
+mortarises
+motorisation
+motorisation's
+motorisations
+multifibred
+multifibred's
+multifibreds
+municipalisation
+municipalisation's
+municipalisations
+municipalise
+municipalised
+municipaliser
+municipalisers
+municipalises
+municipalising
+muscularise
+muscularises
+museumise
+museumises
+musicalisation
+musicalisation's
+musicalisations
+musicalise
+musicalises
+mutualisation
+mutualisation's
+mutualisations
+mutualise
+mutualised
+mutualises
+mutualising
+myelinisation
+myelinisation's
+myelinisations
+mysticise
+mysticises
+mythicisation
+mythicise
+mythicised
+mythiciser
+mythicisers
+mythicises
+mythicising
+mythise
+mythises
+mythologisation
+mythologise
+mythologised
+mythologiser
+mythologises
+mythologising
+nakedise
+nakedises
+nanogramme
+nanogrammes
+nanometre
+nanometres
+narcotisation
+narcotise
+narcotised
+narcotising
+nasalise
+nasalises
+nasalising
+naturalise
+naturaliser
+naturalisers
+naturalises
+naturalising
+naturise
+naturises
+nebularisation
+nebularisation's
+nebularisations
+nebularise
+nebularises
+nebulisation
+nebulisations
+nebulise
+nebulised
+nebuliser
+nebulises
+nebulising
+necrotise
+necrotised
+necrotises
+necrotising
+nectarise
+nectarises
+neighbourless
+neighbourlesses
+neighbourlike
+neighbourlike's
+neighbourlikes
+neighbourship
+neighbourship's
+neighbourships
+neologisation
+neologise
+neologised
+neologises
+neologising
+neuroticise
+neuroticises
+newspaperised
+newspaperised's
+newspaperiseds
+nickelisation
+nickelisation's
+nickelisations
+nickelise
+nickelises
+nicotinise
+nicotinises
+nightingalise
+nightingalises
+nitre
+nitridisation
+nitridisation's
+nitridisations
+nitridise
+nitridises
+nitrogenisation
+nitrogenisation's
+nitrogenisations
+nitrogenise
+nitrogenised
+nitrogenises
+nitrogenising
+nodulise
+nodulises
+nomadisation
+nomadisation's
+nomadisations
+nomadise
+nomadised
+nomadises
+nomadising
+nominalise
+nominalises
+nominalising
+nonacknowledgement
+nonacknowledgement's
+nonacknowledgements
+nonanaesthetised
+nonapostatising
+nonapostatising's
+nonapostatisings
+noncanonisation
+noncanonisation's
+noncanonisations
+noncartelised
+noncartelised's
+noncarteliseds
+noncatechisable
+noncatechisables
+noncivilised
+noncivilised's
+nonciviliseds
+noncolouring
+noncolouring's
+noncolourings
+noncrystallisable
+noncrystallisables
+noncrystallised
+noncrystallised's
+noncrystalliseds
+noncrystallising
+noncrystallising's
+noncrystallisings
+nondemobilisation
+nondemobilisation's
+nondemobilisations
+nondialysing
+nondialysing's
+nondialysings
+nondimensionalise
+nondimensionalised
+nonfavourite
+nonfavourite's
+nonfavourites
+nonfulfilment
+nonfulfilment's
+nonfulfilments
+nongalvanised
+nongalvanised's
+nongalvaniseds
+nongelatinising
+nongelatinising's
+nongelatinisings
+nonhydrolysable
+nonhydrolysables
+nonimmunised
+nonimmunised's
+nonimmuniseds
+nonionised
+nonionised's
+nonioniseds
+nonionising
+nonionising's
+nonionisings
+nonlocalised
+nonlocalised's
+nonlocaliseds
+nonmagnetisable
+nonmagnetisables
+nonnitrogenised
+nonnitrogenised's
+nonnitrogeniseds
+nonorganisation
+nonorganisation's
+nonorganisations
+nonoxidisable
+nonoxidisables
+nonoxidising
+nonoxidising's
+nonoxidisings
+nonparlour
+nonparlour's
+nonparlours
+nonpenalised
+nonpenalised's
+nonpenaliseds
+nonphosphorised
+nonphosphorised's
+nonphosphoriseds
+nonpolarisable
+nonpolarisables
+nonpolarised
+nonpolarising
+nonpolarising's
+nonpolarisings
+nonrationalised
+nonrationalised's
+nonrationaliseds
+nonrealisation
+nonrealisation's
+nonrealisations
+nonrecognised
+nonrecognised's
+nonrecogniseds
+nonschematised
+nonschematised's
+nonschematiseds
+nonsensitised
+nonsensitised's
+nonsensitiseds
+nonspecialised
+nonspecialised's
+nonspecialiseds
+nonstandardised
+nonstandardised's
+nonstandardiseds
+nonstylised
+nonstylised's
+nonstyliseds
+nonsympathiser
+nonsympathiser's
+nonsympathisers
+nonsynthesised
+nonsynthesised's
+nonsynthesiseds
+nontemporising
+nontemporising's
+nontemporisings
+nonutilised
+nonutilised's
+nonutiliseds
+nonvisualised
+nonvisualised's
+nonvisualiseds
+nonvolatilised
+nonvolatilised's
+nonvolatiliseds
+nonvulcanisable
+nonvulcanisables
+normalisable
+northernise
+northernises
+nosise
+notarisation
+notarisations
+nothingise
+nothingises
+nounise
+nounises
+novelisation
+novelisation's
+novelisations
+novelise
+noveliser
+novelisers
+novelises
+novelising
+nuptialise
+nuptialises
+obelise
+obelised
+obelises
+obelising
+objectisation
+objectisation's
+objectisations
+objectise
+objectises
+objectivise
+objectivises
+oblivionise
+oblivionises
+ochreous
+odorise
+odorised
+odoriser
+odorises
+odorising
+odourful
+odourless
+odourlesses
+oesophagus
+offenceless
+offencelesses
+offencelessly
+officialisation
+officialisation's
+officialisations
+officialise
+officialises
+onionised
+onionised's
+onioniseds
+opalise
+opalises
+opalled
+operatise
+operatises
+optionalise
+optionalises
+oralisation
+oralisation's
+oralisations
+oralise
+oralises
+orangise
+orangises
+oratorise
+oratorises
+organisabilities
+organisability
+organisability's
+organisationist
+organisationist's
+organisationists
+orientalisation
+orientalisation's
+orientalisations
+orientalise
+orientalised
+orientalises
+orientalising
+orientate
+orientated
+orientates
+orientating
+orientisation
+orientisation's
+orientisations
+orientise
+orientises
+ornamentalise
+ornamentalises
+orphanise
+orphanises
+orthocentre
+orthogonalise
+orthogonalises
+orthogonalising
+orthopaedically
+orthopaedist
+ostracisable
+ostracisables
+ostracisation
+ostracisation's
+ostracisations
+ostracise
+ostraciser
+ostracisers
+ostracises
+ostracising
+outcavilled
+outcavilling
+outclamour
+outclamour's
+outclamours
+outhumour
+outhumour's
+outhumoured
+outhumouring
+outhumours
+outhyperbolise
+outhyperbolises
+outlabour
+outlabour's
+outlabours
+outrivalled
+outrivalling
+outsavour
+outsavour's
+outsavouring
+outsavours
+outsplendour
+outsplendour's
+outsplendours
+outtyrannise
+outtyrannises
+ovalisation
+ovalisation's
+ovalisations
+ovalise
+ovalises
+ovariectomised
+overagonise
+overagonises
+overbrutalise
+overbrutalises
+overcapitalisation
+overcapitalisation's
+overcapitalisations
+overcapitalise
+overcapitalised
+overcapitalises
+overcapitalising
+overcentralisation
+overcentralisation's
+overcentralisations
+overcentralise
+overcentralises
+overcivilisation
+overcivilisation's
+overcivilisations
+overcivilise
+overcivilises
+overclamour
+overclamour's
+overclamours
+overcolour
+overcolour's
+overcolours
+overcriticise
+overcriticises
+overdoctrinise
+overdoctrinises
+overemotionalise
+overemotionalises
+overfavour
+overfavour's
+overfavourable
+overfavourables
+overfavourablies
+overfavourably
+overfavours
+overfertilisation
+overgeneralise
+overgeneralises
+overhonour
+overhonour's
+overhonours
+overhumanise
+overhumanises
+overindustrialisation
+overindustrialisation's
+overindustrialisations
+overindustrialise
+overindustrialises
+overjudgement
+overjudgement's
+overjudgements
+overlabour
+overlabour's
+overlabours
+overnationalisation
+overnationalisation's
+overnationalisations
+overrapturise
+overrapturises
+overrationalise
+overrationalises
+oversentimentalise
+oversentimentalises
+overspecialisation
+overspecialisation's
+overspecialisations
+overspecialise
+overspecialised
+overspecialises
+oversystematise
+oversystematises
+overunionised
+overunionised's
+overunioniseds
+overurbanisation
+overurbanisation's
+overurbanisations
+overwomanise
+overwomanises
+oxidisabilities
+oxidisability
+oxidisability's
+oxidisable
+oxidisables
+oxidisation
+oxidisation's
+oxidisations
+oxidisement
+oxidisement's
+oxidisements
+oxygenisable
+oxygenisables
+oxygenise
+oxygenisement
+oxygenisement's
+oxygenisements
+oxygeniser
+oxygenisers
+oxygenises
+ozonisation
+ozonisation's
+ozonisations
+ozonise
+ozonised
+ozoniser
+ozonisers
+ozonises
+ozonising
+packetisation
+packetise
+packetised
+packetiser
+packetiser's
+packetisers
+packetises
+packetising
+paeanise
+paeanises
+paganisation
+paganisation's
+paganisations
+paganise
+paganised
+paganiser
+paganisers
+paganises
+paganising
+palatisation
+palatisation's
+palatisations
+palatise
+palatises
+palladiumise
+palladiumises
+palletisation
+palletisations
+palletise
+palletiser
+palletises
+palletising
+pamperise
+pamperises
+pamphletise
+pamphletises
+panderise
+panderises
+pantheonisation
+pantheonisation's
+pantheonisations
+pantheonise
+pantheonises
+papalisation
+papalisation's
+papalisations
+papalise
+papaliser
+papalisers
+papalises
+parabolisation
+parabolise
+parabolised
+parabolises
+parabolising
+paraffinise
+paraffinises
+paragraphise
+paragraphises
+paralysation
+parasitisation
+parasitise
+parasitised
+parasitises
+parasitising
+parathyroidectomise
+parathyroidectomised
+parathyroidectomises
+parathyroidectomising
+parceller
+parchmentise
+parchmentises
+parenthesisation
+parfocalisation
+parfocalise
+parochialisation
+parochialisation's
+parochialisations
+parochialise
+parochialises
+parrotise
+parrotises
+parsonise
+parsonises
+partialise
+partialises
+particularisation
+particularisation's
+particularisations
+particularise
+particularised
+particularises
+particularising
+partisanise
+partisanises
+pasteurise
+pasteurised
+pasteuriser
+pasteurises
+pasteurising
+pastoralise
+pastoralises
+pastorise
+pastorises
+paternalise
+paternalises
+patronisable
+patronisables
+patronisation
+patronisation's
+patronisations
+patternise
+patternises
+pauperisation
+pauperisation's
+pauperisations
+pauperise
+pauperised
+pauperiser
+pauperisers
+pauperises
+pauperising
+paviour
+pearlisation
+pearlise
+pearlised
+pearlises
+pearlising
+peasantise
+peasantises
+pectisation
+pectise
+pectised
+pectises
+pectising
+peculiarise
+peculiarises
+pedaller
+pedallers
+pedantise
+pedantises
+pedestalled
+pedestalling
+pedestrianisation
+pedestrianise
+pedestrianised
+pedestrianises
+pedestrianising
+pelletisation
+pelletisations
+pelletise
+pelletised
+pelletiser
+pelletises
+pelletising
+pemmicanisation
+pemmicanisation's
+pemmicanisations
+pemmicanise
+pemmicanises
+penalisable
+penalisables
+penalisation
+penalisation's
+penalisations
+penciller
+pencillers
+peptisable
+peptisables
+peptisation
+peptisation's
+peptisations
+peptise
+peptised
+peptiser
+peptisers
+peptises
+peptonisation
+peptonise
+peptonised
+peptonises
+peptonising
+percussionise
+percussionises
+perennialise
+perennialises
+perfectivise
+perfectivises
+perilled
+perilling
+periodicalise
+periodicalises
+periodisation
+periodisations
+periodise
+periodised
+periodises
+periodising
+peroxidise
+peroxidisement
+peroxidisement's
+peroxidisements
+peroxidises
+personisation
+personisation's
+personisations
+personise
+personises
+petrolisation
+petrolisation's
+petrolisations
+petrolise
+petrolises
+phagocytise
+phagocytises
+phantomise
+phantomiser
+phantomisers
+phantomises
+phenolisation
+phenolisation's
+phenolisations
+phenolise
+phenolises
+phenomenalisation
+phenomenalisation's
+phenomenalisations
+phenomenalise
+phenomenalises
+philanthropise
+philanthropises
+philosophisation
+philosophisation's
+philosophisations
+phlebotomisation
+phlebotomise
+phlebotomised
+phlebotomises
+phlebotomising
+phoneticisation
+phoneticisation's
+phoneticisations
+phoneticise
+phoneticises
+phosphatisation
+phosphatisation's
+phosphatisations
+phosphatise
+phosphatised
+phosphatises
+phosphatising
+phosphorise
+phosphorises
+photocatalyser
+photocatalyser's
+photocatalysers
+photographise
+photographises
+photoionisation
+photoionisation's
+photoionisations
+photoisomerisation
+photoisomerisation's
+photoisomerisations
+photolabelled
+photolabeller
+photolabelling
+photolysable
+photolyse
+photolysed
+photolyses
+photolysing
+photopolymerisation
+photopolymerisation's
+photopolymerisations
+photosensitisation
+photosensitisation's
+photosensitisations
+photosensitise
+photosensitised
+photosensitiser
+photosensitisers
+photosensitises
+photosensitising
+photosynthesise
+photosynthesised
+photosynthesises
+photosynthesising
+piastre
+picogramme
+picogramme's
+picogrammes
+picometre
+picometre's
+picometres
+pictorialisation
+pictorialisation's
+pictorialisations
+pictorialise
+pictorialised
+pictorialises
+pictorialising
+picturisation
+picturisation's
+picturisations
+picturise
+picturised
+picturises
+picturising
+pidginisation
+pidginise
+pidginised
+pidginises
+pidginising
+pigmentise
+pigmentises
+pilgrimise
+pilgrimises
+pillarise
+pillarises
+piratise
+piratises
+pistolled
+pistolling
+plagiarisation
+plagiarisation's
+plagiarisations
+plagiarise
+plagiarised
+plagiariser
+plagiarisers
+plagiarises
+plagiarising
+plasmolyse
+plasticisation
+plasticisation's
+plasticisations
+plasticise
+plasticised
+plasticiser
+plasticisers
+plasticises
+plasticising
+platinisation
+platinisation's
+platinisations
+platitudinisation
+platitudinise
+platitudinised
+platitudinises
+platitudinising
+platonisation
+platonise
+platonised
+platonises
+platonising
+plebeianise
+plebeianises
+ploughable
+ploughboy
+ploughhead
+poeticisation
+poeticise
+poeticised
+poeticises
+poeticising
+poetisation
+poetisation's
+poetisations
+poetise
+poetised
+poetiser
+poetisers
+poetises
+poetising
+pogromise
+pogromises
+polarisabilities
+polarisability
+polarisability's
+polarisable
+polarisables
+polemicise
+polemicised
+polemicises
+polemicising
+polemise
+polemised
+polemises
+polemising
+policise
+policiser
+policisers
+policises
+politicalise
+politicalises
+politicisation
+politicise
+politiciser
+politicisers
+politicises
+politicising
+politise
+politises
+polleniser
+pollinise
+pollinised
+polliniser
+pollinises
+pollinising
+polychromatise
+polychromatises
+polychromise
+polychromises
+polygamise
+polygamises
+polymerisation
+polymerisation's
+polymerise
+polymerises
+polysulphurisation
+polysulphurisation's
+polysulphurisations
+pommelled
+pommelling
+porcelainisation
+porcelainisation's
+porcelainisations
+porcelainise
+porcelainises
+portionise
+portionises
+positivise
+positivises
+posterise
+posterises
+postsynchronisation
+posturise
+posturises
+potentialisation
+potentialisation's
+potentialisations
+potentialise
+potentialises
+potentise
+potentises
+powderisation
+powderisation's
+powderisations
+powderise
+powderiser
+powderisers
+powderises
+preacherise
+preacherises
+preacknowledgement
+preacknowledgement's
+preacknowledgements
+preanaesthetic
+preanaesthetics
+prebaptise
+prebaptises
+precancellation
+precisionise
+precisionises
+precivilisation
+precivilisation's
+precivilisations
+precolour
+precolour's
+precolourable
+precolourables
+precolouring
+precolourings
+precolours
+preconisation
+preconisation's
+preconisations
+preconise
+preconiser
+preconisers
+preconises
+precriticise
+precriticises
+prefavour
+prefavour's
+prefavourable
+prefavourables
+prefavourablies
+prefavourably
+prefavourite
+prefavourite's
+prefavourites
+prefavours
+prefertilisation
+prefertilisation's
+prefertilisations
+prefertilise
+prefertilises
+preflavour
+preflavour's
+preflavouring
+preflavourings
+preflavours
+pregalvanise
+pregalvanises
+prehumour
+prehumour's
+prehumours
+prejudgement
+prelabour
+prelabour's
+prelabours
+prelatise
+prelatises
+prelocalisation
+prelocalisation's
+prelocalisations
+preludise
+preludises
+premediaeval
+premediaeval's
+premediaevalism
+premediaevalism's
+premediaevalisms
+premediaevals
+premonopolise
+premonopolises
+preoffence
+preoffence's
+preoffences
+preorganisation
+preorganisation's
+preorganisations
+preorganise
+preorganises
+preoxidise
+preoxidised
+preoxidises
+preoxidising
+preprogramme
+prerealisation
+prerealisation's
+prerealisations
+prerealise
+prerealises
+prerecognise
+prerecognises
+prespecialise
+prespecialises
+presplendour
+presplendour's
+presplendours
+pressurisation
+prestandardisation
+prestandardisation's
+prestandardisations
+prestandardise
+prestandardises
+presympathise
+presympathises
+preutilisable
+preutilisables
+preutilisation
+preutilisation's
+preutilisations
+preutilise
+preutilises
+priorisation
+priorisations
+priorise
+priorised
+priorises
+priorising
+prioritisation
+privatisation
+privatise
+privatised
+privatising
+problemise
+problemises
+processionise
+processionises
+proctorisation
+proctorisation's
+proctorisations
+proctorise
+proctorises
+prodigalise
+prodigalises
+profanise
+profanises
+professionalisation
+professionalisation's
+professionalisations
+professionalise
+professionalised
+professionalises
+professionalising
+professionise
+professionises
+programmist
+programmist's
+programmistic
+programmistics
+programmists
+proletarianise
+proletarianises
+proletarianising
+prologuise
+prologuiser
+prologuisers
+prologuises
+prolusionise
+prolusionises
+propagandise
+propagandised
+propagandises
+propagandising
+prophetise
+prophetises
+propositionise
+propositionises
+propraetor
+proselytisation
+proselytisation's
+proselytisations
+protectionise
+protectionises
+protocolisation
+protocolisation's
+protocolisations
+protocolise
+protocolises
+protocolled
+protocolling
+proverbialise
+proverbialises
+proverbise
+proverbises
+provincialisation
+provincialisation's
+provincialisations
+provincialise
+provincialises
+pseudoanaemia
+pseudoanaemia's
+pseudoanaemias
+pseudoanaemic
+pseudoanaemics
+pseudographise
+pseudographises
+pseudomediaeval
+pseudomediaeval's
+pseudomediaevals
+pseudooedema
+pseudooedema's
+pseudooedemas
+psychoanalyse
+psychoanalyser
+psychoanalyser's
+psychoanalysers
+psychoanalyses
+psychologisation
+psychologise
+psychologised
+psychologises
+psychologising
+puebloisation
+puebloisation's
+puebloisations
+puebloise
+puebloises
+pulpitise
+pulpitises
+pulverisable
+pulverisables
+pulverisation
+pulverisation's
+pulverisations
+pummeller
+pummelling
+pupilise
+pupilises
+puppetise
+puppetises
+pyorrhoeal
+pyramidise
+pyramidises
+pyridinise
+pyridinises
+pyritisation
+pyritisation's
+pyritisations
+pyritise
+pyritises
+pyrolysable
+pyrolysate
+pythonise
+pythonises
+quarrellous
+quarterisation
+quarterisation's
+quarterisations
+quininise
+quininises
+racemisation
+racemise
+racemised
+racemises
+racemising
+racialisation
+racialisation's
+racialisations
+racialise
+racialises
+radialisation
+radialisation's
+radialisations
+radialise
+radialises
+radicalisation
+radicalisation's
+radicalisations
+radicalise
+radicalised
+radicalises
+radicalising
+radiosterilise
+radiosterilises
+radiosterilising
+radiumisation
+radiumisation's
+radiumisations
+radiumise
+radiumises
+rapturise
+rapturises
+rascalise
+rascalises
+rationalisable
+rationalisables
+ravelled
+raveller
+ravellers
+ravelling
+ravellings
+reacclimatise
+reactualise
+realisticise
+realisticises
+reanimalise
+reanimalises
+reapologise
+reauthorise
+rebaptisation
+rebaptisation's
+rebaptisations
+rebourbonise
+rebourbonises
+rebrutalise
+recanalisation
+recapitalise
+recarbonise
+recausticise
+recausticises
+recentralise
+reciprocalise
+reciprocalises
+recivilise
+recolonise
+recolour
+recolour's
+recolouring
+reconnoitre
+reconnoitre's
+reconnoitred
+reconnoitres
+reconnoitring
+recriticise
+redialler
+redialling
+refavour
+refavour's
+refertilise
+reflectorise
+reflectorised
+reflectorises
+reflectorising
+reforestisation
+reforestisation's
+reforestise
+reforestises
+regalise
+regalises
+regalvanisation
+regalvanisation's
+regalvanisations
+regalvanise
+regalvanises
+regionalisation
+regionalisation's
+regionalisations
+regionalise
+regionalised
+regionalises
+regionalising
+regularisation
+regularisation's
+regularisations
+regularise
+regularised
+regulariser
+regularisers
+regularises
+reharmonise
+rehonour
+rehonour's
+rehumanisation
+rehumanise
+rehybridise
+rehybridises
+reinitialisation
+reitemise
+relativisation
+relativisation's
+relativisations
+relativise
+relativised
+relativises
+relativising
+religionise
+religionises
+remagnetise
+remagnetises
+rematerialise
+rememorise
+remilitarisation
+remilitarise
+remineralisation
+remineralisation's
+remineralisations
+remineralise
+remineralises
+remobilise
+renationalise
+renationalising
+rencontre
+renormalisation
+renormalise
+renormalising
+reobjectivisation
+reobjectivisation's
+reobjectivisations
+reobjectivise
+reobjectivises
+reorganisational
+reorganisationist
+reorganisationist's
+reorganisationists
+reoxidise
+reoxygenise
+reoxygenises
+repaganisation
+repaganisation's
+repaganisations
+repaganise
+repaganiser
+repaganisers
+repaganises
+repatronise
+repersonalise
+rephosphorisation
+rephosphorisation's
+rephosphorisations
+rephosphorise
+rephosphorises
+repolymerisation
+repolymerisation's
+repolymerisations
+repolymerise
+repolymerises
+reprivatisation
+reprivatisation's
+reprivatisations
+reprivatise
+reprivatises
+republicanisation
+republicanisation's
+republicanisations
+republicanise
+republicanised
+republicaniser
+republicanisers
+republicanises
+republicanising
+repulverise
+reroyalise
+reroyalises
+resensitisation
+resensitisation's
+resensitisations
+resensitise
+resensitises
+resepulchre
+resinise
+resinises
+resolemnise
+resolemnises
+restandardise
+resterilise
+restigmatise
+restigmatises
+resurrectionise
+resurrectionises
+resymbolise
+resynchronisation
+resynchronise
+resynchronising
+resynthesise
+retinise
+retinises
+retranquilise
+reutilise
+revalorisation
+revalorisation's
+revalorisations
+revalorise
+revalorised
+revalorises
+revalorising
+revaporise
+revaporises
+revelationise
+revelationises
+revisualise
+revitalisation's
+revitalisations
+revivalise
+revivalises
+revolatilise
+revolatilises
+revolutionisement
+revolutionisement's
+revolutionisements
+rhapsodise
+rhapsodised
+rhapsodises
+rhapsodising
+rhythmicise
+rhythmicises
+rhythmisable
+rhythmisables
+rhythmisation
+rhythmisation's
+rhythmisations
+rhythmise
+rhythmises
+ridiculise
+ridiculises
+ritualisation
+ritualise
+ritualises
+ritualising
+rivalise
+rivalises
+rivalless
+rivallesses
+robotisation
+robotisation's
+robotisations
+robotise
+robotises
+roentgenise
+romanticisation
+routinisation
+routinisation's
+routinisations
+routinise
+routinises
+rowelled
+rowelling
+royalisation
+royalisation's
+royalisations
+royalise
+royalises
+rubberisation
+rubberise
+rubberises
+rubberising
+rubricise
+rubricises
+ruffianise
+ruffianises
+ruggedisation
+ruggedise
+ruggedised
+ruggedises
+ruggedising
+rumourmonger
+rumourmonger's
+rumourmongers
+ruralisation
+ruralisation's
+ruralisations
+ruralise
+ruralised
+ruralises
+ruralising
+russianisation
+russianise
+rusticise
+rusticises
+sabrelike
+sabrelike's
+sabrelikes
+sabretooth
+sacralisation
+sacralisation's
+sacralisations
+sacramentise
+sacramentises
+sailorising
+sailorising's
+sailorisings
+salinisation
+salinise
+salinises
+saltpetre
+saltpetre's
+saltpetres
+sandalled
+sandalling
+sanitisation
+sapientise
+sapientises
+satanise
+satanises
+satinise
+satinises
+satirisable
+satirisables
+satirise
+satirised
+satiriser
+satirisers
+satirising
+savagise
+savagises
+saviourhood
+saviourhood's
+saviourhoods
+saviourship
+saviourship's
+saviourships
+savourilies
+savourily
+savourless
+savourlesses
+savourous
+scandalisation
+scandalisation's
+scandalisations
+scandalise
+scandaliser
+scandalisers
+scandalises
+scandalled
+scandalling
+scenarioisation
+scenarioisation's
+scenarioisations
+scenarioise
+scenarioises
+scenarisation
+scenarisation's
+scenarisations
+scenarise
+scenarises
+sceptreless
+sceptrelesses
+schedulise
+schedulises
+schematisation
+schematisation's
+schematisations
+schematise
+schematised
+schematiser
+schematisers
+schematises
+schematising
+schismatise
+schismatised
+schismatises
+schismatising
+sclerotisation
+sclerotised
+scripturalise
+scripturalises
+scrutinisation
+scrutinisation's
+scrutinisations
+seborrhoea
+seborrhoeic
+sectarianisation
+sectarianise
+sectarianised
+sectarianises
+sectarianising
+sectionalisation
+sectionalisation's
+sectionalisations
+sectionalise
+sectionalises
+sectionalising
+sectionise
+sectionises
+secularise
+seculariser
+secularisers
+secularises
+secularising
+semicarbonise
+semicarbonises
+semicivilisation
+semicivilisation's
+semicivilisations
+semicivilised
+semicivilised's
+semiciviliseds
+semifossilised
+semifossilised's
+semifossiliseds
+semihonour
+semihonour's
+semihonours
+semihumanised
+semihumanised's
+semihumaniseds
+semimercerised
+semimercerised's
+semimerceriseds
+semimineralised
+semimineralised's
+semimineraliseds
+seminarise
+seminarises
+seminationalisation
+seminationalisation's
+seminationalisations
+semiorganised
+semiorganised's
+semiorganiseds
+semioxidised
+semioxidised's
+semioxidiseds
+semioxygenised
+semioxygenised's
+semioxygeniseds
+semiprofessionalised
+semiprofessionalised's
+semiprofessionaliseds
+semivulcanised
+semivulcanised's
+semivulcaniseds
+senilise
+senilises
+sensationalise
+sensationalised
+sensationalises
+sensationalising
+sensise
+sensises
+sensitisation
+sensitisation's
+sensitisations
+sensitise
+sensitiser
+sensitisers
+sensitises
+sensitising
+sensualisation
+sensualisation's
+sensualisations
+sensualise
+sensualised
+sensualises
+sensualising
+sentimentalisation
+sentimentalisation's
+sentimentalisations
+sentinelled
+sentinelling
+sepalled
+septicisation
+septicisation's
+septicisations
+sepulchralise
+sepulchralises
+serenise
+serenises
+serialisability
+serialisable
+sermonise
+sermonised
+sermoniser
+sermonisers
+sermonises
+sermonising
+serpentinisation
+serpentinisation's
+serpentinisations
+serpentinise
+serpentinises
+serpentise
+serpentises
+servilise
+servilises
+severalise
+severalises
+severisation
+severisation's
+severisations
+severise
+severises
+sexualisation
+sexualisation's
+sexualisations
+sexualise
+sexualises
+shepherdise
+shepherdises
+siderealise
+siderealises
+signalisation
+signalise
+signalised
+signalising
+silicatisation
+silicatisation's
+silicatisations
+silicidise
+silicidises
+siliconise
+siliconises
+silverise
+silveriser
+silverisers
+silverises
+similarise
+similarises
+similise
+similises
+simonise
+singularisation
+singularisation's
+singularisations
+singularise
+singularises
+sinicise
+sinicised
+sinicises
+sinicising
+sirenise
+sirenises
+sisterise
+sisterises
+skeletonisation
+skeletonisation's
+skeletonisations
+skeletonise
+skeletonised
+skeletoniser
+skeletonisers
+skeletonises
+skeletonising
+skepticise
+skepticises
+slenderise
+slenderised
+slenderises
+slenderising
+sloganise
+sloganises
+snobsnivelling
+soberise
+soberised
+soberises
+soberising
+sockdologising
+solarisation
+solarisation's
+solarisations
+solarise
+solarised
+solarises
+solarising
+soldierise
+soldierises
+solecise
+solecised
+solecises
+solecising
+solemnisation
+solemnisation's
+solemnisations
+solemnise
+solemnised
+solemniser
+solemnisers
+solemnises
+solemnising
+soliloquisation
+soliloquise
+soliloquised
+soliloquiser
+soliloquisers
+soliloquises
+soliloquising
+soliloquising's
+soliloquisingly
+soliloquisings
+solmisation
+solubilisation
+solubilise
+solubilised
+solubilises
+solubilising
+solutise
+solutiser
+solutisers
+solutises
+sonantised
+sonantised's
+sonantiseds
+sonnetise
+sonnetises
+southernise
+southernises
+sovietisation
+sovietisation's
+sovietisations
+sovietise
+sovietises
+spatialisation
+spatialisation's
+spatialisations
+spatialise
+spatialises
+specificise
+specificises
+specimenise
+specimenises
+spectrelike
+spectrelike's
+spectrelikes
+spheroidise
+spheroidises
+spiralisation
+spiralisation's
+spiralisations
+spiralise
+spiralises
+spiritise
+spiritises
+spiritualisation
+spiritualisation's
+spiritualisations
+spiritualise
+spiritualised
+spiritualiser
+spiritualisers
+spiritualises
+spiritualising
+spirochaetal
+spirochaete
+spirochaete's
+spirochaetes
+spirochaetosis
+splenectomised
+stabilisable
+stallionise
+stallionises
+stalwartise
+stalwartises
+standardisable
+standardisables
+stapedectomised
+statisticise
+statisticises
+stencilise
+sterilisabilities
+sterilisability
+sterilisability's
+sterilisable
+sterilisables
+stigmatise
+stigmatiser
+stigmatisers
+stigmatises
+stigmatising
+strobilisation
+structuralisation
+structuralisation's
+structuralisations
+structuralise
+structuralises
+strychninisation
+strychninisation's
+strychninisations
+strychninise
+strychninises
+stylise
+styliser
+stylisers
+stylises
+stylising
+subarmour
+subarmour's
+subarmours
+subcentre
+suberisation
+suberisation's
+suberisations
+suberise
+suberised
+suberises
+suberising
+subflavour
+subflavour's
+subflavours
+subjectivisation
+subjectivise
+subjectivises
+sublimise
+sublimises
+subminiaturisation
+subminiaturise
+subminiaturised
+subminiaturises
+subminiaturising
+subpulveriser
+subpulveriser's
+subpulverisers
+subsidisable
+subsidisables
+subspecialise
+subspecialises
+subspecialities
+subspeciality
+subspeciality's
+substandardise
+substandardises
+substantialise
+substantialises
+substantivise
+substantivises
+subterraneanise
+subterraneanises
+subtilisation
+subtilisation's
+subtilisations
+subtilise
+subtiliser
+subtilisers
+subtilises
+subtotalled
+subtotalling
+suburbanise
+suburbanises
+subvitalised
+subvitalised's
+subvitaliseds
+succourable
+succourables
+succourless
+succourlesses
+suggestionise
+suggestionises
+sulfatise
+sulfatises
+sulphurisation
+sulphurisation's
+sulphurisations
+sulphurise
+sulphurises
+sultanise
+sultanises
+summerise
+summerises
+superacknowledgement
+superacknowledgement's
+superacknowledgements
+supercanonisation
+supercanonisation's
+supercanonisations
+supercarbonisation
+supercarbonisation's
+supercarbonisations
+supercarbonise
+supercarbonises
+supercivilisation
+supercivilisation's
+supercivilisations
+supercivilised
+supercivilised's
+superciviliseds
+superemphasise
+superemphasises
+superficialise
+superficialises
+superhumanise
+superhumanises
+supernaturalise
+supernaturalises
+superorganisation
+superorganisation's
+superorganisations
+superorganise
+superorganises
+supersensitisation
+supersensitisation's
+supersensitisations
+superspecialise
+superspecialises
+supersubtilised
+supersubtilised's
+supersubtiliseds
+supersulphurise
+supersulphurises
+surgerise
+surgerises
+sycophantise
+sycophantises
+syllogise
+sylvanise
+sylvanises
+symmetrisation
+symmetrisation's
+symmetrisations
+symmetrise
+symmetrised
+symmetrises
+symmetrising
+symptomise
+symptomises
+synaesthesia
+synaesthetic
+synchronisable
+synchronisables
+syncretise
+syncretised
+syncretises
+syncretising
+syndicalise
+syndicalises
+synonymise
+synonymises
+synopsise
+synthesisation
+synthesisation's
+synthesisations
+syphonless
+syphonlesses
+syphonlike
+syphonlike's
+syphonlikes
+syphonophore
+syphonostele
+syphonostelic
+syphonostely
+systemisable
+systemisables
+systemise
+systemiser
+systemisers
+systemises
+tabouret
+tabourets
+tabularisation
+tabularisation's
+tabularisations
+tabularise
+tabularises
+taffetised
+tailorisation
+tailorisation's
+tailorisations
+tailorise
+tailorises
+tamboura
+tandemise
+tandemises
+tantalisation
+tantalisation's
+tantalisations
+tariffise
+tariffises
+tartarisation
+tartarisation's
+tartarisations
+tartarise
+tartarised
+tartarises
+tasselled
+tasselling
+tassells
+tavernise
+tavernises
+teaseller
+teasellers
+teazelled
+teazelling
+technicalisation
+technicalise
+technicalises
+technologise
+teetotalled
+teetotalling
+telaesthesia
+telaesthetic
+tellurise
+tellurised
+tellurises
+tellurising
+templise
+templises
+temporalise
+temporalised
+temporalises
+temporalising
+temporisation
+temporisation's
+temporisations
+tenderisation
+tenderise
+tenderised
+tenderiser
+tenderises
+tenderising
+tendrilled
+tenementisation
+tenementisation's
+tenementisations
+tenementise
+tenementises
+terminalisation
+terminalisation's
+terminalisations
+terminalised
+terminalised's
+terminaliseds
+ternise
+ternises
+terrestrialise
+terrestrialises
+territorialisation
+territorialisation's
+territorialisations
+territorialise
+territorialises
+terrorisation
+terrorisation's
+terrorisations
+testimonialisation
+testimonialisation's
+testimonialisations
+testimonialise
+testimonialiser
+testimonialisers
+testimonialises
+tetanisation
+tetanise
+tetanised
+tetanises
+tetanising
+teutonise
+texturised
+theatreless
+theatrelesses
+theatrelike
+theatrelike's
+theatrelikes
+theatricalisation
+theatricalisation's
+theatricalisations
+theatricalise
+theatricalised
+theatricalises
+theatricalising
+theatricise
+theatricises
+theologisation
+theologise
+theologised
+theologiser
+theologises
+theologising
+thermoanaesthesia
+thermoanaesthesia's
+thermoanaesthesias
+thermometerise
+thermometerises
+thermopolymerisation
+thermopolymerisation's
+thermopolymerisations
+thermosyphon
+thermosyphon's
+thermosyphons
+thronise
+thronises
+thymectomise
+thyroidectomised
+thyroidisation
+thyroidisation's
+thyroidisations
+tined
+tining
+tinsellier
+tinselliest
+tittupped
+tittupping
+tittuppy
+tonicise
+tonicises
+torporise
+torporises
+totalisation
+totalisation's
+totalisations
+totalisator
+totalise
+totalised
+totaliser
+totalisers
+totalises
+totalising
+totalitarianise
+totemisation
+totemisation's
+totemisations
+tourise
+tourises
+tractorisation
+tractorisation's
+tractorisations
+tractorise
+tractorises
+traditionalise
+traditionalises
+traditionise
+traditionises
+tragicise
+tragicises
+traitorise
+traitorises
+trammelled
+trammeller
+trammellers
+trammelling
+tranquilisation
+tranquilisation's
+tranquilisations
+tranquillisation
+tranquillise
+tranquillised
+tranquilliser
+tranquillisers
+tranquillises
+tranquillising
+transcendentalise
+transcendentalises
+transistorisation
+transparentise
+transparentises
+traumatisation
+traumatise
+traumatised
+traumatises
+traumatising
+triangularise
+triangularised
+triangularises
+triangularising
+trichinise
+trillionise
+trillionises
+trimerisation
+trimerisation's
+trimerisations
+trivialisation
+tropicalisation
+tropicalisation's
+tropicalisations
+tropicalise
+tropicalised
+tropicalises
+tropicalising
+trowelled
+trowelling
+trypsinise
+trypsinises
+tuberculinisation
+tuberculinisation's
+tuberculinisations
+tuberculinise
+tuberculinises
+tuberisation
+tuberisation's
+tuberisations
+tuberise
+tuberises
+tubulisation
+tubulisation's
+tubulisations
+tutorisation
+tutorisation's
+tutorisations
+tutorise
+tutorises
+ultracentraliser
+ultracentraliser's
+ultracentralisers
+ultrahonourable
+ultrahonourables
+ultraspecialisation
+ultraspecialisation's
+ultraspecialisations
+ultrastandardisation
+ultrastandardisation's
+ultrastandardisations
+unagonise
+unalcoholised
+unalcoholised's
+unalcoholiseds
+unanimalised
+unanimalised's
+unanimaliseds
+unantagonisable
+unantagonisables
+unapostatised
+unapostatised's
+unapostatiseds
+unauthorise
+unbaptise
+unbrutalise
+unbrutise
+unbrutises
+uncanonise
+uncanonises
+uncantonised
+uncantonised's
+uncantoniseds
+uncatechised
+uncatechised's
+uncatechisedness
+uncatechiseds
+uncatholicise
+uncatholicises
+uncelestialised
+uncelestialised's
+uncelestialiseds
+unchloridised
+unchloridised's
+unchloridiseds
+unchristianise
+unchristianised
+unchristianises
+uncircularised
+uncircularised's
+uncirculariseds
+uncivilisable
+uncivilisables
+uncivilise
+unclericalise
+unclericalises
+uncolonise
+uncolourable
+uncolourables
+uncolourablies
+uncolourably
+unconventionalise
+unconventionalises
+uncriticisable
+uncriticisables
+uncrystallisabilities
+uncrystallisability
+uncrystallisability's
+uncrystallisable
+uncrystallisables
+uncurricularised
+uncurricularised's
+uncurriculariseds
+undefence
+undefence's
+undemagnetisable
+undemagnetisables
+undemocratise
+undenominationalise
+undenominationalises
+undercapitalisation
+undercapitalisation's
+undercapitalisations
+undercapitalise
+undercapitalised
+undercapitalises
+undercapitalising
+undercolour
+undercolour's
+undercoloured
+undercolouring
+undercolourings
+undercolours
+underemphasise
+underemphasised
+underemphasises
+underemphasising
+underlabourer
+underlabourer's
+underlabourers
+underorganisation
+underorganisation's
+underorganisations
+underoxidise
+underoxidises
+underrealise
+underrealises
+undersaviour
+undersaviour's
+undersaviours
+underutilise
+undervitalised
+undervitalised's
+undervitaliseds
+undiphthongise
+undiphthongises
+undiscoloured
+undiscoloured's
+undramatisable
+undramatisables
+undualise
+undualises
+unenamoured
+unenamoured's
+unenamoureds
+unequalise
+unevangelised
+unevangelised's
+unevangeliseds
+unfavouring
+unfavouring's
+unfertilisable
+unfertilisables
+unfeudalise
+unfeudalised
+unfeudalises
+ungalvanised
+ungalvanised's
+ungalvaniseds
+ungelatinisable
+ungelatinisables
+ungelatinised
+ungelatinised's
+ungelatiniseds
+ungentilise
+ungentilises
+ungentlemanise
+ungentlemanises
+ungospelised
+ungospelised's
+ungospeliseds
+ungraphitised
+ungraphitised's
+ungraphitiseds
+unharbour
+unharbour's
+unharboured
+unharmonise
+unheroise
+unheroises
+unhonourable
+unhouselled
+unhypnotisable
+unhypnotisables
+unhypnotise
+unhypnotises
+uniformisation
+uniformisation's
+uniformisations
+uniformise
+uniformises
+unilateralisation
+unilateralisation's
+unilateralisations
+unilateralise
+unilateralises
+unimmortalise
+unimmortalises
+unindividualise
+uninitialisable
+unionisation's
+unionisations
+unitisation
+unitise
+unitises
+unitising
+universalisation
+universalisation's
+universalisations
+unkennelled
+unkennelling
+unlabialise
+unlabialises
+unlabourable
+unlabourables
+unlabouring
+unlabouring's
+unlocalisable
+unlocalisables
+unlocalise
+unmechanise
+unmediatised
+unmediatised's
+unmediatiseds
+unmercerised
+unmercerised's
+unmerceriseds
+unmesmerise
+unmesmerises
+unmetallised
+unmetallised's
+unmetalliseds
+unmethodised
+unmethodised's
+unmethodiseds
+unmethodising
+unmethodising's
+unmethodisings
+unmissionised
+unmissionised's
+unmissioniseds
+unmodernise
+unmonopolise
+unmonopolising
+unmonopolisings
+unmoralise
+unmoralised
+unmoralises
+unmoralising
+unmoralisings
+unmunicipalised
+unmunicipalised's
+unmunicipaliseds
+unmutualised
+unmutualised's
+unmutualiseds
+unmysticise
+unmysticises
+unnaturalisable
+unnaturalisables
+unnaturalise
+unnaturalises
+unneighbourlike
+unneighbourlike's
+unneighbourlikes
+unnitrogenised
+unnitrogenised's
+unnitrogeniseds
+unnormalise
+unnormalising
+unoptimise
+unoptimising
+unoxidisable
+unoxidisables
+unoxygenised
+unoxygenised's
+unoxygeniseds
+unpaganise
+unpaganises
+unparagonised
+unparagonised's
+unparagoniseds
+unparalysed
+unparalysed's
+unparalyseds
+unparticularised
+unparticularised's
+unparticulariseds
+unparticularising
+unparticularising's
+unparticularisings
+unpatronisable
+unpatronisables
+unpauperised
+unpauperised's
+unpauperiseds
+unphilosophise
+unphosphatised
+unphosphatised's
+unphosphatiseds
+unplagiarised
+unplagiarised's
+unplagiariseds
+unpoeticised
+unpoeticised's
+unpoeticiseds
+unpoetise
+unpoetised
+unpoetises
+unpolarisable
+unpolarisables
+unpolymerised
+unpolymerised's
+unpolymeriseds
+unpopularise
+unprotestantise
+unprotestantises
+unpulverise
+unradicalise
+unradicalises
+unrancoured
+unrancoured's
+unrancoureds
+unraveller
+unravellers
+unrealisable
+unrealise
+unrealising
+unrealisings
+unreconnoitred
+unreconnoitred's
+unreconnoitreds
+unrevelationise
+unrevelationises
+unromanticised
+unromanticised's
+unromanticiseds
+unroyalised
+unroyalised's
+unroyaliseds
+unsatirise
+unsatirised
+unsavourilies
+unsavourily
+unscandalise
+unscandalises
+unsceptre
+unsceptre's
+unschematised
+unschematised's
+unschematiseds
+unsectarianise
+unsectarianises
+unsecularise
+unsecularises
+unsensitise
+unsensitises
+unsensualise
+unsensualised
+unsensualises
+unsentimentalise
+unsepulchre
+unsignalised
+unsignalised's
+unsignaliseds
+unsolemnise
+unsolemnised
+unsolemnises
+unspectrelike
+unspectrelike's
+unspectrelikes
+unspiritualise
+unspiritualised
+unspiritualises
+unstoicise
+unstoicises
+unsubstantialise
+unsubstantialises
+unsuccourable
+unsuccourables
+unsulphurised
+unsulphurised's
+unsulphuriseds
+unsupernaturalise
+unsupernaturalised
+unsupernaturalises
+unsymmetrised
+unsymmetrised's
+unsymmetriseds
+unsympathisabilities
+unsympathisability
+unsympathisability's
+unsympathisable
+unsympathisables
+unsyphon
+unsyphon's
+unsystemisable
+unsystemisables
+untantalising
+untantalising's
+untantalisings
+untartarised
+untartarised's
+untartariseds
+untechnicalise
+untechnicalises
+untemporising
+untemporising's
+untheorisable
+untheorisables
+unutilisable
+unutilisables
+unvaporised
+unvaporised's
+unvaporiseds
+unvectorisable
+unvitalised
+unvitalised's
+unvitaliseds
+unvitriolised
+unvitriolised's
+unvitrioliseds
+unvolatilise
+unvolatilised
+unvolatilises
+unvulgarise
+unvulgarised
+unvulgarises
+unwesternised
+unwesternised's
+unwesterniseds
+unwomanise
+urbanise
+urbanises
+urbanising
+utilisabilities
+utilisability
+utilisable
+utilisables
+utilitarianise
+utilitarianises
+utopianiser
+utopianiser's
+utopianisers
+vaccinisation
+vaccinisation's
+vaccinisations
+vacuumise
+vacuumised
+vacuumises
+vacuumising
+vagabondise
+vagabondiser
+vagabondisers
+vagabondises
+vagrantise
+vagrantises
+valorisation
+valorisation's
+valorisations
+valorise
+valorised
+valorises
+valorising
+vampirise
+vampirises
+vandalisation
+vandalisation's
+vandalisations
+vaporisable
+vaporisables
+vaporise
+vaporised
+vaporiser
+vaporisers
+vaporises
+vaporising
+vapourier
+vapouriest
+vapourisable
+vapourisation
+vapourisations
+vapourise
+vapourised
+vapouriser
+vapourises
+vapourish
+vapourishness
+vapourising
+vapourless
+vapourlike
+vapoury
+vascularisation
+vascularisation's
+vascularisations
+vascularise
+vascularised
+vascularises
+vascularising
+vassalisation
+vassalise
+vassalised
+vassalises
+vassalising
+vectorisable
+vectorise
+vectorised
+vectoriser
+vectorisered
+vectorisering
+vectorisers
+vectorises
+vegetablise
+vegetablises
+velarisation
+venalisation
+venalisation's
+venalisations
+venalise
+venalises
+venomisation
+venomisation's
+venomisations
+venomise
+venomises
+ventriloquise
+ventriloquised
+ventriloquises
+ventriloquising
+verbalisation
+verbalisation's
+verbalisations
+vermeilled
+vermeilles
+vermeilling
+vermilionise
+vermilionises
+vernacularisation
+vernacularisation's
+vernacularisations
+vernacularise
+vernacularises
+vernalisation
+vernalisation's
+vernalisations
+vernalise
+vernalised
+vernalises
+vernalising
+versicolour
+versicoloured
+versionise
+versionises
+vestryise
+vestryises
+veteranise
+veteranises
+vialled
+vialling
+victimisable
+victimisables
+victimisation
+victimisation's
+victimisations
+victuallage
+victualled
+victualless
+victualling
+vigourless
+virtualise
+virtualises
+visionise
+visionises
+vitalisation
+vitalisation's
+vitalisations
+vitalise
+vitalised
+vitaliser
+vitalisers
+vitalises
+vitalising
+vitalising's
+vitalisingly
+vitalisings
+vitaminisation
+vitaminise
+vitaminises
+vitriolisable
+vitriolisables
+vitriolisation
+vitriolisation's
+vitriolisations
+vitriolise
+vitrioliser
+vitriolisers
+vitriolises
+vocationalisation
+vocationalisation's
+vocationalisations
+vocationalise
+vocationalises
+volatilisable
+volatilisables
+volatilise
+volatiliser
+volatilisers
+volatilises
+volatilising
+voltise
+voltises
+vowelisation
+vowelisation's
+vowelisations
+vowelise
+vowelised
+vowelises
+vowelising
+vulcanisable
+vulcanisables
+vulcanisate
+vulcanisation
+vulcanisation's
+vulcanisations
+vulcanise
+vulcaniser
+vulcanisers
+vulcanises
+vulcanising
+vulgarisation
+vulgarisation's
+vulgarisations
+vulgarise
+vulgarised
+vulgariser
+vulgarisers
+vulgarises
+vulgarising
+waggonette
+weevilled
+westernisation
+westernisation's
+westernisations
+westernise
+westernised
+westernises
+westernising
+winterisation
+winterisation's
+winterisations
+winterise
+winterised
+winterises
+winterising
+womanisation
+womanisation's
+womanisations
+woodcockise
+woodcockises
+woollenisation
+woollenisation's
+woollenisations
+woollenise
+woollenises
+zeroise
+zeroised
+zeroises
+zeroising
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.0 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.0
new file mode 100644
index 00000000000..4008ec0ff79
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.0
@@ -0,0 +1,47158 @@
+ACM
+ANSI
+ASAP
+ASCII
+ATM's
+Achilles
+Ada
+Ada's
+Afghanistan
+Afghanistan's
+Africa
+Africa's
+African
+African's
+Africans
+Airedale
+Airedale's
+Alabama
+Alabama's
+Alabamian
+Alabamian's
+Alaska
+Alaska's
+Albania
+Albania's
+Albanian
+Albanian's
+Albanians
+Alcibiades
+Alden
+Alden's
+Algeria
+Algeria's
+Algerian
+Algerian's
+Algol
+Algol's
+Allah
+Allah's
+Alyssa
+Alyssa's
+Amanda
+Amanda's
+Amdahl
+Amdahl's
+Amelia
+Amelia's
+America
+America's
+American
+American's
+Americana
+Americans
+Americas
+Ames
+Amsterdam
+Amsterdam's
+Amtrak
+Amtrak's
+Anabaptist
+Anabaptist's
+Anabaptists
+Andorra
+Andorra's
+Angeleno
+Angeleno's
+Angelenos
+Anglican
+Anglican's
+Anglicanism
+Anglicanism's
+Anglicans
+Anglophilia
+Anglophilia's
+Anglophobia
+Anglophobia's
+Angola
+Angola's
+Antarctica
+Antarctica's
+Aphrodite
+Aphrodite's
+Apollo
+Apollo's
+Apollonian
+Appalachia
+Appalachia's
+Appalachian
+Appalachian's
+Appalachians
+April
+April's
+Aprils
+Aquarius
+Arab
+Arab's
+Arabia
+Arabia's
+Arabian
+Arabian's
+Arabians
+Arabic
+Arabic's
+Arabs
+Archie
+Archie's
+Argentina
+Argentina's
+Argo
+Argo's
+Argos
+Arianism
+Arianism's
+Arianist
+Arianist's
+Arianists
+Aries
+Aristotelian
+Aristotelian's
+Aristotle
+Aristotle's
+Arizona
+Arizona's
+Arkansas
+Arkansas's
+Armageddon
+Armageddon's
+Armenian
+Armenian's
+Armour
+Armour's
+Armstrong
+Armstrong's
+Artemis
+Aryan
+Aryan's
+Aryans
+Asia
+Asia's
+Asian
+Asian's
+Asians
+Asiatic
+Asiatic's
+Asiatics
+Assyrian
+Assyrian's
+Assyriology
+Assyriology's
+Athena
+Athena's
+Athenian
+Athenian's
+Athenians
+Athens
+Atlantic
+Atlantic's
+Auckland
+Auckland's
+Audubon
+Audubon's
+Augusta
+Augusta's
+Augusts
+Austin
+Austin's
+Australia
+Australia's
+Australian
+Australian's
+Australians
+Austria
+Austria's
+Austrian
+Austrian's
+Ave
+BSD
+Babel
+Babel's
+Bach
+Bach's
+Bagrodia
+Bagrodia's
+Bagrodias
+Balkan
+Balkan's
+Balkans
+Baltic
+Baltic's
+Bangladesh
+Bangladesh's
+Bantu
+Bantu's
+Bantus
+Barbados
+Baxter
+Baxter's
+Beethoven
+Beethoven's
+Belgian
+Belgian's
+Belgians
+Belgium
+Belgium's
+Bellovin
+Bellovin's
+Belushi
+Belushi's
+Benedict
+Benedict's
+Benedictine
+Benedictine's
+Bengal
+Bengal's
+Bengali
+Bengali's
+Benzedrine
+Benzedrine's
+Bergsten
+Bergsten's
+Berkeley
+Berkeley's
+Berlin
+Berlin's
+Berliner
+Berliners
+Bermuda
+Bermuda's
+Bessel
+Bessel's
+Beverly
+Beverly's
+Bilbo
+Bilbo's
+Bolivia
+Bolivia's
+Bologna
+Bologna's
+Bolshevik
+Bolshevik's
+Bolsheviks
+Bolshevism
+Bolshevism's
+Borneo
+Borneo's
+Boston
+Boston's
+Bostonian
+Bostonian's
+Bostonians
+Botswana
+Botswana's
+Bourne
+Bourne's
+Brazil
+Brazil's
+Brazilian
+Brazilian's
+Bresenham
+Bresenham's
+Britain
+Britain's
+British
+Britisher
+Britishly
+Briton
+Briton's
+Britons
+Buehring
+Buehring's
+CDC
+CDC's
+CEO
+CMOS
+CPU
+CPU's
+CPUs
+California
+California's
+Californian
+Californian's
+Californians
+Cambridge
+Cambridge's
+Canada
+Canada's
+Carolina
+Carolina's
+Carolinas
+Cartesian
+Chinese
+Chinese's
+Christian
+Christian's
+Christians
+Christiansen
+Christmas
+Cobol
+Cobol's
+Coleman
+Coleman's
+Colorado
+Colorado's
+Comdex
+Comdex's
+Cray
+Cray's
+Crays
+Cupertino
+Cupertino's
+Czechoslovakian
+DARPA
+DARPA's
+DECNET
+DOS
+Dan
+Dan's
+DeMorgan
+DeMorgan's
+Debbie
+Debbie's
+December
+December's
+Decembers
+Delaware
+Delaware's
+Denmark
+Denmark's
+Dijkstra
+Dijkstra's
+Diophantine
+Dylan
+Dylan's
+EDP
+EGA
+EGA's
+Edsger
+Edsger's
+Ellen
+Ellen's
+Elvis
+Elvis's
+English
+English's
+Erlang
+Erlang's
+Ethernet
+Ethernet's
+Ethernets
+Europe
+Europe's
+European
+European's
+Europeans
+FIFO
+Fairbanks
+Februaries
+February
+February's
+Felder
+Florida
+Florida's
+Fortran
+Fortran's
+Fourier
+Fourier's
+France
+France's
+Frances
+French
+French's
+Friday
+Friday's
+Fridays
+GPSS
+Galvin
+Galvin's
+Garfunkel
+Geoff
+Geoff's
+Geoffrey
+Geoffrey's
+German
+German's
+Germans
+Germany
+Germany's
+Gibson
+Gibson's
+Gipsies
+Gipsy
+Gipsy's
+Godzilla
+Godzilla's
+Gothic
+Greek
+Greek's
+Greeks
+Greg
+Greg's
+Heinlein
+Heinlein's
+Hewlett
+Hewlett's
+Holland
+Holland's
+Hollander
+Hollanders
+Hollands
+Honda
+Honda's
+Hz
+I'd
+I'll
+I'm
+I've
+IBM
+IBM's
+IEEE
+ITCorp
+ITCorp's
+ITcorp
+ITcorp's
+Illinois
+Inc
+India
+India's
+Indian
+Indian's
+Indiana
+Indiana's
+Indians
+Intel
+Intel's
+Internet
+Internet's
+Iran
+Iran's
+Ireland
+Ireland's
+Israel
+Israel's
+Israeli
+Israeli's
+Israelis
+Italian
+Italian's
+Italians
+James
+Januaries
+January
+January's
+Japan
+Japan's
+Japanese
+Japanese's
+Jefferson
+Jefferson's
+Jill
+Jill's
+Johnnie
+Johnnie's
+Jr
+Julie
+Julie's
+Julies
+July
+July's
+Julys
+June
+June's
+Junes
+Klein
+Klein's
+Kleinrock
+Kleinrock's
+Kline
+Kline's
+Knuth
+Knuth's
+Kuenning
+Kuenning's
+LED's
+LEDs
+LaTeX
+LaTeX's
+Lagrangian
+Lagrangian's
+Lamport
+Lamport's
+Latin
+Latin's
+Laurie
+Laurie's
+Lenten
+Liz
+Liz's
+Lyle
+Lyle's
+MHz
+MIT
+MIT's
+MacDraw
+MacDraw's
+MacIntosh
+MacIntosh's
+MacPaint
+MacPaint's
+Mafia
+Mafia's
+Malibu
+Malibu's
+Mandelbrot
+Mandelbrot's
+Manhattan
+Manhattan's
+Manila
+Manila's
+Marianne
+Marianne's
+Mary
+Mary's
+Maryland
+Maryland's
+Marylanders
+Massachusetts
+Massey
+Massey's
+Matt
+Matt's
+Maxtor
+Maxtor's
+McElhaney
+McElhaney's
+McKenzie
+McKenzie's
+McMartin
+McMartin's
+Medusa
+Medusa's
+Michigan
+Michigan's
+Microport
+Microport's
+Microsoft
+Microsoft's
+Midwest
+Minnesota
+Minnesota's
+Monday
+Monday's
+Mondays
+Montana
+Montana's
+Montanan
+Montanan's
+Moslem
+Moslem's
+Moslems
+Motorola
+Motorola's
+Mr
+Mrs
+Ms
+Multibus
+Multibus's
+Multics
+Munsey
+Munsey's
+Muslim
+Muslim's
+Muslims
+NFS
+Nazi
+Nazi's
+Nazis
+NeWS
+Nebraska
+Nebraska's
+Nebraskan
+Nebraskan's
+Negro
+Negro's
+Negroes
+Nepal
+Nepal's
+Netherlands
+Newtonian
+November
+November's
+Novembers
+OEM
+OEM's
+OEMS
+OK
+OS
+OS's
+October
+October's
+Octobers
+Oderberg
+Oderberg's
+Oderbergs
+Oedipus
+Ohio
+Ohio's
+Oklahoma
+Oklahoma's
+Oklahoman
+Oklahoman's
+Oliver's
+PC
+PC's
+PCs
+PDP
+Packard
+Packard's
+Packards
+Palestinian
+Pascal
+Pascal's
+Pennsylvania
+Pennsylvania's
+Peter's
+Petkiewicz
+Petkiewicz's
+PhD
+Planck
+Planck's
+Poland
+Poland's
+Popek
+Popek's
+Popeks
+Prime's
+Prokofiev
+Prokofiev's
+QA
+RCS
+ROM
+RSX
+Redford
+Redford's
+Rick
+Rick's
+Ritchie
+Ritchie's
+Robert
+Robert's
+Roberts
+Robinson
+Robinson's
+Roman
+Roman's
+Romans
+Roy
+Roy's
+Rubens
+Russian
+Russian's
+Russians
+SCCS
+SMTP
+Sally's
+Salz
+Salz's
+Sam
+Sam's
+Saturday
+Saturday's
+Saturdays
+Scotland
+Scotland's
+Seagate
+Seagate's
+September
+September's
+Septembers
+Signor
+Sikkim
+Sikkim's
+Sikkimese
+Silverstein
+Silverstein's
+Singapore
+Singapore's
+Spafford
+Spafford's
+Spain
+Spain's
+Spanish
+Spanish's
+Spencer
+Spencer's
+Spuds
+Sr
+Sunday
+Sunday's
+Sundays
+TCP
+TV's
+TeX
+TeX's
+Teflon
+Teflon's
+Tektronix
+Tektronix's
+Tennessee
+Tennessee's
+Texas
+Texas's
+Texases
+Thursday
+Thursday's
+Thursdays
+Tinseltown
+Tinseltown's
+Trudeau
+Trudeau's
+Tuesday
+Tuesday's
+Tuesdays
+Turing
+Turing's
+UART
+UCLA
+UNIX's
+USC
+USC's
+USG
+USG's
+Ultrix
+Ultrix's
+Unix
+Unix's
+Usenet
+Usenet's
+Usenix
+Usenix's
+Utah
+Utah's
+VAR
+VCR
+VMS
+VMS's
+Vanessa
+Vanessa's
+Vax
+Vax's
+Ventura
+Ventura's
+Virginia
+Virginia's
+Warnock
+Warnock's
+Washington
+Washington's
+Wednesday
+Wednesday's
+Wednesdays
+Weibull
+Weibull's
+Wilbur
+Wilbur's
+Willisson
+Willisson's
+Wilson
+Wilson's
+Xenix
+Xenix's
+Xeroxed
+Xeroxes
+Xeroxing
+Yamaha
+Yamaha's
+Yentl
+Yentl's
+York
+York's
+Yorker
+Yorkers
+Yorks
+Zealand
+Zealand's
+Zulu
+Zulu's
+Zulus
+aback
+abaft
+abandon
+abandoned
+abandoner
+abandoning
+abandonment
+abandonments
+abandons
+abase
+abased
+abasement
+abasements
+abaser
+abases
+abash
+abashed
+abashes
+abashing
+abasing
+abate
+abated
+abatement
+abatements
+abater
+abates
+abating
+abbe
+abbey
+abbey's
+abbeys
+abbot
+abbot's
+abbots
+abbreviate
+abbreviated
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+abdomen
+abdomen's
+abdomens
+abdominal
+abdominally
+abduct
+abducted
+abducting
+abduction
+abduction's
+abductions
+abductor
+abductor's
+abductors
+abducts
+abed
+aberrant
+aberrantly
+aberration
+aberrations
+abet
+abets
+abetted
+abetter
+abetting
+abettor
+abeyance
+abhor
+abhorred
+abhorrent
+abhorrently
+abhorrer
+abhorring
+abhors
+abide
+abided
+abider
+abides
+abiding
+abidingly
+abilities
+ability
+ability's
+abject
+abjection
+abjections
+abjectly
+abjectness
+abjure
+abjured
+abjurer
+abjures
+abjuring
+ablate
+ablated
+ablates
+ablating
+ablation
+ablative
+ablatively
+ablaze
+able
+abler
+ablest
+ablution
+ablutions
+ably
+abnormal
+abnormalities
+abnormality
+abnormally
+aboard
+abode
+abode's
+abodes
+abolish
+abolished
+abolisher
+abolishers
+abolishes
+abolishing
+abolishment
+abolishment's
+abolishments
+abolition
+abolitionist
+abolitionists
+abominable
+aboriginal
+aboriginally
+aborigine
+aborigine's
+aborigines
+abort
+aborted
+aborter
+aborting
+abortion
+abortion's
+abortions
+abortive
+abortively
+abortiveness
+aborts
+abound
+abounded
+abounding
+abounds
+about
+above
+aboveground
+abrade
+abraded
+abrader
+abrades
+abrading
+abrasion
+abrasion's
+abrasions
+abreaction
+abreaction's
+abreactions
+abreast
+abridge
+abridged
+abridger
+abridges
+abridging
+abridgment
+abroad
+abrogate
+abrogated
+abrogates
+abrogating
+abrogation
+abrupt
+abruptly
+abruptness
+abscess
+abscessed
+abscesses
+abscissa
+abscissa's
+abscissas
+abscond
+absconded
+absconder
+absconding
+absconds
+absence
+absence's
+absences
+absent
+absented
+absentee
+absentee's
+absenteeism
+absentees
+absentia
+absenting
+absently
+absentminded
+absentmindedly
+absentmindedness
+absents
+absinthe
+absolute
+absolutely
+absoluteness
+absolutes
+absolution
+absolve
+absolved
+absolver
+absolves
+absolving
+absorb
+absorbed
+absorbency
+absorbent
+absorbent's
+absorbents
+absorber
+absorbing
+absorbingly
+absorbs
+absorption
+absorption's
+absorptions
+absorptive
+abstain
+abstained
+abstainer
+abstaining
+abstains
+abstention
+abstentions
+abstinence
+abstract
+abstracted
+abstractedly
+abstractedness
+abstracter
+abstracting
+abstraction
+abstraction's
+abstractionism
+abstractionist
+abstractionists
+abstractions
+abstractive
+abstractly
+abstractness
+abstractor
+abstractor's
+abstractors
+abstracts
+abstruse
+abstrusely
+abstruseness
+abstrusenesses
+absurd
+absurdities
+absurdity
+absurdity's
+absurdly
+absurdness
+abundance
+abundances
+abundant
+abundantly
+abuse
+abused
+abuser
+abusers
+abuses
+abusing
+abusive
+abusively
+abusiveness
+abut
+abutment
+abutments
+abuts
+abutted
+abutter
+abutter's
+abutters
+abutting
+abysmal
+abysmally
+abyss
+abyss's
+abysses
+acacia
+academia
+academic
+academically
+academics
+academies
+academy
+academy's
+accede
+acceded
+accedes
+acceding
+accelerate
+accelerated
+accelerates
+accelerating
+acceleratingly
+acceleration
+accelerations
+accelerative
+accelerator
+accelerators
+accelerometer
+accelerometer's
+accelerometers
+accent
+accented
+accenting
+accents
+accentual
+accentually
+accentuate
+accentuated
+accentuates
+accentuating
+accentuation
+accept
+acceptability
+acceptable
+acceptableness
+acceptably
+acceptance
+acceptance's
+acceptances
+accepted
+acceptedly
+accepter
+accepters
+accepting
+acceptingly
+acceptingness
+acceptive
+acceptor
+acceptor's
+acceptors
+accepts
+access
+accessed
+accesses
+accessibility
+accessible
+accessibly
+accessing
+accession
+accession's
+accessions
+accessories
+accessory
+accessory's
+accident
+accident's
+accidental
+accidentally
+accidentalness
+accidently
+accidents
+acclaim
+acclaimed
+acclaimer
+acclaiming
+acclaims
+acclamation
+acclimate
+acclimated
+acclimates
+acclimating
+acclimation
+accolade
+accolades
+accommodate
+accommodated
+accommodates
+accommodating
+accommodatingly
+accommodation
+accommodations
+accommodative
+accommodativeness
+accompanied
+accompanier
+accompanies
+accompaniment
+accompaniment's
+accompaniments
+accompanist
+accompanist's
+accompanists
+accompany
+accompanying
+accomplice
+accomplices
+accomplish
+accomplished
+accomplisher
+accomplishers
+accomplishes
+accomplishing
+accomplishment
+accomplishment's
+accomplishments
+accord
+accordance
+accordances
+accorded
+accorder
+accorders
+according
+accordingly
+accordion
+accordion's
+accordions
+accords
+accost
+accosted
+accosting
+accosts
+account
+accountabilities
+accountability
+accountable
+accountableness
+accountably
+accountancy
+accountant
+accountant's
+accountants
+accounted
+accounting
+accountings
+accounts
+accredit
+accreditation
+accreditations
+accredited
+accretion
+accretion's
+accretions
+accrue
+accrued
+accrues
+accruing
+acculturate
+acculturated
+acculturates
+acculturating
+acculturation
+acculturative
+accumulate
+accumulated
+accumulates
+accumulating
+accumulation
+accumulations
+accumulative
+accumulatively
+accumulativeness
+accumulator
+accumulator's
+accumulators
+accuracies
+accuracy
+accurate
+accurately
+accurateness
+accursed
+accursedly
+accursedness
+accusal
+accusation
+accusation's
+accusations
+accusative
+accuse
+accused
+accuser
+accusers
+accuses
+accusing
+accusingly
+accustom
+accustomed
+accustomedness
+accustoming
+accustoms
+ace
+ace's
+aced
+acer
+aces
+acetate
+acetone
+acetylene
+ache
+ached
+aches
+achievable
+achieve
+achieved
+achievement
+achievement's
+achievements
+achiever
+achievers
+achieves
+achieving
+aching
+achingly
+acid
+acidic
+acidities
+acidity
+acidly
+acidness
+acids
+acidulous
+acing
+acknowledge
+acknowledged
+acknowledgedly
+acknowledger
+acknowledgers
+acknowledges
+acknowledging
+acme
+acne
+acned
+acolyte
+acolytes
+acorn
+acorn's
+acorns
+acoustic
+acoustical
+acoustically
+acoustician
+acoustics
+acquaint
+acquaintance
+acquaintance's
+acquaintances
+acquainted
+acquainting
+acquaints
+acquiesce
+acquiesced
+acquiescence
+acquiesces
+acquiescing
+acquirable
+acquire
+acquired
+acquires
+acquiring
+acquisition
+acquisition's
+acquisitions
+acquisitiveness
+acquit
+acquits
+acquittal
+acquittals
+acquitted
+acquitter
+acquitting
+acre
+acre's
+acreage
+acres
+acrid
+acridly
+acridness
+acrimonious
+acrimoniously
+acrimony
+acrobat
+acrobat's
+acrobatic
+acrobatics
+acrobats
+acronym
+acronym's
+acronyms
+acropolis
+across
+acrylic
+act
+acted
+acting
+actinium
+actinometer
+actinometer's
+actinometers
+action
+action's
+actions
+activate
+activated
+activates
+activating
+activation
+activations
+activator
+activator's
+activators
+active
+actively
+activeness
+activism
+activist
+activist's
+activists
+activities
+activity
+activity's
+actor
+actor's
+actors
+actress
+actress's
+actresses
+acts
+actual
+actualities
+actuality
+actually
+actuals
+actuarial
+actuarially
+actuate
+actuated
+actuates
+actuating
+actuation
+actuator
+actuator's
+actuators
+acuity
+acumen
+acute
+acutely
+acuteness
+acuter
+acutest
+acyclic
+acyclically
+ad
+adage
+adages
+adagio
+adagios
+adamant
+adamantly
+adapt
+adaptability
+adaptable
+adaptation
+adaptation's
+adaptations
+adapted
+adaptedness
+adapter
+adapters
+adapting
+adaption
+adaptive
+adaptively
+adaptiveness
+adaptor
+adaptors
+adapts
+add
+added
+addenda
+addendum
+adder
+adders
+addict
+addicted
+addicting
+addiction
+addiction's
+addictions
+addictive
+addicts
+adding
+addition
+addition's
+additional
+additionally
+additions
+additive
+additive's
+additively
+additives
+additivity
+address
+addressability
+addressable
+addressed
+addressee
+addressee's
+addressees
+addresser
+addressers
+addresses
+addressing
+adds
+adduce
+adduced
+adducer
+adduces
+adducing
+adduct
+adducted
+adducting
+adduction
+adductive
+adductor
+adducts
+adept
+adeptly
+adeptness
+adepts
+adequacies
+adequacy
+adequate
+adequately
+adequateness
+adhere
+adhered
+adherence
+adherences
+adherent
+adherent's
+adherently
+adherents
+adherer
+adherers
+adheres
+adhering
+adhesion
+adhesions
+adhesive
+adhesive's
+adhesively
+adhesiveness
+adhesives
+adiabatic
+adiabatically
+adieu
+adjacency
+adjacent
+adjacently
+adjective
+adjective's
+adjectively
+adjectives
+adjoin
+adjoined
+adjoining
+adjoins
+adjourn
+adjourned
+adjourning
+adjournment
+adjourns
+adjudge
+adjudged
+adjudges
+adjudging
+adjudicate
+adjudicated
+adjudicates
+adjudicating
+adjudication
+adjudication's
+adjudications
+adjudicative
+adjunct
+adjunct's
+adjunctive
+adjunctly
+adjuncts
+adjure
+adjured
+adjures
+adjuring
+adjust
+adjustable
+adjustably
+adjusted
+adjuster
+adjusters
+adjusting
+adjustive
+adjustment
+adjustment's
+adjustments
+adjustor
+adjustor's
+adjustors
+adjusts
+adjutant
+adjutants
+administer
+administered
+administering
+administerings
+administers
+administration
+administration's
+administrations
+administrative
+administratively
+administrator
+administrator's
+administrators
+admirable
+admirableness
+admirably
+admiral
+admiral's
+admirals
+admiralty
+admiration
+admirations
+admire
+admired
+admirer
+admirers
+admires
+admiring
+admiringly
+admissibility
+admissible
+admission
+admission's
+admissions
+admit
+admits
+admittance
+admitted
+admittedly
+admitting
+admix
+admixed
+admixes
+admixture
+admonish
+admonished
+admonisher
+admonishes
+admonishing
+admonishingly
+admonishment
+admonishment's
+admonishments
+admonition
+admonition's
+admonitions
+ado
+adobe
+adolescence
+adolescent
+adolescent's
+adolescently
+adolescents
+adopt
+adopted
+adopter
+adopters
+adopting
+adoption
+adoption's
+adoptions
+adoptive
+adoptively
+adopts
+adorable
+adorableness
+adoration
+adore
+adored
+adorer
+adores
+adoring
+adorn
+adorned
+adorning
+adornment
+adornment's
+adornments
+adorns
+adrenal
+adrenaline
+adrenally
+adrift
+adroit
+adroitly
+adroitness
+ads
+adsorb
+adsorbed
+adsorbing
+adsorbs
+adsorption
+adulate
+adulating
+adulation
+adulations
+adult
+adult's
+adulterate
+adulterated
+adulterates
+adulterating
+adulteration
+adulterer
+adulterer's
+adulterers
+adulterous
+adulterously
+adultery
+adulthood
+adultly
+adultness
+adults
+adumbrate
+adumbrated
+adumbrates
+adumbrating
+adumbration
+adumbrative
+adumbratively
+advance
+advanced
+advancement
+advancement's
+advancements
+advancer
+advancers
+advances
+advancing
+advantage
+advantaged
+advantageous
+advantageously
+advantageousness
+advantages
+advantaging
+advent
+adventist
+adventists
+adventitious
+adventitiously
+adventitiousness
+adventive
+adventively
+adventure
+adventured
+adventurer
+adventurers
+adventures
+adventuring
+adventurous
+adventurously
+adventurousness
+adverb
+adverb's
+adverbial
+adverbially
+adverbs
+adversaries
+adversary
+adversary's
+adverse
+adversed
+adversely
+adverses
+adversing
+adversities
+adversity
+advertise
+advertised
+advertisement
+advertisement's
+advertisements
+advertiser
+advertisers
+advertises
+advertising
+advice
+advisability
+advisable
+advisableness
+advisably
+advise
+advised
+advisedly
+advisee
+advisee's
+advisees
+advisement
+advisements
+adviser
+adviser's
+advisers
+advises
+advising
+advisor
+advisor's
+advisors
+advisory
+advocacy
+advocate
+advocated
+advocates
+advocating
+advocation
+advocative
+aegis
+aerate
+aerated
+aerates
+aerating
+aeration
+aerator
+aerators
+aerial
+aerial's
+aerially
+aerials
+aeroacoustic
+aerobic
+aerobics
+aerodynamic
+aerodynamics
+aeronautic
+aeronautical
+aeronautically
+aeronautics
+aerosol
+aerosols
+aerospace
+afar
+afars
+affable
+affair
+affair's
+affairs
+affect
+affectation
+affectation's
+affectations
+affected
+affectedly
+affectedness
+affecter
+affecting
+affectingly
+affection
+affection's
+affectionate
+affectionately
+affectioned
+affections
+affective
+affectively
+affects
+afferent
+afferently
+affianced
+affidavit
+affidavit's
+affidavits
+affiliate
+affiliated
+affiliates
+affiliating
+affiliation
+affiliations
+affinities
+affinity
+affinity's
+affirm
+affirmation
+affirmation's
+affirmations
+affirmative
+affirmatively
+affirmed
+affirming
+affirms
+affix
+affixed
+affixes
+affixing
+afflict
+afflicted
+afflicting
+affliction
+affliction's
+afflictions
+afflictive
+afflictively
+afflicts
+affluence
+affluent
+affluently
+afford
+affordable
+afforded
+affording
+affords
+affricate
+affricates
+affrication
+affricative
+affright
+affront
+affronted
+affronting
+affronts
+afghan
+afghans
+aficionado
+aficionados
+afield
+afire
+aflame
+afloat
+afoot
+afore
+aforementioned
+aforesaid
+aforethought
+afoul
+afraid
+afresh
+aft
+after
+aftereffect
+aftereffects
+aftermath
+aftermost
+afternoon
+afternoon's
+afternoons
+afters
+aftershock
+aftershock's
+aftershocks
+afterthought
+afterthoughts
+afterward
+afterwards
+again
+against
+agape
+agar
+agate
+agates
+age
+aged
+agedly
+agedness
+ageless
+agelessly
+agelessness
+agencies
+agency
+agency's
+agenda
+agenda's
+agendas
+agent
+agent's
+agentive
+agents
+ager
+agers
+ages
+agglomerate
+agglomerated
+agglomerates
+agglomeration
+agglomerative
+agglutinate
+agglutinated
+agglutinates
+agglutinating
+agglutination
+agglutinative
+agglutinin
+agglutinins
+aggravate
+aggravated
+aggravates
+aggravating
+aggravation
+aggravations
+aggregate
+aggregated
+aggregately
+aggregateness
+aggregates
+aggregating
+aggregation
+aggregations
+aggregative
+aggregatively
+aggression
+aggression's
+aggressions
+aggressive
+aggressively
+aggressiveness
+aggressor
+aggressors
+aggrieve
+aggrieved
+aggrievedly
+aggrieves
+aggrieving
+aghast
+agile
+agilely
+agility
+aging
+agitate
+agitated
+agitatedly
+agitates
+agitating
+agitation
+agitations
+agitative
+agitator
+agitator's
+agitators
+agleam
+aglow
+agnostic
+agnostic's
+agnostics
+ago
+agog
+agonies
+agony
+agrarian
+agree
+agreeable
+agreeableness
+agreeably
+agreed
+agreeing
+agreement
+agreement's
+agreements
+agreer
+agreers
+agrees
+agricultural
+agriculturally
+agriculture
+ague
+ah
+ahead
+aid
+aide
+aided
+aider
+aides
+aiding
+aids
+ail
+ailed
+aileron
+ailerons
+ailing
+ailment
+ailment's
+ailments
+ails
+aim
+aimed
+aimer
+aimers
+aiming
+aimless
+aimlessly
+aimlessness
+aims
+air
+airbag
+airbag's
+airbags
+airborne
+aircraft
+aircrafts
+airdrop
+airdrops
+aired
+airer
+airers
+airfield
+airfield's
+airfields
+airflow
+airframe
+airframe's
+airframes
+airhead
+airier
+airiest
+airily
+airiness
+airing
+airings
+airless
+airlessness
+airlift
+airlift's
+airlifts
+airline
+airline's
+airliner
+airliner's
+airliners
+airlines
+airlock
+airlock's
+airlocks
+airmail
+airmails
+airman
+airmen
+airport
+airport's
+airports
+airs
+airship
+airship's
+airships
+airspace
+airspeed
+airspeeds
+airstrip
+airstrip's
+airstrips
+airway
+airway's
+airways
+airy
+aisle
+aisles
+ajar
+akimbo
+akin
+alabaster
+alacrity
+alarm
+alarmed
+alarming
+alarmingly
+alarmist
+alarms
+alas
+alba
+albacore
+albeit
+album
+albumen
+albumin
+albums
+alchemy
+alcohol
+alcohol's
+alcoholic
+alcoholic's
+alcoholics
+alcoholism
+alcoholisms
+alcohols
+alcove
+alcove's
+alcoved
+alcoves
+alder
+alderman
+alderman's
+aldermen
+ale
+alee
+alert
+alerted
+alertedly
+alerter
+alerters
+alerting
+alertly
+alertness
+alerts
+alfalfa
+alfresco
+alga
+algae
+algaecide
+algebra
+algebra's
+algebraic
+algebraically
+algebras
+alginate
+alginates
+algorithm
+algorithm's
+algorithmic
+algorithmically
+algorithms
+alias
+aliased
+aliases
+aliasing
+alibi
+alibi's
+alibis
+alien
+alien's
+alienate
+alienated
+alienates
+alienating
+alienation
+aliens
+alight
+alighted
+alighting
+align
+aligned
+aligner
+aligning
+alignment
+alignments
+aligns
+alike
+alikeness
+aliment
+aliments
+alimony
+alive
+aliveness
+alkali
+alkali's
+alkaline
+alkalis
+alkaloid
+alkaloid's
+alkaloids
+alkyl
+all
+allay
+allayed
+allaying
+allays
+allegation
+allegation's
+allegations
+allege
+alleged
+allegedly
+alleges
+allegiance
+allegiance's
+allegiances
+alleging
+allegoric
+allegorical
+allegorically
+allegoricalness
+allegories
+allegory
+allegory's
+allegretto
+allegretto's
+allegrettos
+allegro
+allegro's
+allegros
+allele
+alleles
+allemande
+allergic
+allergies
+allergy
+allergy's
+alleviate
+alleviated
+alleviates
+alleviating
+alleviation
+alleviative
+alleviator
+alleviator's
+alleviators
+alley
+alley's
+alleys
+alleyway
+alleyway's
+alleyways
+alliance
+alliance's
+alliances
+allied
+allier
+allies
+alligator
+alligator's
+alligatored
+alligators
+alliteration
+alliteration's
+alliterations
+alliterative
+alliteratively
+allocate
+allocated
+allocates
+allocating
+allocation
+allocation's
+allocations
+allocative
+allocator
+allocator's
+allocators
+allophone
+allophones
+allophonic
+allot
+alloted
+allotment
+allotment's
+allotments
+allots
+allotted
+allotter
+allotting
+allow
+allowable
+allowableness
+allowably
+allowance
+allowance's
+allowanced
+allowances
+allowancing
+allowed
+allowedly
+allowing
+allows
+alloy
+alloy's
+alloyed
+alloying
+alloys
+allude
+alluded
+alludes
+alluding
+allure
+allured
+allurement
+allures
+alluring
+allusion
+allusion's
+allusions
+allusive
+allusively
+allusiveness
+ally
+allying
+alma
+almanac
+almanac's
+almanacs
+almightiness
+almighty
+almond
+almond's
+almonds
+almoner
+almost
+alms
+almsman
+alnico
+aloe
+aloes
+aloft
+aloha
+alone
+aloneness
+along
+alongside
+aloof
+aloofly
+aloofness
+aloud
+alpha
+alphabet
+alphabet's
+alphabetic
+alphabetical
+alphabetically
+alphabetics
+alphabets
+alphanumeric
+alphanumerics
+alpine
+alps
+already
+also
+altar
+altar's
+altars
+alter
+alterable
+alteration
+alteration's
+alterations
+altercation
+altercation's
+altercations
+altered
+alterer
+alterers
+altering
+alternate
+alternated
+alternately
+alternates
+alternating
+alternation
+alternations
+alternative
+alternatively
+alternativeness
+alternatives
+alternator
+alternator's
+alternators
+alters
+although
+altitude
+altitudes
+alto
+alto's
+altogether
+altos
+altruism
+altruist
+altruistic
+altruistically
+altruists
+alum
+alumna
+alumna's
+alumnae
+alumni
+alumnus
+alundum
+alveolar
+alveolarly
+alveoli
+alveolus
+always
+am
+amain
+amalgam
+amalgam's
+amalgamate
+amalgamated
+amalgamates
+amalgamating
+amalgamation
+amalgamations
+amalgamative
+amalgams
+amanuensis
+amass
+amassed
+amasser
+amasses
+amassing
+amateur
+amateur's
+amateurish
+amateurishly
+amateurishness
+amateurism
+amateurs
+amatory
+amaze
+amazed
+amazedly
+amazement
+amazer
+amazers
+amazes
+amazing
+amazingly
+amazon
+amazon's
+amazons
+ambassador
+ambassador's
+ambassadors
+amber
+ambiance
+ambiances
+ambidextrous
+ambidextrously
+ambient
+ambiguities
+ambiguity
+ambiguity's
+ambiguous
+ambiguously
+ambiguousness
+ambition
+ambition's
+ambitions
+ambitious
+ambitiously
+ambitiousness
+ambivalence
+ambivalent
+ambivalently
+amble
+ambled
+ambler
+ambles
+ambling
+ambrosial
+ambrosially
+ambulance
+ambulance's
+ambulances
+ambulatory
+ambuscade
+ambuscader
+ambush
+ambushed
+ambusher
+ambushes
+ameliorate
+ameliorated
+ameliorating
+amelioration
+ameliorative
+amen
+amenable
+amend
+amended
+amender
+amending
+amendment
+amendment's
+amendments
+amends
+amenities
+amenity
+americium
+amiable
+amiableness
+amiabler
+amiablest
+amicable
+amicableness
+amicably
+amid
+amide
+amidst
+amigo
+amino
+amiss
+amity
+ammo
+ammonia
+ammoniac
+ammonias
+ammonium
+ammunition
+ammunitions
+amnesty
+amoeba
+amoeba's
+amoebas
+amok
+among
+amongst
+amoral
+amorality
+amorally
+amorous
+amorously
+amorousness
+amorphous
+amorphously
+amorphousness
+amount
+amounted
+amounter
+amounters
+amounting
+amounts
+amour
+amour's
+amours
+amp
+ampere
+amperes
+ampersand
+ampersand's
+ampersands
+amphetamine
+amphetamines
+amphibian
+amphibian's
+amphibians
+amphibious
+amphibiously
+amphibiousness
+amphibology
+ample
+ampleness
+ampler
+amplest
+amplification
+amplifications
+amplified
+amplifier
+amplifiers
+amplifies
+amplify
+amplifying
+amplitude
+amplitude's
+amplitudes
+amply
+ampoule
+ampoule's
+ampoules
+amps
+amputate
+amputated
+amputates
+amputating
+amputation
+ams
+amulet
+amulets
+amuse
+amused
+amusedly
+amusement
+amusement's
+amusements
+amuser
+amusers
+amuses
+amusing
+amusingly
+amusingness
+amusive
+amyl
+an
+anachronism
+anachronism's
+anachronisms
+anachronistically
+anaconda
+anacondas
+anaerobic
+anagram
+anagram's
+anagrams
+anal
+analogical
+analogically
+analogies
+analogous
+analogously
+analogousness
+analogy
+analogy's
+analysis
+analyst
+analyst's
+analysts
+analytic
+analytical
+analytically
+analyticities
+analyticity
+analytics
+anaphora
+anaphoric
+anaphorically
+anaplasmosis
+anarchic
+anarchical
+anarchist
+anarchist's
+anarchists
+anarchy
+anastomoses
+anastomosis
+anastomotic
+anathema
+anatomic
+anatomical
+anatomically
+anatomicals
+anatomy
+ancestor
+ancestor's
+ancestors
+ancestral
+ancestrally
+ancestry
+anchor
+anchorage
+anchorage's
+anchorages
+anchored
+anchoring
+anchorite
+anchoritism
+anchors
+anchovies
+anchovy
+ancient
+anciently
+ancientness
+ancients
+ancillaries
+ancillary
+and
+anded
+anders
+anding
+ands
+anecdotal
+anecdotally
+anecdote
+anecdote's
+anecdotes
+anechoic
+anemometer
+anemometer's
+anemometers
+anemometry
+anemone
+anew
+angel
+angel's
+angelic
+angels
+anger
+angered
+angering
+angers
+angiography
+angle
+angled
+angler
+anglers
+angles
+angling
+angrier
+angriest
+angrily
+angriness
+angry
+angst
+angstrom
+angstroms
+anguish
+anguished
+angular
+angularly
+anhydrous
+anhydrously
+aniline
+animal
+animal's
+animally
+animalness
+animals
+animate
+animated
+animatedly
+animately
+animateness
+animates
+animating
+animation
+animations
+animator
+animator's
+animators
+animism
+animosity
+anion
+anion's
+anionic
+anionics
+anions
+anise
+aniseikonic
+anisotropic
+anisotropies
+anisotropy
+anisotropy's
+ankle
+ankle's
+ankles
+annal
+annalen
+annals
+annex
+annexation
+annexations
+annexed
+annexes
+annexing
+annihilate
+annihilated
+annihilates
+annihilating
+annihilation
+annihilative
+anniversaries
+anniversary
+anniversary's
+annotate
+annotated
+annotates
+annotating
+annotation
+annotations
+annotative
+announce
+announced
+announcement
+announcement's
+announcements
+announcer
+announcers
+announces
+announcing
+annoy
+annoyance
+annoyance's
+annoyances
+annoyed
+annoyer
+annoyers
+annoying
+annoyingly
+annoys
+annual
+annually
+annuals
+annul
+annulled
+annulling
+annulment
+annulment's
+annulments
+annuls
+annum
+annunciate
+annunciated
+annunciates
+annunciating
+annunciation
+annunciator
+annunciators
+anode
+anode's
+anodes
+anoint
+anointed
+anointer
+anointing
+anoints
+anomalies
+anomalous
+anomalously
+anomalousness
+anomaly
+anomaly's
+anomic
+anomie
+anon
+anonymity
+anonymous
+anonymously
+anonymousness
+anorexia
+another
+another's
+answer
+answerable
+answered
+answerer
+answerers
+answering
+answers
+ant
+ant's
+antagonism
+antagonisms
+antagonist
+antagonist's
+antagonistic
+antagonistically
+antagonists
+antarctic
+ante
+anteater
+anteater's
+anteaters
+antecedent
+antecedent's
+antecedently
+antecedents
+anted
+antedate
+antedated
+antedates
+antedating
+antelope
+antelope's
+antelopes
+antenna
+antenna's
+antennae
+antennas
+anterior
+anteriorly
+anteriors
+anthem
+anthem's
+anthems
+anther
+anthologies
+anthology
+anthracite
+anthropological
+anthropologically
+anthropologist
+anthropologist's
+anthropologists
+anthropology
+anthropomorphic
+anthropomorphically
+anti
+antibacterial
+antibiotic
+antibiotics
+antibodies
+antibody
+antic
+antic's
+anticipate
+anticipated
+anticipates
+anticipating
+anticipation
+anticipations
+anticipative
+anticipatively
+anticipatory
+anticoagulation
+anticompetitive
+antics
+antidisestablishmentarianism
+antidote
+antidote's
+antidotes
+antiformant
+antifundamentalist
+antigen
+antigen's
+antigens
+antihistorical
+antimicrobial
+antimony
+anting
+antinomian
+antinomy
+antipathy
+antiphonal
+antiphonally
+antipode
+antipode's
+antipodes
+antiquarian
+antiquarian's
+antiquarians
+antiquate
+antiquated
+antiquation
+antique
+antique's
+antiques
+antiquities
+antiquity
+antiredeposition
+antiresonance
+antiresonator
+antiseptic
+antisera
+antiserum
+antislavery
+antisocial
+antisubmarine
+antisymmetric
+antisymmetry
+antithesis
+antithetical
+antithetically
+antithyroid
+antitoxin
+antitoxin's
+antitoxins
+antitrust
+antitruster
+antler
+antlered
+ants
+anus
+anvil
+anvil's
+anvils
+anxieties
+anxiety
+anxious
+anxiously
+anxiousness
+any
+anybodies
+anybody
+anyhow
+anymore
+anyone
+anyone's
+anyones
+anyplace
+anything
+anythings
+anyway
+anyways
+anywhere
+anywheres
+aorta
+apace
+apart
+apartheid
+apartment
+apartment's
+apartments
+apartness
+apathetic
+apathy
+ape
+aped
+aper
+aperiodic
+aperiodicity
+aperture
+apertured
+apes
+apex
+apexes
+aphasia
+aphasic
+aphid
+aphid's
+aphids
+aphonic
+aphorism
+aphorism's
+aphorisms
+apiaries
+apiary
+apical
+apically
+apiece
+aping
+apish
+apishly
+apishness
+aplenty
+aplomb
+apocalypse
+apocalyptic
+apocrypha
+apocryphal
+apocryphally
+apocryphalness
+apogee
+apogees
+apologetic
+apologetically
+apologetics
+apologia
+apologies
+apologist
+apologist's
+apologists
+apology
+apology's
+apostate
+apostates
+apostle
+apostle's
+apostles
+apostolic
+apostrophe
+apostrophes
+apothecary
+apotheoses
+apotheosis
+appalled
+appalling
+appallingly
+appanage
+apparatus
+apparatuses
+apparel
+apparels
+apparent
+apparently
+apparentness
+apparition
+apparition's
+apparitions
+appeal
+appealed
+appealer
+appealers
+appealing
+appealingly
+appeals
+appear
+appearance
+appearances
+appeared
+appearer
+appearers
+appearing
+appears
+appease
+appeased
+appeasement
+appeaser
+appeases
+appeasing
+appellant
+appellant's
+appellants
+appellate
+appellation
+appellative
+appellatively
+append
+appendage
+appendage's
+appendages
+appended
+appender
+appenders
+appendices
+appendicitis
+appending
+appendix
+appendix's
+appendixes
+appends
+appertain
+appertained
+appertaining
+appertains
+appetite
+appetite's
+appetites
+appetitive
+applaud
+applauded
+applauder
+applauding
+applauds
+applause
+apple
+apple's
+applejack
+apples
+appliance
+appliance's
+appliances
+applicability
+applicable
+applicant
+applicant's
+applicants
+application
+application's
+applications
+applicative
+applicatively
+applicator
+applicator's
+applicators
+applied
+applier
+appliers
+applies
+applique
+appliques
+apply
+applying
+appoint
+appointed
+appointee
+appointee's
+appointees
+appointer
+appointers
+appointing
+appointive
+appointment
+appointment's
+appointments
+appoints
+apportion
+apportioned
+apportioning
+apportionment
+apportionments
+apportions
+appraisal
+appraisal's
+appraisals
+appraise
+appraised
+appraiser
+appraisers
+appraises
+appraising
+appraisingly
+appreciable
+appreciably
+appreciate
+appreciated
+appreciates
+appreciating
+appreciation
+appreciations
+appreciative
+appreciatively
+appreciativeness
+apprehend
+apprehended
+apprehender
+apprehending
+apprehends
+apprehensible
+apprehension
+apprehension's
+apprehensions
+apprehensive
+apprehensively
+apprehensiveness
+apprentice
+apprenticed
+apprentices
+apprenticeship
+apprenticeships
+apprise
+apprised
+appriser
+apprisers
+apprises
+apprising
+apprisings
+apprize
+apprized
+apprizer
+apprizers
+apprizes
+apprizing
+apprizingly
+apprizings
+approach
+approachability
+approachable
+approached
+approacher
+approachers
+approaches
+approaching
+approbate
+approbation
+appropriate
+appropriated
+appropriately
+appropriateness
+appropriates
+appropriatest
+appropriating
+appropriation
+appropriations
+appropriative
+appropriator
+appropriator's
+appropriators
+approval
+approval's
+approvals
+approve
+approved
+approver
+approvers
+approves
+approving
+approvingly
+approximate
+approximated
+approximately
+approximates
+approximating
+approximation
+approximations
+approximative
+approximatively
+appurtenance
+appurtenances
+apricot
+apricot's
+apricots
+apron
+apron's
+aprons
+apropos
+apse
+apses
+apsis
+apt
+aptitude
+aptitudes
+aptly
+aptness
+aqua
+aquaria
+aquarium
+aquas
+aquatic
+aquatics
+aqueduct
+aqueduct's
+aqueducts
+aqueous
+aqueously
+aquifer
+aquifers
+arabesque
+arable
+arachnid
+arachnid's
+arachnids
+arbiter
+arbiter's
+arbiters
+arbitrarily
+arbitrariness
+arbitrary
+arbitrate
+arbitrated
+arbitrates
+arbitrating
+arbitration
+arbitrative
+arbitrator
+arbitrator's
+arbitrators
+arboreal
+arboreally
+arc
+arcade
+arcade's
+arcaded
+arcades
+arcading
+arcane
+arced
+arch
+archaeological
+archaeologically
+archaeologist
+archaeologist's
+archaeologists
+archaeology
+archaic
+archaically
+archaicness
+archaism
+archangel
+archangel's
+archangels
+archbishop
+archdiocese
+archdioceses
+arched
+archenemy
+archer
+archers
+archery
+arches
+archetype
+archetypes
+archfool
+arching
+archipelago
+archipelagoes
+architect
+architect's
+architectonic
+architectonics
+architects
+architectural
+architecturally
+architecture
+architecture's
+architectures
+archival
+archive
+archived
+archiver
+archivers
+archives
+archiving
+archivist
+archivists
+archly
+archness
+arcing
+arclike
+arcs
+arctic
+ardent
+ardently
+arduous
+arduously
+arduousness
+are
+area
+area's
+areas
+aren't
+arena
+arena's
+arenas
+ares
+argon
+argonaut
+argonauts
+argot
+arguable
+arguably
+argue
+argued
+arguer
+arguers
+argues
+arguing
+argument
+argument's
+argumentation
+argumentative
+argumentatively
+arguments
+arid
+aridity
+aridness
+aright
+arise
+arisen
+ariser
+arises
+arising
+arisings
+aristocracy
+aristocrat
+aristocrat's
+aristocratic
+aristocratically
+aristocrats
+arithmetic
+arithmetical
+arithmetically
+arithmetics
+ark
+arm
+arm's
+armadillo
+armadillos
+armament
+armament's
+armaments
+armchair
+armchair's
+armchairs
+armed
+armer
+armers
+armful
+armfuls
+armhole
+armies
+arming
+armistice
+armload
+armpit
+armpit's
+armpits
+arms
+army
+army's
+aroma
+aromas
+aromatic
+aromaticness
+arose
+around
+arousal
+arouse
+aroused
+arouses
+arousing
+arpeggio
+arpeggio's
+arpeggios
+arrack
+arraign
+arraigned
+arraigning
+arraignment
+arraignment's
+arraignments
+arraigns
+arrange
+arranged
+arrangement
+arrangement's
+arrangements
+arranger
+arrangers
+arranges
+arranging
+arrant
+arrantly
+array
+arrayed
+arrayer
+arraying
+arrays
+arrears
+arrest
+arrested
+arrester
+arresters
+arresting
+arrestingly
+arrestor
+arrestor's
+arrestors
+arrests
+arrival
+arrival's
+arrivals
+arrive
+arrived
+arriver
+arrives
+arriving
+arrogance
+arrogant
+arrogantly
+arrogate
+arrogated
+arrogates
+arrogating
+arrogation
+arrow
+arrowed
+arrowhead
+arrowhead's
+arrowheads
+arrowing
+arrows
+arroyo
+arroyos
+arsenal
+arsenal's
+arsenals
+arsenic
+arsine
+arsines
+arson
+art
+art's
+arterial
+arterially
+arteries
+arteriolar
+arteriole
+arteriole's
+arterioles
+arteriosclerosis
+artery
+artery's
+artful
+artfully
+artfulness
+arthritis
+arthrogram
+arthrogram's
+arthrograms
+arthropod
+arthropod's
+arthropods
+artichoke
+artichoke's
+artichokes
+article
+article's
+articled
+articles
+articling
+articulate
+articulated
+articulately
+articulateness
+articulates
+articulating
+articulation
+articulations
+articulative
+articulator
+articulators
+articulatory
+artifact
+artifact's
+artifacts
+artifice
+artificer
+artifices
+artificial
+artificialities
+artificiality
+artificially
+artificialness
+artilleries
+artillerist
+artillery
+artisan
+artisan's
+artisans
+artist
+artist's
+artistic
+artistically
+artistry
+artists
+artless
+artlessly
+arts
+artwork
+as
+asbestos
+ascend
+ascendancy
+ascendant
+ascendantly
+ascended
+ascendency
+ascendent
+ascender
+ascenders
+ascending
+ascends
+ascension
+ascensions
+ascent
+ascertain
+ascertainable
+ascertained
+ascertaining
+ascertains
+ascetic
+ascetic's
+asceticism
+ascetics
+ascot
+ascribable
+ascribe
+ascribed
+ascribes
+ascribing
+ascription
+aseptic
+ash
+ashamed
+ashamedly
+ashen
+asher
+ashes
+ashman
+ashore
+ashtray
+ashtray's
+ashtrays
+aside
+asides
+asinine
+asininely
+ask
+askance
+asked
+asker
+askers
+askew
+askewness
+asking
+asks
+asleep
+asocial
+asp
+asparagus
+aspect
+aspect's
+aspects
+aspen
+asper
+aspersion
+aspersion's
+aspersions
+asphalt
+asphalted
+asphyxia
+aspic
+aspirant
+aspirant's
+aspirants
+aspirate
+aspirated
+aspirates
+aspirating
+aspiration
+aspiration's
+aspirations
+aspirator
+aspirators
+aspire
+aspired
+aspirer
+aspires
+aspirin
+aspiring
+aspirins
+ass
+ass's
+assail
+assailant
+assailant's
+assailants
+assailed
+assailing
+assails
+assassin
+assassin's
+assassinate
+assassinated
+assassinates
+assassinating
+assassination
+assassinations
+assassins
+assault
+assaulted
+assaulter
+assaulting
+assaultive
+assaultively
+assaultiveness
+assaults
+assay
+assayed
+assayer
+assayers
+assaying
+assemblage
+assemblage's
+assemblages
+assemble
+assembled
+assembler
+assemblers
+assembles
+assemblies
+assembling
+assembly
+assembly's
+assen
+assent
+assented
+assenter
+assenting
+assents
+assert
+asserted
+asserter
+asserters
+asserting
+assertion
+assertion's
+assertions
+assertive
+assertively
+assertiveness
+asserts
+asses
+assess
+assessed
+assesses
+assessing
+assessment
+assessment's
+assessments
+assessor
+assessor's
+assessors
+asset
+asset's
+assets
+assiduity
+assiduous
+assiduously
+assiduousness
+assign
+assignable
+assigned
+assignee
+assignee's
+assignees
+assigner
+assigners
+assigning
+assignment
+assignment's
+assignments
+assigns
+assimilate
+assimilated
+assimilates
+assimilating
+assimilation
+assimilations
+assimilative
+assist
+assistance
+assistances
+assistant
+assistant's
+assistants
+assistantship
+assistantships
+assisted
+assister
+assisting
+assists
+associate
+associated
+associates
+associating
+association
+association's
+associational
+associations
+associative
+associatively
+associativities
+associativity
+associator
+associator's
+associators
+assonance
+assonant
+assort
+assorted
+assorter
+assorting
+assortment
+assortment's
+assortments
+assorts
+assuage
+assuaged
+assuages
+assuaging
+assume
+assumed
+assumer
+assumes
+assuming
+assumption
+assumption's
+assumptions
+assurance
+assurance's
+assurances
+assure
+assured
+assuredly
+assuredness
+assurer
+assurers
+assures
+assuring
+assuringly
+astatine
+aster
+aster's
+asterisk
+asterisk's
+asterisks
+asteroid
+asteroid's
+asteroidal
+asteroids
+asters
+asthma
+astonish
+astonished
+astonishes
+astonishing
+astonishingly
+astonishment
+astound
+astounded
+astounding
+astoundingly
+astounds
+astral
+astrally
+astray
+astride
+astringency
+astringent
+astringently
+astronaut
+astronaut's
+astronautics
+astronauts
+astronomer
+astronomer's
+astronomers
+astronomical
+astronomically
+astronomy
+astrophysical
+astrophysics
+astute
+astutely
+astuteness
+asunder
+asylum
+asylums
+asymmetric
+asymmetrical
+asymmetrically
+asymmetries
+asymmetry
+asymptomatically
+asymptote
+asymptote's
+asymptotes
+asymptotic
+asymptotically
+asymptoticly
+asynchronism
+asynchronous
+asynchronously
+asynchrony
+at
+atavistic
+ate
+atemporal
+atheism
+atheist
+atheist's
+atheistic
+atheists
+atherosclerosis
+athlete
+athlete's
+athletes
+athletic
+athleticism
+athletics
+atlas
+atmosphere
+atmosphere's
+atmosphered
+atmospheres
+atmospheric
+atmospherics
+atoll
+atoll's
+atolls
+atom
+atom's
+atomic
+atomically
+atomics
+atoms
+atonal
+atonally
+atone
+atoned
+atonement
+atones
+atoning
+atop
+atrocious
+atrociously
+atrociousness
+atrocities
+atrocity
+atrocity's
+atrophic
+atrophied
+atrophies
+atrophy
+atrophying
+attach
+attache
+attached
+attacher
+attachers
+attaches
+attaching
+attachment
+attachment's
+attachments
+attack
+attackable
+attacked
+attacker
+attacker's
+attackers
+attacking
+attacks
+attain
+attainable
+attainableness
+attainably
+attained
+attainer
+attainers
+attaining
+attainment
+attainment's
+attainments
+attains
+attempt
+attempted
+attempter
+attempters
+attempting
+attempts
+attend
+attendance
+attendance's
+attendances
+attendant
+attendant's
+attendants
+attended
+attendee
+attendee's
+attendees
+attender
+attenders
+attending
+attends
+attention
+attention's
+attentional
+attentionality
+attentions
+attentive
+attentively
+attentiveness
+attenuate
+attenuated
+attenuates
+attenuating
+attenuation
+attenuator
+attenuator's
+attenuators
+attest
+attested
+attester
+attesting
+attests
+attic
+attic's
+attics
+attire
+attired
+attires
+attiring
+attitude
+attitude's
+attitudes
+attitudinal
+attitudinally
+attorney
+attorney's
+attorneys
+attract
+attracted
+attracting
+attraction
+attraction's
+attractions
+attractive
+attractively
+attractiveness
+attractor
+attractor's
+attractors
+attracts
+attributable
+attribute
+attributed
+attributer
+attributes
+attributing
+attribution
+attributions
+attributive
+attributively
+attrition
+attune
+attuned
+attunes
+attuning
+atypical
+atypically
+auburn
+auction
+auctioned
+auctioneer
+auctioneer's
+auctioneers
+auctioning
+audacious
+audaciously
+audaciousness
+audacity
+audible
+audibly
+audience
+audience's
+audiences
+audio
+audiogram
+audiogram's
+audiograms
+audiological
+audiologist
+audiologist's
+audiologists
+audiology
+audiometer
+audiometer's
+audiometers
+audiometric
+audiometry
+audit
+audited
+auditing
+audition
+audition's
+auditioned
+auditioning
+auditions
+auditive
+auditor
+auditor's
+auditorium
+auditoriums
+auditors
+auditory
+audits
+auger
+auger's
+augers
+aught
+augment
+augmentation
+augmentations
+augmented
+augmenter
+augmenting
+augments
+augur
+augurs
+august
+augustly
+augustness
+aunt
+aunt's
+auntly
+aunts
+aura
+aura's
+aural
+aurally
+auras
+aureole
+aureomycin
+aurora
+auscultate
+auscultated
+auscultates
+auscultating
+auscultation
+auscultations
+auspice
+auspices
+auspicious
+auspiciously
+auspiciousness
+austere
+austerely
+austereness
+austerity
+authentic
+authentically
+authenticate
+authenticated
+authenticates
+authenticating
+authentication
+authentications
+authenticator
+authenticators
+authenticity
+author
+author's
+authored
+authoring
+authoritarian
+authoritarianism
+authoritative
+authoritatively
+authoritativeness
+authorities
+authority
+authority's
+authors
+authorship
+autism
+autistic
+auto
+auto's
+autobiographic
+autobiographical
+autobiographically
+autobiographies
+autobiography
+autobiography's
+autocollimator
+autocorrelate
+autocorrelated
+autocorrelates
+autocorrelating
+autocorrelation
+autocorrelations
+autocracies
+autocracy
+autocrat
+autocrat's
+autocratic
+autocratically
+autocrats
+autodial
+autofluorescence
+autograph
+autographed
+autographing
+autographs
+automata
+automate
+automated
+automates
+automatic
+automatically
+automatics
+automating
+automation
+automaton
+automatons
+automobile
+automobile's
+automobiles
+automotive
+autonavigator
+autonavigator's
+autonavigators
+autonomic
+autonomous
+autonomously
+autonomy
+autopilot
+autopilot's
+autopilots
+autopsied
+autopsies
+autopsy
+autoregressive
+autorepeat
+autorepeating
+autorepeats
+autos
+autosuggestibility
+autotransformer
+autumn
+autumn's
+autumnal
+autumnally
+autumns
+auxiliaries
+auxiliary
+avail
+availabilities
+availability
+available
+availableness
+availably
+availed
+availer
+availers
+availing
+avails
+avalanche
+avalanched
+avalanches
+avalanching
+avant
+avarice
+avaricious
+avariciously
+avariciousness
+avenge
+avenged
+avenger
+avenges
+avenging
+avenue
+avenue's
+avenues
+aver
+average
+averaged
+averagely
+averageness
+averages
+averaging
+averred
+averrer
+averring
+avers
+averse
+aversely
+averseness
+aversion
+aversion's
+aversions
+aversive
+avert
+averted
+averting
+averts
+avian
+aviaries
+aviary
+aviation
+aviator
+aviator's
+aviators
+avid
+avidity
+avidly
+avidness
+avionic
+avionics
+avocado
+avocados
+avocation
+avocation's
+avocations
+avoid
+avoidable
+avoidably
+avoidance
+avoided
+avoider
+avoiders
+avoiding
+avoids
+avouch
+avow
+avowed
+avowedly
+avower
+avows
+await
+awaited
+awaiting
+awaits
+awake
+awaked
+awaken
+awakened
+awakener
+awakening
+awakens
+awakes
+awaking
+award
+awarded
+awarder
+awarders
+awarding
+awards
+aware
+awareness
+awash
+away
+awayness
+awe
+awed
+awesome
+awesomely
+awesomeness
+awful
+awfully
+awfulness
+awhile
+awhiles
+awing
+awkward
+awkwardly
+awkwardness
+awl
+awl's
+awls
+awning
+awning's
+awninged
+awnings
+awoke
+awry
+ax
+axe
+axed
+axer
+axers
+axes
+axial
+axially
+axing
+axiological
+axiologically
+axiom
+axiom's
+axiomatic
+axiomatically
+axiomatics
+axioms
+axion
+axion's
+axions
+axis
+axle
+axle's
+axles
+axolotl
+axolotl's
+axolotls
+axon
+axon's
+axons
+aye
+ayer
+ayers
+ayes
+azalea
+azalea's
+azaleas
+azimuth
+azimuth's
+azimuths
+azure
+babble
+babbled
+babbler
+babbles
+babbling
+babe
+babe's
+babes
+babied
+babies
+baby
+baby's
+babyhood
+babying
+babyish
+babysit
+babysits
+babysitter
+babysitters
+baccalaureate
+bachelor
+bachelor's
+bachelors
+bacilli
+bacillus
+back
+backache
+backache's
+backaches
+backbone
+backbone's
+backbones
+backdrop
+backdrop's
+backdrops
+backed
+backer
+backers
+background
+background's
+backgrounds
+backing
+backlash
+backlasher
+backlog
+backlog's
+backlogs
+backpack
+backpack's
+backpacker
+backpackers
+backpacks
+backplane
+backplane's
+backplanes
+backs
+backscatter
+backscattered
+backscattering
+backscatters
+backslash
+backslashed
+backslashes
+backslashing
+backspace
+backspaced
+backspaces
+backspacing
+backstabber
+backstabbing
+backstage
+backstairs
+backstitch
+backstitched
+backstitches
+backstitching
+backtrack
+backtracked
+backtracker
+backtrackers
+backtracking
+backtracks
+backup
+backups
+backward
+backwardly
+backwardness
+backwards
+backwater
+backwater's
+backwaters
+backwoods
+backyard
+backyard's
+backyards
+bacon
+baconer
+bacteria
+bacterial
+bacterially
+bacterium
+bad
+bade
+baden
+badge
+badged
+badger
+badger's
+badgered
+badgering
+badgers
+badges
+badging
+badlands
+badly
+badminton
+badness
+bads
+baffle
+baffled
+baffler
+bafflers
+baffles
+baffling
+bafflingly
+bag
+bag's
+bagatelle
+bagatelle's
+bagatelles
+bagel
+bagel's
+bagels
+baggage
+bagged
+bagger
+bagger's
+baggers
+baggier
+baggies
+bagginess
+bagging
+baggy
+bagpipe
+bagpipe's
+bagpiper
+bagpipes
+bags
+bah
+bail
+bailer
+bailiff
+bailiff's
+bailiffs
+bailing
+bailly
+bait
+baited
+baiter
+baiting
+baits
+bake
+baked
+baker
+bakeries
+bakers
+bakery
+bakery's
+bakes
+baking
+bakings
+baklava
+balalaika
+balalaika's
+balalaikas
+balance
+balanced
+balancedness
+balancer
+balancers
+balances
+balancing
+balconied
+balconies
+balcony
+balcony's
+bald
+balder
+balding
+baldly
+baldness
+bale
+baled
+baleful
+balefully
+balefulness
+baler
+balers
+bales
+baling
+balk
+balked
+balker
+balkier
+balkiness
+balking
+balks
+balky
+ball
+ballad
+ballad's
+ballads
+ballast
+ballast's
+ballasts
+balled
+baller
+ballerina
+ballerina's
+ballerinas
+ballers
+ballet
+ballet's
+ballets
+balling
+ballistic
+ballistics
+balloon
+ballooned
+ballooner
+ballooners
+ballooning
+balloons
+ballot
+ballot's
+balloted
+balloter
+balloting
+ballots
+ballplayer
+ballplayer's
+ballplayers
+ballroom
+ballroom's
+ballrooms
+balls
+ballyhoo
+balm
+balm's
+balmier
+balminess
+balms
+balmy
+balsa
+balsam
+balsams
+balustrade
+balustrade's
+balustrades
+bamboo
+bamboos
+ban
+ban's
+banal
+banally
+banana
+banana's
+bananas
+band
+bandage
+bandaged
+bandager
+bandages
+bandaging
+banded
+bander
+bandied
+bandies
+banding
+bandit
+bandit's
+bandits
+bandpass
+bands
+bandstand
+bandstand's
+bandstands
+bandwagon
+bandwagon's
+bandwagons
+bandwidth
+bandwidths
+bandy
+bandying
+bane
+baneful
+banefully
+bang
+banged
+banger
+banging
+bangle
+bangle's
+bangles
+bangs
+baning
+banish
+banished
+banisher
+banishes
+banishing
+banishment
+banister
+banister's
+banisters
+banjo
+banjo's
+banjos
+bank
+banked
+banker
+bankers
+banking
+bankrupt
+bankruptcies
+bankruptcy
+bankruptcy's
+bankrupted
+bankrupting
+bankrupts
+banks
+banned
+banner
+banner's
+banners
+banning
+banquet
+banqueted
+banqueter
+banqueting
+banquetings
+banquets
+bans
+banshee
+banshee's
+banshees
+bantam
+banter
+bantered
+banterer
+bantering
+banteringly
+banters
+baptism
+baptism's
+baptismal
+baptismally
+baptisms
+baptist
+baptist's
+baptistery
+baptistries
+baptistry
+baptistry's
+baptists
+bar
+bar's
+barb
+barbarian
+barbarian's
+barbarians
+barbaric
+barbarities
+barbarity
+barbarous
+barbarously
+barbarousness
+barbecue
+barbecued
+barbecuer
+barbecues
+barbecuing
+barbed
+barbedness
+barbell
+barbell's
+barbells
+barber
+barbered
+barbering
+barbers
+barbital
+barbiturate
+barbiturates
+barbs
+bard
+bard's
+bards
+bare
+bared
+barefoot
+barefooted
+barely
+bareness
+barer
+bares
+barest
+barflies
+barfly
+barfly's
+bargain
+bargained
+bargainer
+bargaining
+bargains
+barge
+barged
+barges
+barging
+baring
+baritone
+baritone's
+baritones
+barium
+bark
+barked
+barker
+barkers
+barking
+barks
+barley
+barn
+barn's
+barns
+barnstorm
+barnstormed
+barnstormer
+barnstorming
+barnstorms
+barnyard
+barnyard's
+barnyards
+barometer
+barometer's
+barometers
+barometric
+baron
+baron's
+baroness
+baronial
+baronies
+barons
+barony
+barony's
+baroque
+baroquely
+baroqueness
+barrack
+barracker
+barracks
+barracuda
+barracuda's
+barracudas
+barrage
+barrage's
+barraged
+barrages
+barraging
+barred
+barrel
+barrel's
+barrels
+barren
+barrenness
+barrens
+barricade
+barricade's
+barricades
+barrier
+barrier's
+barriers
+barring
+barringer
+barrow
+barrows
+bars
+bartender
+bartender's
+bartenders
+barter
+bartered
+barterer
+bartering
+barters
+bas
+basal
+basally
+basalt
+base
+baseball
+baseball's
+baseballs
+baseboard
+baseboard's
+baseboards
+based
+baseless
+baseline
+baseline's
+baselines
+basely
+baseman
+basement
+basement's
+basements
+baseness
+baser
+bases
+basest
+bash
+bashed
+basher
+bashes
+bashful
+bashfully
+bashfulness
+bashing
+basic
+basically
+basics
+basil
+basin
+basin's
+basined
+basing
+basins
+basis
+bask
+basked
+basket
+basket's
+basketball
+basketball's
+basketballs
+baskets
+basking
+bass
+bass's
+basses
+basset
+bassinet
+bassinet's
+bassinets
+basso
+bastard
+bastard's
+bastardly
+bastards
+baste
+basted
+baster
+bastes
+basting
+bastion
+bastion's
+bastioned
+bastions
+bat
+bat's
+batch
+batched
+batcher
+batches
+batching
+bated
+bater
+bath
+bathe
+bathed
+bather
+bathers
+bathes
+bathing
+bathos
+bathrobe
+bathrobe's
+bathrobes
+bathroom
+bathroom's
+bathroomed
+bathrooms
+baths
+bathtub
+bathtub's
+bathtubs
+bating
+baton
+baton's
+batons
+bats
+battalion
+battalion's
+battalions
+batted
+batten
+battened
+battening
+battens
+batter
+battered
+batteries
+battering
+batters
+battery
+battery's
+batting
+battle
+battled
+battlefield
+battlefield's
+battlefields
+battlefront
+battlefront's
+battlefronts
+battleground
+battleground's
+battlegrounds
+battlement
+battlement's
+battlemented
+battlements
+battler
+battlers
+battles
+battleship
+battleship's
+battleships
+battling
+bauble
+bauble's
+baubles
+baud
+bauds
+bauxite
+bawdier
+bawdiness
+bawdy
+bawl
+bawled
+bawler
+bawling
+bawls
+bay
+bayed
+baying
+bayly
+bayonet
+bayonet's
+bayoneted
+bayoneting
+bayonets
+bayou
+bayou's
+bayous
+bays
+bazaar
+bazaar's
+bazaars
+be
+beach
+beached
+beaches
+beachhead
+beachhead's
+beachheads
+beaching
+beacon
+beacon's
+beaconed
+beaconing
+beacons
+bead
+beaded
+beading
+beadle
+beadle's
+beadles
+beads
+beady
+beagle
+beagle's
+beagles
+beak
+beaked
+beaker
+beakers
+beaks
+beam
+beamed
+beamer
+beamers
+beaming
+beams
+bean
+beanbag
+beanbag's
+beanbags
+beaned
+beaner
+beaners
+beaning
+beans
+bear
+bearable
+bearably
+beard
+bearded
+beardedness
+beardless
+beards
+bearer
+bearers
+bearing
+bearings
+bearish
+bearishly
+bearishness
+bears
+beast
+beastings
+beastlier
+beastliness
+beastly
+beasts
+beat
+beatable
+beatably
+beaten
+beater
+beaters
+beatific
+beatification
+beatify
+beating
+beatings
+beatitude
+beatitude's
+beatitudes
+beatnik
+beatnik's
+beatniks
+beats
+beau
+beau's
+beaus
+beauteous
+beauteously
+beauteousness
+beauties
+beautification
+beautifications
+beautified
+beautifier
+beautifiers
+beautifies
+beautiful
+beautifully
+beautifulness
+beautify
+beautifying
+beauty
+beauty's
+beaver
+beaver's
+beavers
+becalm
+becalmed
+becalming
+becalms
+became
+because
+beck
+beckon
+beckoned
+beckoning
+beckons
+become
+becomes
+becoming
+becomingly
+bed
+bed's
+bedazzle
+bedazzled
+bedazzlement
+bedazzles
+bedazzling
+bedbug
+bedbug's
+bedbugs
+bedded
+bedder
+bedder's
+bedders
+bedding
+bedevil
+bedevils
+bedfast
+bedlam
+bedpost
+bedpost's
+bedposts
+bedraggle
+bedraggled
+bedridden
+bedrock
+bedrock's
+bedroom
+bedroom's
+bedroomed
+bedrooms
+beds
+bedside
+bedspread
+bedspread's
+bedspreads
+bedspring
+bedspring's
+bedsprings
+bedstead
+bedstead's
+bedsteads
+bedtime
+bee
+beech
+beechen
+beecher
+beef
+beefed
+beefer
+beefers
+beefier
+beefing
+beefs
+beefsteak
+beefy
+beehive
+beehive's
+beehives
+been
+beens
+beep
+beeped
+beeper
+beeping
+beeps
+beer
+beers
+bees
+beet
+beet's
+beetle
+beetle's
+beetled
+beetles
+beetling
+beets
+befall
+befallen
+befalling
+befalls
+befell
+befit
+befit's
+befits
+befitted
+befitting
+befittingly
+befog
+befogged
+befogging
+befogs
+before
+beforehand
+befoul
+befouled
+befouling
+befouls
+befriend
+befriended
+befriending
+befriends
+befuddle
+befuddled
+befuddles
+befuddling
+beg
+began
+beget
+begets
+begetting
+beggar
+beggared
+beggaring
+beggarliness
+beggarly
+beggars
+beggary
+begged
+begging
+begin
+beginner
+beginner's
+beginners
+beginning
+beginning's
+beginnings
+begins
+begot
+begotten
+begrudge
+begrudged
+begrudger
+begrudges
+begrudging
+begrudgingly
+begs
+beguile
+beguiled
+beguiler
+beguiles
+beguiling
+beguilingly
+begun
+behalf
+behave
+behaved
+behaver
+behaves
+behaving
+behead
+beheading
+beheld
+behest
+behind
+behold
+beholden
+beholder
+beholders
+beholding
+beholds
+beige
+being
+beings
+belated
+belatedly
+belatedness
+belay
+belayed
+belaying
+belays
+belch
+belched
+belches
+belching
+belfries
+belfry
+belfry's
+belie
+belied
+belief
+belief's
+beliefs
+belier
+belies
+believability
+believable
+believably
+believe
+believed
+believer
+believers
+believes
+believing
+belittle
+belittled
+belittler
+belittles
+belittling
+bell
+bell's
+bellboy
+bellboy's
+bellboys
+belle
+belle's
+belles
+bellhop
+bellhop's
+bellhops
+bellicose
+bellicosely
+bellicoseness
+bellicosity
+bellied
+bellies
+belligerence
+belligerent
+belligerent's
+belligerently
+belligerents
+bellman
+bellmen
+bellow
+bellowed
+bellowing
+bellows
+bells
+bellwether
+bellwether's
+bellwethers
+belly
+belly's
+bellyful
+bellying
+belong
+belonged
+belonging
+belongingness
+belongings
+belongs
+beloved
+below
+belt
+belted
+belting
+belts
+bely
+belying
+bemoan
+bemoaned
+bemoaning
+bemoans
+bench
+benched
+bencher
+benches
+benching
+benchmark
+benchmark's
+benchmarking
+benchmarks
+bend
+bendable
+bended
+bender
+benders
+bending
+bends
+beneath
+benediction
+benediction's
+benedictions
+benefactor
+benefactor's
+benefactors
+beneficence
+beneficences
+beneficial
+beneficially
+beneficialness
+beneficiaries
+beneficiary
+benefit
+benefited
+benefiter
+benefiters
+benefiting
+benefits
+benevolence
+benevolent
+benevolently
+benevolentness
+benighted
+benightedly
+benightedness
+benign
+benignly
+bent
+bents
+benzene
+bequeath
+bequeathed
+bequeathes
+bequeathing
+bequest
+bequest's
+bequests
+berate
+berated
+berates
+berating
+bereave
+bereaved
+bereavement
+bereavements
+bereaves
+bereaving
+bereft
+beret
+beret's
+berets
+beribboned
+beriberi
+berkelium
+berried
+berries
+berry
+berry's
+berrying
+berth
+berthed
+berthing
+berthings
+berths
+beryl
+beryllium
+bes
+beseech
+beseeches
+beseeching
+beseechingly
+beset
+besets
+besetting
+beside
+besides
+besiege
+besieged
+besieger
+besiegers
+besieging
+besmirch
+besmirched
+besmirches
+besmirching
+besotted
+besotting
+besought
+bespeak
+bespeaks
+bespectacled
+best
+bested
+bester
+bestial
+bestially
+besting
+bestow
+bestowal
+bestowed
+bests
+bestseller
+bestseller's
+bestsellers
+bestselling
+bet
+bet's
+beta
+betas
+beth
+betide
+betray
+betrayal
+betrayed
+betrayer
+betraying
+betrays
+betroth
+betrothal
+betrothals
+betrothed
+bets
+better
+bettered
+bettering
+betterment
+betterments
+betters
+betting
+between
+betweenness
+betwixt
+bevel
+bevels
+beverage
+beverage's
+beverages
+bevies
+bevy
+bewail
+bewailed
+bewailing
+bewails
+beware
+bewhiskered
+bewilder
+bewildered
+bewilderedly
+bewilderedness
+bewildering
+bewilderingly
+bewilderment
+bewilders
+bewitch
+bewitched
+bewitches
+bewitching
+bewitchingly
+beyond
+biannual
+bias
+biased
+biases
+biasing
+biasness
+bib
+bib's
+bibbed
+bibbing
+bible
+bible's
+bibles
+biblical
+biblically
+bibliographic
+bibliographical
+bibliographically
+bibliographics
+bibliographies
+bibliography
+bibliography's
+bibliophile
+bibliophiles
+bibs
+bicameral
+bicarbonate
+bicentennial
+biceps
+bicker
+bickered
+bickerer
+bickering
+bickers
+biconcave
+biconvex
+bicycle
+bicycled
+bicycler
+bicyclers
+bicycles
+bicycling
+bid
+bid's
+biddable
+bidden
+bidder
+bidder's
+bidders
+biddies
+bidding
+biddy
+bide
+bided
+bider
+bides
+biding
+bidirectional
+bids
+biennial
+biennially
+biennium
+bier
+bifocal
+bifocals
+bifurcate
+bifurcated
+bifurcately
+bifurcates
+bifurcating
+bifurcation
+bifurcations
+big
+bigger
+biggest
+bight
+bight's
+bights
+bigly
+bigness
+bigot
+bigot's
+bigoted
+bigotedly
+bigoting
+bigotry
+bigots
+bijection
+bijection's
+bijections
+bijective
+bijectively
+bike
+bike's
+biked
+biker
+biker's
+bikers
+bikes
+biking
+bikini
+bikini's
+bikinied
+bikinis
+bilabial
+bilateral
+bilaterally
+bilateralness
+bile
+bilge
+bilge's
+bilged
+bilges
+bilging
+bilinear
+bilingual
+bilingually
+bilinguals
+bilk
+bilked
+bilker
+bilking
+bilks
+bill
+billboard
+billboard's
+billboards
+billed
+biller
+billers
+billet
+billeted
+billeting
+billets
+billiard
+billiards
+billing
+billings
+billion
+billions
+billionth
+billow
+billowed
+billowing
+billows
+bills
+bimodal
+bimolecular
+bimolecularly
+bimonthlies
+bimonthly
+bin
+bin's
+binaries
+binary
+binaural
+binaurally
+bind
+binded
+binder
+binders
+binding
+bindingly
+bindingness
+bindings
+binds
+bing
+binge
+bingen
+binges
+bingo
+bingos
+binocular
+binocularly
+binoculars
+binomial
+binomially
+bins
+binuclear
+biochemical
+biochemically
+biochemistry
+biofeedback
+biographer
+biographer's
+biographers
+biographic
+biographical
+biographically
+biographies
+biography
+biography's
+biological
+biologically
+biologicals
+biologist
+biologist's
+biologists
+biology
+biomedical
+biomedicine
+biopsies
+biopsy
+bipartisan
+bipartite
+bipartitely
+bipartition
+biped
+bipeds
+biplane
+biplane's
+biplanes
+bipolar
+biracial
+birch
+birchen
+bircher
+birches
+bird
+bird's
+birdbath
+birdbath's
+birdbaths
+birder
+birdie
+birdied
+birdies
+birdlike
+birds
+birefringence
+birefringent
+birth
+birthday
+birthday's
+birthdays
+birthed
+birthplace
+birthplaces
+birthright
+birthright's
+birthrights
+births
+biscuit
+biscuit's
+biscuits
+bisect
+bisected
+bisecting
+bisection
+bisection's
+bisections
+bisector
+bisector's
+bisectors
+bisects
+bishop
+bishop's
+bishops
+bismuth
+bison
+bison's
+bisons
+bisque
+bisques
+bit
+bit's
+bitblt
+bitblts
+bitch
+bitch's
+bitches
+bite
+biter
+biters
+bites
+biting
+bitingly
+bitmap
+bitmap's
+bitmaps
+bits
+bitser
+bitten
+bitter
+bitterer
+bitterest
+bitterly
+bitterness
+bitters
+bittersweet
+bittersweetly
+bittersweetness
+bituminous
+bitwise
+bivalve
+bivalve's
+bivalved
+bivalves
+bivariate
+bivouac
+bivouacs
+biweekly
+bizarre
+bizarrely
+bizarreness
+blab
+blabbed
+blabbermouth
+blabbermouths
+blabbing
+blabs
+black
+blackberries
+blackberry
+blackberry's
+blackbird
+blackbird's
+blackbirder
+blackbirds
+blackboard
+blackboard's
+blackboards
+blacked
+blacken
+blackened
+blackener
+blackening
+blackens
+blacker
+blackest
+blacking
+blackjack
+blackjack's
+blackjacks
+blacklist
+blacklisted
+blacklister
+blacklisting
+blacklists
+blackly
+blackmail
+blackmailed
+blackmailer
+blackmailers
+blackmailing
+blackmails
+blackness
+blackout
+blackout's
+blackouts
+blacks
+blacksmith
+blacksmith's
+blacksmithing
+blacksmiths
+bladder
+bladder's
+bladders
+blade
+blade's
+bladed
+blades
+blamable
+blame
+blamed
+blameless
+blamelessly
+blamelessness
+blamer
+blamers
+blames
+blaming
+blanch
+blanched
+blancher
+blanches
+blanching
+bland
+blandly
+blandness
+blank
+blanked
+blanker
+blankest
+blanket
+blanketed
+blanketer
+blanketers
+blanketing
+blankets
+blanking
+blankly
+blankness
+blanks
+blare
+blared
+blares
+blaring
+blase
+blaspheme
+blasphemed
+blasphemer
+blasphemes
+blasphemies
+blaspheming
+blasphemous
+blasphemously
+blasphemousness
+blasphemy
+blast
+blasted
+blaster
+blasters
+blasting
+blasts
+blatant
+blatantly
+blatantness
+blaze
+blazed
+blazer
+blazers
+blazes
+blazing
+blazingly
+bleach
+bleached
+bleacher
+bleachers
+bleaches
+bleaching
+bleak
+bleakly
+bleakness
+blear
+bleariness
+bleary
+bleat
+bleater
+bleating
+bleats
+bled
+bleed
+bleeder
+bleeders
+bleeding
+bleedings
+bleeds
+blemish
+blemish's
+blemished
+blemishes
+blemishing
+blend
+blended
+blender
+blenders
+blending
+blends
+bless
+blessed
+blessedly
+blessedness
+blesses
+blessing
+blessings
+blew
+blight
+blighted
+blighter
+blimp
+blimp's
+blimps
+blind
+blinded
+blinder
+blinders
+blindfold
+blindfolded
+blindfolding
+blindfolds
+blinding
+blindingly
+blindly
+blindness
+blinds
+blink
+blinked
+blinker
+blinkered
+blinkering
+blinkers
+blinking
+blinks
+blip
+blip's
+blips
+bliss
+blissful
+blissfully
+blissfulness
+blister
+blistered
+blistering
+blisteringly
+blisters
+blithe
+blithely
+blither
+blithest
+blitz
+blitz's
+blitzes
+blitzkrieg
+blizzard
+blizzard's
+blizzards
+bloat
+bloated
+bloater
+bloaters
+bloating
+bloats
+blob
+blob's
+blobs
+bloc
+bloc's
+block
+block's
+blockade
+blockaded
+blockader
+blockades
+blockading
+blockage
+blockage's
+blockages
+blocked
+blocker
+blockers
+blockhouse
+blockhouses
+blocking
+blocks
+blocs
+bloke
+bloke's
+blokes
+blond
+blond's
+blonde
+blonde's
+blondes
+blonds
+blood
+blooded
+bloodhound
+bloodhound's
+bloodhounds
+bloodied
+bloodiest
+bloodiness
+bloodless
+bloodlessly
+bloodlessness
+bloods
+bloodshed
+bloodshot
+bloodstain
+bloodstain's
+bloodstained
+bloodstains
+bloodstream
+bloody
+bloodying
+bloom
+bloomed
+bloomer
+bloomers
+blooming
+blooms
+blossom
+blossomed
+blossoms
+blot
+blot's
+blots
+blotted
+blotting
+blouse
+blouse's
+blouses
+blousing
+blow
+blowed
+blower
+blowers
+blowfish
+blowing
+blown
+blows
+blowup
+blubber
+blubbered
+blubbering
+bludgeon
+bludgeoned
+bludgeoning
+bludgeons
+blue
+blueberries
+blueberry
+blueberry's
+bluebird
+bluebird's
+bluebirds
+bluebonnet
+bluebonnet's
+bluebonnets
+blued
+bluefish
+bluely
+blueness
+blueprint
+blueprint's
+blueprinted
+blueprinting
+blueprints
+bluer
+blues
+bluest
+bluestocking
+bluff
+bluffed
+bluffer
+bluffing
+bluffly
+bluffness
+bluffs
+bluing
+bluish
+bluishness
+blunder
+blundered
+blunderer
+blundering
+blunderingly
+blunderings
+blunders
+blunt
+blunted
+blunter
+bluntest
+blunting
+bluntly
+bluntness
+blunts
+blur
+blur's
+blurb
+blurred
+blurredly
+blurrier
+blurriness
+blurring
+blurringly
+blurry
+blurs
+blurt
+blurted
+blurter
+blurting
+blurts
+blush
+blushed
+blusher
+blushes
+blushing
+blushingly
+bluster
+blustered
+blusterer
+blustering
+blusteringly
+blusters
+blustery
+boar
+board
+boarded
+boarder
+boarders
+boarding
+boardinghouse
+boardinghouse's
+boardinghouses
+boards
+boast
+boasted
+boaster
+boasters
+boastful
+boastfully
+boastfulness
+boasting
+boastings
+boasts
+boat
+boated
+boater
+boaters
+boathouse
+boathouse's
+boathouses
+boating
+boatload
+boatload's
+boatloads
+boatman
+boatmen
+boats
+boatswain
+boatswain's
+boatswains
+boatyard
+boatyard's
+boatyards
+bob
+bob's
+bobbed
+bobbies
+bobbin
+bobbin's
+bobbing
+bobbins
+bobby
+bobolink
+bobolink's
+bobolinks
+bobs
+bobwhite
+bobwhite's
+bobwhites
+bode
+boded
+bodes
+bodice
+bodied
+bodies
+bodily
+boding
+body
+bodybuilder
+bodybuilder's
+bodybuilders
+bodybuilding
+bodyguard
+bodyguard's
+bodyguards
+bodying
+bog
+bog's
+bogged
+boggle
+boggled
+boggles
+boggling
+bogs
+bogus
+boil
+boiled
+boiler
+boilerplate
+boilers
+boiling
+boils
+boisterous
+boisterously
+boisterousness
+bold
+bolder
+boldest
+boldface
+boldfaced
+boldfaces
+boldfacing
+boldly
+boldness
+boll
+bolster
+bolstered
+bolsterer
+bolstering
+bolsters
+bolt
+bolted
+bolter
+bolting
+bolts
+bomb
+bombard
+bombarded
+bombarding
+bombardment
+bombardments
+bombards
+bombast
+bombaster
+bombastic
+bombed
+bomber
+bombers
+bombing
+bombings
+bombproof
+bombs
+bonanza
+bonanza's
+bonanzas
+bond
+bondage
+bonded
+bonder
+bonders
+bonding
+bonds
+bondsman
+bondsmen
+bone
+boned
+boner
+boners
+bones
+bonfire
+bonfire's
+bonfires
+bong
+bonier
+boning
+bonnet
+bonneted
+bonnets
+bonnier
+bonny
+bonus
+bonus's
+bonuses
+bony
+boo
+boob
+boobies
+booboo
+booby
+book
+bookcase
+bookcase's
+bookcases
+booked
+booker
+bookers
+bookie
+bookie's
+bookies
+booking
+bookings
+bookish
+bookishly
+bookishness
+bookkeeper
+bookkeeper's
+bookkeepers
+bookkeeping
+booklet
+booklet's
+booklets
+books
+bookseller
+bookseller's
+booksellers
+bookshelf
+bookshelf's
+bookshelves
+bookstore
+bookstore's
+bookstores
+boolean
+booleans
+boom
+boomed
+boomer
+boomerang
+boomerang's
+boomerangs
+booming
+booms
+boon
+boor
+boor's
+boorish
+boorishly
+boorishness
+boors
+boos
+boost
+boosted
+booster
+boosting
+boosts
+boot
+booted
+booth
+booths
+booties
+booting
+bootleg
+bootlegged
+bootlegger
+bootlegger's
+bootleggers
+bootlegging
+bootlegs
+boots
+bootstrap
+bootstrap's
+bootstrapped
+bootstrapping
+bootstraps
+booty
+booze
+boozer
+boozing
+borate
+borated
+borates
+borax
+bordello
+bordello's
+bordellos
+border
+bordered
+borderer
+bordering
+borderings
+borderland
+borderland's
+borderlands
+borderline
+borders
+bore
+bored
+boredom
+borer
+borers
+bores
+boric
+boring
+boringly
+boringness
+born
+borne
+boron
+borough
+boroughs
+borrow
+borrowed
+borrower
+borrowers
+borrowing
+borrowings
+borrows
+bosom
+bosom's
+bosoms
+boss
+bossed
+bosses
+bosun
+botanical
+botanically
+botanist
+botanist's
+botanists
+botany
+botch
+botched
+botcher
+botchers
+botches
+botching
+both
+bother
+bothered
+bothering
+bothers
+bothersome
+bottle
+bottled
+bottleneck
+bottleneck's
+bottlenecks
+bottler
+bottlers
+bottles
+bottling
+bottom
+bottomed
+bottomer
+bottoming
+bottomless
+bottomlessly
+bottomlessness
+bottoms
+botulinus
+botulism
+bouffant
+bough
+bough's
+boughed
+boughs
+bought
+boughten
+boulder
+boulder's
+bouldered
+boulders
+boulevard
+boulevard's
+boulevards
+bounce
+bounced
+bouncer
+bouncers
+bounces
+bouncier
+bouncing
+bouncingly
+bouncy
+bound
+boundaries
+boundary
+boundary's
+bounded
+bounden
+bounder
+bounding
+boundless
+boundlessly
+boundlessness
+bounds
+bounteous
+bounteously
+bounteousness
+bountied
+bounties
+bounty
+bounty's
+bouquet
+bouquet's
+bouquets
+bourbon
+bourbons
+bourgeois
+bourgeoisie
+bout
+bout's
+bouts
+bovine
+bovinely
+bovines
+bow
+bowed
+bowel
+bowel's
+bowels
+bowen
+bower
+bowers
+bowing
+bowl
+bowled
+bowler
+bowlers
+bowline
+bowline's
+bowlines
+bowling
+bowls
+bowman
+bows
+bowser
+bowstring
+bowstring's
+bowstrings
+box
+boxcar
+boxcar's
+boxcars
+boxed
+boxer
+boxers
+boxes
+boxing
+boxwood
+boy
+boy's
+boycott
+boycotted
+boycotter
+boycotting
+boycotts
+boyer
+boyfriend
+boyfriend's
+boyfriends
+boyhood
+boyish
+boyishly
+boyishness
+boys
+bra
+bra's
+brace
+braced
+bracelet
+bracelet's
+bracelets
+bracer
+braces
+bracing
+bracket
+bracketed
+bracketing
+brackets
+brackish
+brackishness
+brae
+brae's
+braes
+brag
+bragged
+bragger
+bragging
+brags
+braid
+braided
+braider
+braiding
+braids
+braille
+brain
+brainchild
+brainchild's
+brained
+brainier
+braininess
+braining
+brains
+brainstorm
+brainstorm's
+brainstormer
+brainstorming
+brainstorms
+brainwash
+brainwashed
+brainwasher
+brainwashes
+brainwashing
+brainy
+brake
+braked
+brakes
+braking
+bramble
+bramble's
+brambles
+brambling
+brambly
+bran
+branch
+branched
+branches
+branching
+branchings
+brand
+branded
+brander
+brandied
+brandies
+branding
+brandish
+brandishes
+brandishing
+brands
+brandy
+brandying
+bras
+brash
+brashly
+brashness
+brass
+brassed
+brasses
+brassier
+brassiere
+brassiness
+brassy
+brat
+brat's
+brats
+bravado
+brave
+braved
+bravely
+braveness
+braver
+bravery
+braves
+bravest
+braving
+bravo
+bravoed
+bravoing
+bravos
+bravura
+brawl
+brawled
+brawler
+brawling
+brawls
+brawn
+bray
+brayed
+brayer
+braying
+brays
+braze
+brazed
+brazen
+brazened
+brazening
+brazenly
+brazenness
+brazer
+brazes
+brazier
+brazier's
+braziers
+brazing
+breach
+breached
+breacher
+breachers
+breaches
+breaching
+bread
+breadboard
+breadboard's
+breadboards
+breaded
+breading
+breads
+breadth
+breadwinner
+breadwinner's
+breadwinners
+break
+breakable
+breakables
+breakage
+breakaway
+breakdown
+breakdown's
+breakdowns
+breaker
+breakers
+breakfast
+breakfasted
+breakfaster
+breakfasters
+breakfasting
+breakfasts
+breaking
+breakpoint
+breakpoint's
+breakpointed
+breakpointing
+breakpoints
+breaks
+breakthrough
+breakthrough's
+breakthroughes
+breakthroughs
+breakup
+breakups
+breakwater
+breakwater's
+breakwaters
+breast
+breasted
+breasting
+breasts
+breastwork
+breastwork's
+breastworks
+breath
+breathable
+breathe
+breathed
+breather
+breathers
+breathes
+breathier
+breathing
+breathless
+breathlessly
+breathlessness
+breaths
+breathtaking
+breathtakingly
+breathy
+bred
+breech
+breech's
+breeches
+breeching
+breed
+breeder
+breeding
+breeds
+breeze
+breeze's
+breezed
+breezes
+breezier
+breezily
+breeziness
+breezing
+breezy
+bremsstrahlung
+brethren
+breve
+breves
+brevet
+breveted
+breveting
+brevets
+brevity
+brew
+brewed
+brewer
+breweries
+brewers
+brewery
+brewery's
+brewing
+brews
+briar
+briar's
+briars
+bribe
+bribed
+briber
+bribers
+bribes
+bribing
+brick
+bricked
+bricker
+bricking
+bricklayer
+bricklayer's
+bricklayers
+bricklaying
+bricks
+bridal
+bride
+bride's
+bridegroom
+brides
+bridesmaid
+bridesmaid's
+bridesmaids
+bridge
+bridgeable
+bridged
+bridgehead
+bridgehead's
+bridgeheads
+bridges
+bridgework
+bridgework's
+bridging
+bridle
+bridled
+bridles
+bridling
+brief
+briefcase
+briefcase's
+briefcases
+briefed
+briefer
+briefest
+briefing
+briefing's
+briefings
+briefly
+briefness
+briefs
+brier
+brig
+brig's
+brigade
+brigade's
+brigaded
+brigades
+brigadier
+brigadier's
+brigadiers
+brigading
+brigantine
+bright
+brighten
+brightened
+brightener
+brighteners
+brightening
+brightens
+brighter
+brightest
+brighting
+brightly
+brightness
+brightnesses
+brights
+brigs
+brilliance
+brilliancy
+brilliant
+brilliantly
+brilliantness
+brim
+brimful
+brimmed
+brindle
+brindled
+brine
+briner
+bring
+bringer
+bringers
+bringing
+brings
+brining
+brink
+brinkmanship
+brisk
+brisker
+briskly
+briskness
+bristle
+bristled
+bristles
+bristling
+britches
+brittle
+brittled
+brittlely
+brittleness
+brittler
+brittlest
+brittling
+broach
+broached
+broacher
+broaches
+broaching
+broad
+broadband
+broadcast
+broadcasted
+broadcaster
+broadcasters
+broadcasting
+broadcastings
+broadcasts
+broaden
+broadened
+broadener
+broadeners
+broadening
+broadenings
+broadens
+broader
+broadest
+broadly
+broadness
+broads
+broadside
+brocade
+brocaded
+broccoli
+brochure
+brochure's
+brochures
+broil
+broiled
+broiler
+broilers
+broiling
+broils
+broke
+broken
+brokenly
+brokenness
+broker
+brokerage
+brokers
+bromide
+bromide's
+bromides
+bromine
+bromines
+bronchi
+bronchial
+bronchiole
+bronchiole's
+bronchioles
+bronchitis
+bronchus
+bronze
+bronzed
+bronzer
+bronzes
+bronzing
+brooch
+brooch's
+brooches
+brood
+brooder
+brooding
+broodingly
+broods
+brook
+brooked
+brooks
+broom
+broom's
+broomed
+brooming
+brooms
+broomstick
+broomstick's
+broomsticks
+broth
+brothel
+brothel's
+brothels
+brother
+brother's
+brotherhood
+brotherliness
+brotherly
+brothers
+brought
+brow
+brow's
+browbeat
+browbeaten
+browbeating
+browbeats
+brown
+browned
+browner
+brownest
+brownie
+brownie's
+brownies
+browning
+brownings
+brownish
+brownly
+brownness
+browns
+brows
+browse
+browsed
+browser
+browsers
+browses
+browsing
+bruise
+bruised
+bruiser
+bruisers
+bruises
+bruising
+brunch
+brunches
+brunette
+brunettes
+brunt
+brush
+brushed
+brusher
+brushes
+brushfire
+brushfire's
+brushfires
+brushier
+brushing
+brushlike
+brushy
+brusque
+brusquely
+brusqueness
+brutal
+brutalities
+brutality
+brutally
+brute
+brute's
+brutes
+brutish
+brutishly
+brutishness
+bubble
+bubbled
+bubbler
+bubbles
+bubblier
+bubbling
+bubbly
+buck
+buckboard
+buckboard's
+buckboards
+bucked
+bucker
+bucket
+bucket's
+bucketed
+bucketing
+buckets
+bucking
+buckle
+buckled
+buckler
+buckles
+buckling
+bucks
+buckshot
+buckskin
+buckskins
+buckwheat
+bucolic
+bud
+bud's
+budded
+buddies
+budding
+buddy
+buddy's
+budge
+budged
+budges
+budget
+budgetary
+budgeted
+budgeter
+budgeters
+budgeting
+budgets
+budging
+buds
+buff
+buff's
+buffalo
+buffaloes
+buffer
+buffer's
+buffered
+bufferer
+bufferer's
+bufferers
+buffering
+buffers
+buffet
+buffeted
+buffeting
+buffetings
+buffets
+buffing
+buffoon
+buffoon's
+buffoons
+buffs
+bug
+bug's
+bugged
+bugger
+bugger's
+buggered
+buggering
+buggers
+buggies
+bugging
+buggy
+buggy's
+bugle
+bugled
+bugler
+bugles
+bugling
+bugs
+build
+builded
+builder
+builders
+building
+building's
+buildings
+builds
+buildup
+buildup's
+buildups
+built
+bulb
+bulb's
+bulbed
+bulbs
+bulge
+bulged
+bulges
+bulging
+bulk
+bulked
+bulkhead
+bulkhead's
+bulkheaded
+bulkheads
+bulkier
+bulkiness
+bulks
+bulky
+bull
+bulldog
+bulldog's
+bulldogs
+bulldoze
+bulldozed
+bulldozer
+bulldozers
+bulldozes
+bulldozing
+bulled
+bullet
+bullet's
+bulletin
+bulletin's
+bulletins
+bulletproof
+bulletproofed
+bulletproofing
+bulletproofs
+bullets
+bullied
+bullies
+bulling
+bullion
+bullish
+bullishly
+bullishness
+bulls
+bully
+bullying
+bulwark
+bum
+bum's
+bumble
+bumblebee
+bumblebee's
+bumblebees
+bumbled
+bumbler
+bumblers
+bumbles
+bumbling
+bumblingly
+bummed
+bummer
+bummers
+bumming
+bump
+bumped
+bumper
+bumpers
+bumping
+bumps
+bumptious
+bumptiously
+bumptiousness
+bums
+bun
+bun's
+bunch
+bunched
+bunches
+bunching
+bundle
+bundled
+bundler
+bundles
+bundling
+bungalow
+bungalow's
+bungalows
+bungle
+bungled
+bungler
+bunglers
+bungles
+bungling
+bunglingly
+bunion
+bunion's
+bunions
+bunk
+bunked
+bunker
+bunker's
+bunkered
+bunkering
+bunkers
+bunkhouse
+bunkhouse's
+bunkhouses
+bunking
+bunkmate
+bunkmate's
+bunkmates
+bunks
+bunnies
+bunny
+bunny's
+buns
+bunt
+bunted
+bunter
+bunters
+bunting
+bunts
+buoy
+buoyancy
+buoyant
+buoyantly
+buoyed
+buoying
+buoys
+burden
+burden's
+burdened
+burdening
+burdens
+burdensome
+burdensomely
+burdensomeness
+bureau
+bureau's
+bureaucracies
+bureaucracy
+bureaucracy's
+bureaucrat
+bureaucrat's
+bureaucratic
+bureaucrats
+bureaus
+burgeon
+burgeoned
+burgeoning
+burgeons
+burger
+burgess
+burgess's
+burgesses
+burgher
+burgher's
+burghers
+burglar
+burglar's
+burglaries
+burglarproof
+burglarproofed
+burglarproofing
+burglarproofs
+burglars
+burglary
+burglary's
+burgle
+burgled
+burgles
+burgling
+burial
+buried
+burier
+buries
+burl
+burled
+burler
+burlesque
+burlesqued
+burlesquely
+burlesquer
+burlesques
+burlesquing
+burlier
+burliness
+burly
+burn
+burned
+burner
+burners
+burning
+burningly
+burnings
+burnish
+burnished
+burnisher
+burnishes
+burnishing
+burns
+burnt
+burntly
+burntness
+burp
+burped
+burping
+burps
+burr
+burr's
+burred
+burrer
+burro
+burro's
+burros
+burrow
+burrowed
+burrower
+burrowing
+burrows
+burrs
+bursa
+bursas
+bursitis
+burst
+bursted
+burster
+bursting
+bursts
+bury
+burying
+bus
+busboy
+busboy's
+busboys
+bused
+buses
+bush
+bushed
+bushel
+bushel's
+bushels
+bushes
+bushier
+bushiness
+bushing
+bushings
+bushwhack
+bushwhacked
+bushwhacker
+bushwhacking
+bushwhacks
+bushy
+busied
+busier
+busies
+busiest
+busily
+business
+business's
+businesses
+businesslike
+businessman
+businessmen
+busing
+buss
+bussed
+busses
+bussing
+bust
+bustard
+bustard's
+bustards
+busted
+buster
+busting
+bustle
+bustled
+bustling
+bustlingly
+busts
+busy
+busying
+but
+butane
+butcher
+butcher's
+butchered
+butcherer
+butchering
+butcherly
+butchers
+butchery
+butler
+butler's
+butlers
+butt
+butt's
+butte
+butted
+butter
+buttered
+butterer
+butterers
+butterfat
+butterflies
+butterfly
+butterfly's
+buttering
+butternut
+butters
+buttes
+butting
+buttock
+buttock's
+buttocks
+button
+buttoned
+buttoner
+buttonhole
+buttonhole's
+buttonholer
+buttonholes
+buttoning
+buttons
+buttress
+buttressed
+buttresses
+buttressing
+butts
+butyl
+butyrate
+buxom
+buxomly
+buxomness
+buy
+buyer
+buyer's
+buyers
+buying
+buys
+buzz
+buzzard
+buzzard's
+buzzards
+buzzed
+buzzer
+buzzes
+buzzing
+buzzword
+buzzword's
+buzzwords
+buzzy
+by
+bye
+byers
+byes
+bygone
+bygones
+bylaw
+bylaw's
+bylaws
+byline
+byline's
+byliner
+bylines
+bypass
+bypassed
+bypasses
+bypassing
+byproduct
+byproduct's
+byproducts
+bystander
+bystander's
+bystanders
+byte
+byte's
+bytes
+byway
+byways
+byword
+byword's
+bywords
+cab
+cab's
+cabbage
+cabbage's
+cabbaged
+cabbages
+cabbaging
+caber
+cabin
+cabin's
+cabinet
+cabinet's
+cabinets
+cabins
+cable
+cabled
+cables
+cabling
+cabs
+cache
+cache's
+cached
+cacher
+caches
+caching
+cackle
+cackled
+cackler
+cackles
+cackling
+cacti
+cactus
+cactuses
+cad
+cadence
+cadenced
+cadences
+cadencing
+cafe
+cafe's
+cafes
+cafeteria
+cafeteria's
+cafeterias
+cage
+caged
+cager
+cagers
+cages
+caging
+cajole
+cajoled
+cajoler
+cajoles
+cajoling
+cake
+caked
+cakes
+caking
+calamities
+calamity
+calamity's
+calcium
+calculate
+calculated
+calculatedly
+calculatedness
+calculates
+calculating
+calculation
+calculations
+calculative
+calculator
+calculator's
+calculators
+calculus
+calendar
+calendar's
+calendared
+calendaring
+calendars
+calf
+calfs
+calibrate
+calibrated
+calibrater
+calibrates
+calibrating
+calibration
+calibrations
+calibrator
+calibrators
+calico
+caliph
+caliphs
+call
+called
+caller
+caller's
+callers
+calling
+callous
+calloused
+callously
+callousness
+calls
+calm
+calmed
+calmer
+calmest
+calming
+calmingly
+calmly
+calmness
+calms
+calorie
+calorie's
+calories
+calves
+came
+camel
+camel's
+camels
+camera
+camera's
+cameras
+camion
+camouflage
+camouflaged
+camouflages
+camouflaging
+camp
+campaign
+campaigned
+campaigner
+campaigners
+campaigning
+campaigns
+camped
+camper
+campers
+camping
+camps
+campus
+campus's
+campuses
+can
+can's
+can't
+canal
+canal's
+canals
+canaries
+canary
+canary's
+cancel
+cancellation
+cancellation's
+cancellations
+cancels
+cancer
+cancer's
+cancers
+candid
+candidate
+candidate's
+candidates
+candidly
+candidness
+candied
+candies
+candle
+candled
+candler
+candles
+candlestick
+candlestick's
+candlesticks
+candling
+candy
+candying
+cane
+caned
+caner
+canes
+caning
+canker
+cankered
+cankering
+canned
+canner
+canner's
+canners
+cannibal
+cannibal's
+cannibals
+canning
+cannister
+cannister's
+cannisters
+cannon
+cannon's
+cannoned
+cannoning
+cannons
+cannot
+canoe
+canoe's
+canoed
+canoes
+canon
+canon's
+canonical
+canonically
+canonicals
+canons
+canopy
+cans
+cantankerous
+cantankerously
+cantankerousness
+canto
+canton
+canton's
+cantons
+cantor
+cantor's
+cantors
+cantos
+canvas
+canvas's
+canvaser
+canvases
+canvass
+canvassed
+canvasser
+canvassers
+canvasses
+canvassing
+canyon
+canyon's
+canyons
+cap
+cap's
+capabilities
+capability
+capability's
+capable
+capableness
+capably
+capacious
+capaciously
+capaciousness
+capacitance
+capacitances
+capacities
+capacitive
+capacitively
+capacitor
+capacitor's
+capacitors
+capacity
+cape
+caper
+capered
+capering
+capers
+capes
+capillary
+capita
+capital
+capitalism
+capitalist
+capitalist's
+capitalists
+capitally
+capitals
+capitol
+capitol's
+capitols
+capped
+capping
+capricious
+capriciously
+capriciousness
+caps
+captain
+captained
+captaining
+captains
+caption
+caption's
+captioned
+captioner
+captioning
+captions
+captivate
+captivated
+captivates
+captivating
+captivation
+captive
+captive's
+captives
+captivity
+captor
+captor's
+captors
+capture
+captured
+capturer
+capturers
+captures
+capturing
+car
+car's
+caravan
+caravan's
+caravaner
+caravans
+carbohydrate
+carbohydrate's
+carbohydrates
+carbolic
+carbon
+carbon's
+carbonate
+carbonated
+carbonates
+carbonation
+carbonic
+carbons
+carcass
+carcass's
+carcasses
+card
+card's
+cardboard
+cardboards
+carded
+carder
+cardiac
+cardinal
+cardinalities
+cardinality
+cardinality's
+cardinally
+cardinals
+carding
+cards
+care
+cared
+career
+career's
+careered
+careering
+careers
+carefree
+careful
+carefully
+carefulness
+careless
+carelessly
+carelessness
+carer
+carers
+cares
+caress
+caressed
+caresser
+caresses
+caressing
+caressingly
+caressive
+caressively
+caret
+carets
+cargo
+cargoes
+cargos
+caribou
+caribous
+caring
+carnation
+carnations
+carnival
+carnival's
+carnivals
+carnivorous
+carnivorously
+carnivorousness
+carol
+carol's
+carols
+carpenter
+carpenter's
+carpentered
+carpentering
+carpenters
+carpet
+carpeted
+carpeting
+carpets
+carriage
+carriage's
+carriages
+carried
+carrier
+carriers
+carries
+carrot
+carrot's
+carrots
+carry
+carrying
+carryover
+carryovers
+cars
+cart
+carted
+carter
+carters
+carting
+cartography
+carton
+carton's
+cartons
+cartoon
+cartoon's
+cartoons
+cartridge
+cartridge's
+cartridges
+carts
+carve
+carved
+carver
+carvers
+carves
+carving
+carvings
+cascade
+cascaded
+cascades
+cascading
+case
+cased
+casement
+casement's
+casements
+cases
+cash
+cashed
+casher
+cashers
+cashes
+cashier
+cashier's
+cashiers
+cashing
+casing
+casings
+cask
+cask's
+casket
+casket's
+caskets
+casks
+casserole
+casserole's
+casseroles
+cast
+cast's
+caste
+caste's
+casted
+caster
+casters
+castes
+casteth
+casting
+castings
+castle
+castled
+castles
+castling
+casts
+casual
+casually
+casualness
+casuals
+casualties
+casualty
+casualty's
+cat
+cat's
+catalyst
+catalyst's
+catalysts
+cataract
+cataracts
+catastrophe
+catastrophe's
+catastrophes
+catastrophic
+catch
+catchable
+catcher
+catcher's
+catchers
+catches
+catching
+categorical
+categorically
+categories
+category
+category's
+cater
+catered
+caterer
+catering
+caterpillar
+caterpillar's
+caterpillars
+caters
+cathedral
+cathedral's
+cathedrals
+catheter
+catheters
+cathode
+cathode's
+cathodes
+catholic
+catholic's
+catholics
+cats
+catsup
+cattle
+caught
+causal
+causality
+causally
+causation
+causation's
+causations
+cause
+caused
+causer
+causes
+causeway
+causeway's
+causeways
+causing
+caustic
+causticly
+caustics
+caution
+cautioned
+cautioner
+cautioners
+cautioning
+cautionings
+cautions
+cautious
+cautiously
+cautiousness
+cavalier
+cavalierly
+cavalierness
+cavalry
+cave
+caveat
+caveat's
+caveats
+caved
+caver
+cavern
+cavern's
+caverns
+caves
+caving
+cavities
+cavity
+cavity's
+caw
+cawed
+cawing
+caws
+cease
+ceased
+ceaseless
+ceaselessly
+ceaselessness
+ceases
+ceasing
+cedar
+ceiling
+ceiling's
+ceilinged
+ceilings
+celebrate
+celebrated
+celebratedness
+celebrates
+celebrating
+celebration
+celebrations
+celebratory
+celebrities
+celebrity
+celebrity's
+celery
+celestial
+celestially
+celibate
+celibates
+cell
+cellar
+cellar's
+cellared
+cellarer
+cellaring
+cellars
+celled
+cellist
+cellist's
+cellists
+cells
+cellular
+cellularly
+cement
+cemented
+cementer
+cementing
+cements
+cemeteries
+cemetery
+cemetery's
+censor
+censored
+censoring
+censors
+censorship
+censure
+censured
+censurer
+censures
+censuring
+census
+census's
+censuses
+cent
+centipede
+centipede's
+centipedes
+central
+centrally
+centrals
+centrifuge
+centrifuge's
+centrifuged
+centrifuges
+centrifuging
+centripetal
+centripetally
+cents
+centuries
+century
+century's
+cereal
+cereal's
+cereals
+cerebral
+cerebrally
+ceremonial
+ceremonially
+ceremonialness
+ceremonies
+ceremony
+ceremony's
+certain
+certainly
+certainties
+certainty
+certifiable
+certificate
+certificated
+certificates
+certificating
+certification
+certifications
+certified
+certifier
+certifiers
+certifies
+certify
+certifying
+cessation
+cessation's
+cessations
+chafe
+chafer
+chaff
+chaffer
+chaffered
+chafferer
+chaffering
+chaffing
+chafing
+chagrin
+chagrined
+chagrining
+chagrins
+chain
+chained
+chaining
+chains
+chair
+chaired
+chairing
+chairman
+chairmanship
+chairmanships
+chairmen
+chairperson
+chairperson's
+chairpersons
+chairs
+chalice
+chalice's
+chaliced
+chalices
+chalk
+chalked
+chalking
+chalks
+challenge
+challenged
+challenger
+challengers
+challenges
+challenging
+challengingly
+chamber
+chambered
+chamberer
+chamberers
+chambering
+chamberlain
+chamberlain's
+chamberlains
+chambers
+champagne
+champaign
+champion
+championed
+championing
+champions
+championship
+championship's
+championships
+chance
+chanced
+chancellor
+chancellors
+chances
+chancing
+chandelier
+chandelier's
+chandeliers
+change
+changeability
+changeable
+changeableness
+changeably
+changed
+changeover
+changeover's
+changeovers
+changer
+changers
+changes
+changing
+channel
+channels
+chant
+chanted
+chanter
+chanticleer
+chanticleer's
+chanticleers
+chanting
+chants
+chaos
+chaotic
+chap
+chap's
+chapel
+chapel's
+chapels
+chaperon
+chaperoned
+chaplain
+chaplain's
+chaplains
+chaps
+chapter
+chapter's
+chaptered
+chaptering
+chapters
+char
+character
+character's
+charactered
+charactering
+characteristic
+characteristic's
+characteristically
+characteristics
+characters
+charcoal
+charcoaled
+charcoals
+charge
+chargeable
+chargeableness
+charged
+charger
+chargers
+charges
+charging
+charing
+chariot
+chariot's
+chariots
+charitable
+charitableness
+charities
+charity
+charity's
+charm
+charmed
+charmer
+charmers
+charming
+charmingly
+charms
+chars
+chart
+chartable
+charted
+charter
+chartered
+charterer
+charterers
+chartering
+charters
+charting
+chartings
+charts
+chase
+chased
+chaser
+chasers
+chases
+chasing
+chasm
+chasm's
+chasms
+chaste
+chastely
+chasteness
+chaster
+chastest
+chastise
+chastised
+chastiser
+chastisers
+chastises
+chastising
+chat
+chateau
+chateau's
+chateaus
+chats
+chatter
+chattered
+chatterer
+chatterers
+chattering
+chatterly
+chatters
+chauffeur
+chauffeured
+chauffeuring
+chauffeurs
+chauvinism
+chauvinism's
+chauvinist
+chauvinist's
+chauvinistic
+chauvinists
+cheap
+cheapen
+cheapened
+cheapening
+cheapens
+cheaper
+cheapest
+cheaply
+cheapness
+cheat
+cheated
+cheater
+cheaters
+cheating
+cheats
+check
+checkable
+checked
+checker
+checkered
+checkering
+checkers
+checking
+checkout
+checkouts
+checkpoint
+checkpoint's
+checkpoints
+checks
+checksum
+checksum's
+checksums
+cheek
+cheek's
+cheeks
+cheer
+cheered
+cheerer
+cheerers
+cheerful
+cheerfully
+cheerfulness
+cheerier
+cheerily
+cheeriness
+cheering
+cheerless
+cheerlessly
+cheerlessness
+cheerly
+cheers
+cheery
+cheese
+cheese's
+cheesed
+cheeses
+cheesing
+chef
+chef's
+chefs
+chemical
+chemically
+chemicals
+chemise
+chemises
+chemist
+chemist's
+chemistries
+chemistry
+chemists
+cherish
+cherished
+cherisher
+cherishes
+cherishing
+cherries
+cherry
+cherry's
+cherub
+cherub's
+cherubim
+cherubs
+chess
+chest
+chester
+chestnut
+chestnut's
+chestnuts
+chests
+chew
+chewed
+chewer
+chewers
+chewing
+chews
+chick
+chickadee
+chickadee's
+chickadees
+chicken
+chickened
+chickening
+chickens
+chicks
+chide
+chided
+chides
+chiding
+chief
+chief's
+chiefly
+chiefs
+chieftain
+chieftain's
+chieftains
+chiffon
+child
+child's
+childhood
+childhoods
+childish
+childishly
+childishness
+childly
+children
+children's
+chill
+chilled
+chiller
+chillers
+chillier
+chillies
+chilliness
+chilling
+chillingly
+chillness
+chills
+chilly
+chime
+chime's
+chimed
+chimer
+chimes
+chiming
+chimney
+chimney's
+chimneyed
+chimneys
+chin
+chin's
+chink
+chinked
+chinks
+chinned
+chinner
+chinners
+chinning
+chins
+chintz
+chip
+chip's
+chipmunk
+chipmunk's
+chipmunks
+chips
+chirp
+chirped
+chirping
+chirps
+chisel
+chisels
+chivalrous
+chivalrously
+chivalrousness
+chivalry
+chlorine
+chloroplast
+chloroplast's
+chloroplasts
+chock
+chock's
+chocked
+chocker
+chocking
+chocks
+chocolate
+chocolate's
+chocolates
+choice
+choicely
+choiceness
+choicer
+choices
+choicest
+choir
+choir's
+choirs
+choke
+choked
+choker
+chokers
+chokes
+choking
+chokingly
+cholera
+choose
+chooser
+choosers
+chooses
+choosing
+chop
+chopped
+chopper
+chopper's
+choppers
+chopping
+chops
+choral
+chorally
+chord
+chord's
+chorded
+chording
+chords
+chore
+chores
+choring
+chorion
+chorus
+chorused
+choruses
+chose
+chosen
+christen
+christened
+christening
+christens
+chronic
+chronicle
+chronicled
+chronicler
+chroniclers
+chronicles
+chronological
+chronologically
+chronologies
+chronology
+chronology's
+chubbier
+chubbiest
+chubbiness
+chubby
+chuck
+chuck's
+chucked
+chucking
+chuckle
+chuckled
+chuckles
+chuckling
+chucklingly
+chucks
+chum
+chump
+chump's
+chumping
+chumps
+chums
+chunk
+chunk's
+chunks
+church
+churched
+churches
+churching
+churchliness
+churchly
+churchman
+churchyard
+churchyard's
+churchyards
+churn
+churned
+churner
+churners
+churning
+churns
+chute
+chute's
+chuted
+chutes
+chuting
+cider
+ciders
+cigar
+cigar's
+cigarette
+cigarette's
+cigarettes
+cigars
+cinder
+cinder's
+cinders
+cinnamon
+cipher
+cipher's
+ciphered
+ciphering
+ciphers
+circle
+circled
+circler
+circles
+circling
+circuit
+circuit's
+circuited
+circuiting
+circuitous
+circuitously
+circuitousness
+circuitry
+circuits
+circular
+circular's
+circularities
+circularity
+circularly
+circularness
+circulars
+circulate
+circulated
+circulates
+circulating
+circulation
+circulations
+circulative
+circumference
+circumferences
+circumflex
+circumflexes
+circumlocution
+circumlocution's
+circumlocutions
+circumspect
+circumspectly
+circumstance
+circumstance's
+circumstanced
+circumstances
+circumstancing
+circumstantial
+circumstantially
+circumvent
+circumventable
+circumvented
+circumventing
+circumvents
+circus
+circus's
+circuses
+cistern
+cistern's
+cisterns
+citadel
+citadel's
+citadels
+citation
+citation's
+citations
+cite
+cited
+cites
+citied
+cities
+citing
+citizen
+citizen's
+citizenly
+citizens
+citizenship
+city
+city's
+civic
+civics
+civil
+civilian
+civilian's
+civilians
+civilities
+civility
+civilly
+clad
+clads
+claim
+claimable
+claimant
+claimant's
+claimants
+claimed
+claimer
+claiming
+claims
+clairvoyant
+clairvoyantly
+clairvoyants
+clam
+clam's
+clamber
+clambered
+clamberer
+clambering
+clambers
+clamorous
+clamorously
+clamorousness
+clamp
+clamped
+clamper
+clamping
+clamps
+clams
+clan
+clang
+clanged
+clanger
+clangers
+clanging
+clangs
+clans
+clap
+claps
+clarification
+clarifications
+clarified
+clarifier
+clarifies
+clarify
+clarifying
+clarity
+clash
+clashed
+clasher
+clashes
+clashing
+clasp
+clasped
+clasper
+clasping
+clasps
+class
+classed
+classer
+classes
+classic
+classical
+classically
+classics
+classifiable
+classification
+classifications
+classified
+classifieds
+classifier
+classifiers
+classifies
+classify
+classifying
+classing
+classmate
+classmate's
+classmates
+classroom
+classroom's
+classrooms
+classwork
+clatter
+clattered
+clatterer
+clattering
+clatteringly
+clatters
+clause
+clause's
+clauses
+claw
+clawed
+clawer
+clawing
+claws
+clay
+clay's
+clayed
+claying
+clays
+clean
+cleaned
+cleaner
+cleaner's
+cleaners
+cleanest
+cleaning
+cleanlier
+cleanliness
+cleanly
+cleanness
+cleans
+cleanse
+cleansed
+cleanser
+cleansers
+cleanses
+cleansing
+cleanup
+cleanup's
+cleanups
+clear
+clearance
+clearance's
+clearances
+cleared
+clearer
+clearest
+clearing
+clearing's
+clearings
+clearly
+clearness
+clears
+cleavage
+cleavages
+cleave
+cleaved
+cleaver
+cleavers
+cleaves
+cleaving
+cleft
+cleft's
+clefts
+clench
+clenched
+clenches
+clenching
+clergy
+clergyman
+clerical
+clerically
+clericals
+clerk
+clerk's
+clerked
+clerking
+clerkly
+clerks
+clever
+cleverer
+cleverest
+cleverly
+cleverness
+cliche
+cliche's
+cliches
+click
+clicked
+clicker
+clickers
+clicking
+clicks
+client
+client's
+clients
+cliff
+cliff's
+cliffs
+climate
+climate's
+climates
+climatic
+climatically
+climax
+climaxed
+climaxes
+climaxing
+climb
+climbed
+climber
+climbers
+climbing
+climbs
+clime
+clime's
+climes
+clinch
+clinched
+clincher
+clinches
+clinching
+clinchingly
+cling
+clinging
+clings
+clinic
+clinic's
+clinical
+clinically
+clinics
+clink
+clinked
+clinker
+clinkered
+clinkering
+clinkers
+clip
+clip's
+clipped
+clipper
+clipper's
+clippers
+clipping
+clipping's
+clippings
+clips
+clique
+clique's
+cliques
+cloak
+cloak's
+cloaked
+cloaking
+cloaks
+clobber
+clobbered
+clobbering
+clobbers
+clock
+clocked
+clocker
+clockers
+clocking
+clockings
+clocks
+clockwise
+clockwork
+clod
+clod's
+clods
+clog
+clog's
+clogged
+clogging
+clogs
+cloister
+cloister's
+cloistered
+cloistering
+cloisters
+clone
+cloned
+cloner
+cloners
+clones
+cloning
+close
+closed
+closely
+closeness
+closenesses
+closer
+closers
+closes
+closest
+closet
+closeted
+closets
+closing
+closings
+closure
+closure's
+closured
+closures
+closuring
+cloth
+clothe
+clothed
+clothes
+clothing
+cloud
+clouded
+cloudier
+cloudiest
+cloudiness
+clouding
+cloudless
+cloudlessly
+cloudlessness
+clouds
+cloudy
+clout
+clove
+clover
+cloves
+clown
+clowning
+clowns
+club
+club's
+clubbed
+clubbing
+clubs
+cluck
+clucked
+clucking
+clucks
+clue
+clue's
+clues
+cluing
+clump
+clumped
+clumping
+clumps
+clumsier
+clumsiest
+clumsily
+clumsiness
+clumsy
+clung
+cluster
+clustered
+clustering
+clusterings
+clusters
+clutch
+clutched
+clutches
+clutching
+clutter
+cluttered
+cluttering
+clutters
+coach
+coach's
+coached
+coacher
+coaches
+coaching
+coachman
+coagulate
+coagulated
+coagulates
+coagulating
+coagulation
+coal
+coaled
+coaler
+coalesce
+coalesced
+coalesces
+coalescing
+coaling
+coalition
+coals
+coarse
+coarsely
+coarsen
+coarsened
+coarseness
+coarsening
+coarser
+coarsest
+coast
+coastal
+coasted
+coaster
+coasters
+coasting
+coasts
+coat
+coated
+coater
+coaters
+coating
+coatings
+coats
+coax
+coaxed
+coaxer
+coaxes
+coaxial
+coaxially
+coaxing
+cobbler
+cobbler's
+cobblers
+cobweb
+cobweb's
+cobwebs
+cock
+cocked
+cocker
+cocking
+cockroach
+cockroaches
+cocks
+cocktail
+cocktail's
+cocktails
+cocoa
+coconut
+coconut's
+coconuts
+cocoon
+cocoon's
+cocoons
+cod
+code
+coded
+coder
+coder's
+coders
+codes
+codeword
+codeword's
+codewords
+codification
+codification's
+codifications
+codified
+codifier
+codifier's
+codifiers
+codifies
+codify
+codifying
+coding
+codings
+cods
+coefficient
+coefficient's
+coefficiently
+coefficients
+coerce
+coerced
+coerces
+coercing
+coercion
+coercions
+coercive
+coercively
+coerciveness
+coexist
+coexisted
+coexistence
+coexisting
+coexists
+coffee
+coffee's
+coffees
+coffer
+coffer's
+coffers
+coffin
+coffin's
+coffins
+cogent
+cogently
+cogitate
+cogitated
+cogitates
+cogitating
+cogitation
+cogitative
+cognition
+cognitions
+cognitive
+cognitively
+cognitives
+cohabit
+cohabitation
+cohabitations
+cohabited
+cohabiting
+cohabits
+cohere
+cohered
+coherence
+coherent
+coherently
+coherer
+coheres
+cohering
+cohesion
+cohesive
+cohesively
+cohesiveness
+coil
+coiled
+coiling
+coils
+coin
+coinage
+coincide
+coincided
+coincidence
+coincidence's
+coincidences
+coincidental
+coincidentally
+coincides
+coinciding
+coined
+coiner
+coining
+coins
+coke
+cokes
+coking
+cold
+colder
+coldest
+coldly
+coldness
+colds
+collaborate
+collaborated
+collaborates
+collaborating
+collaboration
+collaborations
+collaborative
+collaboratively
+collaborator
+collaborator's
+collaborators
+collapse
+collapsed
+collapses
+collapsing
+collar
+collared
+collaring
+collars
+collate
+collated
+collateral
+collaterally
+collates
+collating
+collation
+collations
+collative
+collator
+collators
+colleague
+colleague's
+colleagues
+collect
+collected
+collectedly
+collectedness
+collectible
+collecting
+collection
+collection's
+collections
+collective
+collectively
+collectives
+collector
+collector's
+collectors
+collects
+college
+college's
+colleges
+collegiate
+collegiately
+collide
+collided
+collides
+colliding
+collie
+collied
+collier
+collies
+collision
+collision's
+collisions
+cologne
+cologned
+colon
+colon's
+colonel
+colonel's
+colonels
+colonial
+colonially
+colonialness
+colonials
+colonies
+colonist
+colonist's
+colonists
+colons
+colony
+colony's
+colossal
+colossally
+colt
+colt's
+colter
+colts
+column
+column's
+columnar
+columned
+columns
+comb
+combat
+combatant
+combatant's
+combatants
+combated
+combating
+combative
+combatively
+combativeness
+combats
+combed
+comber
+combers
+combination
+combination's
+combinational
+combinations
+combinator
+combinator's
+combinatorial
+combinatorially
+combinatoric
+combinatorics
+combinators
+combine
+combined
+combiner
+combiners
+combines
+combing
+combings
+combining
+combs
+combustion
+combustions
+come
+comedian
+comedian's
+comedians
+comedic
+comedies
+comedy
+comedy's
+comelier
+comeliness
+comely
+comer
+comers
+comes
+comest
+comestible
+comestibles
+comet
+comet's
+cometh
+comets
+comfort
+comfortabilities
+comfortability
+comfortable
+comfortableness
+comfortably
+comforted
+comforter
+comforters
+comforting
+comfortingly
+comforts
+comic
+comic's
+comical
+comically
+comics
+coming
+comings
+comma
+comma's
+command
+command's
+commandant
+commandant's
+commandants
+commanded
+commandeer
+commandeered
+commandeering
+commandeers
+commander
+commanders
+commanding
+commandingly
+commandment
+commandment's
+commandments
+commands
+commas
+commemorate
+commemorated
+commemorates
+commemorating
+commemoration
+commemorations
+commemorative
+commemoratively
+commemoratives
+commence
+commenced
+commencement
+commencement's
+commencements
+commencer
+commences
+commencing
+commend
+commendation
+commendation's
+commendations
+commended
+commender
+commending
+commends
+commensurate
+commensurately
+commensurates
+commensuration
+commensurations
+comment
+comment's
+commentaries
+commentary
+commentary's
+commentator
+commentator's
+commentators
+commented
+commenter
+commenting
+comments
+commerce
+commerced
+commercial
+commercially
+commercialness
+commercials
+commercing
+commission
+commissioned
+commissioner
+commissioners
+commissioning
+commissions
+commit
+commitment
+commitment's
+commitments
+commits
+committed
+committee
+committee's
+committees
+committing
+commodities
+commodity
+commodity's
+commodore
+commodore's
+commodores
+common
+commonalities
+commonality
+commoner
+commoner's
+commoners
+commonest
+commonly
+commonness
+commonplace
+commonplaceness
+commonplaces
+commons
+commonwealth
+commonwealths
+commotion
+commotions
+communal
+communally
+commune
+communed
+communes
+communicant
+communicant's
+communicants
+communicate
+communicated
+communicates
+communicating
+communication
+communications
+communicative
+communicatively
+communicativeness
+communicator
+communicator's
+communicators
+communing
+communion
+communist
+communist's
+communists
+communities
+community
+community's
+commutative
+commutatively
+commutativity
+commute
+commuted
+commuter
+commuters
+commutes
+commuting
+compact
+compacted
+compacter
+compacters
+compactest
+compacting
+compactly
+compactness
+compactor
+compactor's
+compactors
+compacts
+companies
+companion
+companion's
+companionable
+companionableness
+companions
+companionship
+company
+company's
+comparability
+comparable
+comparableness
+comparably
+comparative
+comparatively
+comparativeness
+comparatives
+comparator
+comparator's
+comparators
+compare
+compared
+comparer
+compares
+comparing
+comparison
+comparison's
+comparisons
+compartment
+compartmented
+compartmenting
+compartments
+compass
+compassed
+compasses
+compassing
+compassion
+compassionate
+compassionately
+compassionateness
+compatibilities
+compatibility
+compatibility's
+compatible
+compatibleness
+compatibles
+compatibly
+compel
+compelled
+compelling
+compellingly
+compels
+compendium
+compensate
+compensated
+compensates
+compensating
+compensation
+compensations
+compensative
+compensatory
+compete
+competed
+competence
+competences
+competent
+competently
+competes
+competing
+competition
+competition's
+competitions
+competitive
+competitively
+competitiveness
+competitor
+competitor's
+competitors
+compilable
+compilation
+compilation's
+compilations
+compile
+compiled
+compiler
+compiler's
+compilers
+compiles
+compiling
+complain
+complained
+complainer
+complainers
+complaining
+complainingly
+complains
+complaint
+complaint's
+complaints
+complement
+complementariness
+complementary
+complemented
+complementer
+complementers
+complementing
+complements
+complete
+completed
+completely
+completeness
+completer
+completes
+completing
+completion
+completions
+completive
+complex
+complexes
+complexion
+complexioned
+complexities
+complexity
+complexly
+complexness
+compliance
+compliances
+complicate
+complicated
+complicatedly
+complicatedness
+complicates
+complicating
+complication
+complications
+complicator
+complicator's
+complicators
+complicity
+complied
+complier
+compliers
+complies
+compliment
+complimentary
+complimented
+complimenter
+complimenters
+complimenting
+compliments
+comply
+complying
+component
+component's
+components
+compose
+composed
+composedly
+composedness
+composer
+composer's
+composers
+composes
+composing
+composite
+compositely
+composites
+composition
+compositional
+compositionally
+compositions
+composure
+compound
+compounded
+compounder
+compounding
+compounds
+comprehend
+comprehended
+comprehending
+comprehends
+comprehensibility
+comprehensible
+comprehensibleness
+comprehension
+comprehensive
+comprehensively
+comprehensiveness
+compress
+compressed
+compressedly
+compresses
+compressible
+compressing
+compression
+compressions
+compressive
+compressively
+comprise
+comprised
+comprises
+comprising
+compromise
+compromised
+compromiser
+compromisers
+compromises
+compromising
+compromisingly
+comptroller
+comptroller's
+comptrollers
+compulsion
+compulsion's
+compulsions
+compulsory
+compunction
+compunctions
+computability
+computable
+computation
+computation's
+computational
+computationally
+computations
+compute
+computed
+computer
+computer's
+computerese
+computers
+computes
+computing
+comrade
+comradeliness
+comradely
+comrades
+comradeship
+concatenate
+concatenated
+concatenates
+concatenating
+concatenation
+concatenations
+conceal
+concealed
+concealer
+concealers
+concealing
+concealingly
+concealment
+conceals
+concede
+conceded
+concededly
+conceder
+concedes
+conceding
+conceit
+conceited
+conceitedly
+conceitedness
+conceits
+conceivable
+conceivably
+conceive
+conceived
+conceiver
+conceives
+conceiving
+concentrate
+concentrated
+concentrates
+concentrating
+concentration
+concentrations
+concentrative
+concentrator
+concentrators
+concentric
+concept
+concept's
+conception
+conception's
+conceptions
+conceptive
+concepts
+conceptual
+conceptually
+concern
+concerned
+concernedly
+concerning
+concerns
+concert
+concerted
+concertedly
+concertedness
+concerts
+concession
+concession's
+concessioner
+concessions
+concise
+concisely
+conciseness
+concision
+concisions
+conclude
+concluded
+concluder
+concludes
+concluding
+conclusion
+conclusion's
+conclusions
+conclusive
+conclusively
+conclusiveness
+concomitant
+concomitantly
+concomitants
+concord
+concrete
+concreted
+concretely
+concreteness
+concretes
+concreting
+concretion
+concur
+concurred
+concurrence
+concurrencies
+concurrency
+concurrent
+concurrently
+concurring
+concurs
+condemn
+condemnation
+condemnations
+condemned
+condemner
+condemners
+condemning
+condemns
+condensation
+condense
+condensed
+condenser
+condensers
+condenses
+condensing
+condescend
+condescending
+condescendingly
+condescends
+condition
+conditional
+conditionally
+conditionals
+conditioned
+conditioner
+conditioners
+conditioning
+conditions
+condone
+condoned
+condoner
+condones
+condoning
+conducive
+conduciveness
+conduct
+conducted
+conducting
+conduction
+conductive
+conductively
+conductivities
+conductivity
+conductor
+conductor's
+conductors
+conducts
+conduit
+conduits
+cone
+cone's
+coned
+cones
+confederacy
+confederate
+confederates
+confederation
+confederations
+confederative
+confer
+conference
+conference's
+conferences
+conferencing
+conferred
+conferrer
+conferrer's
+conferrers
+conferring
+confers
+confess
+confessed
+confessedly
+confesses
+confessing
+confession
+confession's
+confessions
+confessor
+confessor's
+confessors
+confidant
+confidant's
+confidants
+confide
+confided
+confidence
+confidences
+confident
+confidential
+confidentiality
+confidentially
+confidentialness
+confidently
+confider
+confides
+confiding
+confidingly
+confidingness
+configurable
+configuration
+configuration's
+configurations
+configure
+configured
+configures
+configuring
+confine
+confined
+confinement
+confinement's
+confinements
+confiner
+confines
+confining
+confirm
+confirmation
+confirmation's
+confirmations
+confirmed
+confirmedly
+confirmedness
+confirming
+confirms
+confiscate
+confiscated
+confiscates
+confiscating
+confiscation
+confiscations
+conflict
+conflicted
+conflicting
+conflictingly
+conflictive
+conflicts
+conform
+conformed
+conformer
+conformers
+conforming
+conformity
+conforms
+confound
+confounded
+confoundedly
+confounder
+confounding
+confounds
+confront
+confrontation
+confrontation's
+confrontations
+confronted
+confronter
+confronters
+confronting
+confronts
+confuse
+confused
+confusedly
+confusedness
+confuser
+confusers
+confuses
+confusing
+confusingly
+confusion
+confusions
+congenial
+congenially
+congested
+congestion
+congratulate
+congratulated
+congratulates
+congratulation
+congratulations
+congregate
+congregated
+congregates
+congregating
+congregation
+congregations
+congress
+congress's
+congressed
+congresses
+congressing
+congressional
+congressionally
+congressman
+congruence
+congruent
+congruently
+coning
+conjecture
+conjectured
+conjecturer
+conjectures
+conjecturing
+conjoined
+conjunct
+conjuncted
+conjunction
+conjunction's
+conjunctions
+conjunctive
+conjunctively
+conjuncts
+conjure
+conjured
+conjurer
+conjurers
+conjures
+conjuring
+connect
+connected
+connectedly
+connectedness
+connecter
+connecters
+connecting
+connection
+connection's
+connections
+connective
+connective's
+connectively
+connectives
+connectivities
+connectivity
+connector
+connector's
+connectors
+connects
+connoisseur
+connoisseur's
+connoisseurs
+connote
+connoted
+connotes
+connoting
+conquer
+conquerable
+conquered
+conquerer
+conquerers
+conquering
+conqueror
+conqueror's
+conquerors
+conquers
+conquest
+conquest's
+conquests
+cons
+conscience
+conscience's
+consciences
+conscientious
+conscientiously
+conscientiousness
+conscious
+consciouses
+consciously
+consciousness
+consecrate
+consecrated
+consecrates
+consecrating
+consecration
+consecrations
+consecrative
+consecutive
+consecutively
+consecutiveness
+consensus
+consent
+consented
+consenter
+consenters
+consenting
+consentingly
+consents
+consequence
+consequence's
+consequences
+consequent
+consequential
+consequentialities
+consequentiality
+consequentially
+consequentialness
+consequently
+consequentness
+consequents
+conservation
+conservation's
+conservationist
+conservationist's
+conservationists
+conservations
+conservatism
+conservative
+conservatively
+conservativeness
+conservatives
+conserve
+conserved
+conserver
+conserves
+conserving
+consider
+considerable
+considerably
+considerate
+considerately
+considerateness
+consideration
+considerations
+considered
+considerer
+considering
+considers
+consign
+consigned
+consigning
+consigns
+consist
+consisted
+consistencies
+consistency
+consistent
+consistently
+consisting
+consists
+consolable
+consolation
+consolation's
+consolations
+console
+consoled
+consoler
+consolers
+consoles
+consolidate
+consolidated
+consolidates
+consolidating
+consolidation
+consolidations
+consoling
+consolingly
+consonant
+consonant's
+consonantly
+consonants
+consort
+consorted
+consorting
+consortium
+consorts
+conspicuous
+conspicuously
+conspicuousness
+conspiracies
+conspiracy
+conspiracy's
+conspirator
+conspirator's
+conspirators
+conspire
+conspired
+conspires
+conspiring
+constable
+constable's
+constables
+constancy
+constant
+constantly
+constants
+constellation
+constellation's
+constellations
+consternation
+constituencies
+constituency
+constituency's
+constituent
+constituent's
+constituently
+constituents
+constitute
+constituted
+constitutes
+constituting
+constitution
+constitutional
+constitutionality
+constitutionally
+constitutions
+constitutive
+constitutively
+constrain
+constrained
+constrainedly
+constraining
+constrains
+constraint
+constraint's
+constraints
+construct
+constructed
+constructibility
+constructible
+constructing
+construction
+construction's
+constructions
+constructive
+constructively
+constructiveness
+constructor
+constructor's
+constructors
+constructs
+construe
+construed
+construes
+construing
+consul
+consul's
+consulate
+consulate's
+consulates
+consuls
+consult
+consultant
+consultant's
+consultants
+consultation
+consultation's
+consultations
+consultative
+consulted
+consulter
+consulting
+consultive
+consults
+consumable
+consumables
+consume
+consumed
+consumedly
+consumer
+consumer's
+consumers
+consumes
+consuming
+consumingly
+consummate
+consummated
+consummately
+consummates
+consummating
+consummation
+consummations
+consummative
+consumption
+consumption's
+consumptions
+consumptive
+consumptively
+contact
+contacted
+contacting
+contacts
+contagion
+contagious
+contagiously
+contagiousness
+contain
+containable
+contained
+container
+containers
+containing
+containment
+containment's
+containments
+contains
+contaminate
+contaminated
+contaminates
+contaminating
+contamination
+contaminations
+contaminative
+contemplate
+contemplated
+contemplates
+contemplating
+contemplation
+contemplations
+contemplative
+contemplatively
+contemplativeness
+contemporaneous
+contemporaneously
+contemporaneousness
+contemporaries
+contemporariness
+contemporary
+contempt
+contemptible
+contemptibleness
+contemptuous
+contemptuously
+contemptuousness
+contend
+contended
+contender
+contenders
+contending
+contends
+content
+contented
+contentedly
+contentedness
+contenting
+contention
+contention's
+contentions
+contently
+contentment
+contents
+contest
+contestable
+contested
+contester
+contesters
+contesting
+contests
+context
+context's
+contexts
+contextual
+contextually
+contiguity
+contiguous
+contiguously
+contiguousness
+continent
+continent's
+continental
+continentally
+continently
+continents
+contingencies
+contingency
+contingency's
+contingent
+contingent's
+contingently
+contingents
+continual
+continually
+continuance
+continuance's
+continuances
+continuation
+continuation's
+continuations
+continue
+continued
+continuer
+continues
+continuing
+continuities
+continuity
+continuous
+continuously
+continuousness
+continuum
+contour
+contour's
+contoured
+contouring
+contours
+contract
+contracted
+contracting
+contraction
+contraction's
+contractions
+contractive
+contractor
+contractor's
+contractors
+contracts
+contractual
+contractually
+contradict
+contradicted
+contradicting
+contradiction
+contradiction's
+contradictions
+contradictoriness
+contradictory
+contradicts
+contradistinction
+contradistinctions
+contrapositive
+contrapositives
+contraption
+contraption's
+contraptions
+contrariness
+contrary
+contrast
+contrasted
+contraster
+contrasters
+contrasting
+contrastingly
+contrastive
+contrastively
+contrasts
+contribute
+contributed
+contributer
+contributers
+contributes
+contributing
+contribution
+contributions
+contributive
+contributively
+contributor
+contributor's
+contributorily
+contributors
+contributory
+contrivance
+contrivance's
+contrivances
+contrive
+contrived
+contriver
+contrives
+contriving
+control
+control's
+controllability
+controllable
+controllably
+controlled
+controller
+controller's
+controllers
+controlling
+controls
+controversial
+controversially
+controversies
+controversy
+controversy's
+conundrum
+conundrum's
+conundrums
+convalescence
+convene
+convened
+convener
+conveners
+convenes
+convenience
+convenience's
+conveniences
+convenient
+conveniently
+convening
+convent
+convent's
+convention
+convention's
+conventional
+conventionally
+conventions
+convents
+converge
+converged
+convergence
+convergences
+convergent
+converges
+converging
+conversant
+conversantly
+conversation
+conversation's
+conversational
+conversationally
+conversations
+converse
+conversed
+conversely
+converses
+conversing
+conversion
+conversioning
+conversions
+convert
+converted
+converter
+converters
+convertibility
+convertible
+convertibleness
+converting
+converts
+convex
+convey
+conveyance
+conveyance's
+conveyanced
+conveyancer
+conveyancers
+conveyances
+conveyancing
+conveyed
+conveyer
+conveyers
+conveying
+conveys
+convict
+convicted
+convicting
+conviction
+conviction's
+convictions
+convictive
+convicts
+convince
+convinced
+convincer
+convincers
+convinces
+convincing
+convincingly
+convincingness
+convoluted
+convoy
+convoyed
+convoying
+convoys
+convulsion
+convulsion's
+convulsions
+coo
+cooing
+cook
+cook's
+cooked
+cooker
+cookers
+cookery
+cookie
+cookie's
+cookies
+cooking
+cooks
+cooky
+cool
+cooled
+cooler
+cooler's
+coolers
+coolest
+coolie
+coolie's
+coolies
+cooling
+coolings
+coolly
+coolness
+coolnesses
+cools
+coon
+coon's
+coons
+coop
+cooped
+cooper
+cooperate
+cooperated
+cooperates
+cooperating
+cooperation
+cooperations
+cooperative
+cooperatively
+cooperativeness
+cooperatives
+cooperator
+cooperator's
+cooperators
+coopered
+coopering
+coopers
+coops
+coordinate
+coordinated
+coordinately
+coordinateness
+coordinates
+coordinating
+coordination
+coordinations
+coordinative
+coordinator
+coordinator's
+coordinators
+cop
+cop's
+cope
+coped
+coper
+copes
+copied
+copier
+copiers
+copies
+coping
+copings
+copious
+copiously
+copiousness
+copper
+copper's
+coppered
+coppering
+coppers
+cops
+copse
+copses
+copy
+copying
+copyright
+copyright's
+copyrighted
+copyrighter
+copyrighters
+copyrighting
+copyrights
+coral
+cord
+corded
+corder
+cordial
+cordially
+cordialness
+cording
+cords
+core
+cored
+corer
+corers
+cores
+coring
+cork
+corked
+corker
+corkers
+corking
+corks
+cormorant
+cormorants
+corn
+corned
+corner
+cornered
+cornering
+corners
+cornerstone
+cornerstone's
+cornerstones
+cornfield
+cornfield's
+cornfields
+corning
+corns
+corollaries
+corollary
+corollary's
+coronaries
+coronary
+coronation
+coronet
+coronet's
+coroneted
+coronets
+coroutine
+coroutine's
+coroutines
+corporal
+corporal's
+corporally
+corporals
+corporate
+corporately
+corporation
+corporation's
+corporations
+corporative
+corps
+corpse
+corpse's
+corpses
+corpus
+correct
+correctable
+corrected
+correcting
+correction
+corrections
+corrective
+correctively
+correctiveness
+correctives
+correctly
+correctness
+corrector
+corrects
+correlate
+correlated
+correlates
+correlating
+correlation
+correlations
+correlative
+correlatively
+correspond
+corresponded
+correspondence
+correspondence's
+correspondences
+correspondent
+correspondent's
+correspondents
+corresponding
+correspondingly
+corresponds
+corridor
+corridor's
+corridors
+corroborate
+corroborated
+corroborates
+corroborating
+corroboration
+corroborations
+corroborative
+corroboratively
+corrosion
+corrosions
+corrupt
+corrupted
+corrupter
+corrupting
+corruption
+corruptive
+corruptively
+corruptly
+corrupts
+corset
+corsets
+cosine
+cosines
+cosmetic
+cosmetics
+cosmology
+cosmopolitan
+cost
+costed
+costing
+costive
+costively
+costiveness
+costlier
+costliness
+costly
+costs
+costume
+costumed
+costumer
+costumers
+costumes
+costuming
+cot
+cot's
+cots
+cottage
+cottager
+cottagers
+cottages
+cotton
+cottoned
+cottoning
+cottons
+cotyledon
+cotyledon's
+cotyledons
+couch
+couched
+couches
+couching
+cough
+coughed
+cougher
+coughing
+coughs
+could
+couldest
+couldn't
+council
+council's
+councillor
+councillor's
+councillors
+councils
+counsel
+counsel's
+counsels
+count
+countable
+countably
+counted
+countenance
+countenancer
+counter
+counteract
+counteracted
+counteracting
+counteractive
+counteracts
+counterclockwise
+countered
+counterexample
+counterexamples
+counterfeit
+counterfeited
+counterfeiter
+counterfeiting
+counterfeits
+countering
+countermeasure
+countermeasure's
+countermeasures
+counterpart
+counterpart's
+counterparts
+counterpoint
+counterpointing
+counterproductive
+counterrevolution
+counters
+countess
+counties
+counting
+countless
+countlessly
+countries
+country
+country's
+countryman
+countryside
+counts
+county
+county's
+couple
+couple's
+coupled
+coupler
+couplers
+couples
+coupling
+couplings
+coupon
+coupon's
+coupons
+courage
+courageous
+courageously
+courageousness
+courier
+courier's
+couriers
+course
+coursed
+courser
+courses
+coursing
+court
+courted
+courteous
+courteously
+courteousness
+courter
+courters
+courtesies
+courtesy
+courtesy's
+courthouse
+courthouse's
+courthouses
+courtier
+courtier's
+courtiers
+courting
+courtliness
+courtly
+courtroom
+courtroom's
+courtrooms
+courts
+courtship
+courtyard
+courtyard's
+courtyards
+cousin
+cousin's
+cousins
+cove
+covenant
+covenant's
+covenanted
+covenanter
+covenanting
+covenants
+cover
+coverable
+coverage
+covered
+coverer
+covering
+coverings
+coverlet
+coverlet's
+coverlets
+covers
+covert
+covertly
+covertness
+coves
+covet
+coveted
+coveter
+coveting
+covetingly
+covetous
+covetously
+covetousness
+covets
+coving
+cow
+coward
+cowardice
+cowardliness
+cowardly
+cowards
+cowboy
+cowboy's
+cowboys
+cowed
+cowedly
+cower
+cowered
+cowerer
+cowerers
+cowering
+coweringly
+cowers
+cowgirl
+cowgirl's
+cowgirls
+cowing
+cowl
+cowled
+cowling
+cowls
+cows
+cowslip
+cowslip's
+cowslips
+coyote
+coyote's
+coyotes
+cozier
+cozies
+coziness
+cozy
+crab
+crab's
+crabs
+crack
+cracked
+cracker
+crackers
+cracking
+crackle
+crackled
+crackles
+crackling
+crackly
+cracks
+cradle
+cradled
+cradler
+cradles
+cradling
+craft
+crafted
+crafter
+craftier
+craftiness
+crafting
+crafts
+craftsman
+crafty
+crag
+crag's
+crags
+cram
+cramp
+cramp's
+cramped
+cramper
+cramps
+crams
+cranberries
+cranberry
+cranberry's
+crane
+crane's
+craned
+cranes
+craning
+crank
+cranked
+crankier
+crankiest
+crankily
+crankiness
+cranking
+cranks
+cranky
+crap
+craping
+craps
+crash
+crashed
+crasher
+crashers
+crashes
+crashing
+crate
+crater
+cratered
+craters
+crates
+crating
+cravat
+cravat's
+cravats
+crave
+craved
+craven
+cravenly
+cravenness
+craver
+craves
+craving
+crawl
+crawled
+crawler
+crawlers
+crawling
+crawls
+craze
+crazed
+crazes
+crazier
+craziest
+crazily
+craziness
+crazing
+crazy
+creak
+creaked
+creaking
+creaks
+cream
+creamed
+creamer
+creamers
+creaminess
+creaming
+creams
+creamy
+crease
+creased
+creaser
+creases
+creasing
+create
+created
+creates
+creating
+creation
+creations
+creative
+creatively
+creativeness
+creativity
+creator
+creator's
+creators
+creature
+creature's
+creatureliness
+creaturely
+creatures
+credence
+credibility
+credible
+credibly
+credit
+creditable
+creditableness
+creditably
+credited
+crediting
+creditor
+creditor's
+creditors
+credits
+credulity
+credulous
+credulously
+credulousness
+creed
+creed's
+creeds
+creek
+creek's
+creeks
+creep
+creeper
+creepers
+creeping
+creeps
+cremate
+cremated
+cremates
+cremating
+cremation
+cremations
+crepe
+crept
+crescent
+crescent's
+crescents
+crest
+crested
+cresting
+crests
+cretin
+cretins
+crevice
+crevice's
+crevices
+crew
+crewed
+crewing
+crews
+crib
+crib's
+cribs
+cricket
+cricket's
+cricketer
+cricketing
+crickets
+cried
+crier
+criers
+cries
+crime
+crime's
+crimes
+criminal
+criminally
+criminals
+crimson
+crimsoning
+cringe
+cringed
+cringer
+cringes
+cringing
+cripple
+crippled
+crippler
+cripples
+crippling
+crises
+crisis
+crisp
+crisper
+crisply
+crispness
+crisps
+criteria
+criterion
+critic
+critic's
+critical
+critically
+criticalness
+criticism
+criticism's
+criticisms
+critics
+critique
+critiqued
+critiques
+critiquing
+critter
+critter's
+critters
+croak
+croaked
+croaker
+croakers
+croaking
+croaks
+crochet
+crocheted
+crocheter
+crocheting
+crochets
+crook
+crooked
+crookedly
+crookedness
+crooks
+crop
+crop's
+cropped
+cropper
+cropper's
+croppers
+cropping
+crops
+cross
+crossable
+crossbar
+crossbar's
+crossbars
+crossed
+crosser
+crossers
+crosses
+crossing
+crossings
+crossly
+crossover
+crossover's
+crossovers
+crossword
+crossword's
+crosswords
+crouch
+crouched
+crouches
+crouching
+crow
+crowd
+crowded
+crowdedness
+crowder
+crowding
+crowds
+crowed
+crowing
+crown
+crowned
+crowner
+crowning
+crowns
+crows
+crucial
+crucially
+crucification
+crucified
+crucifies
+crucify
+crucifying
+crude
+crudely
+crudeness
+cruder
+crudest
+cruel
+crueler
+cruelest
+cruelly
+cruelness
+cruelty
+cruise
+cruised
+cruiser
+cruisers
+cruises
+cruising
+crumb
+crumble
+crumbled
+crumbles
+crumblier
+crumbliness
+crumbling
+crumblings
+crumbly
+crumbs
+crumple
+crumpled
+crumples
+crumpling
+crunch
+crunched
+cruncher
+crunchers
+crunches
+crunchier
+crunchiest
+crunchiness
+crunching
+crunchy
+crusade
+crusaded
+crusader
+crusaders
+crusades
+crusading
+crush
+crushable
+crushed
+crusher
+crushers
+crushes
+crushing
+crushingly
+crust
+crust's
+crustacean
+crustacean's
+crustaceans
+crusted
+crusting
+crusts
+crutch
+crutch's
+crutched
+crutches
+crux
+crux's
+cruxes
+cry
+crying
+cryptanalysis
+cryptic
+cryptographic
+cryptography
+cryptology
+crystal
+crystal's
+crystalline
+crystals
+cub
+cub's
+cube
+cubed
+cuber
+cubes
+cubic
+cubicly
+cubics
+cubing
+cubs
+cuckoo
+cuckoo's
+cuckoos
+cucumber
+cucumber's
+cucumbers
+cuddle
+cuddled
+cuddles
+cuddling
+cudgel
+cudgel's
+cudgels
+cue
+cued
+cues
+cuff
+cuff's
+cuffed
+cuffing
+cuffs
+cuing
+cull
+culled
+culler
+culling
+culls
+culminate
+culminated
+culminates
+culminating
+culmination
+culpability
+culprit
+culprit's
+culprits
+cult
+cult's
+cultivate
+cultivated
+cultivates
+cultivating
+cultivation
+cultivations
+cultivator
+cultivator's
+cultivators
+cults
+cultural
+culturally
+culture
+cultured
+cultures
+culturing
+cumbersome
+cumbersomely
+cumbersomeness
+cumulative
+cumulatively
+cunning
+cunningly
+cunningness
+cup
+cup's
+cupboard
+cupboard's
+cupboards
+cupful
+cupfuls
+cupped
+cupping
+cups
+cur
+curable
+curableness
+curably
+curb
+curbed
+curbing
+curbs
+curds
+cure
+cured
+curer
+cures
+curfew
+curfew's
+curfews
+curing
+curiosities
+curiosity
+curiosity's
+curious
+curiouser
+curiousest
+curiously
+curiousness
+curl
+curled
+curler
+curlers
+curlier
+curliness
+curling
+curls
+curly
+currant
+currant's
+currants
+currencies
+currency
+currency's
+current
+currently
+currentness
+currents
+curricular
+curriculum
+curriculum's
+curriculums
+curried
+currier
+curries
+curry
+currying
+curs
+curse
+cursed
+cursedly
+cursedness
+curses
+cursing
+cursive
+cursively
+cursiveness
+cursor
+cursor's
+cursorily
+cursoriness
+cursors
+cursory
+curt
+curtail
+curtailed
+curtailer
+curtailing
+curtails
+curtain
+curtained
+curtaining
+curtains
+curtly
+curtness
+curtsied
+curtsies
+curtsy
+curtsy's
+curtsying
+curvature
+curvatures
+curve
+curved
+curves
+curving
+cushion
+cushioned
+cushioning
+cushions
+cusp
+cusp's
+cusps
+cuss
+cussed
+cussedly
+cussedness
+cusser
+cusses
+custard
+custodian
+custodian's
+custodians
+custodies
+custody
+custom
+customarily
+customariness
+customary
+customer
+customer's
+customers
+customs
+cut
+cut's
+cute
+cutely
+cuteness
+cuter
+cutes
+cutest
+cutoff
+cutoffs
+cuts
+cutter
+cutter's
+cutters
+cutting
+cuttingly
+cuttings
+cybernetic
+cybernetics
+cycle
+cycled
+cycler
+cycles
+cyclic
+cyclically
+cyclicly
+cycling
+cycloid
+cycloid's
+cycloidal
+cycloids
+cyclone
+cyclone's
+cyclones
+cylinder
+cylinder's
+cylindered
+cylindering
+cylinders
+cylindrical
+cylindrically
+cymbal
+cymbal's
+cymbals
+cynical
+cynically
+cypress
+cyst
+cysts
+cytology
+czar
+dabble
+dabbled
+dabbler
+dabblers
+dabbles
+dabbling
+dad
+dad's
+daddies
+daddy
+dads
+daemon
+daemon's
+daemons
+daffodil
+daffodil's
+daffodils
+dagger
+daggers
+dailies
+daily
+daintier
+dainties
+daintily
+daintiness
+dainty
+dairies
+dairy
+dairying
+daisies
+daisy
+daisy's
+dale
+dale's
+dales
+daleth
+dam
+dam's
+damage
+damaged
+damager
+damagers
+damages
+damaging
+damagingly
+damask
+dame
+damed
+damn
+damnation
+damned
+damneder
+damnedest
+damning
+damningly
+damns
+damp
+damped
+dampen
+dampened
+dampener
+dampening
+dampens
+damper
+dampers
+damping
+damply
+dampness
+damps
+dams
+damsel
+damsel's
+damsels
+dance
+danced
+dancer
+dancers
+dances
+dancing
+dandelion
+dandelion's
+dandelions
+dandier
+dandies
+dandy
+danger
+danger's
+dangerous
+dangerously
+dangerousness
+dangers
+dangle
+dangled
+dangler
+dangler's
+danglers
+dangles
+dangling
+danglingly
+dare
+dared
+darer
+darers
+dares
+daring
+daringly
+daringness
+dark
+darken
+darkened
+darkener
+darkeners
+darkening
+darker
+darkest
+darkly
+darkness
+darks
+darling
+darling's
+darlingly
+darlingness
+darlings
+darn
+darned
+darner
+darning
+darns
+dart
+darted
+darter
+darting
+darts
+dash
+dashed
+dasher
+dashers
+dashes
+dashing
+dashingly
+data
+database
+database's
+databases
+date
+dated
+datedly
+datedness
+dater
+dates
+dating
+dative
+datum
+datums
+daughter
+daughter's
+daughterly
+daughters
+daunt
+daunted
+daunting
+dauntless
+dauntlessly
+dauntlessness
+daunts
+dawn
+dawned
+dawning
+dawns
+day
+day's
+daybreak
+daybreaks
+daydream
+daydreamed
+daydreamer
+daydreamers
+daydreaming
+daydreams
+daylight
+daylight's
+daylights
+days
+daytime
+daytimes
+daze
+dazed
+dazedness
+dazes
+dazing
+dazzle
+dazzled
+dazzler
+dazzlers
+dazzles
+dazzling
+dazzlingly
+deacon
+deacon's
+deacons
+dead
+deaden
+deadened
+deadener
+deadening
+deadeningly
+deadens
+deadlier
+deadliest
+deadline
+deadline's
+deadlines
+deadliness
+deadlock
+deadlocked
+deadlocking
+deadlocks
+deadly
+deadness
+deaf
+deafen
+deafened
+deafening
+deafeningly
+deafens
+deafer
+deafest
+deafly
+deafness
+deal
+dealer
+dealers
+dealing
+dealings
+deallocate
+deallocated
+deallocates
+deallocating
+deallocation
+deallocation's
+deallocations
+deallocator
+deals
+dealt
+dean
+dean's
+deans
+dear
+dearer
+dearest
+dearly
+dearness
+dears
+dearth
+dearths
+death
+deathly
+deaths
+debatable
+debate
+debated
+debater
+debaters
+debates
+debating
+debilitate
+debilitated
+debilitates
+debilitating
+debilitation
+debris
+debt
+debt's
+debtor
+debtors
+debts
+debug
+debugged
+debugger
+debugger's
+debuggers
+debugging
+debugs
+decade
+decade's
+decadence
+decadent
+decadently
+decades
+decay
+decayed
+decayer
+decaying
+decays
+decease
+deceased
+deceases
+deceasing
+deceit
+deceitful
+deceitfully
+deceitfulness
+deceive
+deceived
+deceiver
+deceivers
+deceives
+deceiving
+deceivingly
+decelerate
+decelerated
+decelerates
+decelerating
+deceleration
+decelerations
+decencies
+decency
+decency's
+decent
+decently
+deception
+deception's
+deceptions
+deceptive
+deceptively
+deceptiveness
+decidability
+decidable
+decide
+decided
+decidedly
+decidedness
+decider
+decides
+deciding
+decimal
+decimally
+decimals
+decimate
+decimated
+decimates
+decimating
+decimation
+decipher
+deciphered
+decipherer
+decipherers
+deciphering
+deciphers
+decision
+decision's
+decisions
+decisive
+decisively
+decisiveness
+deck
+decked
+decker
+decking
+deckings
+decks
+declaration
+declaration's
+declarations
+declarative
+declaratively
+declaratives
+declare
+declared
+declarer
+declarers
+declares
+declaring
+declination
+declination's
+declinations
+decline
+declined
+decliner
+decliners
+declines
+declining
+decode
+decoded
+decoder
+decoders
+decodes
+decoding
+decodings
+decompile
+decompiled
+decompiler
+decompilers
+decompiles
+decompiling
+decomposability
+decomposable
+decompose
+decomposed
+decomposer
+decomposes
+decomposing
+decomposition
+decomposition's
+decompositions
+decompression
+decorate
+decorated
+decorates
+decorating
+decoration
+decorations
+decorative
+decoratively
+decorativeness
+decorum
+decorums
+decouple
+decoupled
+decoupler
+decouples
+decoupling
+decoy
+decoy's
+decoys
+decrease
+decreased
+decreases
+decreasing
+decreasingly
+decree
+decreed
+decreeing
+decreer
+decrees
+decrement
+decremented
+decrementing
+decrements
+dedicate
+dedicated
+dedicatedly
+dedicates
+dedicating
+dedication
+dedications
+dedicative
+deduce
+deduced
+deducer
+deduces
+deducible
+deducing
+deduct
+deducted
+deducting
+deduction
+deduction's
+deductions
+deductive
+deductively
+deducts
+deed
+deeded
+deeding
+deeds
+deem
+deemed
+deeming
+deems
+deep
+deepen
+deepened
+deepening
+deepens
+deeper
+deepest
+deeply
+deepness
+deeps
+deer
+deers
+default
+defaulted
+defaulter
+defaulting
+defaults
+defeat
+defeated
+defeating
+defeatism
+defeatist
+defeatists
+defeats
+defect
+defected
+defecting
+defection
+defection's
+defections
+defective
+defectively
+defectiveness
+defectives
+defects
+defend
+defendant
+defendant's
+defendants
+defended
+defender
+defenders
+defending
+defends
+defenestrate
+defenestrated
+defenestrates
+defenestrating
+defenestration
+defenestrations
+defensive
+defensively
+defensiveness
+defer
+deference
+deferment
+deferment's
+deferments
+deferrable
+deferred
+deferrer
+deferrer's
+deferrers
+deferring
+defers
+defiance
+defiances
+defiant
+defiantly
+deficiencies
+deficiency
+deficient
+deficiently
+deficit
+deficit's
+deficits
+defied
+defier
+defies
+defile
+defiled
+defiler
+defiles
+defiling
+definable
+define
+defined
+definer
+definers
+defines
+defining
+definite
+definitely
+definiteness
+definition
+definition's
+definitional
+definitions
+definitive
+definitively
+definitiveness
+deformation
+deformation's
+deformations
+deformed
+deformities
+deformity
+deformity's
+deftly
+defy
+defying
+defyingly
+degenerate
+degenerated
+degenerately
+degenerateness
+degenerates
+degenerating
+degeneration
+degenerative
+degradable
+degradation
+degradation's
+degradations
+degrade
+degraded
+degradedly
+degradedness
+degrader
+degrades
+degrading
+degradingly
+degree
+degree's
+degreed
+degrees
+deign
+deigned
+deigning
+deigns
+deities
+deity
+deity's
+dejected
+dejectedly
+dejectedness
+delay
+delayed
+delayer
+delayers
+delaying
+delays
+delegate
+delegated
+delegates
+delegating
+delegation
+delegations
+delete
+deleted
+deleter
+deletes
+deleting
+deletion
+deletions
+deliberate
+deliberated
+deliberately
+deliberateness
+deliberates
+deliberating
+deliberation
+deliberations
+deliberative
+deliberatively
+deliberativeness
+deliberator
+deliberator's
+deliberators
+delicacies
+delicacy
+delicacy's
+delicate
+delicately
+delicateness
+delicates
+delicious
+deliciouses
+deliciously
+deliciousness
+delight
+delighted
+delightedly
+delightedness
+delighter
+delightful
+delightfully
+delightfulness
+delighting
+delights
+delimit
+delimited
+delimiter
+delimiters
+delimiting
+delimits
+delineate
+delineated
+delineates
+delineating
+delineation
+delineations
+delineative
+delinquency
+delinquent
+delinquent's
+delinquently
+delinquents
+delirious
+deliriously
+deliriousness
+deliver
+deliverable
+deliverables
+deliverance
+delivered
+deliverer
+deliverers
+deliveries
+delivering
+delivers
+delivery
+delivery's
+dell
+dell's
+dells
+delta
+delta's
+deltas
+delude
+deluded
+deluder
+deludes
+deluding
+deludingly
+deluge
+deluged
+deluges
+deluging
+delusion
+delusion's
+delusions
+delve
+delved
+delver
+delves
+delving
+demand
+demanded
+demander
+demanding
+demandingly
+demands
+demise
+demised
+demises
+demising
+demo
+democracies
+democracy
+democracy's
+democrat
+democrat's
+democratic
+democratically
+democrats
+demodulate
+demodulated
+demodulates
+demodulating
+demodulation
+demodulation's
+demodulations
+demodulator
+demodulator's
+demodulators
+demographic
+demographics
+demolish
+demolished
+demolisher
+demolishes
+demolishing
+demolition
+demolitions
+demon
+demon's
+demoness
+demons
+demonstrable
+demonstrableness
+demonstrate
+demonstrated
+demonstrates
+demonstrating
+demonstration
+demonstrations
+demonstrative
+demonstratively
+demonstrativeness
+demonstrator
+demonstrator's
+demonstrators
+demos
+demur
+demurs
+den
+den's
+deniable
+denial
+denial's
+denials
+denied
+denier
+denies
+denigrate
+denigrated
+denigrates
+denigrating
+denigration
+denigrative
+denizen
+denizens
+denomination
+denomination's
+denominations
+denominator
+denominator's
+denominators
+denotable
+denotation
+denotation's
+denotational
+denotationally
+denotations
+denotative
+denote
+denoted
+denotes
+denoting
+denounce
+denounced
+denouncer
+denouncers
+denounces
+denouncing
+dens
+dense
+densely
+denseness
+denser
+densest
+densities
+density
+density's
+dent
+dental
+dentally
+dentals
+dented
+denting
+dentist
+dentist's
+dentists
+dents
+deny
+denying
+denyingly
+depart
+departed
+departing
+department
+department's
+departmental
+departmentally
+departments
+departs
+departure
+departure's
+departures
+depend
+dependability
+dependable
+dependableness
+dependably
+depended
+dependence
+dependences
+dependencies
+dependency
+dependent
+dependently
+dependents
+depending
+depends
+depict
+depicted
+depicter
+depicting
+depicts
+deplete
+depleted
+depletes
+depleting
+depletion
+depletions
+depletive
+deplorable
+deplorableness
+deplore
+deplored
+deplorer
+deplores
+deploring
+deploringly
+deploy
+deployed
+deploying
+deployment
+deployment's
+deployments
+deploys
+deport
+deportation
+deported
+deportee
+deportee's
+deportees
+deporting
+deportment
+deports
+depose
+deposed
+deposes
+deposing
+deposit
+deposited
+depositing
+deposition
+deposition's
+depositions
+depositor
+depositor's
+depositors
+deposits
+depot
+depot's
+depots
+deprave
+depraved
+depravedly
+depravedness
+depraver
+depraves
+depraving
+depreciate
+depreciated
+depreciates
+depreciating
+depreciatingly
+depreciation
+depreciations
+depreciative
+depreciatively
+depress
+depressed
+depresses
+depressing
+depressingly
+depression
+depression's
+depressions
+depressive
+depressively
+deprivation
+deprivation's
+deprivations
+deprive
+deprived
+deprives
+depriving
+depth
+depths
+deputies
+deputy
+deputy's
+dequeue
+dequeued
+dequeues
+dequeuing
+derail
+derailed
+derailing
+derails
+derbies
+derby
+dereference
+dereferenced
+dereferencer
+dereferencers
+dereferences
+dereferencing
+deride
+derided
+derider
+derides
+deriding
+deridingly
+derision
+derivable
+derivation
+derivation's
+derivations
+derivative
+derivative's
+derivatively
+derivativeness
+derivatives
+derive
+derived
+deriver
+derives
+deriving
+descend
+descendant
+descendant's
+descendants
+descended
+descender
+descenders
+descending
+descends
+descent
+descent's
+descents
+describable
+describe
+described
+describer
+describers
+describes
+describing
+descried
+description
+description's
+descriptions
+descriptive
+descriptively
+descriptiveness
+descriptives
+descriptor
+descriptor's
+descriptors
+descry
+descrying
+desert
+deserted
+deserter
+deserters
+deserting
+desertion
+desertions
+deserts
+deserve
+deserved
+deservedly
+deservedness
+deserver
+deserves
+deserving
+deservingly
+deservings
+desiderata
+desideratum
+design
+designate
+designated
+designates
+designating
+designation
+designations
+designative
+designator
+designator's
+designators
+designed
+designedly
+designer
+designer's
+designers
+designing
+designs
+desirability
+desirable
+desirableness
+desirably
+desire
+desired
+desirer
+desires
+desiring
+desirous
+desirously
+desirousness
+desk
+desk's
+desks
+desktop
+desolate
+desolated
+desolately
+desolateness
+desolater
+desolates
+desolating
+desolatingly
+desolation
+desolations
+despair
+despaired
+despairer
+despairing
+despairingly
+despairs
+despatch
+despatched
+desperate
+desperately
+desperateness
+desperation
+despise
+despised
+despiser
+despises
+despising
+despite
+despited
+despot
+despot's
+despotic
+despots
+dessert
+dessert's
+desserts
+destination
+destination's
+destinations
+destine
+destined
+destinies
+destining
+destiny
+destiny's
+destitute
+destituteness
+destitution
+destroy
+destroyed
+destroyer
+destroyer's
+destroyers
+destroying
+destroys
+destruction
+destruction's
+destructions
+destructive
+destructively
+destructiveness
+detach
+detached
+detachedly
+detachedness
+detacher
+detaches
+detaching
+detachment
+detachment's
+detachments
+detail
+detailed
+detailedly
+detailedness
+detailer
+detailing
+details
+detain
+detained
+detainer
+detaining
+detains
+detect
+detectable
+detectably
+detected
+detecting
+detection
+detection's
+detections
+detective
+detectives
+detector
+detector's
+detectors
+detects
+detention
+deteriorate
+deteriorated
+deteriorates
+deteriorating
+deterioration
+deteriorative
+determinable
+determinableness
+determinacy
+determinant
+determinant's
+determinants
+determinate
+determinately
+determinateness
+determination
+determinations
+determinative
+determinatively
+determinativeness
+determine
+determined
+determinedly
+determinedness
+determiner
+determiners
+determines
+determining
+determinism
+deterministic
+deterministically
+detest
+detestable
+detestableness
+detested
+detesting
+detests
+detonate
+detonated
+detonates
+detonating
+detonation
+detonative
+detract
+detracted
+detracting
+detractive
+detractively
+detractor
+detractor's
+detractors
+detracts
+detriment
+detriments
+devastate
+devastated
+devastates
+devastating
+devastatingly
+devastation
+devastations
+devastative
+develop
+developed
+developer
+developer's
+developers
+developing
+development
+development's
+developmental
+developmentally
+developments
+develops
+deviant
+deviant's
+deviantly
+deviants
+deviate
+deviated
+deviates
+deviating
+deviation
+deviations
+device
+device's
+devices
+devil
+devil's
+devilish
+devilishly
+devilishness
+devils
+devise
+devised
+deviser
+devises
+devising
+devisings
+devision
+devisions
+devoid
+devote
+devoted
+devotedly
+devotee
+devotee's
+devotees
+devotes
+devoting
+devotion
+devotions
+devour
+devoured
+devourer
+devouring
+devours
+devout
+devoutly
+devoutness
+dew
+dewdrop
+dewdrop's
+dewdrops
+dewed
+dewier
+dewiness
+dewing
+dews
+dewy
+dexterity
+diabetes
+diadem
+diagnosable
+diagnose
+diagnosed
+diagnoses
+diagnosing
+diagnosis
+diagnostic
+diagnostic's
+diagnostics
+diagonal
+diagonally
+diagonals
+diagram
+diagram's
+diagramed
+diagraming
+diagrammable
+diagrammatic
+diagrammatically
+diagrammed
+diagrammer
+diagrammer's
+diagrammers
+diagramming
+diagrams
+dial
+dial's
+dialect
+dialect's
+dialects
+dialog
+dialog's
+dialogs
+dialogue
+dialogue's
+dialogues
+dials
+diameter
+diameter's
+diameters
+diametrically
+diamond
+diamond's
+diamonds
+diaper
+diaper's
+diapered
+diapering
+diapers
+diaphragm
+diaphragm's
+diaphragms
+diaries
+diary
+diary's
+diatribe
+diatribe's
+diatribes
+dice
+dicer
+dices
+dichotomies
+dichotomy
+dicing
+dickens
+dicky
+dictate
+dictated
+dictates
+dictating
+dictation
+dictations
+dictator
+dictator's
+dictators
+dictatorship
+dictatorships
+diction
+dictionaries
+dictionary
+dictionary's
+dictions
+dictum
+dictum's
+dictums
+did
+didn't
+die
+died
+dielectric
+dielectric's
+dielectrics
+dies
+diet
+dieter
+dieters
+dietitian
+dietitian's
+dietitians
+diets
+differ
+differed
+difference
+difference's
+differenced
+differences
+differencing
+different
+differential
+differential's
+differentially
+differentials
+differentiate
+differentiated
+differentiates
+differentiating
+differentiation
+differentiations
+differentiators
+differently
+differentness
+differer
+differers
+differing
+differs
+difficult
+difficulties
+difficultly
+difficulty
+difficulty's
+diffuse
+diffused
+diffusely
+diffuseness
+diffuser
+diffusers
+diffuses
+diffusing
+diffusion
+diffusions
+diffusive
+diffusively
+diffusiveness
+dig
+digest
+digested
+digester
+digestible
+digesting
+digestion
+digestions
+digestive
+digestively
+digestiveness
+digests
+digger
+digger's
+diggers
+digging
+diggings
+digit
+digit's
+digital
+digitally
+digits
+dignified
+dignify
+dignities
+dignity
+digress
+digressed
+digresses
+digressing
+digression
+digression's
+digressions
+digressive
+digressively
+digressiveness
+digs
+dike
+dike's
+diker
+dikes
+diking
+dilate
+dilated
+dilatedly
+dilatedness
+dilates
+dilating
+dilation
+dilative
+dilemma
+dilemma's
+dilemmas
+diligence
+diligences
+diligent
+diligently
+diligentness
+dilute
+diluted
+dilutely
+diluteness
+diluter
+dilutes
+diluting
+dilution
+dilutions
+dilutive
+dim
+dime
+dime's
+dimension
+dimensional
+dimensionality
+dimensionally
+dimensioned
+dimensioning
+dimensions
+dimer
+dimers
+dimes
+diminish
+diminished
+diminishes
+diminishing
+diminution
+diminutive
+diminutively
+diminutiveness
+dimly
+dimmed
+dimmer
+dimmer's
+dimmers
+dimmest
+dimming
+dimness
+dimple
+dimpled
+dimples
+dimpling
+dims
+din
+dine
+dined
+diner
+diners
+dines
+dingier
+dinginess
+dingy
+dining
+dinner
+dinner's
+dinners
+dint
+diode
+diode's
+diodes
+dioxide
+dioxides
+dip
+diphtheria
+diploma
+diploma's
+diplomacy
+diplomas
+diplomat
+diplomat's
+diplomatic
+diplomatics
+diplomats
+dipped
+dipper
+dipper's
+dippers
+dipping
+dippings
+dips
+dire
+direct
+directed
+directing
+direction
+direction's
+directional
+directionality
+directionally
+directions
+directive
+directive's
+directives
+directly
+directness
+director
+director's
+directories
+directors
+directory
+directory's
+directs
+direly
+direness
+direr
+direst
+dirge
+dirge's
+dirged
+dirges
+dirging
+dirt
+dirt's
+dirtied
+dirtier
+dirties
+dirtiest
+dirtily
+dirtiness
+dirts
+dirty
+dirtying
+disabilities
+disability
+disability's
+disable
+disabled
+disabler
+disablers
+disables
+disabling
+disabuse
+disadvantage
+disadvantage's
+disadvantaged
+disadvantagedness
+disadvantages
+disadvantaging
+disagree
+disagreeable
+disagreeableness
+disagreed
+disagreeing
+disagreement
+disagreement's
+disagreements
+disagrees
+disallow
+disallowed
+disallowing
+disallows
+disambiguate
+disambiguated
+disambiguates
+disambiguating
+disambiguation
+disambiguations
+disappear
+disappearance
+disappearance's
+disappearances
+disappeared
+disappearing
+disappears
+disappoint
+disappointed
+disappointedly
+disappointing
+disappointingly
+disappointment
+disappointment's
+disappointments
+disappoints
+disapproval
+disapprove
+disapproved
+disapprover
+disapproves
+disapproving
+disapprovingly
+disarm
+disarmament
+disarmed
+disarmer
+disarmers
+disarming
+disarmingly
+disarms
+disassemble
+disassembled
+disassembler
+disassembler's
+disassemblers
+disassembles
+disassembling
+disaster
+disaster's
+disasters
+disastrous
+disastrously
+disband
+disbanded
+disbanding
+disbands
+disbelieve
+disbelieved
+disbeliever
+disbelievers
+disbelieves
+disbelieving
+disburse
+disbursed
+disbursement
+disbursement's
+disbursements
+disburser
+disburses
+disbursing
+disc
+disc's
+discard
+discarded
+discarder
+discarding
+discards
+discern
+discerned
+discerner
+discernibility
+discernible
+discernibly
+discerning
+discerningly
+discernment
+discerns
+discharge
+discharged
+discharger
+discharges
+discharging
+disciple
+disciple's
+disciples
+disciplinary
+discipline
+disciplined
+discipliner
+disciplines
+disciplining
+disclaim
+disclaimed
+disclaimer
+disclaimers
+disclaiming
+disclaims
+disclose
+disclosed
+discloser
+discloses
+disclosing
+disclosure
+disclosure's
+disclosures
+discomfort
+discomforting
+discomfortingly
+disconcert
+disconcerted
+disconcerting
+disconcertingly
+disconcerts
+disconnect
+disconnected
+disconnectedly
+disconnectedness
+disconnecter
+disconnecting
+disconnection
+disconnections
+disconnects
+discontent
+discontented
+discontentedly
+discontinuance
+discontinue
+discontinued
+discontinues
+discontinuing
+discontinuities
+discontinuity
+discontinuity's
+discontinuous
+discontinuously
+discord
+discords
+discount
+discounted
+discounter
+discounting
+discounts
+discourage
+discouraged
+discouragement
+discourager
+discourages
+discouraging
+discouragingly
+discourse
+discourse's
+discoursed
+discourser
+discourses
+discoursing
+discover
+discovered
+discoverer
+discoverers
+discoveries
+discovering
+discovers
+discovery
+discovery's
+discredit
+discredited
+discrediting
+discredits
+discreet
+discreetly
+discreetness
+discrepancies
+discrepancy
+discrepancy's
+discrete
+discretely
+discreteness
+discretion
+discretions
+discriminate
+discriminated
+discriminates
+discriminating
+discriminatingly
+discrimination
+discriminations
+discriminative
+discriminatory
+discs
+discuss
+discussed
+discusser
+discusses
+discussing
+discussion
+discussion's
+discussions
+disdain
+disdaining
+disdains
+disease
+diseased
+diseases
+diseasing
+disenfranchise
+disenfranchised
+disenfranchisement
+disenfranchisement's
+disenfranchisements
+disenfranchiser
+disenfranchises
+disenfranchising
+disengage
+disengaged
+disengages
+disengaging
+disentangle
+disentangled
+disentangler
+disentangles
+disentangling
+disfigure
+disfigured
+disfigures
+disfiguring
+disgorge
+disgorger
+disgrace
+disgraced
+disgraceful
+disgracefully
+disgracefulness
+disgracer
+disgraces
+disgracing
+disgruntled
+disguise
+disguised
+disguisedly
+disguiser
+disguises
+disguising
+disgust
+disgusted
+disgustedly
+disgusting
+disgustingly
+disgusts
+dish
+dishearten
+disheartening
+dishearteningly
+dished
+dishes
+dishing
+dishonest
+dishonestly
+dishwasher
+dishwashers
+disillusion
+disillusioned
+disillusioning
+disillusionment
+disillusionment's
+disillusionments
+disinterested
+disinterestedly
+disinterestedness
+disjoint
+disjointed
+disjointedly
+disjointedness
+disjointly
+disjointness
+disjunct
+disjunction
+disjunctions
+disjunctive
+disjunctively
+disjuncts
+disk
+disk's
+disked
+disking
+disks
+dislike
+disliked
+disliker
+dislikes
+disliking
+dislocate
+dislocated
+dislocates
+dislocating
+dislocation
+dislocations
+dislodge
+dislodged
+dislodges
+dislodging
+dismal
+dismally
+dismalness
+dismay
+dismayed
+dismaying
+dismayingly
+dismays
+dismiss
+dismissal
+dismissal's
+dismissals
+dismissed
+dismisser
+dismissers
+dismisses
+dismissing
+dismissive
+dismount
+dismounted
+dismounting
+dismounts
+disobedience
+disobey
+disobeyed
+disobeyer
+disobeying
+disobeys
+disorder
+disordered
+disorderedly
+disorderedness
+disorderliness
+disorderly
+disorders
+disown
+disowned
+disowning
+disowns
+disparate
+disparately
+disparateness
+disparities
+disparity
+disparity's
+dispatch
+dispatched
+dispatcher
+dispatchers
+dispatches
+dispatching
+dispel
+dispelled
+dispelling
+dispels
+dispensation
+dispense
+dispensed
+dispenser
+dispensers
+dispenses
+dispensing
+disperse
+dispersed
+dispersedly
+disperser
+disperses
+dispersing
+dispersion
+dispersions
+dispersive
+dispersively
+dispersiveness
+displace
+displaced
+displacement
+displacement's
+displacements
+displacer
+displaces
+displacing
+display
+displayed
+displayer
+displaying
+displays
+displease
+displeased
+displeasedly
+displeases
+displeasing
+displeasure
+disposable
+disposal
+disposal's
+disposals
+dispose
+disposed
+disposer
+disposes
+disposing
+disposition
+disposition's
+dispositions
+disprove
+disproved
+disproves
+disproving
+dispute
+disputed
+disputer
+disputers
+disputes
+disputing
+disqualification
+disqualified
+disqualifies
+disqualify
+disqualifying
+disquiet
+disquieting
+disquietingly
+disquietly
+disregard
+disregarded
+disregarding
+disregards
+disrupt
+disrupted
+disrupter
+disrupting
+disruption
+disruption's
+disruptions
+disruptive
+disruptively
+disruptiveness
+disrupts
+dissatisfaction
+dissatisfaction's
+dissatisfactions
+dissatisfied
+disseminate
+disseminated
+disseminates
+disseminating
+dissemination
+dissension
+dissension's
+dissensions
+dissent
+dissented
+dissenter
+dissenters
+dissenting
+dissents
+dissertation
+dissertation's
+dissertations
+disservice
+dissident
+dissident's
+dissidents
+dissimilar
+dissimilarities
+dissimilarity
+dissimilarity's
+dissimilarly
+dissipate
+dissipated
+dissipatedly
+dissipatedness
+dissipater
+dissipates
+dissipating
+dissipation
+dissipations
+dissipative
+dissociate
+dissociated
+dissociates
+dissociating
+dissociation
+dissociative
+dissolution
+dissolution's
+dissolutions
+dissolve
+dissolved
+dissolver
+dissolves
+dissolving
+dissonance
+dissonance's
+dissonances
+distal
+distally
+distance
+distanced
+distances
+distancing
+distant
+distantly
+distantness
+distaste
+distasteful
+distastefully
+distastefulness
+distastes
+distemper
+distill
+distillation
+distilled
+distiller
+distillers
+distilling
+distills
+distinct
+distinction
+distinction's
+distinctions
+distinctive
+distinctively
+distinctiveness
+distinctly
+distinctness
+distinguish
+distinguishable
+distinguished
+distinguisher
+distinguishes
+distinguishing
+distort
+distorted
+distorter
+distorting
+distortion
+distortion's
+distortions
+distorts
+distract
+distracted
+distractedly
+distracting
+distractingly
+distraction
+distraction's
+distractions
+distractive
+distracts
+distraught
+distraughtly
+distress
+distressed
+distresses
+distressing
+distressingly
+distribute
+distributed
+distributer
+distributes
+distributing
+distribution
+distribution's
+distributional
+distributions
+distributive
+distributively
+distributiveness
+distributivity
+distributor
+distributor's
+distributors
+district
+district's
+districted
+districting
+districts
+distrust
+distrusted
+distrusts
+disturb
+disturbance
+disturbance's
+disturbances
+disturbed
+disturber
+disturbing
+disturbingly
+disturbs
+ditch
+ditch's
+ditched
+ditcher
+ditches
+ditching
+divan
+divan's
+divans
+dive
+dived
+diver
+diverge
+diverged
+divergence
+divergence's
+divergences
+divergent
+divergently
+diverges
+diverging
+divers
+diverse
+diversely
+diverseness
+diversification
+diversified
+diversifier
+diversifies
+diversify
+diversifying
+diversion
+diversions
+diversities
+diversity
+divert
+diverted
+diverting
+diverts
+dives
+divest
+divested
+divesting
+divests
+divide
+divided
+dividend
+dividend's
+dividends
+divider
+dividers
+divides
+dividing
+divine
+divined
+divinely
+diviner
+divines
+diving
+divining
+divinities
+divinity
+divinity's
+division
+division's
+divisions
+divisor
+divisor's
+divisors
+divorce
+divorced
+divorces
+divorcing
+divulge
+divulged
+divulges
+divulging
+dizzied
+dizzier
+dizziness
+dizzy
+dizzying
+dizzyingly
+do
+dock
+docked
+docker
+docking
+docks
+doctor
+doctor's
+doctoral
+doctorate
+doctorate's
+doctorates
+doctored
+doctoring
+doctors
+doctrine
+doctrine's
+doctrines
+document
+document's
+documentaries
+documentary
+documentary's
+documentation
+documentation's
+documentations
+documented
+documenter
+documenters
+documenting
+documents
+dodge
+dodged
+dodger
+dodgers
+dodges
+dodging
+doer
+doers
+does
+doesn't
+dog
+dog's
+dogged
+doggedly
+doggedness
+dogging
+dogma
+dogma's
+dogmas
+dogmatism
+dogs
+doing
+doings
+dole
+doled
+doleful
+dolefully
+dolefulness
+doles
+doling
+doll
+doll's
+dollar
+dollars
+dollied
+dollies
+dolls
+dolly
+dolly's
+dollying
+dolphin
+dolphin's
+dolphins
+domain
+domain's
+domains
+dome
+domed
+domes
+domestic
+domestically
+domesticate
+domesticated
+domesticates
+domesticating
+domestication
+dominance
+dominant
+dominantly
+dominate
+dominated
+dominates
+dominating
+domination
+dominations
+dominative
+doming
+dominion
+dominions
+don
+don't
+donate
+donated
+donates
+donating
+donation
+donations
+donative
+done
+donkey
+donkey's
+donkeys
+dons
+doom
+doomed
+dooming
+dooms
+door
+door's
+doors
+doorstep
+doorstep's
+doorsteps
+doorway
+doorway's
+doorways
+dope
+doped
+doper
+dopers
+dopes
+doping
+dormant
+dormitories
+dormitory
+dormitory's
+dorsal
+dorsally
+dose
+dosed
+doses
+dosing
+dot
+dot's
+dote
+doted
+doter
+dotes
+doth
+doting
+dotingly
+dots
+dotted
+dotting
+double
+doubled
+doubleness
+doubler
+doublers
+doubles
+doublet
+doublet's
+doublets
+doubling
+doubly
+doubt
+doubtable
+doubted
+doubter
+doubters
+doubtful
+doubtfully
+doubtfulness
+doubting
+doubtingly
+doubtless
+doubtlessly
+doubtlessness
+doubts
+dough
+doughnut
+doughnut's
+doughnuts
+douse
+doused
+douser
+douses
+dousing
+dove
+dover
+doves
+down
+downcast
+downed
+downer
+downers
+downfall
+downfallen
+downier
+downing
+downplay
+downplayed
+downplaying
+downplays
+downright
+downrightly
+downrightness
+downs
+downstairs
+downstream
+downtown
+downtowner
+downtowns
+downward
+downwardly
+downwardness
+downwards
+downy
+doze
+dozed
+dozen
+dozens
+dozenth
+dozer
+dozes
+dozing
+drab
+drably
+drabness
+drabs
+draft
+draft's
+drafted
+drafter
+drafters
+drafting
+drafts
+draftsmen
+drag
+dragged
+dragging
+draggingly
+dragon
+dragon's
+dragons
+dragoon
+dragooned
+dragoons
+drags
+drain
+drainage
+drainages
+drained
+drainer
+drainers
+draining
+drains
+drake
+drama
+drama's
+dramas
+dramatic
+dramatically
+dramatics
+dramatist
+dramatist's
+dramatists
+drank
+drape
+draped
+draper
+draperies
+drapers
+drapery
+drapery's
+drapes
+draping
+drastic
+drastically
+draw
+drawback
+drawback's
+drawbacks
+drawbridge
+drawbridge's
+drawbridges
+drawer
+drawers
+drawing
+drawings
+drawl
+drawled
+drawler
+drawling
+drawlingly
+drawls
+drawly
+drawn
+drawnly
+drawnness
+draws
+dread
+dreaded
+dreadful
+dreadfully
+dreadfulness
+dreading
+dreads
+dream
+dreamed
+dreamer
+dreamers
+dreamier
+dreamily
+dreaminess
+dreaming
+dreamingly
+dreams
+dreamy
+drearier
+dreariness
+dreary
+dredge
+dredge's
+dredged
+dredger
+dredgers
+dredges
+dredging
+dregs
+drench
+drenched
+drencher
+drenches
+drenching
+dress
+dressed
+dresser
+dressers
+dresses
+dressing
+dressings
+dressmaker
+dressmaker's
+dressmakers
+drew
+dried
+drier
+drier's
+driers
+dries
+driest
+drift
+drifted
+drifter
+drifters
+drifting
+driftingly
+drifts
+drill
+drilled
+driller
+drilling
+drills
+drily
+drink
+drinkable
+drinker
+drinkers
+drinking
+drinks
+drip
+drip's
+drips
+drive
+driven
+drivenness
+driver
+driver's
+drivers
+drives
+driveway
+driveway's
+driveways
+driving
+drone
+drone's
+droner
+drones
+droning
+droningly
+drool
+drooled
+drooler
+drooling
+drools
+droop
+drooped
+drooping
+droopingly
+droops
+drop
+drop's
+dropped
+dropper
+dropper's
+droppers
+dropping
+dropping's
+droppings
+drops
+drought
+drought's
+droughts
+drove
+drover
+drovers
+droves
+drown
+drowned
+drowner
+drowning
+drownings
+drowns
+drowsier
+drowsiest
+drowsiness
+drowsy
+drudgery
+drug
+drug's
+druggist
+druggist's
+druggists
+drugs
+drum
+drum's
+drummed
+drummer
+drummer's
+drummers
+drumming
+drums
+drunk
+drunk's
+drunkard
+drunkard's
+drunkards
+drunken
+drunkenly
+drunkenness
+drunker
+drunkly
+drunks
+dry
+drying
+dryly
+dual
+dualities
+duality
+duality's
+dually
+duals
+dub
+dubious
+dubiously
+dubiousness
+dubs
+duchess
+duchess's
+duchesses
+duchies
+duchy
+duck
+ducked
+ducker
+ducking
+ducks
+dude
+due
+duel
+duels
+dueness
+dues
+dug
+duke
+duke's
+dukes
+dull
+dulled
+duller
+dullest
+dulling
+dullness
+dulls
+dully
+duly
+dumb
+dumbbell
+dumbbell's
+dumbbells
+dumber
+dumbest
+dumbly
+dumbness
+dummied
+dummies
+dummy
+dummy's
+dummying
+dump
+dumped
+dumper
+dumpers
+dumping
+dumps
+dunce
+dunce's
+dunces
+dune
+dune's
+dunes
+dungeon
+dungeon's
+dungeons
+duplicate
+duplicated
+duplicates
+duplicating
+duplication
+duplications
+duplicative
+duplicator
+duplicator's
+duplicators
+durabilities
+durability
+durable
+durableness
+durables
+durably
+duration
+duration's
+durations
+during
+dusk
+duskier
+duskiness
+dusky
+dust
+dusted
+duster
+dusters
+dustier
+dustiest
+dustiness
+dusting
+dusts
+dusty
+duties
+dutiful
+dutifully
+dutifulness
+duty
+duty's
+dwarf
+dwarfed
+dwarfness
+dwarfs
+dwell
+dwelled
+dweller
+dwellers
+dwelling
+dwellings
+dwells
+dwindle
+dwindled
+dwindles
+dwindling
+dye
+dyed
+dyeing
+dyer
+dyers
+dyes
+dying
+dynamic
+dynamically
+dynamics
+dynamite
+dynamited
+dynamiter
+dynamites
+dynamiting
+dynasties
+dynasty
+dynasty's
+each
+eager
+eagerly
+eagerness
+eagle
+eagle's
+eagles
+ear
+eared
+earing
+earl
+earl's
+earlier
+earliest
+earliness
+earls
+early
+earmark
+earmarked
+earmarking
+earmarkings
+earmarks
+earn
+earned
+earner
+earner's
+earners
+earnest
+earnestly
+earnestness
+earning
+earnings
+earns
+earring
+earring's
+earrings
+ears
+earshot
+earth
+earth's
+earthed
+earthen
+earthenware
+earthliness
+earthly
+earthquake
+earthquake's
+earthquakes
+earths
+earthworm
+earthworm's
+earthworms
+ease
+eased
+easement
+easement's
+easements
+easer
+eases
+easier
+easiest
+easily
+easiness
+easing
+east
+easter
+easterly
+eastern
+easterner
+easterners
+easting
+easts
+eastward
+eastwards
+easy
+eat
+eaten
+eater
+eaters
+eating
+eatings
+eats
+eaves
+eavesdrop
+eavesdropped
+eavesdropper
+eavesdropper's
+eavesdroppers
+eavesdropping
+eavesdrops
+ebb
+ebbed
+ebbing
+ebbs
+ebony
+eccentric
+eccentric's
+eccentricities
+eccentricity
+eccentrics
+ecclesiastical
+ecclesiastically
+echo
+echoed
+echoes
+echoing
+echos
+eclipse
+eclipsed
+eclipses
+eclipsing
+ecology
+economic
+economical
+economically
+economics
+economies
+economist
+economist's
+economists
+economy
+economy's
+ecstasy
+eddied
+eddies
+eddy
+eddy's
+eddying
+edge
+edged
+edger
+edges
+edging
+edible
+edibleness
+edibles
+edict
+edict's
+edicts
+edifice
+edifice's
+edifices
+edit
+edited
+editing
+edition
+edition's
+editions
+editor
+editor's
+editorial
+editorially
+editorials
+editors
+edits
+educate
+educated
+educatedly
+educatedness
+educates
+educating
+education
+education's
+educational
+educationally
+educations
+educative
+educator
+educator's
+educators
+eel
+eel's
+eels
+eerie
+eerier
+effect
+effected
+effecting
+effective
+effectively
+effectiveness
+effectives
+effector
+effector's
+effectors
+effects
+effectually
+effeminate
+efficacy
+efficiencies
+efficiency
+efficient
+efficiently
+effigy
+effort
+effort's
+effortless
+effortlessly
+effortlessness
+efforts
+egg
+egged
+egger
+egging
+eggs
+ego
+egos
+eigenvalue
+eigenvalue's
+eigenvalues
+eight
+eighteen
+eighteens
+eighteenth
+eighth
+eighth's
+eighthes
+eighties
+eightieth
+eights
+eighty
+either
+ejaculate
+ejaculated
+ejaculates
+ejaculating
+ejaculation
+ejaculations
+eject
+ejected
+ejecting
+ejective
+ejects
+eke
+eked
+ekes
+eking
+el
+elaborate
+elaborated
+elaborately
+elaborateness
+elaborates
+elaborating
+elaboration
+elaborations
+elaborative
+elaborators
+elapse
+elapsed
+elapses
+elapsing
+elastic
+elastically
+elasticities
+elasticity
+elastics
+elate
+elated
+elatedly
+elatedness
+elater
+elates
+elating
+elation
+elbow
+elbowed
+elbowing
+elbows
+elder
+elderliness
+elderly
+elders
+eldest
+elect
+elected
+electing
+election
+election's
+elections
+elective
+electively
+electiveness
+electives
+elector
+elector's
+electoral
+electorally
+electors
+electric
+electrical
+electrically
+electricalness
+electricities
+electricity
+electrics
+electrification
+electrified
+electrify
+electrifying
+electrocute
+electrocuted
+electrocutes
+electrocuting
+electrocution
+electrocutions
+electrode
+electrode's
+electrodes
+electrolyte
+electrolyte's
+electrolytes
+electrolytic
+electron
+electron's
+electronic
+electronically
+electronics
+electrons
+elects
+elegance
+elegances
+elegant
+elegantly
+element
+element's
+elemental
+elementally
+elementals
+elementariness
+elementary
+elements
+elephant
+elephant's
+elephants
+elevate
+elevated
+elevates
+elevating
+elevation
+elevations
+elevator
+elevator's
+elevators
+eleven
+elevens
+elevenses
+eleventh
+elf
+elicit
+elicited
+eliciting
+elicits
+eligibilities
+eligibility
+eligible
+eligibles
+eliminate
+eliminated
+eliminately
+eliminates
+eliminating
+elimination
+eliminations
+eliminative
+eliminator
+eliminators
+elk
+elk's
+elks
+ellipse
+ellipse's
+ellipses
+ellipsis
+ellipsoid
+ellipsoid's
+ellipsoidal
+ellipsoids
+elliptic
+elliptical
+elliptically
+elm
+elmer
+elms
+elongate
+elongated
+elongates
+elongating
+elongation
+eloquence
+eloquent
+eloquently
+els
+else
+else's
+elsewhere
+elucidate
+elucidated
+elucidates
+elucidating
+elucidation
+elucidative
+elude
+eluded
+eludes
+eluding
+elusive
+elusively
+elusiveness
+elves
+emaciated
+emacs
+emacs's
+email
+email's
+emanating
+emancipation
+embark
+embarked
+embarking
+embarks
+embarrass
+embarrassed
+embarrassedly
+embarrasses
+embarrassing
+embarrassingly
+embarrassment
+embassies
+embassy
+embassy's
+embed
+embedded
+embedding
+embeds
+embellish
+embellished
+embellisher
+embellishes
+embellishing
+embellishment
+embellishment's
+embellishments
+ember
+embers
+embezzle
+embezzled
+embezzler
+embezzler's
+embezzlers
+embezzles
+embezzling
+emblem
+emblems
+embodied
+embodier
+embodies
+embodiment
+embodiment's
+embodiments
+embody
+embodying
+embrace
+embraced
+embracer
+embraces
+embracing
+embracingly
+embracive
+embroider
+embroidered
+embroiderer
+embroideries
+embroiders
+embroidery
+embryo
+embryo's
+embryology
+embryos
+emerald
+emerald's
+emeralds
+emerge
+emerged
+emergence
+emergencies
+emergency
+emergency's
+emergent
+emerges
+emerging
+emeries
+emery
+emigrant
+emigrant's
+emigrants
+emigrate
+emigrated
+emigrates
+emigrating
+emigration
+eminence
+eminent
+eminently
+emit
+emits
+emitted
+emotion
+emotion's
+emotional
+emotionally
+emotions
+empathy
+emperor
+emperor's
+emperors
+emphases
+emphasis
+emphatic
+emphatically
+empire
+empire's
+empires
+empirical
+empirically
+empiricist
+empiricist's
+empiricists
+employ
+employable
+employed
+employee
+employee's
+employees
+employer
+employer's
+employers
+employing
+employment
+employment's
+employments
+employs
+empower
+empowered
+empowering
+empowers
+empress
+emptied
+emptier
+empties
+emptiest
+emptily
+emptiness
+empty
+emptying
+emulate
+emulated
+emulates
+emulating
+emulation
+emulations
+emulative
+emulatively
+emulator
+emulator's
+emulators
+enable
+enabled
+enabler
+enablers
+enables
+enabling
+enact
+enacted
+enacting
+enactment
+enactments
+enacts
+enamel
+enamels
+encamp
+encamped
+encamping
+encamps
+encapsulate
+encapsulated
+encapsulates
+encapsulating
+encapsulation
+enchant
+enchanted
+enchanter
+enchanting
+enchantingly
+enchantment
+enchants
+encipher
+enciphered
+encipherer
+enciphering
+enciphers
+encircle
+encircled
+encircles
+encircling
+enclose
+enclosed
+encloses
+enclosing
+enclosure
+enclosure's
+enclosures
+encode
+encoded
+encoder
+encoders
+encodes
+encoding
+encodings
+encompass
+encompassed
+encompasses
+encompassing
+encounter
+encountered
+encountering
+encounters
+encourage
+encouraged
+encouragement
+encouragements
+encourager
+encourages
+encouraging
+encouragingly
+encrypt
+encrypted
+encrypting
+encryption
+encryption's
+encryptions
+encrypts
+encumber
+encumbered
+encumbering
+encumbers
+encyclopedia
+encyclopedia's
+encyclopedias
+encyclopedic
+end
+endanger
+endangered
+endangering
+endangers
+endear
+endeared
+endearing
+endearingly
+endears
+ended
+endemic
+ender
+enders
+ending
+endings
+endive
+endless
+endlessly
+endlessness
+endorse
+endorsed
+endorsement
+endorsement's
+endorsements
+endorser
+endorses
+endorsing
+endow
+endowed
+endowing
+endowment
+endowment's
+endowments
+endows
+ends
+endurable
+endurably
+endurance
+endure
+endured
+endures
+enduring
+enduringly
+enduringness
+enema
+enema's
+enemas
+enemies
+enemy
+enemy's
+energetic
+energetics
+energies
+energy
+enforce
+enforced
+enforcedly
+enforcement
+enforcer
+enforcers
+enforces
+enforcing
+enfranchise
+enfranchised
+enfranchisement
+enfranchiser
+enfranchises
+enfranchising
+engage
+engaged
+engagement
+engagement's
+engagements
+engages
+engaging
+engagingly
+engender
+engendered
+engendering
+engenders
+engine
+engine's
+engined
+engineer
+engineer's
+engineered
+engineering
+engineeringly
+engineerings
+engineers
+engines
+engining
+england
+englander
+englanders
+engrave
+engraved
+engraver
+engravers
+engraves
+engraving
+engravings
+engross
+engrossed
+engrossedly
+engrosser
+engrossing
+engrossingly
+enhance
+enhanced
+enhancement
+enhancement's
+enhancements
+enhances
+enhancing
+enigmatic
+enjoin
+enjoined
+enjoining
+enjoins
+enjoy
+enjoyable
+enjoyableness
+enjoyably
+enjoyed
+enjoying
+enjoyment
+enjoys
+enlarge
+enlarged
+enlargement
+enlargement's
+enlargements
+enlarger
+enlargers
+enlarges
+enlarging
+enlighten
+enlightened
+enlightening
+enlightenment
+enlightens
+enlist
+enlisted
+enlister
+enlisting
+enlistment
+enlistments
+enlists
+enliven
+enlivened
+enlivening
+enlivens
+enmities
+enmity
+ennoble
+ennobled
+ennobler
+ennobles
+ennobling
+ennui
+enormities
+enormity
+enormous
+enormously
+enormousness
+enough
+enqueue
+enqueued
+enqueues
+enquire
+enquired
+enquirer
+enquirers
+enquires
+enquiring
+enrage
+enraged
+enrages
+enraging
+enrich
+enriched
+enricher
+enriches
+enriching
+enrolled
+enrolling
+ensemble
+ensemble's
+ensembles
+ensign
+ensign's
+ensigns
+enslave
+enslaved
+enslaver
+enslavers
+enslaves
+enslaving
+ensnare
+ensnared
+ensnares
+ensnaring
+ensue
+ensued
+ensues
+ensuing
+ensure
+ensured
+ensurer
+ensurers
+ensures
+ensuring
+entail
+entailed
+entailer
+entailing
+entails
+entangle
+entangled
+entangler
+entangles
+entangling
+enter
+entered
+enterer
+entering
+enterprise
+enterpriser
+enterprises
+enterprising
+enterprisingly
+enters
+entertain
+entertained
+entertainer
+entertainers
+entertaining
+entertainingly
+entertainment
+entertainment's
+entertainments
+entertains
+enthusiasm
+enthusiasms
+enthusiast
+enthusiast's
+enthusiastic
+enthusiastically
+enthusiasts
+entice
+enticed
+enticer
+enticers
+entices
+enticing
+entire
+entirely
+entireties
+entirety
+entities
+entitle
+entitled
+entitles
+entitling
+entity
+entity's
+entrance
+entranced
+entrances
+entrancing
+entreat
+entreated
+entreaties
+entreating
+entreatingly
+entreats
+entreaty
+entrench
+entrenched
+entrenches
+entrenching
+entrepreneur
+entrepreneur's
+entrepreneurs
+entries
+entropies
+entropy
+entrust
+entrusted
+entrusting
+entrusts
+entry
+entry's
+enumerable
+enumerate
+enumerated
+enumerates
+enumerating
+enumeration
+enumerations
+enumerative
+enumerator
+enumerator's
+enumerators
+enunciation
+envelop
+envelope
+enveloped
+enveloper
+envelopes
+enveloping
+envelops
+enviably
+envied
+envier
+envies
+envious
+enviously
+enviousness
+environ
+environed
+environing
+environment
+environment's
+environmental
+environmentally
+environments
+environs
+envisage
+envisaged
+envisages
+envisaging
+envision
+envisioned
+envisioning
+envisions
+envoy
+envoy's
+envoys
+envy
+envying
+envyingly
+epaulet
+epaulet's
+epaulets
+ephemeral
+ephemerally
+ephemerals
+epic
+epic's
+epics
+epidemic
+epidemic's
+epidemics
+episcopal
+episcopally
+episode
+episode's
+episodes
+episodic
+epistemological
+epistemologically
+epistemology
+epistle
+epistle's
+epistler
+epistles
+epitaph
+epitaphed
+epitaphing
+epitaphs
+epitaxial
+epitaxially
+epithet
+epithet's
+epithets
+epoch
+epochs
+epsilon
+epsilons
+equal
+equalities
+equality
+equality's
+equally
+equals
+equate
+equated
+equates
+equating
+equation
+equations
+equator
+equator's
+equatorial
+equators
+equilibrium
+equilibriums
+equip
+equipment
+equipments
+equipped
+equipping
+equips
+equitable
+equitableness
+equitably
+equities
+equity
+equivalence
+equivalenced
+equivalences
+equivalencing
+equivalent
+equivalently
+equivalents
+era
+era's
+eradicate
+eradicated
+eradicates
+eradicating
+eradication
+eradicative
+eras
+erasable
+erase
+erased
+eraser
+erasers
+erases
+erasing
+erasion
+erasure
+ere
+erect
+erected
+erecting
+erection
+erection's
+erections
+erectly
+erectness
+erector
+erector's
+erectors
+erects
+ergo
+ermine
+ermine's
+ermined
+ermines
+err
+errand
+errands
+erratic
+erred
+erring
+erringly
+erroneous
+erroneously
+erroneousness
+error
+error's
+errors
+errs
+eruption
+eruptions
+escalate
+escalated
+escalates
+escalating
+escalation
+escapable
+escapade
+escapade's
+escapades
+escape
+escaped
+escapee
+escapee's
+escapees
+escaper
+escapes
+escaping
+eschew
+eschewed
+eschewing
+eschews
+escort
+escorted
+escorting
+escorts
+esoteric
+especial
+especially
+espied
+espies
+espionage
+espouse
+espoused
+espouser
+espouses
+espousing
+esprit
+esprits
+espy
+espying
+esquire
+esquires
+essay
+essayed
+essayer
+essays
+essence
+essence's
+essences
+essential
+essentially
+essentialness
+essentials
+establish
+established
+establisher
+establishes
+establishing
+establishment
+establishment's
+establishments
+estate
+estate's
+estates
+esteem
+esteemed
+esteeming
+esteems
+estimate
+estimated
+estimates
+estimating
+estimation
+estimations
+estimative
+etc
+eternal
+eternally
+eternalness
+eternities
+eternity
+ethereal
+ethereally
+etherealness
+ethic
+ethical
+ethically
+ethicalness
+ethics
+ethnic
+etiquette
+eunuch
+eunuchs
+euphemism
+euphemism's
+euphemisms
+euphoria
+evacuate
+evacuated
+evacuates
+evacuating
+evacuation
+evacuations
+evacuative
+evade
+evaded
+evader
+evades
+evading
+evaluate
+evaluated
+evaluates
+evaluating
+evaluation
+evaluations
+evaluative
+evaluator
+evaluator's
+evaluators
+evaporate
+evaporated
+evaporates
+evaporating
+evaporation
+evaporations
+evaporative
+evaporatively
+eve
+even
+evened
+evener
+evenhanded
+evenhandedly
+evenhandedness
+evening
+evening's
+evenings
+evenly
+evenness
+evens
+event
+event's
+eventful
+eventfully
+eventfulness
+events
+eventual
+eventualities
+eventuality
+eventually
+ever
+everest
+evergreen
+everlasting
+everlastingly
+everlastingness
+evermore
+every
+everybody
+everybody's
+everyday
+everydayness
+everyone
+everyone's
+everyones
+everything
+everywhere
+eves
+evict
+evicted
+evicting
+eviction
+eviction's
+evictions
+evicts
+evidence
+evidenced
+evidences
+evidencing
+evident
+evidently
+evil
+evilly
+evilness
+evils
+evince
+evinced
+evinces
+evincing
+evoke
+evoked
+evokes
+evoking
+evolute
+evolute's
+evolutes
+evolution
+evolution's
+evolutionary
+evolutions
+evolve
+evolved
+evolves
+evolving
+ewe
+ewe's
+ewer
+ewes
+exacerbate
+exacerbated
+exacerbates
+exacerbating
+exacerbation
+exacerbations
+exact
+exacted
+exacter
+exacting
+exactingly
+exactingness
+exaction
+exaction's
+exactions
+exactitude
+exactly
+exactness
+exacts
+exaggerate
+exaggerated
+exaggeratedly
+exaggeratedness
+exaggerates
+exaggerating
+exaggeration
+exaggerations
+exaggerative
+exaggeratively
+exalt
+exalted
+exaltedly
+exalter
+exalters
+exalting
+exalts
+exam
+exam's
+examen
+examination
+examination's
+examinations
+examine
+examined
+examiner
+examiners
+examines
+examining
+example
+example's
+exampled
+examples
+exampling
+exams
+exasperate
+exasperated
+exasperatedly
+exasperates
+exasperating
+exasperatingly
+exasperation
+exasperations
+excavate
+excavated
+excavates
+excavating
+excavation
+excavations
+exceed
+exceeded
+exceeder
+exceeding
+exceedingly
+exceeds
+excel
+excelled
+excellence
+excellences
+excellency
+excellent
+excellently
+excelling
+excels
+except
+excepted
+excepting
+exception
+exception's
+exceptional
+exceptionally
+exceptionalness
+exceptions
+exceptive
+excepts
+excerpt
+excerpted
+excerpter
+excerpts
+excess
+excesses
+excessive
+excessively
+excessiveness
+exchange
+exchangeable
+exchanged
+exchanger
+exchangers
+exchanges
+exchanging
+exchequer
+exchequer's
+exchequers
+excise
+excised
+excises
+excising
+excision
+excisions
+excitable
+excitableness
+excitation
+excitation's
+excitations
+excite
+excited
+excitedly
+excitement
+exciter
+excites
+exciting
+excitingly
+exclaim
+exclaimed
+exclaimer
+exclaimers
+exclaiming
+exclaims
+exclamation
+exclamation's
+exclamations
+exclude
+excluded
+excluder
+excludes
+excluding
+exclusion
+exclusioner
+exclusioners
+exclusions
+exclusive
+exclusively
+exclusiveness
+exclusivity
+excommunicate
+excommunicated
+excommunicates
+excommunicating
+excommunication
+excommunicative
+excrete
+excreted
+excreter
+excretes
+excreting
+excretion
+excretions
+excruciatingly
+excursion
+excursion's
+excursions
+excusable
+excusableness
+excusably
+excuse
+excused
+excuser
+excuses
+excusing
+executable
+executable's
+executables
+execute
+executed
+executer
+executers
+executes
+executing
+execution
+executional
+executioner
+executions
+executive
+executive's
+executives
+executor
+executor's
+executors
+exemplar
+exemplariness
+exemplars
+exemplary
+exemplification
+exemplified
+exemplifier
+exemplifiers
+exemplifies
+exemplify
+exemplifying
+exempt
+exempted
+exempting
+exempts
+exercise
+exercised
+exerciser
+exercisers
+exercises
+exercising
+exert
+exerted
+exerting
+exertion
+exertion's
+exertions
+exerts
+exhale
+exhaled
+exhales
+exhaling
+exhaust
+exhausted
+exhaustedly
+exhauster
+exhaustible
+exhausting
+exhaustingly
+exhaustion
+exhaustive
+exhaustively
+exhaustiveness
+exhausts
+exhibit
+exhibited
+exhibiting
+exhibition
+exhibition's
+exhibitioner
+exhibitions
+exhibitive
+exhibitor
+exhibitor's
+exhibitors
+exhibits
+exhortation
+exhortation's
+exhortations
+exigencies
+exigency
+exile
+exiled
+exiles
+exiling
+exist
+existed
+existence
+existences
+existent
+existential
+existentialism
+existentialist
+existentialist's
+existentialists
+existentially
+existing
+exists
+exit
+exited
+exiting
+exits
+exorbitant
+exorbitantly
+exoskeletons
+exotic
+exoticness
+expand
+expandable
+expanded
+expander
+expander's
+expanders
+expanding
+expands
+expanse
+expansed
+expanses
+expansing
+expansion
+expansionism
+expansions
+expansive
+expansively
+expansiveness
+expect
+expectancies
+expectancy
+expectant
+expectantly
+expectation
+expectation's
+expectations
+expected
+expectedly
+expectedness
+expecting
+expectingly
+expects
+expedient
+expediently
+expedite
+expedited
+expediter
+expedites
+expediting
+expedition
+expedition's
+expeditions
+expeditious
+expeditiously
+expeditiousness
+expel
+expelled
+expelling
+expels
+expend
+expendable
+expended
+expender
+expending
+expenditure
+expenditure's
+expenditures
+expends
+expense
+expensed
+expenses
+expensing
+expensive
+expensively
+expensiveness
+experience
+experienced
+experiences
+experiencing
+experiment
+experimental
+experimentally
+experimentation
+experimentation's
+experimentations
+experimented
+experimenter
+experimenters
+experimenting
+experiments
+expert
+expertise
+expertly
+expertness
+experts
+expiration
+expiration's
+expirations
+expire
+expired
+expires
+expiring
+explain
+explainable
+explained
+explainer
+explainers
+explaining
+explains
+explanation
+explanation's
+explanations
+explanatory
+explicit
+explicitly
+explicitness
+explode
+exploded
+exploder
+explodes
+exploding
+exploit
+exploitable
+exploitation
+exploitation's
+exploitations
+exploited
+exploiter
+exploiters
+exploiting
+exploitive
+exploits
+exploration
+exploration's
+explorations
+exploratory
+explore
+explored
+explorer
+explorers
+explores
+exploring
+explosion
+explosion's
+explosions
+explosive
+explosively
+explosiveness
+explosives
+exponent
+exponent's
+exponential
+exponentially
+exponentials
+exponentiate
+exponentiated
+exponentiates
+exponentiating
+exponentiation
+exponentiation's
+exponentiations
+exponents
+export
+exported
+exporter
+exporters
+exporting
+exports
+expose
+exposed
+exposer
+exposers
+exposes
+exposing
+exposition
+exposition's
+expositions
+expository
+exposure
+exposure's
+exposures
+expound
+expounded
+expounder
+expounding
+expounds
+express
+expressed
+expresser
+expresses
+expressibility
+expressible
+expressibly
+expressing
+expression
+expression's
+expressions
+expressive
+expressively
+expressiveness
+expressly
+expropriate
+expropriated
+expropriates
+expropriating
+expropriation
+expropriations
+expulsion
+expunge
+expunged
+expunger
+expunges
+expunging
+exquisite
+exquisitely
+exquisiteness
+extant
+extend
+extended
+extendedly
+extendedness
+extender
+extendible
+extendibles
+extending
+extends
+extensibility
+extensible
+extension
+extension's
+extensions
+extensive
+extensively
+extensiveness
+extent
+extent's
+extents
+extenuate
+extenuated
+extenuating
+extenuation
+exterior
+exterior's
+exteriorly
+exteriors
+exterminate
+exterminated
+exterminates
+exterminating
+extermination
+exterminations
+external
+externally
+externals
+extinct
+extinction
+extinctive
+extinguish
+extinguished
+extinguisher
+extinguishers
+extinguishes
+extinguishing
+extol
+extols
+extortion
+extortioner
+extortionist
+extortionist's
+extortionists
+extra
+extract
+extracted
+extracting
+extraction
+extraction's
+extractions
+extractive
+extractively
+extractor
+extractor's
+extractors
+extracts
+extracurricular
+extraneous
+extraneously
+extraneousness
+extraordinarily
+extraordinariness
+extraordinary
+extrapolate
+extrapolated
+extrapolates
+extrapolating
+extrapolation
+extrapolations
+extrapolative
+extras
+extravagance
+extravagant
+extravagantly
+extremal
+extreme
+extremed
+extremely
+extremeness
+extremer
+extremes
+extremest
+extremist
+extremist's
+extremists
+extremities
+extremity
+extremity's
+extrinsic
+exuberance
+exult
+exultation
+exulted
+exulting
+exultingly
+exults
+eye
+eyeball
+eyeballs
+eyebrow
+eyebrow's
+eyebrows
+eyed
+eyedness
+eyeglass
+eyeglasses
+eyeing
+eyelid
+eyelid's
+eyelids
+eyepiece
+eyepiece's
+eyepieces
+eyer
+eyers
+eyes
+eyesight
+eyewitness
+eyewitness's
+eyewitnesses
+eying
+fable
+fabled
+fabler
+fables
+fabling
+fabric
+fabric's
+fabricate
+fabricated
+fabricates
+fabricating
+fabrication
+fabrications
+fabrics
+fabulous
+fabulously
+fabulousness
+facade
+facaded
+facades
+facading
+face
+faced
+faceless
+facelessness
+facer
+faces
+facet
+faceted
+faceting
+facets
+facial
+facially
+facile
+facilely
+facileness
+facilitate
+facilitated
+facilitates
+facilitating
+facilitation
+facilitative
+facilities
+facility
+facility's
+facing
+facings
+facsimile
+facsimile's
+facsimiled
+facsimiles
+facsimiling
+fact
+fact's
+faction
+faction's
+factions
+factor
+factored
+factorial
+factories
+factoring
+factorings
+factors
+factory
+factory's
+facts
+factual
+factually
+factualness
+faculties
+faculty
+faculty's
+fade
+faded
+fadedly
+fader
+faders
+fades
+fading
+fag
+fags
+fail
+failed
+failing
+failingly
+failings
+fails
+failure
+failure's
+failures
+fain
+faint
+fainted
+fainter
+faintest
+fainting
+faintly
+faintness
+faints
+fair
+faired
+fairer
+fairest
+fairies
+fairing
+fairly
+fairness
+fairs
+fairy
+fairy's
+fairyland
+faith
+faithful
+faithfully
+faithfulness
+faithfuls
+faithless
+faithlessly
+faithlessness
+faiths
+fake
+faked
+faker
+fakes
+faking
+falcon
+falconer
+falcons
+fall
+fallacies
+fallacious
+fallaciously
+fallaciousness
+fallacy
+fallacy's
+fallen
+faller
+fallibility
+fallible
+falling
+falls
+false
+falsehood
+falsehood's
+falsehoods
+falsely
+falseness
+falser
+falsest
+falsification
+falsified
+falsifier
+falsifies
+falsify
+falsifying
+falsity
+falter
+faltered
+falterer
+faltering
+falteringly
+falters
+fame
+famed
+fames
+familiar
+familiarities
+familiarity
+familiarly
+familiarness
+familiars
+families
+family
+family's
+famine
+famine's
+famines
+faming
+famish
+famished
+famishes
+famishing
+famous
+famously
+famousness
+fan
+fan's
+fanatic
+fanatic's
+fanatically
+fanatics
+fancied
+fancier
+fancier's
+fanciers
+fancies
+fanciest
+fanciful
+fancifully
+fancifulness
+fancily
+fanciness
+fancy
+fancying
+fang
+fang's
+fanged
+fangs
+fanned
+fanning
+fans
+fantasied
+fantasies
+fantastic
+fantasy
+fantasy's
+far
+faraway
+farce
+farce's
+farces
+farcing
+fare
+fared
+farer
+fares
+farewell
+farewells
+faring
+farm
+farmed
+farmer
+farmer's
+farmers
+farmhouse
+farmhouse's
+farmhouses
+farming
+farms
+farmyard
+farmyard's
+farmyards
+farther
+farthest
+farthing
+fascinate
+fascinated
+fascinates
+fascinating
+fascinatingly
+fascination
+fascinations
+fashion
+fashionable
+fashionableness
+fashionably
+fashioned
+fashioner
+fashioners
+fashioning
+fashions
+fast
+fasted
+fasten
+fastened
+fastener
+fasteners
+fastening
+fastenings
+fastens
+faster
+fastest
+fasting
+fastness
+fasts
+fat
+fatal
+fatalities
+fatality
+fatality's
+fatally
+fatals
+fate
+fated
+fates
+father
+father's
+fathered
+fathering
+fatherland
+fatherliness
+fatherly
+fathers
+fathom
+fathomed
+fathoming
+fathoms
+fatigue
+fatigued
+fatigues
+fatiguing
+fatiguingly
+fating
+fatly
+fatness
+fats
+fatten
+fattened
+fattener
+fatteners
+fattening
+fattens
+fatter
+fattest
+fault
+faulted
+faultier
+faultiness
+faulting
+faultless
+faultlessly
+faultlessness
+faults
+faulty
+fawn
+fawned
+fawner
+fawning
+fawningly
+fawns
+fear
+feared
+fearer
+fearful
+fearfully
+fearfulness
+fearing
+fearless
+fearlessly
+fearlessness
+fears
+feasibility
+feasible
+feasibleness
+feast
+feasted
+feaster
+feasting
+feasts
+feat
+feat's
+feather
+feathered
+featherer
+featherers
+feathering
+feathers
+feating
+featly
+feats
+feature
+featured
+featureless
+features
+featuring
+fed
+federal
+federally
+federals
+federation
+feds
+fee
+feeble
+feebleness
+feebler
+feeblest
+feebly
+feed
+feedback
+feedbacks
+feeder
+feeders
+feeding
+feedings
+feeds
+feel
+feeler
+feelers
+feeling
+feelingly
+feelingness
+feelings
+feels
+fees
+feet
+feign
+feigned
+feigner
+feigning
+feigns
+felicities
+felicity
+fell
+felled
+feller
+fellers
+felling
+fellness
+fellow
+fellow's
+fellowly
+fellows
+fellowship
+fellowship's
+fellowships
+fells
+felt
+felted
+felting
+felts
+female
+female's
+femaleness
+females
+feminine
+femininely
+feminineness
+femininity
+feminist
+feminist's
+feminists
+femur
+femur's
+femurs
+fen
+fence
+fenced
+fencer
+fencers
+fences
+fencing
+ferment
+fermentation
+fermentation's
+fermentations
+fermented
+fermenter
+fermenting
+ferments
+fern
+fern's
+ferns
+ferocious
+ferociously
+ferociousness
+ferocity
+ferried
+ferries
+ferrite
+ferry
+ferrying
+fertile
+fertilely
+fertileness
+fertilities
+fertility
+fervent
+fervently
+festival
+festival's
+festivals
+festive
+festively
+festiveness
+festivities
+festivity
+fetch
+fetched
+fetcher
+fetches
+fetching
+fetchingly
+fetter
+fettered
+fettering
+fetters
+feud
+feud's
+feudal
+feudalism
+feudally
+feuds
+fever
+fevered
+fevering
+feverish
+feverishly
+feverishness
+fevers
+few
+fewer
+fewest
+fewness
+fews
+fibrous
+fibrously
+fibrousness
+fickle
+fickleness
+fiction
+fiction's
+fictional
+fictionally
+fictions
+fictitious
+fictitiously
+fictitiousness
+fiddle
+fiddled
+fiddler
+fiddles
+fiddling
+fidelity
+field
+fielded
+fielder
+fielders
+fielding
+fields
+fiend
+fiends
+fierce
+fiercely
+fierceness
+fiercer
+fiercest
+fieriness
+fiery
+fife
+fifteen
+fifteens
+fifteenth
+fifth
+fifthly
+fifties
+fiftieth
+fifty
+fig
+fig's
+fight
+fighter
+fighters
+fighting
+fights
+figs
+figurative
+figuratively
+figurativeness
+figure
+figured
+figurer
+figurers
+figures
+figuring
+figurings
+filament
+filament's
+filaments
+file
+file's
+filed
+filename
+filename's
+filenames
+filer
+filers
+files
+filial
+filially
+filing
+filings
+fill
+fillable
+filled
+filler
+fillers
+filling
+fillings
+fills
+film
+filmed
+filming
+films
+filter
+filter's
+filtered
+filterer
+filtering
+filters
+filth
+filthier
+filthiest
+filthiness
+filthy
+filtration
+filtration's
+fin
+fin's
+final
+finality
+finally
+finals
+finance
+financed
+finances
+financial
+financially
+financier
+financier's
+financiers
+financing
+find
+finder
+finders
+finding
+findings
+finds
+fine
+fined
+finely
+fineness
+finer
+fines
+finest
+finger
+fingered
+fingerer
+fingering
+fingerings
+fingers
+fining
+finish
+finished
+finisher
+finishers
+finishes
+finishing
+finishings
+finite
+finitely
+finiteness
+finites
+fins
+fir
+fire
+firearm
+firearm's
+firearms
+fired
+fireflies
+firefly
+firefly's
+firelight
+firelighting
+fireman
+fireplace
+fireplace's
+fireplaces
+firer
+firers
+fires
+fireside
+firewood
+fireworks
+firing
+firings
+firm
+firm's
+firmament
+firmed
+firmer
+firmest
+firming
+firmly
+firmness
+firms
+firmware
+firmwares
+first
+firsthand
+firstly
+firsts
+firth
+fiscal
+fiscally
+fiscals
+fish
+fished
+fisher
+fisheries
+fisherman
+fisherman's
+fishermen
+fishermen's
+fishers
+fishery
+fishes
+fishing
+fissure
+fissured
+fissures
+fissuring
+fist
+fisted
+fists
+fit
+fitful
+fitfully
+fitfulness
+fitly
+fitness
+fits
+fitted
+fitter
+fitter's
+fitters
+fitting
+fittingly
+fittingness
+fittings
+five
+fiver
+fives
+fix
+fixate
+fixated
+fixates
+fixating
+fixation
+fixations
+fixative
+fixed
+fixedly
+fixedness
+fixer
+fixers
+fixes
+fixing
+fixings
+fixture
+fixture's
+fixtures
+flab
+flabbier
+flabbiness
+flabby
+flag
+flag's
+flagged
+flagging
+flaggingly
+flagrant
+flagrantly
+flags
+flagship
+flagship's
+flagships
+flake
+flaked
+flaker
+flakes
+flaking
+flame
+flamed
+flamer
+flamers
+flames
+flaming
+flamingly
+flammable
+flammables
+flank
+flanked
+flanker
+flankers
+flanking
+flanks
+flannel
+flannel's
+flannels
+flap
+flap's
+flapping
+flaps
+flare
+flared
+flares
+flaring
+flaringly
+flash
+flashed
+flasher
+flashers
+flashes
+flashing
+flashlight
+flashlight's
+flashlights
+flask
+flat
+flatly
+flatness
+flatnesses
+flats
+flatten
+flattened
+flattener
+flattening
+flattens
+flatter
+flattered
+flatterer
+flattering
+flatteringly
+flatters
+flattery
+flattest
+flaunt
+flaunted
+flaunting
+flauntingly
+flaunts
+flaw
+flawed
+flawing
+flawless
+flawlessly
+flawlessness
+flaws
+flax
+flaxen
+flea
+flea's
+fleas
+fled
+fledged
+fledgling
+fledgling's
+fledglings
+flee
+fleece
+fleece's
+fleeced
+fleeces
+fleecier
+fleecy
+fleeing
+fleer
+flees
+fleet
+fleetest
+fleeting
+fleetingly
+fleetingness
+fleetly
+fleetness
+fleets
+flesh
+fleshed
+flesher
+fleshes
+fleshier
+fleshiness
+fleshing
+fleshings
+fleshly
+fleshy
+flew
+flews
+flexibilities
+flexibility
+flexible
+flexibly
+flick
+flicked
+flicker
+flickered
+flickering
+flickeringly
+flicking
+flicks
+flier
+fliers
+flies
+flight
+flight's
+flights
+flinch
+flinched
+flincher
+flinches
+flinching
+fling
+fling's
+flinger
+flinging
+flings
+flint
+flints
+flip
+flips
+flirt
+flirted
+flirter
+flirting
+flirts
+flit
+flits
+float
+floated
+floater
+floaters
+floating
+floats
+flock
+flocked
+flocking
+flocks
+flood
+flooded
+flooder
+flooding
+floods
+floor
+floored
+floorer
+flooring
+floorings
+floors
+flop
+flop's
+floppier
+floppies
+floppily
+floppiness
+floppy
+floppy's
+flops
+flora
+florin
+floss
+flossed
+flosses
+flossing
+flounder
+floundered
+floundering
+flounders
+flour
+floured
+flourish
+flourished
+flourisher
+flourishes
+flourishing
+flourishingly
+flours
+flow
+flowchart
+flowcharting
+flowcharts
+flowed
+flower
+flowered
+flowerer
+floweriness
+flowering
+flowers
+flowery
+flowing
+flowingly
+flown
+flows
+fluctuate
+fluctuated
+fluctuates
+fluctuating
+fluctuation
+fluctuations
+fluent
+fluently
+fluffier
+fluffiest
+fluffiness
+fluffy
+fluid
+fluidity
+fluidly
+fluidness
+fluids
+flung
+flunk
+flunked
+flunker
+flunking
+flunks
+fluorescence
+flurried
+flurries
+flurry
+flurrying
+flush
+flushed
+flushes
+flushing
+flushness
+flute
+flute's
+fluted
+fluter
+flutes
+fluting
+flutter
+fluttered
+flutterer
+fluttering
+flutters
+fly
+flyable
+flyer
+flyer's
+flyers
+flying
+foam
+foamed
+foamer
+foaming
+foams
+focal
+focally
+foci
+focus
+focusable
+focused
+focuser
+focuses
+focusing
+fodder
+foe
+foe's
+foes
+fog
+fog's
+fogged
+foggier
+foggiest
+foggily
+fogginess
+fogging
+foggy
+fogs
+foil
+foiled
+foiling
+foils
+fold
+folded
+folder
+folders
+folding
+foldings
+folds
+foliage
+foliaged
+foliages
+folk
+folk's
+folklore
+folks
+follies
+follow
+followed
+follower
+followers
+following
+followings
+follows
+folly
+fond
+fonder
+fondest
+fondle
+fondled
+fondler
+fondles
+fondling
+fondly
+fondness
+fonds
+font
+font's
+fonts
+food
+food's
+foods
+foodstuff
+foodstuff's
+foodstuffs
+fool
+fooled
+fooling
+foolish
+foolishly
+foolishness
+foolproof
+fools
+foot
+football
+football's
+footballed
+footballer
+footballers
+footballs
+footed
+footer
+footers
+foothold
+footholds
+footing
+footings
+footman
+footnote
+footnote's
+footnotes
+footprint
+footprint's
+footprints
+foots
+footstep
+footsteps
+for
+forage
+foraged
+forager
+forages
+foraging
+foray
+foray's
+forayer
+forays
+forbade
+forbear
+forbear's
+forbearance
+forbearer
+forbearing
+forbears
+forbid
+forbidden
+forbidding
+forbiddingly
+forbiddingness
+forbids
+force
+force's
+forced
+forcedly
+forcefield
+forcefield's
+forcefields
+forceful
+forcefully
+forcefulness
+forcer
+forces
+forcible
+forcibleness
+forcibly
+forcing
+ford
+fords
+fore
+forearm
+forearm's
+forearmed
+forearms
+foreboding
+forebodingly
+forebodingness
+forebodings
+forecast
+forecasted
+forecaster
+forecasters
+forecasting
+forecastle
+forecastles
+forecasts
+forefather
+forefather's
+forefathers
+forefinger
+forefinger's
+forefingers
+forego
+foregoer
+foregoes
+foregoing
+foregone
+foreground
+foregrounds
+forehead
+forehead's
+foreheads
+foreign
+foreigner
+foreigners
+foreignly
+foreignness
+foreigns
+foreman
+foremost
+forenoon
+foresee
+foreseeable
+foreseen
+foreseer
+foresees
+foresight
+foresighted
+foresightedly
+foresightedness
+forest
+forestall
+forestalled
+forestaller
+forestalling
+forestallment
+forestalls
+forested
+forester
+foresters
+forests
+foretell
+foreteller
+foretelling
+foretells
+forethought
+forethought's
+foretold
+forever
+foreverness
+forewarn
+forewarned
+forewarner
+forewarning
+forewarnings
+forewarns
+forfeit
+forfeited
+forfeiter
+forfeiters
+forfeiting
+forfeits
+forgave
+forge
+forged
+forger
+forgeries
+forgers
+forgery
+forgery's
+forges
+forget
+forgetful
+forgetfully
+forgetfulness
+forgetive
+forgets
+forgettable
+forgettably
+forgetting
+forging
+forgivable
+forgivably
+forgive
+forgiven
+forgiveness
+forgiver
+forgives
+forgiving
+forgivingly
+forgivingness
+forgot
+forgotten
+fork
+forked
+forker
+forking
+forks
+forlorn
+forlornly
+forlornness
+form
+formal
+formalism
+formalism's
+formalisms
+formalities
+formality
+formally
+formalness
+formals
+formant
+formants
+format
+formated
+formating
+formation
+formation's
+formations
+formative
+formatively
+formativeness
+formats
+formatted
+formatter
+formatter's
+formatters
+formatting
+formed
+former
+formerly
+formers
+formidable
+formidableness
+forming
+forms
+formula
+formula's
+formulae
+formulas
+formulate
+formulated
+formulates
+formulating
+formulation
+formulations
+formulator
+formulator's
+formulators
+fornication
+forsake
+forsaken
+forsakes
+forsaking
+fort
+fort's
+forte
+fortes
+forth
+forthcoming
+forthwith
+fortier
+forties
+fortieth
+fortification
+fortifications
+fortified
+fortifier
+fortifies
+fortify
+fortifying
+fortitude
+fortnight
+fortnightly
+fortress
+fortress's
+fortresses
+forts
+fortuitous
+fortuitously
+fortuitousness
+fortunate
+fortunately
+fortunateness
+fortunates
+fortune
+fortune's
+fortuned
+fortunes
+fortuning
+forty
+forum
+forum's
+forums
+forward
+forwarded
+forwarder
+forwarders
+forwarding
+forwardly
+forwardness
+forwards
+fossil
+fossils
+foster
+fostered
+fosterer
+fostering
+fosters
+fought
+foul
+fouled
+fouler
+foulest
+fouling
+foully
+foulness
+fouls
+found
+foundation
+foundation's
+foundations
+founded
+founder
+foundered
+foundering
+founders
+founding
+foundries
+foundry
+foundry's
+founds
+fount
+fount's
+fountain
+fountain's
+fountains
+founts
+four
+fours
+fourscore
+fourteen
+fourteener
+fourteens
+fourteenth
+fourth
+fourthly
+fowl
+fowler
+fowling
+fowls
+fox
+fox's
+foxed
+foxes
+foxing
+fractal
+fractal's
+fractals
+fraction
+fraction's
+fractional
+fractionally
+fractioned
+fractioning
+fractions
+fracture
+fractured
+fractures
+fracturing
+fragile
+fragilely
+fragment
+fragmentariness
+fragmentary
+fragmented
+fragmenting
+fragments
+fragrance
+fragrance's
+fragrances
+fragrant
+fragrantly
+frail
+frailer
+frailest
+frailly
+frailness
+frailties
+frailty
+frame
+frame's
+framed
+framer
+framers
+frames
+framework
+framework's
+frameworks
+framing
+framings
+franc
+franchise
+franchise's
+franchised
+franchiser
+franchises
+franchising
+francs
+frank
+franked
+franker
+frankest
+franking
+frankly
+frankness
+franks
+frantic
+frantically
+franticly
+franticness
+fraternal
+fraternally
+fraternities
+fraternity
+fraternity's
+fraud
+fraud's
+frauds
+fraudulently
+fraught
+fraughted
+fraughting
+fraughts
+fray
+frayed
+fraying
+frays
+freak
+freak's
+freaks
+freckle
+freckled
+freckles
+freckling
+free
+freed
+freedom
+freedom's
+freedoms
+freeing
+freeings
+freely
+freeman
+freeness
+freer
+frees
+freest
+freeway
+freeway's
+freeways
+freeze
+freezer
+freezers
+freezes
+freezing
+freight
+freighted
+freighter
+freighters
+freighting
+freights
+frenzied
+frenziedly
+frenzies
+frenzy
+frenzying
+frequencies
+frequency
+frequent
+frequented
+frequenter
+frequenters
+frequenting
+frequently
+frequentness
+frequents
+fresh
+freshen
+freshened
+freshener
+fresheners
+freshening
+freshens
+fresher
+freshers
+freshest
+freshly
+freshman
+freshmen
+freshness
+fret
+fretful
+fretfully
+fretfulness
+frets
+friar
+friar's
+friarly
+friars
+frication
+fricative
+fricatives
+friction
+friction's
+frictionless
+frictionlessly
+frictions
+fried
+friend
+friend's
+friendless
+friendlessness
+friendlier
+friendlies
+friendliest
+friendliness
+friendly
+friends
+friendship
+friendship's
+friendships
+frier
+fries
+frieze
+frieze's
+friezes
+frigate
+frigate's
+frigates
+fright
+frighten
+frightened
+frightening
+frighteningly
+frightens
+frightful
+frightfully
+frightfulness
+frill
+frill's
+frilled
+frills
+fringe
+fringed
+fringes
+fringing
+frisk
+frisked
+frisker
+frisking
+frisks
+frivolous
+frivolously
+frivolousness
+frock
+frock's
+frocked
+frocking
+frocks
+frog
+frog's
+frogs
+frolic
+frolics
+from
+front
+fronted
+frontier
+frontier's
+frontiers
+fronting
+fronts
+frost
+frosted
+frostier
+frostiness
+frosting
+frosts
+frosty
+froth
+frothing
+frown
+frowned
+frowner
+frowning
+frowningly
+frowns
+froze
+frozen
+frozenly
+frozenness
+frugal
+frugally
+fruit
+fruit's
+fruited
+fruiter
+fruiterer
+fruitful
+fruitfully
+fruitfulness
+fruition
+fruitless
+fruitlessly
+fruitlessness
+fruits
+frustrate
+frustrated
+frustrater
+frustrates
+frustrating
+frustratingly
+frustration
+frustrations
+fry
+frying
+fuel
+fuels
+fugitive
+fugitive's
+fugitively
+fugitiveness
+fugitives
+fulfilled
+fulfiller
+fulfilling
+full
+fuller
+fullest
+fullness
+fullword
+fullword's
+fullwords
+fully
+fumble
+fumbled
+fumbler
+fumbles
+fumbling
+fumblingly
+fume
+fumed
+fumes
+fuming
+fun
+function
+function's
+functional
+functionalities
+functionality
+functionally
+functionals
+functioned
+functioning
+functions
+functor
+functor's
+functors
+fund
+fundamental
+fundamentalist
+fundamentalist's
+fundamentalists
+fundamentally
+fundamentals
+funded
+funder
+funders
+funding
+funds
+funeral
+funeral's
+funerals
+fungus
+funguses
+funnel
+funnels
+funnier
+funnies
+funniest
+funnily
+funniness
+funny
+fur
+fur's
+furies
+furious
+furiouser
+furiously
+furiousness
+furnace
+furnace's
+furnaced
+furnaces
+furnacing
+furness
+furnish
+furnished
+furnisher
+furnishers
+furnishes
+furnishing
+furnishings
+furniture
+furrow
+furrowed
+furrowing
+furrows
+furs
+further
+furthered
+furtherer
+furtherest
+furthering
+furthermore
+furthers
+furtive
+furtively
+furtiveness
+fury
+fury's
+fuse
+fused
+fuses
+fusing
+fusion
+fusions
+fuss
+fusser
+fussing
+futile
+futilely
+futileness
+futility
+future
+future's
+futures
+fuzzier
+fuzziest
+fuzziness
+fuzzy
+gabardine
+gabardines
+gable
+gabled
+gabler
+gables
+gad
+gadget
+gadget's
+gadgets
+gag
+gaged
+gager
+gagged
+gagging
+gaging
+gags
+gaieties
+gaiety
+gaily
+gain
+gained
+gainer
+gainers
+gaining
+gainings
+gainly
+gains
+gait
+gaited
+gaiter
+gaiters
+gaits
+galaxies
+galaxy
+galaxy's
+gale
+gales
+gall
+gallant
+gallantly
+gallantry
+gallants
+galled
+galleried
+galleries
+gallery
+galley
+galley's
+galleys
+galling
+gallingly
+gallon
+gallon's
+gallons
+gallop
+galloped
+galloper
+gallopers
+galloping
+gallops
+gallows
+gallowses
+galls
+gamble
+gambled
+gambler
+gamblers
+gambles
+gambling
+game
+gamed
+gamely
+gameness
+games
+gaming
+gamma
+gammas
+gang
+gang's
+ganger
+ganglier
+gangly
+gangrene
+gangrened
+gangrenes
+gangrening
+gangs
+gangster
+gangster's
+gangsters
+gap
+gap's
+gape
+gaped
+gaper
+gapes
+gaping
+gapingly
+gaps
+garage
+garaged
+garages
+garaging
+garb
+garbage
+garbage's
+garbaged
+garbages
+garbaging
+garbed
+garble
+garbled
+garbler
+garbles
+garbling
+garden
+gardened
+gardener
+gardeners
+gardening
+gardens
+gargle
+gargled
+gargles
+gargling
+garland
+garlanded
+garlands
+garlic
+garlics
+garment
+garment's
+garmented
+garmenting
+garments
+garner
+garnered
+garnering
+garners
+garnish
+garnished
+garnishes
+garrison
+garrisoned
+garrisoning
+garrisons
+garter
+garter's
+gartered
+gartering
+garters
+gas
+gas's
+gaseous
+gaseously
+gaseousness
+gases
+gash
+gash's
+gashed
+gashes
+gashing
+gasoline
+gasolines
+gasp
+gasped
+gasper
+gaspers
+gasping
+gaspingly
+gasps
+gassed
+gasser
+gassers
+gassing
+gassings
+gastric
+gastrointestinal
+gate
+gated
+gates
+gateway
+gateway's
+gateways
+gather
+gathered
+gatherer
+gatherers
+gathering
+gatherings
+gathers
+gating
+gaudier
+gaudies
+gaudiness
+gaudy
+gauge
+gauged
+gauger
+gauges
+gauging
+gaunt
+gauntly
+gauntness
+gauze
+gauzed
+gauzes
+gauzing
+gave
+gay
+gayer
+gayest
+gayly
+gayness
+gaze
+gazed
+gazer
+gazers
+gazes
+gazing
+gear
+geared
+gearing
+gears
+geese
+gel
+gel's
+gelatin
+gelled
+gelling
+gels
+gem
+gem's
+gems
+gender
+gender's
+gendered
+gendering
+genders
+gene
+gene's
+general
+general's
+generalist
+generalist's
+generalists
+generalities
+generality
+generally
+generalness
+generals
+generate
+generated
+generates
+generating
+generation
+generations
+generative
+generatively
+generator
+generator's
+generators
+generic
+generically
+genericness
+generosities
+generosity
+generosity's
+generous
+generously
+generousness
+genes
+genetic
+genetically
+genetics
+genial
+genially
+genialness
+genius
+genius's
+geniuses
+genre
+genre's
+genres
+genteel
+genteeler
+genteelest
+genteelly
+genteelness
+gentle
+gentled
+gentleman
+gentlemanliness
+gentlemanly
+gentleness
+gentler
+gentlest
+gentlewoman
+gentling
+gently
+gentries
+gentry
+genuine
+genuinely
+genuineness
+genus
+geographic
+geographical
+geographically
+geographies
+geography
+geological
+geologist
+geologist's
+geologists
+geometric
+geometries
+geometry
+geranium
+germ
+germ's
+germane
+germen
+germinate
+germinated
+germinates
+germinating
+germination
+germinations
+germinative
+germinatively
+germs
+gestalt
+gesture
+gestured
+gestures
+gesturing
+get
+gets
+getter
+getter's
+gettered
+getters
+getting
+ghastlier
+ghastliness
+ghastly
+ghost
+ghosted
+ghosting
+ghostlier
+ghostliness
+ghostlinesses
+ghostly
+ghosts
+giant
+giant's
+giants
+gibberish
+giddied
+giddier
+giddiness
+giddy
+giddying
+gift
+gifted
+giftedly
+giftedness
+gifts
+gig
+gig's
+gigantic
+giganticness
+giggle
+giggled
+giggler
+giggles
+giggling
+gigglingly
+gigs
+gild
+gilded
+gilder
+gilding
+gilds
+gill
+gill's
+gilled
+giller
+gills
+gilt
+gimmick
+gimmick's
+gimmicks
+gin
+gin's
+ginger
+gingerbread
+gingered
+gingering
+gingerliness
+gingerly
+gingham
+ginghams
+gins
+giraffe
+giraffe's
+giraffes
+gird
+girded
+girder
+girder's
+girders
+girding
+girdle
+girdled
+girdler
+girdles
+girdling
+girds
+girl
+girl's
+girlfriend
+girlfriend's
+girlfriends
+girls
+girt
+girth
+give
+given
+givenness
+givens
+giver
+givers
+gives
+giveth
+giving
+givingly
+gizmo
+gizmo's
+gizmos
+glacial
+glacially
+glacier
+glacier's
+glaciers
+glad
+gladder
+gladdest
+glade
+glades
+gladly
+gladness
+glamour
+glamoured
+glamouring
+glamours
+glance
+glanced
+glances
+glancing
+glancingly
+gland
+gland's
+glanders
+glands
+glare
+glared
+glares
+glaring
+glaringly
+glaringness
+glass
+glassed
+glasses
+glassier
+glassies
+glassiness
+glassy
+glaze
+glazed
+glazer
+glazers
+glazes
+glazing
+gleam
+gleamed
+gleaming
+gleams
+glean
+gleaned
+gleaner
+gleaning
+gleanings
+gleans
+glee
+gleed
+gleeful
+gleefully
+gleefulness
+glees
+glen
+glen's
+glens
+glide
+glided
+glider
+gliders
+glides
+gliding
+glimmer
+glimmered
+glimmering
+glimmers
+glimpse
+glimpsed
+glimpser
+glimpsers
+glimpses
+glimpsing
+glint
+glinted
+glinting
+glints
+glisten
+glistened
+glistening
+glistens
+glitch
+glitch's
+glitches
+glitter
+glittered
+glittering
+glitteringly
+glitters
+global
+globally
+globals
+globe
+globe's
+globes
+globing
+globular
+globularity
+globularly
+globularness
+gloom
+gloomier
+gloomily
+gloominess
+glooms
+gloomy
+gloried
+glories
+glorification
+glorifications
+glorified
+glorifier
+glorifiers
+glorifies
+glorify
+glorious
+gloriously
+gloriousness
+glory
+glorying
+gloss
+glossaries
+glossary
+glossary's
+glossed
+glosses
+glossier
+glossies
+glossiness
+glossing
+glossy
+glottal
+glove
+gloved
+glover
+glovers
+gloves
+gloving
+glow
+glowed
+glower
+glowered
+glowering
+glowers
+glowing
+glowingly
+glows
+glucose
+glue
+glued
+gluer
+gluers
+glues
+gluing
+gnat
+gnat's
+gnats
+gnaw
+gnawed
+gnawer
+gnawing
+gnaws
+go
+goad
+goaded
+goading
+goads
+goal
+goal's
+goals
+goat
+goat's
+goatee
+goatee's
+goatees
+goats
+gobble
+gobbled
+gobbler
+gobblers
+gobbles
+gobbling
+goblet
+goblet's
+goblets
+goblin
+goblin's
+goblins
+god
+god's
+goddess
+goddess's
+goddesses
+godlier
+godlike
+godlikeness
+godliness
+godly
+godmother
+godmother's
+godmothers
+gods
+goer
+goering
+goes
+going
+goings
+gold
+golden
+goldenly
+goldenness
+golding
+golds
+goldsmith
+golf
+golfer
+golfers
+golfing
+golfs
+gone
+goner
+gong
+gong's
+gongs
+gonion
+good
+goodbye
+goodbye's
+goodbyes
+goodie
+goodie's
+goodies
+goodly
+goodness
+goods
+goody
+goody's
+goose
+gooses
+goosing
+gore
+gored
+gores
+gorge
+gorgeous
+gorgeously
+gorgeousness
+gorger
+gorges
+gorging
+gorilla
+gorilla's
+gorillas
+goring
+gosh
+gospel
+gospels
+gossip
+gossiper
+gossipers
+gossips
+got
+gotcha
+gotcha's
+gotchas
+goth
+goto
+gotten
+gouge
+gouged
+gouger
+gouges
+gouging
+govern
+governed
+governess
+governesses
+governing
+government
+government's
+governmental
+governmentally
+governments
+governor
+governor's
+governors
+governs
+gown
+gowned
+gowns
+grab
+grabbed
+grabber
+grabber's
+grabbers
+grabbing
+grabbings
+grabs
+grace
+graced
+graceful
+gracefully
+gracefulness
+graces
+gracing
+gracious
+graciously
+graciousness
+gradation
+gradation's
+gradations
+grade
+graded
+gradely
+grader
+graders
+grades
+gradient
+gradient's
+gradients
+grading
+gradings
+gradual
+gradually
+gradualness
+graduate
+graduated
+graduates
+graduating
+graduation
+graduations
+graft
+grafted
+grafter
+grafting
+grafts
+graham
+graham's
+grahams
+grain
+grained
+grainer
+graining
+grains
+grammar
+grammar's
+grammars
+grammatical
+grammatically
+grammaticalness
+granaries
+granary
+granary's
+grand
+grander
+grandest
+grandeur
+grandfather
+grandfather's
+grandfatherly
+grandfathers
+grandiose
+grandiosely
+grandioseness
+grandkid
+grandkid's
+grandkids
+grandly
+grandma
+grandma's
+grandmother
+grandmother's
+grandmotherly
+grandmothers
+grandness
+grandpa
+grandpa's
+grandparent
+grandparents
+grandpas
+grands
+grandson
+grandson's
+grandsons
+grange
+granger
+granges
+granite
+grannies
+granny
+grant
+grant's
+granted
+granter
+granting
+grants
+granularity
+granulate
+granulated
+granulates
+granulating
+granulation
+granulations
+granulative
+grape
+grape's
+grapes
+grapevine
+grapevine's
+grapevines
+graph
+graph's
+graphed
+graphic
+graphical
+graphically
+graphicness
+graphics
+graphing
+graphite
+graphs
+grapple
+grappled
+grappler
+grapples
+grappling
+grasp
+graspable
+grasped
+grasper
+grasping
+graspingly
+graspingness
+grasps
+grass
+grassed
+grassers
+grasses
+grassier
+grassiest
+grassing
+grassy
+grate
+grated
+grateful
+gratefully
+gratefulness
+grater
+grates
+gratification
+gratifications
+gratified
+gratify
+gratifying
+gratifyingly
+grating
+gratingly
+gratings
+gratitude
+gratuities
+gratuitous
+gratuitously
+gratuitousness
+gratuity
+gratuity's
+grave
+gravel
+gravelly
+gravels
+gravely
+graveness
+graver
+gravers
+graves
+gravest
+gravies
+graving
+gravitation
+gravitational
+gravitationally
+gravities
+gravity
+gravy
+gray
+grayed
+grayer
+grayest
+graying
+grayly
+grayness
+grays
+graze
+grazed
+grazer
+grazes
+grazing
+grease
+greased
+greaser
+greasers
+greases
+greasier
+greasiness
+greasing
+greasy
+great
+greaten
+greatened
+greatening
+greater
+greatest
+greatly
+greatness
+greats
+greed
+greedier
+greedily
+greediness
+greedy
+green
+greened
+greener
+greenest
+greenhouse
+greenhouse's
+greenhouses
+greening
+greenish
+greenishness
+greenly
+greenness
+greens
+greet
+greeted
+greeter
+greeting
+greetings
+greets
+grenade
+grenade's
+grenades
+grew
+grey
+greyest
+greying
+grid
+grid's
+grids
+grief
+grief's
+griefs
+grievance
+grievance's
+grievances
+grieve
+grieved
+griever
+grievers
+grieves
+grieving
+grievingly
+grievous
+grievously
+grievousness
+grill
+grilled
+griller
+grilling
+grills
+grim
+grimed
+griming
+grimly
+grimness
+grin
+grind
+grinder
+grinders
+grinding
+grindingly
+grindings
+grinds
+grindstone
+grindstone's
+grindstones
+grins
+grip
+gripe
+griped
+griper
+gripes
+griping
+gripped
+gripper
+gripper's
+grippers
+gripping
+grippingly
+grips
+grit
+grit's
+grits
+grizzlier
+grizzly
+groan
+groaned
+groaner
+groaners
+groaning
+groans
+grocer
+grocer's
+groceries
+grocers
+grocery
+groom
+groom's
+groomed
+groomer
+grooming
+grooms
+groove
+grooved
+groover
+grooves
+grooving
+grope
+groped
+groper
+gropes
+groping
+gross
+grossed
+grosser
+grosses
+grossest
+grossing
+grossly
+grossness
+grotesque
+grotesquely
+grotesqueness
+grotto
+grotto's
+grottos
+ground
+grounded
+grounder
+grounders
+grounding
+grounds
+groundwork
+group
+group's
+grouped
+grouper
+grouping
+groupings
+groups
+grouse
+groused
+grouser
+grouses
+grousing
+grove
+grovel
+grovels
+grover
+grovers
+groves
+grow
+grower
+growers
+growing
+growingly
+growl
+growled
+growler
+growlier
+growliness
+growling
+growlingly
+growls
+growly
+grown
+grownup
+grownup's
+grownups
+grows
+growth
+growths
+grub
+grub's
+grubs
+grudge
+grudge's
+grudged
+grudger
+grudges
+grudging
+grudgingly
+gruesome
+gruesomely
+gruesomeness
+gruff
+gruffly
+gruffness
+grumble
+grumbled
+grumbler
+grumbles
+grumbling
+grumblingly
+grunt
+grunted
+grunter
+grunting
+grunts
+guarantee
+guaranteed
+guaranteeing
+guaranteer
+guaranteers
+guarantees
+guaranty
+guard
+guarded
+guardedly
+guardedness
+guarder
+guardian
+guardian's
+guardians
+guardianship
+guarding
+guards
+guerrilla
+guerrilla's
+guerrillas
+guess
+guessed
+guesser
+guesses
+guessing
+guest
+guest's
+guested
+guesting
+guests
+guidance
+guidances
+guide
+guidebook
+guidebook's
+guidebooks
+guided
+guideline
+guideline's
+guidelines
+guider
+guides
+guiding
+guild
+guilder
+guile
+guilt
+guiltier
+guiltiest
+guiltily
+guiltiness
+guiltless
+guiltlessly
+guiltlessness
+guilts
+guilty
+guinea
+guineas
+guise
+guise's
+guised
+guises
+guising
+guitar
+guitar's
+guitars
+gulch
+gulch's
+gulches
+gulf
+gulf's
+gulfs
+gull
+gulled
+gullibility
+gullied
+gullies
+gulling
+gulls
+gully
+gully's
+gullying
+gulp
+gulped
+gulper
+gulps
+gum
+gum's
+gums
+gun
+gun's
+gunfire
+gunfires
+gunned
+gunner
+gunner's
+gunners
+gunning
+gunpowder
+gunpowders
+guns
+gurgle
+gurgled
+gurgles
+gurgling
+guru
+guru's
+gurus
+gush
+gushed
+gusher
+gushes
+gushing
+gust
+gust's
+gusts
+gut
+guts
+gutser
+gutter
+guttered
+guttering
+gutters
+guy
+guy's
+guyed
+guyer
+guyers
+guying
+guys
+gym
+gymnasium
+gymnasium's
+gymnasiums
+gymnast
+gymnast's
+gymnastic
+gymnastics
+gymnasts
+gyms
+gypsied
+gypsies
+gypsy
+gypsy's
+gypsying
+gyration
+gyrations
+gyroscope
+gyroscope's
+gyroscopes
+ha
+habit
+habit's
+habitable
+habitableness
+habitat
+habitat's
+habitation
+habitation's
+habitations
+habitats
+habits
+habitual
+habitually
+habitualness
+hack
+hacked
+hacker
+hacker's
+hackers
+hacking
+hacks
+had
+hadn't
+hag
+hagen
+haggard
+haggardly
+haggardness
+hail
+hailed
+hailer
+hailing
+hails
+hair
+hair's
+haircut
+haircut's
+haircuts
+hairdresser
+hairdresser's
+hairdressers
+haired
+hairier
+hairiness
+hairless
+hairlessness
+hairs
+hairy
+hale
+haler
+half
+halfness
+halfway
+halfword
+halfword's
+halfwords
+haling
+hall
+hall's
+haller
+hallmark
+hallmark's
+hallmarked
+hallmarking
+hallmarks
+hallow
+hallowed
+hallowing
+hallows
+halls
+hallway
+hallway's
+hallways
+halt
+halted
+halter
+haltered
+haltering
+halters
+halting
+haltingly
+halts
+halve
+halved
+halvers
+halves
+halving
+ham
+ham's
+hamburger
+hamburger's
+hamburgers
+hamlet
+hamlet's
+hamlets
+hammer
+hammered
+hammerer
+hammering
+hammers
+hammock
+hammock's
+hammocks
+hamper
+hampered
+hampering
+hampers
+hams
+hand
+handbag
+handbag's
+handbags
+handbook
+handbook's
+handbooks
+handcuff
+handcuffed
+handcuffing
+handcuffs
+handed
+handedly
+handedness
+hander
+handers
+handful
+handfuls
+handicap
+handicap's
+handicapped
+handicaps
+handier
+handiest
+handily
+handiness
+handing
+handiwork
+handkerchief
+handkerchief's
+handkerchiefs
+handle
+handled
+handler
+handlers
+handles
+handling
+hands
+handshake
+handshake's
+handshaker
+handshakes
+handshaking
+handsome
+handsomely
+handsomeness
+handsomer
+handsomest
+handwriting
+handwritten
+handy
+hang
+hangar
+hangar's
+hangars
+hanged
+hanger
+hangers
+hanging
+hangover
+hangover's
+hangovers
+hangs
+hap
+haphazard
+haphazardly
+haphazardness
+hapless
+haplessly
+haplessness
+haply
+happen
+happened
+happening
+happenings
+happens
+happier
+happiest
+happily
+happiness
+happy
+harass
+harassed
+harasser
+harasses
+harassing
+harassment
+harassments
+hard
+harden
+hardened
+hardener
+hardening
+hardens
+harder
+hardest
+hardier
+hardiness
+harding
+hardings
+hardly
+hardness
+hardnesses
+hards
+hardship
+hardship's
+hardships
+hardware
+hardwares
+hardy
+hare
+hare's
+hares
+hark
+harked
+harken
+harking
+harks
+harlot
+harlot's
+harlots
+harm
+harmed
+harmer
+harmful
+harmfully
+harmfulness
+harming
+harmless
+harmlessly
+harmlessness
+harmonies
+harmonious
+harmoniously
+harmoniousness
+harmony
+harms
+harness
+harnessed
+harnesser
+harnesses
+harnessing
+harp
+harped
+harper
+harpers
+harping
+harpings
+harps
+harried
+harrier
+harrow
+harrowed
+harrower
+harrowing
+harrows
+harry
+harrying
+harsh
+harshen
+harshened
+harshening
+harsher
+harshest
+harshly
+harshness
+hart
+harvest
+harvested
+harvester
+harvesters
+harvesting
+harvests
+has
+hash
+hashed
+hasher
+hashes
+hashing
+hasn't
+hassle
+hassled
+hassler
+hassles
+hassling
+haste
+hasted
+hasten
+hastened
+hastener
+hastening
+hastens
+hastes
+hastier
+hastiest
+hastily
+hastiness
+hasting
+hastings
+hasty
+hat
+hat's
+hatch
+hatched
+hatcher
+hatcheries
+hatchery
+hatchery's
+hatches
+hatchet
+hatchet's
+hatchets
+hatching
+hate
+hated
+hateful
+hatefully
+hatefulness
+hater
+hates
+hath
+hating
+hatred
+hats
+haughtier
+haughtily
+haughtiness
+haughty
+haul
+hauled
+hauler
+haulers
+hauling
+hauls
+haunch
+haunch's
+haunches
+haunt
+haunted
+haunter
+haunting
+hauntingly
+haunts
+have
+haven
+haven's
+haven't
+havens
+haver
+havering
+havers
+haves
+having
+havoc
+havocs
+hawk
+hawked
+hawker
+hawkers
+hawking
+hawks
+hay
+hayer
+haying
+hays
+hazard
+hazard's
+hazarded
+hazarding
+hazardous
+hazardously
+hazardousness
+hazards
+haze
+haze's
+hazed
+hazel
+hazer
+hazes
+hazier
+haziest
+haziness
+hazing
+hazy
+he
+he'd
+he'll
+he's
+head
+head's
+headache
+headache's
+headaches
+headed
+header
+headers
+headgear
+heading
+heading's
+headings
+headland
+headland's
+headlands
+headline
+headlined
+headliner
+headlines
+headlining
+headlong
+headphone
+headphone's
+headphones
+headquarters
+heads
+headway
+heal
+healed
+healer
+healers
+healing
+heals
+health
+healthful
+healthfully
+healthfulness
+healthier
+healthiest
+healthily
+healthiness
+healthy
+heap
+heaped
+heaping
+heaps
+hear
+heard
+hearer
+hearers
+hearest
+hearing
+hearings
+hearken
+hearkened
+hearkening
+hears
+hearsay
+hearses
+hearsing
+heart
+heart's
+heartache
+heartache's
+heartaches
+hearted
+heartedly
+hearten
+heartened
+heartening
+hearteningly
+heartens
+hearth
+heartier
+hearties
+heartiest
+heartily
+heartiness
+heartless
+heartlessly
+heartlessness
+hearts
+hearty
+heat
+heatable
+heated
+heatedly
+heater
+heaters
+heath
+heathen
+heather
+heating
+heats
+heave
+heaved
+heaven
+heaven's
+heavenliness
+heavenly
+heavens
+heaver
+heavers
+heaves
+heavier
+heavies
+heaviest
+heavily
+heaviness
+heaving
+heavy
+hedge
+hedged
+hedgehog
+hedgehog's
+hedgehogs
+hedger
+hedges
+hedging
+hedgingly
+heed
+heeded
+heeding
+heedless
+heedlessly
+heedlessness
+heeds
+heel
+heeled
+heeler
+heelers
+heeling
+heels
+heifer
+height
+heighten
+heightened
+heightening
+heightens
+heights
+heinous
+heinously
+heinousness
+heir
+heir's
+heiress
+heiress's
+heiresses
+heirs
+held
+hell
+hell's
+heller
+hello
+hellos
+hells
+helm
+helmet
+helmet's
+helmeted
+helmets
+help
+helped
+helper
+helpers
+helpful
+helpfully
+helpfulness
+helping
+helpless
+helplessly
+helplessness
+helps
+hem
+hem's
+hemisphere
+hemisphere's
+hemisphered
+hemispheres
+hemlock
+hemlock's
+hemlocks
+hemostat
+hemostats
+hemp
+hempen
+hems
+hen
+hen's
+hence
+henceforth
+henchman
+henchmen
+hens
+her
+herald
+heralded
+heralding
+heralds
+herb
+herb's
+herbivore
+herbivorous
+herbivorously
+herbs
+herd
+herded
+herder
+herding
+herds
+here
+here's
+hereabout
+hereabouts
+hereafter
+hereby
+hereditary
+heredity
+herein
+hereinafter
+heres
+heresy
+heretic
+heretic's
+heretics
+heretofore
+herewith
+heritage
+heritages
+hermit
+hermit's
+hermits
+hero
+hero's
+heroes
+heroic
+heroically
+heroics
+heroin
+heroine
+heroine's
+heroines
+heroism
+heron
+heron's
+herons
+heros
+herring
+herring's
+herrings
+hers
+herself
+hesitant
+hesitantly
+hesitate
+hesitated
+hesitater
+hesitates
+hesitating
+hesitatingly
+hesitation
+hesitations
+heterogeneous
+heterogeneously
+heterogeneousness
+heuristic
+heuristic's
+heuristically
+heuristics
+hew
+hewed
+hewer
+hewing
+hews
+hex
+hexagonal
+hexagonally
+hexer
+hey
+hickories
+hickory
+hid
+hidden
+hide
+hided
+hideous
+hideously
+hideousness
+hideout
+hideout's
+hideouts
+hider
+hides
+hiding
+hierarchical
+hierarchically
+hierarchies
+hierarchy
+hierarchy's
+high
+higher
+highest
+highland
+highlander
+highlands
+highlight
+highlighted
+highlighting
+highlights
+highly
+highness
+highness's
+highnesses
+highway
+highway's
+highways
+hijack
+hijacked
+hijacker
+hijackers
+hijacking
+hijacks
+hike
+hiked
+hiker
+hikers
+hikes
+hiking
+hilarious
+hilariously
+hilariousness
+hill
+hill's
+hilled
+hiller
+hilling
+hillock
+hillocks
+hills
+hillside
+hilltop
+hilltop's
+hilltops
+hilt
+hilt's
+hilts
+him
+hims
+himself
+hind
+hinder
+hindered
+hinderer
+hindering
+hinders
+hindrance
+hindrances
+hinds
+hindsight
+hinge
+hinged
+hinger
+hinges
+hinging
+hint
+hinted
+hinter
+hinting
+hints
+hip
+hip's
+hipness
+hips
+hire
+hired
+hirer
+hirers
+hires
+hiring
+hirings
+his
+hiss
+hissed
+hisser
+hisses
+hissing
+histogram
+histogram's
+histograms
+historian
+historian's
+historians
+historic
+historical
+historically
+historicalness
+histories
+history
+history's
+hit
+hit's
+hitch
+hitched
+hitcher
+hitches
+hitchhike
+hitchhiked
+hitchhiker
+hitchhikers
+hitchhikes
+hitchhiking
+hitching
+hither
+hitherto
+hits
+hitter
+hitter's
+hitters
+hitting
+hive
+hives
+hiving
+hoar
+hoard
+hoarded
+hoarder
+hoarding
+hoards
+hoarier
+hoariness
+hoarse
+hoarsely
+hoarseness
+hoarser
+hoarsest
+hoary
+hoax
+hoax's
+hoaxed
+hoaxer
+hoaxes
+hoaxing
+hobbies
+hobble
+hobbled
+hobbler
+hobbles
+hobbling
+hobby
+hobby's
+hobbyist
+hobbyist's
+hobbyists
+hockey
+hoe
+hoe's
+hoer
+hoes
+hog
+hog's
+hogs
+hoist
+hoisted
+hoister
+hoisting
+hoists
+hold
+holden
+holder
+holders
+holding
+holdings
+holds
+hole
+hole's
+holed
+holes
+holiday
+holiday's
+holidayer
+holidays
+holier
+holies
+holiness
+holing
+holistic
+hollies
+hollow
+hollowed
+hollower
+hollowest
+hollowing
+hollowly
+hollowness
+hollows
+holly
+holocaust
+hologram
+hologram's
+holograms
+holy
+homage
+homaged
+homager
+homages
+homaging
+home
+homebuilt
+homed
+homeless
+homelessness
+homelier
+homeliness
+homely
+homemade
+homemaker
+homemaker's
+homemakers
+homeomorphic
+homeomorphism
+homeomorphism's
+homeomorphisms
+homer
+homers
+homes
+homesick
+homesickness
+homespun
+homestead
+homesteader
+homesteaders
+homesteads
+homeward
+homewards
+homework
+homeworker
+homeworkers
+homing
+homogeneities
+homogeneity
+homogeneity's
+homogeneous
+homogeneously
+homogeneousness
+homomorphic
+homomorphism
+homomorphism's
+homomorphisms
+hone
+honed
+honer
+hones
+honest
+honestly
+honesty
+honey
+honeycomb
+honeycombed
+honeyed
+honeying
+honeymoon
+honeymooned
+honeymooner
+honeymooners
+honeymooning
+honeymoons
+honeys
+honeysuckle
+honing
+honorary
+hood
+hood's
+hooded
+hoodedness
+hooding
+hoods
+hoodwink
+hoodwinked
+hoodwinker
+hoodwinking
+hoodwinks
+hoof
+hoof's
+hoofed
+hoofer
+hoofs
+hook
+hooked
+hookedness
+hooker
+hookers
+hooking
+hooks
+hoop
+hooped
+hooper
+hooping
+hoops
+hooray
+hooray's
+hoorays
+hoot
+hooted
+hooter
+hooters
+hooting
+hoots
+hop
+hope
+hoped
+hopeful
+hopefully
+hopefulness
+hopefuls
+hopeless
+hopelessly
+hopelessness
+hoper
+hopes
+hoping
+hopped
+hopper
+hopper's
+hoppers
+hopping
+hops
+horde
+horde's
+hordes
+horizon
+horizon's
+horizons
+horizontal
+horizontally
+hormone
+hormone's
+hormones
+horn
+horned
+hornedness
+hornet
+hornet's
+hornets
+horns
+horrendous
+horrendously
+horrible
+horribleness
+horribly
+horrid
+horridly
+horridness
+horrified
+horrifies
+horrify
+horrifying
+horrifyingly
+horror
+horror's
+horrors
+horse
+horse's
+horseback
+horsely
+horseman
+horsepower
+horsepowers
+horses
+horseshoe
+horseshoer
+horseshoes
+horsing
+hose
+hose's
+hosed
+hoses
+hosing
+hospitable
+hospitably
+hospital
+hospital's
+hospitality
+hospitals
+host
+host's
+hostage
+hostage's
+hostages
+hosted
+hostess
+hostess's
+hostesses
+hostile
+hostilely
+hostilities
+hostility
+hosting
+hostly
+hosts
+hot
+hotel
+hotel's
+hotels
+hotly
+hotness
+hotter
+hottest
+hound
+hounded
+hounder
+hounding
+hounds
+hour
+hour's
+hourly
+hours
+house
+house's
+housed
+houseflies
+housefly
+housefly's
+household
+household's
+householder
+householders
+households
+housekeeper
+housekeeper's
+housekeepers
+housekeeping
+houser
+houses
+housetop
+housetop's
+housetops
+housewife
+housewife's
+housewifeliness
+housewifely
+housework
+houseworker
+houseworkers
+housing
+housings
+hovel
+hovel's
+hovels
+hover
+hovered
+hoverer
+hovering
+hovers
+how
+how's
+however
+howl
+howled
+howler
+howling
+howls
+hows
+hrs
+hub
+hub's
+hubris
+hubs
+huddle
+huddled
+huddler
+huddles
+huddling
+hue
+hue's
+hued
+hues
+hug
+huge
+hugely
+hugeness
+huger
+hugest
+hugs
+huh
+hull
+hull's
+hulled
+huller
+hulling
+hulls
+hum
+human
+humane
+humanely
+humaneness
+humanities
+humanity
+humanity's
+humanly
+humanness
+humans
+humble
+humbled
+humbleness
+humbler
+humbles
+humblest
+humbling
+humbly
+humid
+humidification
+humidifications
+humidified
+humidifier
+humidifiers
+humidifies
+humidify
+humidifying
+humidities
+humidity
+humidly
+humiliate
+humiliated
+humiliates
+humiliating
+humiliatingly
+humiliation
+humiliations
+humility
+hummed
+humming
+humorous
+humorously
+humorousness
+hump
+humped
+humping
+humps
+hums
+hunch
+hunched
+hunches
+hundred
+hundreds
+hundredth
+hung
+hunger
+hungered
+hungering
+hungers
+hungrier
+hungriest
+hungrily
+hungriness
+hungry
+hunk
+hunk's
+hunker
+hunkered
+hunkering
+hunkers
+hunks
+hunt
+hunted
+hunter
+hunters
+hunting
+hunts
+huntsman
+hurdle
+hurdled
+hurdler
+hurdles
+hurdling
+hurl
+hurled
+hurler
+hurlers
+hurling
+hurrah
+hurricane
+hurricane's
+hurricanes
+hurried
+hurriedly
+hurriedness
+hurrier
+hurries
+hurry
+hurrying
+hurt
+hurter
+hurting
+hurtingly
+hurts
+husband
+husband's
+husbander
+husbandly
+husbandry
+husbands
+hush
+hushed
+hushes
+hushing
+husk
+husked
+husker
+huskier
+huskies
+huskiness
+husking
+husks
+husky
+hustle
+hustled
+hustler
+hustlers
+hustles
+hustling
+hut
+hut's
+huts
+hyacinth
+hybrid
+hybrids
+hydraulic
+hydraulically
+hydraulics
+hydrodynamic
+hydrodynamics
+hydrogen
+hydrogen's
+hydrogens
+hygiene
+hymn
+hymn's
+hymning
+hymns
+hype
+hype's
+hyped
+hyper
+hyperbolic
+hypertext
+hypertext's
+hypes
+hyphen
+hyphen's
+hyphened
+hyphening
+hyphens
+hypocrisies
+hypocrisy
+hypocrite
+hypocrite's
+hypocrites
+hypodermic
+hypodermics
+hypotheses
+hypothesis
+hypothetical
+hypothetically
+hysteresis
+hysterical
+hysterically
+ice
+iceberg
+iceberg's
+icebergs
+iced
+ices
+icier
+iciest
+iciness
+icing
+icings
+icon
+icon's
+icons
+icy
+id
+id's
+idea
+idea's
+ideal
+idealism
+idealistic
+ideally
+ideals
+ideas
+identical
+identically
+identicalness
+identifiable
+identifiably
+identification
+identifications
+identified
+identifier
+identifiers
+identifies
+identify
+identifying
+identities
+identity
+identity's
+ideological
+ideologically
+ideologies
+ideology
+idiocies
+idiocy
+idiosyncrasies
+idiosyncrasy
+idiosyncrasy's
+idiosyncratic
+idiot
+idiot's
+idiotic
+idiots
+idle
+idled
+idleness
+idler
+idlers
+idles
+idlest
+idling
+idly
+idol
+idol's
+idolatry
+idols
+if
+ignition
+ignoble
+ignobleness
+ignorance
+ignorant
+ignorantly
+ignorantness
+ignore
+ignored
+ignorer
+ignores
+ignoring
+ii
+iii
+ill
+illegal
+illegalities
+illegality
+illegally
+illicit
+illicitly
+illiterate
+illiterately
+illiterateness
+illiterates
+illness
+illness's
+illnesses
+illogical
+illogically
+illogicalness
+ills
+illuminate
+illuminated
+illuminates
+illuminating
+illuminatingly
+illumination
+illuminations
+illuminative
+illusion
+illusion's
+illusions
+illusive
+illusively
+illusiveness
+illustrate
+illustrated
+illustrates
+illustrating
+illustration
+illustrations
+illustrative
+illustratively
+illustrator
+illustrator's
+illustrators
+illustrious
+illustriously
+illustriousness
+illy
+image
+imaged
+images
+imaginable
+imaginableness
+imaginably
+imaginariness
+imaginary
+imagination
+imagination's
+imaginations
+imaginative
+imaginatively
+imaginativeness
+imagine
+imagined
+imaginer
+imagines
+imaging
+imagining
+imaginings
+imbalance
+imbalances
+imitate
+imitated
+imitates
+imitating
+imitation
+imitations
+imitative
+imitatively
+imitativeness
+immaculate
+immaculately
+immaculateness
+immaterial
+immaterially
+immaterialness
+immature
+immaturely
+immatureness
+immaturity
+immediacies
+immediacy
+immediate
+immediately
+immediateness
+immemorial
+immemorially
+immense
+immensely
+immenseness
+immerse
+immersed
+immerser
+immerses
+immersing
+immersion
+immersions
+immigrant
+immigrant's
+immigrants
+immigrate
+immigrated
+immigrates
+immigrating
+immigration
+imminent
+imminently
+imminentness
+immoral
+immoralities
+immorality
+immorally
+immortal
+immortality
+immortally
+immortals
+immovability
+immovable
+immovableness
+immovably
+immune
+immunities
+immunity
+immunity's
+immunology
+immutable
+immutableness
+imp
+imp's
+impact
+impacted
+impacter
+impacting
+impaction
+impactions
+impactive
+impactor
+impactor's
+impactors
+impacts
+impair
+impaired
+impairer
+impairing
+impairs
+impart
+imparted
+impartial
+impartially
+imparting
+imparts
+impasse
+impasses
+impassion
+impassioned
+impassioning
+impassions
+impassive
+impassively
+impassiveness
+impatience
+impatient
+impatiently
+impeach
+impeached
+impeaches
+impeaching
+impedance
+impedance's
+impedances
+impede
+impeded
+impeder
+impedes
+impediment
+impediment's
+impediments
+impeding
+impel
+impels
+impending
+impenetrability
+impenetrable
+impenetrableness
+impenetrably
+imperative
+imperatively
+imperativeness
+imperatives
+imperfect
+imperfection
+imperfection's
+imperfections
+imperfective
+imperfectly
+imperfectness
+imperial
+imperialism
+imperialist
+imperialist's
+imperialists
+imperially
+imperil
+imperious
+imperiously
+imperiousness
+impermanence
+impermanent
+impermanently
+impermissible
+impersonal
+impersonally
+impersonate
+impersonated
+impersonates
+impersonating
+impersonation
+impersonations
+impertinent
+impertinently
+imperturbability
+impervious
+imperviously
+imperviousness
+impetuous
+impetuously
+impetuousness
+impetus
+impinge
+impinged
+impinges
+impinging
+impious
+impiously
+implant
+implanted
+implanter
+implanting
+implants
+implausible
+implement
+implementable
+implementation
+implementation's
+implementations
+implemented
+implementer
+implementers
+implementing
+implementor
+implementor's
+implementors
+implements
+implicant
+implicant's
+implicants
+implicate
+implicated
+implicates
+implicating
+implication
+implications
+implicative
+implicatively
+implicativeness
+implicit
+implicitly
+implicitness
+implied
+implies
+implore
+implored
+implores
+imploring
+imply
+implying
+import
+importance
+important
+importantly
+importation
+importations
+imported
+importer
+importers
+importing
+imports
+impose
+imposed
+imposer
+imposes
+imposing
+imposingly
+imposition
+imposition's
+impositions
+impossibilities
+impossibility
+impossible
+impossibleness
+impossibles
+impossibly
+impostor
+impostor's
+impostors
+impotence
+impotent
+impotently
+impoverish
+impoverished
+impoverisher
+impoverishes
+impoverishing
+impoverishment
+impracticable
+impracticableness
+impractical
+impracticality
+impractically
+impracticalness
+imprecise
+imprecisely
+impreciseness
+imprecision
+impregnable
+impregnableness
+impress
+impressed
+impresser
+impresses
+impressing
+impression
+impression's
+impressionable
+impressionableness
+impressionist
+impressionistic
+impressionists
+impressions
+impressive
+impressively
+impressiveness
+impressment
+imprint
+imprinted
+imprinting
+imprints
+imprison
+imprisoned
+imprisoning
+imprisonment
+imprisonment's
+imprisonments
+imprisons
+improbable
+improbableness
+impromptu
+improper
+improperly
+improperness
+improve
+improved
+improvement
+improvements
+improver
+improves
+improving
+improvisation
+improvisation's
+improvisational
+improvisations
+improvise
+improvised
+improviser
+improvisers
+improvises
+improvising
+imps
+impudent
+impudently
+impulse
+impulsed
+impulses
+impulsing
+impulsion
+impulsions
+impulsive
+impulsively
+impulsiveness
+impunity
+impure
+impurely
+impureness
+impurities
+impurity
+impurity's
+impute
+imputed
+imputes
+imputing
+in
+inabilities
+inability
+inaccessibility
+inaccessible
+inaccessibly
+inaccuracies
+inaccuracy
+inaccurate
+inaccurately
+inactions
+inactivation
+inactive
+inactively
+inactivity
+inadequacies
+inadequacy
+inadequate
+inadequately
+inadequateness
+inadmissibility
+inadmissible
+inadvertent
+inadvertently
+inadvisability
+inadvisable
+inalterable
+inalterableness
+inane
+inanely
+inaneness
+inaner
+inanest
+inanimate
+inanimately
+inanimateness
+inapparently
+inapplicability
+inapplicable
+inappreciable
+inappreciably
+inappreciative
+inappreciatively
+inappreciativeness
+inapproachable
+inappropriate
+inappropriately
+inappropriateness
+inapt
+inaptly
+inaptness
+inarguable
+inarguably
+inarticulable
+inartistic
+inartistically
+inasmuch
+inattentive
+inattentively
+inattentiveness
+inaudible
+inaudibly
+inaugural
+inaugurate
+inaugurated
+inaugurating
+inauguration
+inaugurations
+inauspicious
+inauspiciously
+inauspiciousness
+inauthentic
+inauthenticity
+inboards
+inborn
+inbounds
+inbred
+inbuilt
+incantation
+incantations
+incapable
+incapableness
+incapably
+incapacitating
+incarnation
+incarnation's
+incarnations
+incautious
+incautiously
+incautiousness
+incendiaries
+incendiary
+incense
+incensed
+incenses
+incensing
+incentive
+incentive's
+incentively
+incentives
+inception
+inceptions
+incessant
+incessantly
+inch
+inched
+inches
+inching
+incidence
+incidences
+incident
+incident's
+incidental
+incidentally
+incidentals
+incidents
+incipient
+incipiently
+incision
+incision's
+incisions
+incitations
+incite
+incited
+inciter
+incites
+inciting
+incivility
+inclination
+inclination's
+inclinations
+incline
+inclined
+incliner
+inclines
+inclining
+inclose
+inclosed
+incloses
+inclosing
+include
+included
+includes
+including
+inclusion
+inclusion's
+inclusions
+inclusive
+inclusively
+inclusiveness
+incoherence
+incoherences
+incoherent
+incoherently
+income
+incomer
+incomers
+incomes
+incoming
+incommensurate
+incomparability
+incomparable
+incomparably
+incompatibilities
+incompatibility
+incompatibility's
+incompatible
+incompatibly
+incompetence
+incompetent
+incompetent's
+incompetently
+incompetents
+incomplete
+incompletely
+incompleteness
+incompletion
+incomprehensibility
+incomprehensible
+incomprehensibleness
+incomprehensibly
+incomprehension
+incompressible
+incomputable
+inconceivable
+inconceivableness
+inconceivably
+inconclusive
+inconclusively
+inconclusiveness
+inconformity
+incongruence
+incongruent
+incongruently
+inconsequential
+inconsequentially
+inconsequently
+inconsiderable
+inconsiderableness
+inconsiderably
+inconsiderate
+inconsiderately
+inconsiderateness
+inconsideration
+inconsistencies
+inconsistency
+inconsistency's
+inconsistent
+inconsistently
+inconsolable
+inconsolableness
+inconspicuous
+inconspicuously
+inconspicuousness
+inconstancy
+inconstantly
+incontestable
+incontinently
+incontrollable
+inconvenience
+inconvenienced
+inconveniences
+inconveniencing
+inconvenient
+inconveniently
+inconvertibility
+inconvertible
+incorporate
+incorporated
+incorporates
+incorporating
+incorporation
+incorporative
+incorrect
+incorrectly
+incorrectness
+incorruption
+increase
+increased
+increaser
+increases
+increasing
+increasingly
+incredibility
+incredible
+incredibleness
+incredibly
+incredulity
+incredulous
+incredulously
+increment
+incremental
+incrementally
+incremented
+incrementing
+increments
+incubate
+incubated
+incubates
+incubating
+incubation
+incubative
+incubator
+incubator's
+incubators
+incur
+incurable
+incurableness
+incurables
+incurably
+incurred
+incurring
+incurs
+indebted
+indebtedness
+indecent
+indecently
+indecision
+indecisive
+indecisively
+indecisiveness
+indecomposable
+indeed
+indefinable
+indefinableness
+indefinite
+indefinitely
+indefiniteness
+indemnity
+indent
+indentation
+indentation's
+indentations
+indented
+indenter
+indenting
+indents
+independence
+independent
+independently
+independents
+indescribable
+indescribableness
+indeterminable
+indeterminableness
+indeterminacies
+indeterminacy
+indeterminacy's
+indeterminate
+indeterminately
+indeterminateness
+indetermination
+indeterminism
+indeterministic
+index
+indexable
+indexed
+indexer
+indexers
+indexes
+indexing
+indicate
+indicated
+indicates
+indicating
+indication
+indications
+indicative
+indicatively
+indicatives
+indicator
+indicator's
+indicators
+indices
+indictment
+indictment's
+indictments
+indifference
+indifferent
+indifferently
+indigenous
+indigenously
+indigenousness
+indigested
+indigestible
+indigestion
+indignant
+indignantly
+indignation
+indignities
+indignity
+indigo
+indirect
+indirected
+indirecting
+indirection
+indirections
+indirectly
+indirectness
+indirects
+indiscernible
+indiscipline
+indisciplined
+indiscreet
+indiscreetly
+indiscreetness
+indiscriminate
+indiscriminately
+indiscriminateness
+indiscriminating
+indiscriminatingly
+indiscrimination
+indispensability
+indispensable
+indispensableness
+indispensably
+indisposed
+indisposes
+indistinct
+indistinctive
+indistinctly
+indistinctness
+indistinguishable
+indistinguishableness
+individual
+individual's
+individualistic
+individuality
+individually
+individuals
+indivisibility
+indivisible
+indivisibleness
+indoctrinate
+indoctrinated
+indoctrinates
+indoctrinating
+indoctrination
+indolent
+indolently
+indomitable
+indomitableness
+indoor
+indoors
+induce
+induced
+inducement
+inducement's
+inducements
+inducer
+induces
+inducing
+induct
+inductance
+inductances
+inducted
+inducting
+induction
+induction's
+inductions
+inductive
+inductively
+inductiveness
+inductor
+inductor's
+inductors
+inducts
+indulge
+indulged
+indulgence
+indulgence's
+indulgences
+indulger
+indulges
+indulging
+industrial
+industrialist
+industrialist's
+industrialists
+industrially
+industrials
+industries
+industrious
+industriously
+industriousness
+industry
+industry's
+inedited
+ineffective
+ineffectively
+ineffectiveness
+inefficacy
+inefficiencies
+inefficiency
+inefficient
+inefficiently
+inelastically
+inelegant
+inelegantly
+ineloquent
+ineloquently
+inequalities
+inequality
+inequitably
+inequities
+inequity
+inert
+inertia
+inertias
+inertly
+inertness
+inescapable
+inescapably
+inessential
+inestimable
+inevitabilities
+inevitability
+inevitable
+inevitableness
+inevitably
+inexact
+inexactitude
+inexactly
+inexactness
+inexcusable
+inexcusableness
+inexcusably
+inexhaustible
+inexhaustibleness
+inexistent
+inexorable
+inexorableness
+inexorably
+inexpedient
+inexpediently
+inexpensive
+inexpensively
+inexpensiveness
+inexperience
+inexperienced
+inexplainable
+inexplicable
+inexplicableness
+inexplicably
+inexpressibility
+inexpressible
+inexpressibleness
+inexpressibly
+inexpressive
+inexpressively
+inexpressiveness
+inextensible
+infallibility
+infallible
+infallibly
+infamous
+infamously
+infancy
+infant
+infant's
+infantry
+infants
+infeasible
+infect
+infected
+infecting
+infection
+infection's
+infections
+infectious
+infectiously
+infectiousness
+infective
+infects
+infer
+inference
+inference's
+inferencer
+inferences
+inferencing
+inferential
+inferentially
+inferior
+inferior's
+inferiority
+inferiorly
+inferiors
+infernal
+infernally
+inferno
+inferno's
+infernos
+inferred
+inferring
+infers
+infertility
+infest
+infested
+infester
+infesting
+infests
+infidel
+infidel's
+infidelity
+infidels
+infields
+infighter
+infighter's
+infighters
+infighting
+infiltrate
+infiltrated
+infiltrates
+infiltrating
+infiltration
+infiltrative
+infinite
+infinitely
+infiniteness
+infinitesimal
+infinitesimally
+infinities
+infinitive
+infinitive's
+infinitively
+infinitives
+infinitum
+infinity
+infirmity
+infix
+infix's
+infixes
+inflame
+inflamed
+inflamer
+inflaming
+inflammable
+inflammableness
+inflatable
+inflate
+inflated
+inflater
+inflates
+inflating
+inflation
+inflationary
+inflexibility
+inflexible
+inflexibleness
+inflexibly
+inflict
+inflicted
+inflicter
+inflicting
+inflictive
+inflicts
+inflows
+influence
+influenced
+influencer
+influences
+influencing
+influent
+influential
+influentially
+influenza
+inform
+informal
+informality
+informally
+informant
+informant's
+informants
+information
+informational
+informations
+informative
+informatively
+informativeness
+informed
+informer
+informers
+informing
+informs
+infractions
+infrastructure
+infrastructures
+infrequent
+infrequently
+infringe
+infringed
+infringement
+infringement's
+infringements
+infringer
+infringes
+infringing
+infuriate
+infuriated
+infuriately
+infuriates
+infuriating
+infuriatingly
+infuriation
+infuse
+infused
+infuser
+infuses
+infusing
+infusion
+infusions
+ingenious
+ingeniously
+ingeniousness
+ingenuity
+inglorious
+ingloriously
+ingloriousness
+ingot
+ingrained
+ingrainedly
+ingrains
+ingratitude
+ingredient
+ingredient's
+ingredients
+ingrown
+ingrownness
+ingrowth
+ingrowths
+inhabit
+inhabitable
+inhabitance
+inhabitant
+inhabitant's
+inhabitants
+inhabited
+inhabiter
+inhabiting
+inhabits
+inhale
+inhaled
+inhaler
+inhales
+inhaling
+inharmonious
+inharmoniously
+inharmoniousness
+inhere
+inhered
+inherent
+inherently
+inheres
+inhering
+inherit
+inheritable
+inheritableness
+inheritance
+inheritance's
+inheritances
+inherited
+inheriting
+inheritor
+inheritor's
+inheritors
+inheritress
+inheritress's
+inheritresses
+inheritrices
+inheritrix
+inherits
+inhibit
+inhibited
+inhibiter
+inhibiting
+inhibition
+inhibition's
+inhibitions
+inhibitive
+inhibitors
+inhibits
+inholding
+inholdings
+inhomogeneities
+inhomogeneity
+inhospitable
+inhospitableness
+inhospitably
+inhospitality
+inhuman
+inhumane
+inhumanely
+inhumanities
+inhumanly
+inhumanness
+inion
+iniquities
+iniquity
+iniquity's
+initial
+initialness
+initials
+initiate
+initiated
+initiates
+initiating
+initiation
+initiations
+initiative
+initiative's
+initiatives
+initiator
+initiator's
+initiators
+inject
+injected
+injecting
+injection
+injection's
+injections
+injective
+injects
+injudicious
+injudiciously
+injudiciousness
+injunction
+injunction's
+injunctions
+injure
+injured
+injurer
+injures
+injuries
+injuring
+injurious
+injuriously
+injuriousness
+injury
+injury's
+injustice
+injustice's
+injustices
+ink
+inked
+inker
+inkers
+inking
+inkings
+inkling
+inkling's
+inklings
+inks
+inlaid
+inland
+inlander
+inlet
+inlet's
+inlets
+inlier
+inly
+inlying
+inmate
+inmate's
+inmates
+inn
+innards
+innate
+innately
+innateness
+inner
+innerly
+innermost
+inning
+innings
+innocence
+innocent
+innocently
+innocents
+innocuous
+innocuously
+innocuousness
+innovate
+innovated
+innovates
+innovating
+innovation
+innovation's
+innovations
+innovative
+innovativeness
+inns
+innumerability
+innumerable
+innumerableness
+innumerably
+inoperable
+inopportune
+inopportunely
+inopportuneness
+inordinate
+inordinately
+inordinateness
+inorganic
+input
+input's
+inputed
+inputer
+inputing
+inputs
+inputting
+inquietude
+inquire
+inquired
+inquirer
+inquirers
+inquires
+inquiries
+inquiring
+inquiringly
+inquiry
+inquiry's
+inquisition
+inquisition's
+inquisitions
+inquisitive
+inquisitively
+inquisitiveness
+inroad
+inroads
+ins
+insane
+insanely
+insaneness
+insanitary
+insanity
+inscribe
+inscribed
+inscriber
+inscribes
+inscribing
+inscription
+inscription's
+inscriptions
+insect
+insect's
+insects
+insecure
+insecurely
+insecureness
+insecurity
+insensible
+insensibleness
+insensibly
+insensitive
+insensitively
+insensitiveness
+insensitivity
+inseparable
+inseparableness
+insert
+inserted
+inserter
+inserting
+insertion
+insertion's
+insertions
+inserts
+insets
+insetting
+inside
+insider
+insiders
+insides
+insidious
+insidiously
+insidiousness
+insight
+insight's
+insightful
+insightfully
+insights
+insignia
+insignias
+insignificance
+insignificances
+insignificant
+insignificantly
+insincerity
+insinuate
+insinuated
+insinuates
+insinuating
+insinuatingly
+insinuation
+insinuations
+insinuative
+insist
+insisted
+insistence
+insistent
+insistently
+insisting
+insists
+insociability
+insociable
+insociably
+insofar
+insolence
+insolent
+insolently
+insolubility
+insoluble
+insolubleness
+insolvable
+inspect
+inspected
+inspecting
+inspection
+inspection's
+inspections
+inspective
+inspector
+inspector's
+inspectors
+inspects
+inspiration
+inspiration's
+inspirations
+inspire
+inspired
+inspirer
+inspires
+inspiring
+instabilities
+instability
+install
+installation
+installation's
+installations
+installed
+installer
+installers
+installing
+installment
+installment's
+installments
+installs
+instance
+instanced
+instances
+instancing
+instant
+instantaneous
+instantaneously
+instantaneousness
+instanter
+instantiate
+instantiated
+instantiates
+instantiating
+instantiation
+instantiation's
+instantiations
+instantly
+instantness
+instants
+instated
+instates
+instead
+insteps
+instigate
+instigated
+instigates
+instigating
+instigation
+instigative
+instigator
+instigator's
+instigators
+instills
+instinct
+instinct's
+instinctive
+instinctively
+instincts
+institute
+instituted
+instituter
+instituters
+institutes
+instituting
+institution
+institution's
+institutional
+institutionally
+institutions
+institutive
+instruct
+instructed
+instructing
+instruction
+instruction's
+instructional
+instructions
+instructive
+instructively
+instructiveness
+instructor
+instructor's
+instructors
+instructs
+instrument
+instrumental
+instrumentalist
+instrumentalist's
+instrumentalists
+instrumentally
+instrumentals
+instrumentation
+instrumented
+instrumenting
+instruments
+insufficiencies
+insufficiency
+insufficient
+insufficiently
+insulate
+insulated
+insulates
+insulating
+insulation
+insulations
+insulator
+insulator's
+insulators
+insult
+insulted
+insulter
+insulting
+insultingly
+insults
+insuperable
+insupportable
+insupportableness
+insurance
+insurances
+insure
+insured
+insurer
+insurers
+insures
+insurgent
+insurgent's
+insurgents
+insuring
+insurmountable
+insurrection
+insurrection's
+insurrections
+insusceptible
+intact
+intactness
+intakes
+intangible
+intangible's
+intangibleness
+intangibles
+intangibly
+integer
+integer's
+integers
+integral
+integral's
+integrally
+integrals
+integrate
+integrated
+integrates
+integrating
+integration
+integrations
+integrative
+integrity
+intellect
+intellect's
+intellective
+intellectively
+intellects
+intellectual
+intellectually
+intellectualness
+intellectuals
+intelligence
+intelligencer
+intelligences
+intelligent
+intelligently
+intelligibility
+intelligible
+intelligibleness
+intelligibly
+intemperance
+intemperate
+intemperately
+intemperateness
+intend
+intended
+intendedly
+intendedness
+intender
+intending
+intends
+intense
+intensely
+intenseness
+intensification
+intensified
+intensifier
+intensifiers
+intensifies
+intensify
+intensifying
+intension
+intensities
+intensity
+intensive
+intensively
+intensiveness
+intent
+intention
+intentional
+intentionally
+intentioned
+intentions
+intently
+intentness
+intents
+interact
+interacted
+interacting
+interaction
+interaction's
+interactions
+interactive
+interactively
+interactivity
+interacts
+intercept
+intercepted
+intercepter
+intercepting
+intercepts
+interchange
+interchangeability
+interchangeable
+interchangeableness
+interchangeably
+interchanged
+interchanger
+interchanges
+interchanging
+interchangings
+intercity
+intercommunicate
+intercommunicated
+intercommunicates
+intercommunicating
+intercommunication
+interconnect
+interconnected
+interconnectedness
+interconnecting
+interconnection
+interconnection's
+interconnections
+interconnectivity
+interconnects
+intercourse
+interdependence
+interdependencies
+interdependency
+interdependent
+interdependently
+interdisciplinary
+interest
+interested
+interestedly
+interesting
+interestingly
+interestingness
+interests
+interface
+interfaced
+interfacer
+interfaces
+interfacing
+interfere
+interfered
+interference
+interferences
+interferer
+interferes
+interfering
+interferingly
+interim
+interior
+interior's
+interiorly
+interiors
+interlace
+interlaced
+interlaces
+interlacing
+interleave
+interleaved
+interleaves
+interleaving
+interlink
+interlinked
+interlinking
+interlinks
+interlisp
+interlisp's
+intermediaries
+intermediary
+intermediate
+intermediate's
+intermediated
+intermediately
+intermediateness
+intermediates
+intermediating
+intermediation
+interminable
+intermingle
+intermingled
+intermingles
+intermingling
+intermittent
+intermittently
+intermix
+intermixed
+intermixer
+intermixes
+intermixing
+intermodule
+intern
+internal
+internally
+internals
+international
+internationality
+internationally
+internationals
+interned
+interning
+interns
+interpersonal
+interpersonally
+interplay
+interpolate
+interpolated
+interpolates
+interpolating
+interpolation
+interpolations
+interpolative
+interpose
+interposed
+interposer
+interposes
+interposing
+interpret
+interpretable
+interpretation
+interpretation's
+interpretations
+interpreted
+interpreter
+interpreters
+interpreting
+interpretive
+interpretively
+interprets
+interprocess
+interrelate
+interrelated
+interrelatedly
+interrelatedness
+interrelates
+interrelating
+interrelation
+interrelations
+interrelationship
+interrelationship's
+interrelationships
+interrogate
+interrogated
+interrogates
+interrogating
+interrogation
+interrogations
+interrogative
+interrogatively
+interrogatives
+interrupt
+interrupted
+interrupter
+interrupters
+interruptible
+interrupting
+interruption
+interruption's
+interruptions
+interruptive
+interrupts
+intersect
+intersected
+intersecting
+intersection
+intersection's
+intersections
+intersects
+intersperse
+interspersed
+intersperses
+interspersing
+interspersion
+interspersions
+interstage
+interstate
+intertask
+intertwine
+intertwined
+intertwines
+intertwining
+interval
+interval's
+intervals
+intervene
+intervened
+intervener
+intervenes
+intervening
+intervention
+intervention's
+interventions
+interview
+interviewed
+interviewee
+interviewee's
+interviewees
+interviewer
+interviewer's
+interviewers
+interviewing
+interviews
+interwoven
+intestinal
+intestinally
+intestine
+intestine's
+intestines
+intimacy
+intimate
+intimated
+intimately
+intimateness
+intimater
+intimates
+intimating
+intimation
+intimations
+intimidate
+intimidated
+intimidates
+intimidating
+intimidation
+into
+intolerability
+intolerable
+intolerableness
+intolerably
+intolerance
+intolerant
+intolerantly
+intolerantness
+intonation
+intonation's
+intonations
+intoned
+intoner
+intoxicate
+intoxicated
+intoxicatedly
+intoxicating
+intoxication
+intractability
+intractable
+intractableness
+intractably
+intramural
+intramurally
+intransigent
+intransigently
+intransigents
+intransitive
+intransitively
+intransitiveness
+intraprocess
+intricacies
+intricacy
+intricate
+intricately
+intricateness
+intrigue
+intrigued
+intriguer
+intrigues
+intriguing
+intriguingly
+intrinsic
+intrinsically
+intrinsics
+introduce
+introduced
+introducer
+introduces
+introducing
+introduction
+introduction's
+introductions
+introductory
+introspect
+introspection
+introspections
+introspective
+introspectively
+introspectiveness
+introvert
+introverted
+intrude
+intruded
+intruder
+intruder's
+intruders
+intrudes
+intruding
+intrusion
+intrusion's
+intrusions
+intrusive
+intrusively
+intrusiveness
+intrust
+intubate
+intubated
+intubates
+intubating
+intubation
+intuition
+intuition's
+intuitionist
+intuitions
+intuitive
+intuitively
+intuitiveness
+invade
+invaded
+invader
+invaders
+invades
+invading
+invalid
+invalidate
+invalidated
+invalidates
+invalidating
+invalidation
+invalidations
+invalidities
+invalidity
+invalidly
+invalidness
+invalids
+invaluable
+invaluableness
+invaluably
+invariability
+invariable
+invariableness
+invariably
+invariance
+invariant
+invariantly
+invariants
+invasion
+invasion's
+invasions
+invent
+invented
+inventing
+invention
+invention's
+inventions
+inventive
+inventively
+inventiveness
+inventor
+inventor's
+inventories
+inventors
+inventory
+inventory's
+invents
+inveracity
+inverse
+inversely
+inverses
+inversion
+inversions
+inversive
+invert
+invertebrate
+invertebrate's
+invertebrates
+inverted
+inverter
+inverters
+invertible
+inverting
+inverts
+invest
+invested
+investigate
+investigated
+investigates
+investigating
+investigation
+investigations
+investigative
+investigator
+investigator's
+investigators
+investing
+investment
+investment's
+investments
+investor
+investor's
+investors
+invests
+inviability
+inviable
+invincible
+invincibleness
+invisibility
+invisible
+invisibleness
+invisibly
+invitation
+invitation's
+invitations
+invite
+invited
+inviter
+invites
+inviting
+invitingly
+invocation
+invocation's
+invocations
+invoice
+invoiced
+invoices
+invoicing
+invokable
+invoke
+invoked
+invoker
+invokers
+invokes
+invoking
+involuntarily
+involuntariness
+involuntary
+involve
+involved
+involvedly
+involvement
+involvement's
+involvements
+involver
+involves
+involving
+invulnerable
+invulnerableness
+inward
+inwardly
+inwardness
+inwards
+inwrought
+ioctl
+iodine
+ion
+ions
+irate
+irately
+irateness
+ire
+ire's
+ires
+iris
+irises
+irk
+irked
+irking
+irks
+irksome
+irksomely
+irksomeness
+iron
+ironed
+ironer
+ironical
+ironically
+ironicalness
+ironies
+ironing
+ironings
+ironness
+irons
+ironwork
+ironwork's
+ironworker
+ironworks
+irony
+irrational
+irrationality
+irrationally
+irrationalness
+irrationals
+irrecoverable
+irrecoverableness
+irreducible
+irreducibly
+irreflexive
+irrefutable
+irregular
+irregularities
+irregularity
+irregularly
+irregulars
+irrelevance
+irrelevances
+irrelevant
+irrelevantly
+irrepressible
+irresistible
+irresistibleness
+irrespective
+irrespectively
+irresponsible
+irresponsibleness
+irresponsibly
+irreversible
+irrigate
+irrigated
+irrigates
+irrigating
+irrigation
+irrigations
+irritate
+irritated
+irritates
+irritating
+irritatingly
+irritation
+irritations
+irritative
+is
+island
+islander
+islanders
+islands
+isle
+isle's
+isles
+islet
+islet's
+islets
+isling
+isn't
+isolate
+isolated
+isolates
+isolating
+isolation
+isolations
+isometric
+isometrics
+isomorphic
+isomorphically
+isomorphism
+isomorphism's
+isomorphisms
+isotope
+isotope's
+isotopes
+ispell
+ispell's
+issuance
+issue
+issued
+issuer
+issuers
+issues
+issuing
+isthmus
+it
+it'd
+it'll
+it's
+italic
+italics
+itch
+itches
+itching
+item
+item's
+items
+iterate
+iterated
+iterates
+iterating
+iteration
+iterations
+iterative
+iteratively
+iterator
+iterator's
+iterators
+itineraries
+itinerary
+its
+itself
+iv
+ivied
+ivies
+ivories
+ivory
+ivy
+ivy's
+ix
+jab
+jab's
+jabbed
+jabbing
+jabs
+jack
+jacked
+jacker
+jacket
+jacketed
+jackets
+jacking
+jacks
+jade
+jaded
+jadedly
+jadedness
+jades
+jading
+jail
+jailed
+jailer
+jailers
+jailing
+jails
+jam
+jammed
+jamming
+jams
+janitor
+janitor's
+janitors
+jar
+jar's
+jargon
+jarred
+jarring
+jarringly
+jars
+jaunt
+jaunt's
+jaunted
+jauntier
+jauntiness
+jaunting
+jaunts
+jaunty
+javelin
+javelin's
+javelins
+jaw
+jaw's
+jawed
+jaws
+jay
+jazz
+jealous
+jealousies
+jealously
+jealousness
+jealousy
+jean
+jean's
+jeans
+jeep
+jeep's
+jeeped
+jeepers
+jeeping
+jeeps
+jeer
+jeer's
+jeerer
+jeers
+jellied
+jellies
+jelly
+jelly's
+jellyfish
+jellying
+jenny
+jerk
+jerked
+jerker
+jerkier
+jerkiness
+jerking
+jerkings
+jerks
+jerky
+jersey
+jersey's
+jerseys
+jest
+jested
+jester
+jesting
+jests
+jet
+jet's
+jets
+jetted
+jetting
+jewel
+jewelries
+jewelry
+jewels
+jig
+jig's
+jigs
+jingle
+jingled
+jingler
+jingles
+jingling
+job
+job's
+jobs
+jocks
+jocund
+jocundly
+jog
+jogs
+john
+john's
+johns
+join
+joined
+joiner
+joiners
+joining
+joins
+joint
+joint's
+jointed
+jointedly
+jointedness
+jointer
+jointing
+jointly
+jointness
+joints
+joke
+joked
+joker
+jokers
+jokes
+joking
+jokingly
+jollied
+jollier
+jollies
+jolly
+jollying
+jolt
+jolted
+jolter
+jolting
+jolts
+jostle
+jostled
+jostles
+jostling
+jot
+jots
+jotted
+jotting
+journal
+journal's
+journalism
+journalist
+journalist's
+journalistic
+journalists
+journals
+journey
+journeyed
+journeying
+journeyings
+journeys
+joust
+jousted
+jouster
+jousting
+jousts
+joy
+joy's
+joyful
+joyfully
+joyfulness
+joyous
+joyously
+joyousness
+joys
+jubilee
+judge
+judged
+judger
+judges
+judging
+judicable
+judicial
+judicially
+judiciaries
+judiciary
+judicious
+judiciously
+judiciousness
+jug
+jug's
+juggle
+juggled
+juggler
+jugglers
+juggles
+juggling
+jugs
+juice
+juice's
+juiced
+juicer
+juicers
+juices
+juicier
+juiciest
+juiciness
+juicing
+juicy
+jumble
+jumbled
+jumbles
+jumbling
+jump
+jumped
+jumper
+jumpers
+jumpier
+jumpiness
+jumping
+jumps
+jumpy
+junction
+junction's
+junctions
+juncture
+juncture's
+junctures
+jungle
+jungle's
+jungled
+jungles
+junior
+junior's
+juniors
+juniper
+junk
+junker
+junkers
+junkie
+junkies
+junks
+junky
+juries
+jurisdiction
+jurisdiction's
+jurisdictions
+juror
+juror's
+jurors
+jury
+jury's
+just
+juster
+justice
+justice's
+justices
+justifiable
+justifiably
+justification
+justifications
+justified
+justifier
+justifier's
+justifiers
+justifies
+justify
+justifying
+justing
+justly
+justness
+jut
+juvenile
+juvenile's
+juveniles
+juxtapose
+juxtaposed
+juxtaposes
+juxtaposing
+kHz
+keel
+keeled
+keeler
+keeling
+keels
+keen
+keener
+keenest
+keening
+keenly
+keenness
+keep
+keeper
+keepers
+keeping
+keeps
+ken
+kennel
+kennel's
+kennels
+kept
+kerchief
+kerchief's
+kerchiefed
+kerchiefs
+kernel
+kernel's
+kernels
+kerosene
+ketchup
+kettle
+kettle's
+kettles
+key
+keyboard
+keyboard's
+keyboarder
+keyboarding
+keyboards
+keyclick
+keyclick's
+keyclicks
+keyed
+keying
+keypad
+keypad's
+keypads
+keys
+keystroke
+keystroke's
+keystrokes
+keyword
+keyword's
+keywords
+kick
+kicked
+kicker
+kickers
+kicking
+kicks
+kid
+kid's
+kidded
+kidding
+kiddingly
+kidnap
+kidnap's
+kidnaps
+kidney
+kidney's
+kidneys
+kids
+kill
+killed
+killer
+killers
+killing
+killingly
+killings
+kills
+kilobit
+kilobits
+kilobyte
+kilobytes
+kin
+kind
+kinder
+kindergarten
+kindest
+kindhearted
+kindheartedly
+kindheartedness
+kindle
+kindled
+kindler
+kindles
+kindlier
+kindliness
+kindling
+kindly
+kindness
+kindnesses
+kindred
+kinds
+king
+kingdom
+kingdom's
+kingdoms
+kinglier
+kingliness
+kingly
+kings
+kinkier
+kinkiness
+kinky
+kinship
+kinsman
+kiss
+kissed
+kisser
+kissers
+kisses
+kissing
+kissings
+kit
+kit's
+kitchen
+kitchen's
+kitchener
+kitchens
+kite
+kited
+kiter
+kites
+kiting
+kits
+kitsch
+kitten
+kitten's
+kittened
+kittening
+kittens
+kitties
+kitty
+kludge
+kludge's
+kludged
+kludger
+kludger's
+kludgers
+kludges
+kludgey
+kludging
+klutz
+klutz's
+klutzes
+klutziness
+klutzy
+knack
+knacker
+knacks
+knapsack
+knapsack's
+knapsacks
+knave
+knave's
+knaves
+knead
+kneaded
+kneader
+kneading
+kneads
+knee
+kneed
+kneeing
+kneel
+kneeled
+kneeler
+kneeling
+kneels
+knees
+knell
+knell's
+knells
+knelt
+knew
+knife
+knifed
+knifes
+knifing
+knight
+knighted
+knighthood
+knighting
+knightliness
+knightly
+knights
+knit
+knits
+knives
+knob
+knob's
+knobs
+knock
+knocked
+knocker
+knockers
+knocking
+knocks
+knoll
+knoll's
+knolls
+knot
+knot's
+knots
+knotted
+knotting
+know
+knowable
+knower
+knowhow
+knowing
+knowingly
+knowledge
+knowledgeable
+knowledgeableness
+knowledges
+known
+knows
+knuckle
+knuckled
+knuckles
+knuckling
+kudos
+lab
+lab's
+label
+label's
+labels
+laboratories
+laboratory
+laboratory's
+labs
+labyrinth
+labyrinths
+lace
+laced
+lacer
+lacerate
+lacerated
+lacerates
+lacerating
+laceration
+lacerations
+lacerative
+laces
+lacing
+lack
+lackadaisical
+lackadaisically
+lacked
+lacker
+lacking
+lacks
+lacquer
+lacquered
+lacquerer
+lacquerers
+lacquering
+lacquers
+lad
+ladder
+ladders
+laded
+laden
+ladened
+ladening
+ladies
+lading
+lads
+lady
+lady's
+lag
+lager
+lagers
+lagged
+lagoon
+lagoon's
+lagoons
+lags
+laid
+lain
+lair
+lair's
+lairs
+lake
+lake's
+laker
+lakes
+laking
+lamb
+lamb's
+lambda
+lambda's
+lambdas
+lamber
+lambs
+lame
+lamed
+lamely
+lameness
+lament
+lamentable
+lamentableness
+lamentation
+lamentation's
+lamentations
+lamented
+lamenting
+laments
+lamer
+lames
+lamest
+laminar
+laming
+lamp
+lamp's
+lamper
+lamps
+lance
+lanced
+lancer
+lancers
+lances
+lancing
+land
+landed
+lander
+landers
+landing
+landings
+landladies
+landlady
+landlady's
+landlord
+landlord's
+landlords
+landmark
+landmark's
+landmarks
+landowner
+landowner's
+landowners
+lands
+landscape
+landscaped
+landscaper
+landscapes
+landscaping
+lane
+lane's
+lanes
+language
+language's
+languages
+languid
+languidly
+languidness
+languish
+languished
+languisher
+languishes
+languishing
+languishingly
+lantern
+lantern's
+lanterns
+lap
+lap's
+lapel
+lapel's
+lapels
+laps
+lapse
+lapsed
+lapser
+lapses
+lapsing
+lard
+larded
+larder
+larding
+lards
+large
+largely
+largeness
+larger
+largest
+lark
+lark's
+larker
+larks
+larva
+larvae
+larvas
+laser
+laser's
+lasers
+lash
+lashed
+lasher
+lashes
+lashing
+lashings
+lass
+lass's
+lasses
+last
+lasted
+laster
+lasting
+lastingly
+lastingness
+lastly
+lasts
+latch
+latched
+latches
+latching
+late
+lated
+lately
+latencies
+latency
+latency's
+lateness
+latent
+latently
+latents
+later
+lateral
+laterally
+latest
+latex
+latex's
+latexes
+lath
+lather
+lathered
+latherer
+lathering
+lathes
+lathing
+latitude
+latitude's
+latitudes
+latrine
+latrine's
+latrines
+latter
+latter's
+latterly
+lattice
+lattice's
+latticed
+lattices
+latticing
+laugh
+laughable
+laughableness
+laughably
+laughed
+laugher
+laughers
+laughing
+laughingly
+laughs
+laughter
+laughters
+launch
+launched
+launcher
+launchers
+launches
+launching
+launchings
+launder
+laundered
+launderer
+laundering
+launderings
+launders
+laundries
+laundry
+laurel
+laurel's
+laurels
+lava
+lavatories
+lavatory
+lavatory's
+lavender
+lavendered
+lavendering
+lavish
+lavished
+lavishing
+lavishly
+lavishness
+law
+law's
+lawful
+lawfully
+lawfulness
+lawless
+lawlessly
+lawlessness
+lawn
+lawn's
+lawns
+laws
+lawsuit
+lawsuit's
+lawsuits
+lawyer
+lawyer's
+lawyerly
+lawyers
+lay
+layer
+layered
+layering
+layers
+laying
+layman
+laymen
+layoffs
+layout
+layout's
+layouts
+lays
+lazed
+lazied
+lazier
+laziest
+lazily
+laziness
+lazing
+lazy
+lazying
+lead
+leaded
+leaden
+leadenly
+leadenness
+leader
+leader's
+leaders
+leadership
+leadership's
+leaderships
+leading
+leadings
+leads
+leaf
+leafed
+leafier
+leafiest
+leafing
+leafless
+leaflet
+leaflet's
+leaflets
+leafs
+leafy
+league
+leagued
+leaguer
+leaguers
+leagues
+leaguing
+leak
+leakage
+leakage's
+leakages
+leaked
+leaker
+leaking
+leaks
+lean
+leaned
+leaner
+leanest
+leaning
+leanings
+leanly
+leanness
+leans
+leap
+leaped
+leaper
+leaping
+leaps
+leapt
+learn
+learned
+learnedly
+learnedness
+learner
+learners
+learning
+learnings
+learns
+lease
+leased
+leases
+leash
+leash's
+leashes
+leasing
+least
+leather
+leathered
+leathering
+leathern
+leathers
+leave
+leaved
+leaven
+leavened
+leavening
+leaver
+leavers
+leaves
+leaving
+leavings
+lecture
+lectured
+lecturer
+lecturers
+lectures
+lecturing
+led
+ledge
+ledger
+ledgers
+ledges
+lee
+leech
+leech's
+leeches
+leer
+leered
+leering
+leers
+lees
+left
+leftist
+leftist's
+leftists
+leftmost
+leftover
+leftover's
+leftovers
+lefts
+leftward
+leftwards
+leg
+legacies
+legacy
+legacy's
+legal
+legalities
+legality
+legally
+legals
+legend
+legend's
+legendary
+legends
+legged
+leggings
+legibility
+legible
+legibly
+legion
+legion's
+legions
+legislate
+legislated
+legislates
+legislating
+legislation
+legislations
+legislative
+legislatively
+legislator
+legislator's
+legislators
+legislature
+legislature's
+legislatures
+legitimacy
+legitimate
+legitimated
+legitimately
+legitimates
+legitimating
+legitimation
+legs
+leisure
+leisured
+leisureliness
+leisurely
+lemma
+lemma's
+lemmas
+lemon
+lemon's
+lemonade
+lemons
+lend
+lender
+lenders
+lending
+lends
+length
+lengthen
+lengthened
+lengthener
+lengthening
+lengthens
+lengthier
+lengthiness
+lengthly
+lengths
+lengthwise
+lengthy
+leniency
+lenient
+leniently
+lens
+lens's
+lensed
+lenser
+lensers
+lenses
+lensing
+lensings
+lent
+lentil
+lentil's
+lentils
+leopard
+leopard's
+leopards
+leprosy
+less
+lessen
+lessened
+lessening
+lessens
+lesser
+lesses
+lessing
+lesson
+lesson's
+lessoned
+lessoning
+lessons
+lest
+lester
+let
+let's
+lets
+letter
+lettered
+letterer
+lettering
+letters
+letting
+lettuce
+levee
+levee's
+leveed
+levees
+level
+levelly
+levelness
+levels
+lever
+lever's
+leverage
+leveraged
+leverages
+leveraging
+levered
+levering
+levers
+levied
+levier
+levies
+levy
+levying
+lewd
+lewdly
+lewdness
+lexical
+lexically
+lexicographic
+lexicographical
+lexicographically
+lexicon
+lexicon's
+lexicons
+liabilities
+liability
+liability's
+liable
+liableness
+liaison
+liaison's
+liaisons
+liar
+liar's
+liars
+liberal
+liberally
+liberalness
+liberals
+liberate
+liberated
+liberates
+liberating
+liberation
+liberator
+liberator's
+liberators
+liberties
+liberty
+liberty's
+libido
+librarian
+librarian's
+librarians
+libraries
+library
+library's
+libretti
+license
+licensed
+licensee
+licensee's
+licensees
+licenser
+licenses
+licensing
+lichen
+lichen's
+lichened
+lichens
+lick
+licked
+licker
+licking
+licks
+lid
+lid's
+lids
+lie
+lied
+lieder
+liege
+lien
+lien's
+liens
+lier
+lies
+lieu
+lieutenant
+lieutenant's
+lieutenants
+life
+life's
+lifeless
+lifelessly
+lifelessness
+lifelike
+lifelikeness
+lifelong
+lifer
+lifers
+lifestyle
+lifestyles
+lifetime
+lifetime's
+lifetimes
+lift
+lifted
+lifter
+lifters
+lifting
+lifts
+light
+lighted
+lighten
+lightened
+lightener
+lightening
+lightens
+lighter
+lighter's
+lighters
+lightest
+lighthouse
+lighthouse's
+lighthouses
+lighting
+lightly
+lightness
+lightning
+lightning's
+lightninged
+lightnings
+lights
+lightweight
+lightweights
+like
+liked
+likelier
+likeliest
+likelihood
+likelihoods
+likeliness
+likely
+liken
+likened
+likeness
+likeness's
+likenesses
+likening
+likens
+liker
+likes
+likest
+likewise
+liking
+likings
+lilac
+lilac's
+lilacs
+lilied
+lilies
+lily
+lily's
+limb
+limbed
+limber
+limbered
+limbering
+limberly
+limberness
+limbers
+limbs
+lime
+lime's
+limed
+limes
+limestone
+liming
+limit
+limitability
+limitably
+limitation
+limitation's
+limitations
+limited
+limitedly
+limitedness
+limiteds
+limiter
+limiters
+limiting
+limits
+limp
+limped
+limper
+limping
+limply
+limpness
+limps
+linden
+line
+line's
+linear
+linearities
+linearity
+linearly
+lined
+linen
+linen's
+linens
+liner
+liners
+lines
+linger
+lingered
+lingerer
+lingering
+lingeringly
+lingers
+linguist
+linguist's
+linguistic
+linguistically
+linguistics
+linguists
+lining
+linings
+link
+linkage
+linkage's
+linkages
+linked
+linker
+linkers
+linking
+linkings
+links
+linoleum
+linseed
+lint
+linter
+lints
+lion
+lion's
+lioness
+lioness's
+lionesses
+lions
+lip
+lip's
+lips
+lipstick
+liquefied
+liquefier
+liquefiers
+liquefies
+liquefy
+liquefying
+liquid
+liquid's
+liquidation
+liquidation's
+liquidations
+liquidity
+liquidly
+liquidness
+liquids
+liquor
+liquor's
+liquored
+liquoring
+liquors
+lisp
+lisp's
+lisped
+lisper
+lisping
+lisps
+list
+listed
+listen
+listened
+listener
+listeners
+listening
+listens
+lister
+listers
+listing
+listing's
+listings
+lists
+lit
+literacy
+literal
+literally
+literalness
+literals
+literariness
+literary
+literate
+literately
+literateness
+literation
+literature
+literature's
+literatures
+lithe
+lithely
+litheness
+litigate
+litigated
+litigates
+litigating
+litigation
+litigator
+litter
+littered
+litterer
+littering
+litters
+little
+littleness
+littler
+littlest
+livable
+livableness
+livably
+live
+lived
+livelier
+liveliest
+livelihood
+liveliness
+lively
+liven
+livened
+liveness
+livening
+liver
+liveried
+livers
+livery
+lives
+livest
+liveth
+living
+livingly
+livingness
+livings
+lizard
+lizard's
+lizards
+load
+loaded
+loader
+loaders
+loading
+loadings
+loads
+loaf
+loafed
+loafer
+loafers
+loafing
+loafs
+loan
+loaned
+loaner
+loaning
+loans
+loath
+loathe
+loathed
+loather
+loathes
+loathing
+loathly
+loathness
+loathsome
+loathsomely
+loathsomeness
+loaves
+lobbied
+lobbies
+lobby
+lobbying
+lobe
+lobe's
+lobed
+lobes
+lobster
+lobster's
+lobsters
+local
+localities
+locality
+locality's
+locally
+locals
+locate
+located
+locater
+locates
+locating
+location
+locations
+locative
+locatives
+locator
+locator's
+locators
+loci
+lock
+locked
+locker
+lockers
+locking
+lockings
+lockout
+lockout's
+lockouts
+locks
+lockup
+lockup's
+lockups
+locomotion
+locomotive
+locomotive's
+locomotively
+locomotives
+locus
+locus's
+locust
+locust's
+locusts
+lodge
+lodged
+lodger
+lodger's
+lodgers
+lodges
+lodging
+lodgings
+loft
+loft's
+lofter
+loftier
+loftiness
+lofts
+lofty
+log
+log's
+logarithm
+logarithm's
+logarithmically
+logarithms
+logged
+logger
+logger's
+loggers
+logging
+logic
+logic's
+logical
+logically
+logicalness
+logicals
+logician
+logician's
+logicians
+logics
+login
+logins
+logistic
+logistics
+logout
+logs
+loin
+loin's
+loins
+loiter
+loitered
+loiterer
+loitering
+loiters
+lone
+lonelier
+loneliest
+loneliness
+lonely
+loneness
+loner
+loners
+lonesome
+lonesomely
+lonesomeness
+long
+longed
+longer
+longest
+longing
+longingly
+longings
+longitude
+longitude's
+longitudes
+longly
+longness
+longs
+longword
+longword's
+longwords
+look
+lookahead
+looked
+looker
+lookers
+looking
+lookout
+lookouts
+looks
+lookup
+lookup's
+lookups
+loom
+loomed
+looming
+looms
+loon
+loop
+looped
+looper
+loophole
+loophole's
+loopholed
+loopholes
+loopholing
+looping
+loops
+loose
+loosed
+loosely
+loosen
+loosened
+loosener
+looseness
+loosening
+loosens
+looser
+looses
+loosest
+loosing
+loot
+looted
+looter
+looting
+loots
+lord
+lord's
+lording
+lordlier
+lordliness
+lordly
+lords
+lordship
+lore
+lorries
+lorry
+lose
+loser
+losers
+loses
+losing
+losings
+loss
+loss's
+losses
+lossier
+lossiest
+lossy
+lost
+lostness
+lot
+lot's
+lots
+lotteries
+lottery
+lotus
+loud
+louden
+loudened
+loudening
+louder
+loudest
+loudly
+loudness
+loudspeaker
+loudspeaker's
+loudspeakers
+lounge
+lounged
+lounger
+loungers
+lounges
+lounging
+lousier
+lousiness
+lousy
+lovable
+lovableness
+lovably
+love
+love's
+loved
+lovelier
+lovelies
+loveliest
+loveliness
+lovely
+lover
+lover's
+lovering
+loverly
+lovers
+loves
+loving
+lovingly
+lovingness
+low
+lower
+lowered
+lowering
+lowers
+lowest
+lowing
+lowland
+lowlander
+lowlands
+lowlier
+lowliest
+lowliness
+lowly
+lowness
+lows
+loyal
+loyally
+loyalties
+loyalty
+loyalty's
+lubricant
+lubricant's
+lubricants
+lubrication
+luck
+lucked
+luckier
+luckiest
+luckily
+luckiness
+luckless
+lucks
+lucky
+ludicrous
+ludicrously
+ludicrousness
+luggage
+lukewarm
+lukewarmly
+lukewarmness
+lull
+lullaby
+lulled
+lulls
+lumber
+lumbered
+lumberer
+lumbering
+lumbers
+luminous
+luminously
+luminousness
+lump
+lumped
+lumpen
+lumper
+lumping
+lumps
+lunar
+lunatic
+lunatics
+lunch
+lunched
+luncheon
+luncheon's
+luncheons
+luncher
+lunches
+lunching
+lung
+lunged
+lunger
+lunging
+lungs
+lurch
+lurched
+lurcher
+lurches
+lurching
+lure
+lured
+lurer
+lures
+luring
+lurk
+lurked
+lurker
+lurkers
+lurking
+lurks
+luscious
+lusciously
+lusciousness
+lust
+lustier
+lustily
+lustiness
+lusting
+lustrous
+lustrously
+lustrousness
+lusts
+lusty
+lute
+lute's
+luted
+lutes
+luting
+luxuriant
+luxuriantly
+luxuries
+luxurious
+luxuriously
+luxuriousness
+luxury
+luxury's
+lying
+lyingly
+lyings
+lymph
+lynch
+lynched
+lyncher
+lynches
+lynx
+lynx's
+lynxes
+lyre
+lyre's
+lyres
+lyric
+lyrics
+ma'am
+macaroni
+macaroni's
+mace
+maced
+macer
+maces
+machine
+machine's
+machined
+machineries
+machinery
+machines
+machining
+macing
+macro
+macro's
+macroeconomics
+macromolecule
+macromolecule's
+macromolecules
+macros
+macroscopic
+mad
+madam
+madams
+madden
+maddened
+maddening
+maddeningly
+madder
+maddest
+made
+mademoiselle
+mademoiselles
+madly
+madman
+madness
+madras
+magazine
+magazine's
+magazined
+magazines
+magazining
+maggot
+maggot's
+maggots
+magic
+magical
+magically
+magician
+magician's
+magicians
+magistrate
+magistrate's
+magistrates
+magnesium
+magnesiums
+magnet
+magnet's
+magnetic
+magnetically
+magnetics
+magnetism
+magnetism's
+magnetisms
+magnets
+magnification
+magnifications
+magnificence
+magnificent
+magnificently
+magnified
+magnifier
+magnifiers
+magnifies
+magnify
+magnifying
+magnitude
+magnitude's
+magnitudes
+mahogany
+maid
+maid's
+maiden
+maidenliness
+maidenly
+maidens
+maids
+mail
+mailable
+mailbox
+mailbox's
+mailboxes
+mailed
+mailer
+mailer's
+mailers
+mailing
+mailings
+mails
+maim
+maimed
+maimedness
+maimer
+maimers
+maiming
+maims
+main
+mainframe
+mainframe's
+mainframes
+mainland
+mainlander
+mainlanders
+mainly
+mains
+mainstay
+maintain
+maintainability
+maintainable
+maintained
+maintainer
+maintainer's
+maintainers
+maintaining
+maintains
+maintenance
+maintenance's
+maintenances
+majestic
+majesties
+majesty
+majesty's
+major
+majored
+majoring
+majorities
+majority
+majority's
+majors
+makable
+make
+makefile
+makefiles
+maker
+makers
+makes
+makeshift
+makeshifts
+makeup
+makeups
+making
+makings
+maladies
+malady
+malady's
+malaria
+male
+male's
+malefactor
+malefactor's
+malefactors
+maleness
+males
+malfunction
+malfunctioned
+malfunctioning
+malfunctions
+malice
+malicious
+maliciously
+maliciousness
+malignant
+malignantly
+mall
+mall's
+mallet
+mallet's
+mallets
+malls
+malnutrition
+malt
+malted
+malting
+malts
+mama
+mamma
+mamma's
+mammal
+mammal's
+mammals
+mammas
+mammoth
+man
+man's
+manage
+manageable
+manageableness
+managed
+management
+management's
+managements
+manager
+manager's
+managerial
+managerially
+managers
+manages
+managing
+mandate
+mandated
+mandates
+mandating
+mandatories
+mandatory
+mandible
+mandolin
+mandolin's
+mandolins
+mane
+mane's
+maned
+manes
+manger
+manger's
+mangers
+mangle
+mangled
+mangler
+mangles
+mangling
+manhood
+maniac
+maniac's
+maniacs
+manicure
+manicured
+manicures
+manicuring
+manifest
+manifestation
+manifestation's
+manifestations
+manifested
+manifesting
+manifestly
+manifestness
+manifests
+manifold
+manifold's
+manifolder
+manifoldly
+manifoldness
+manifolds
+manipulability
+manipulable
+manipulatable
+manipulate
+manipulated
+manipulates
+manipulating
+manipulation
+manipulations
+manipulative
+manipulativeness
+manipulator
+manipulator's
+manipulators
+manipulatory
+mankind
+manlier
+manliest
+manliness
+manly
+manned
+manner
+mannered
+mannerliness
+mannerly
+manners
+manning
+manometer
+manometer's
+manometers
+manor
+manor's
+manors
+manpower
+mans
+mansion
+mansion's
+mansions
+mantel
+mantel's
+mantels
+mantissa
+mantissa's
+mantissas
+mantle
+mantle's
+mantled
+mantles
+mantling
+manual
+manual's
+manually
+manuals
+manufacture
+manufactured
+manufacturer
+manufacturer's
+manufacturers
+manufactures
+manufacturing
+manure
+manured
+manurer
+manurers
+manures
+manuring
+manuscript
+manuscript's
+manuscripts
+many
+map
+map's
+maple
+maple's
+maples
+mappable
+mapped
+mapping
+mapping's
+mappings
+maps
+mar
+marble
+marbled
+marbler
+marbles
+marbling
+march
+marched
+marcher
+marches
+marching
+mare
+mare's
+mares
+margin
+margin's
+marginal
+marginally
+marginals
+margined
+margining
+margins
+marigold
+marigold's
+marigolds
+marijuana
+marijuana's
+marinate
+marinated
+marinates
+marinating
+marine
+mariner
+marines
+maritime
+maritimer
+mark
+markable
+marked
+markedly
+marker
+markers
+market
+marketability
+marketable
+marketed
+marketer
+marketing
+marketings
+marketplace
+marketplace's
+marketplaces
+markets
+marking
+markings
+marks
+marquis
+marquises
+marriage
+marriage's
+marriages
+married
+marries
+marrow
+marrows
+marry
+marrying
+mars
+marsh
+marsh's
+marshal
+marshaled
+marshaler
+marshalers
+marshaling
+marshals
+marshes
+mart
+marten
+martens
+martial
+martially
+marts
+martyr
+martyr's
+martyrdom
+martyrs
+marvel
+marvels
+masculine
+masculinely
+masculineness
+masculinity
+mash
+mashed
+masher
+mashers
+mashes
+mashing
+mashings
+mask
+masked
+masker
+masking
+maskings
+masks
+masochist
+masochist's
+masochists
+mason
+mason's
+masoned
+masoning
+masonry
+masons
+masquerade
+masquerader
+masquerades
+masquerading
+mass
+massacre
+massacred
+massacrer
+massacres
+massacring
+massage
+massaged
+massager
+massages
+massaging
+massed
+masses
+massing
+massinger
+massive
+massively
+massiveness
+mast
+masted
+master
+master's
+mastered
+masterful
+masterfully
+masterfulness
+mastering
+masterings
+masterliness
+masterly
+masterpiece
+masterpiece's
+masterpieces
+masters
+mastery
+masts
+masturbate
+masturbated
+masturbates
+masturbating
+masturbation
+mat
+mat's
+match
+matchable
+matched
+matcher
+matchers
+matches
+matching
+matchings
+matchless
+matchlessly
+matchmaker
+matchmaker's
+matchmakers
+matchmaking
+matchmaking's
+mate
+mate's
+mated
+mater
+material
+materialism
+materialism's
+materially
+materialness
+materials
+maternal
+maternally
+mates
+math
+mathematical
+mathematically
+mathematician
+mathematician's
+mathematicians
+mathematics
+mating
+matings
+matrices
+matriculation
+matrimony
+matrix
+matrixes
+matron
+matronly
+mats
+matted
+matter
+mattered
+mattering
+matters
+mattress
+mattress's
+mattresses
+maturation
+mature
+matured
+maturely
+matureness
+maturer
+matures
+maturing
+maturities
+maturity
+max
+maxim
+maxim's
+maximal
+maximally
+maxims
+maximum
+maximumly
+maximums
+may
+maybe
+mayer
+mayest
+mayhap
+mayhem
+maying
+mayonnaise
+mayor
+mayor's
+mayoral
+mayors
+mays
+maze
+maze's
+mazed
+mazedly
+mazedness
+mazednesses
+mazer
+mazes
+mazing
+me
+mead
+meadow
+meadow's
+meadows
+meads
+meager
+meagerly
+meagerness
+meal
+meal's
+meals
+mean
+meander
+meandered
+meandering
+meanderings
+meanders
+meaner
+meanest
+meaning
+meaning's
+meaningful
+meaningfully
+meaningfulness
+meaningless
+meaninglessly
+meaninglessness
+meanings
+meanly
+meanness
+means
+meant
+meantime
+meanwhile
+measles
+measurable
+measurably
+measure
+measured
+measuredly
+measurement
+measurement's
+measurements
+measurer
+measures
+measuring
+meat
+meat's
+meats
+mechanic
+mechanic's
+mechanical
+mechanically
+mechanicals
+mechanics
+mechanism
+mechanism's
+mechanisms
+med
+medal
+medal's
+medallion
+medallion's
+medallions
+medals
+meddle
+meddled
+meddler
+meddles
+meddling
+media
+median
+median's
+medianly
+medians
+medias
+mediate
+mediated
+mediately
+mediateness
+mediates
+mediating
+mediation
+mediations
+mediative
+medic
+medic's
+medical
+medically
+medicinal
+medicinally
+medicine
+medicine's
+medicines
+medics
+medieval
+medieval's
+medievally
+medievals
+meditate
+meditated
+meditates
+meditating
+meditation
+meditations
+meditative
+meditatively
+meditativeness
+medium
+medium's
+mediums
+meek
+meeker
+meekest
+meekly
+meekness
+meet
+meeter
+meeting
+meetings
+meetly
+meets
+megabit
+megabits
+megabyte
+megabytes
+megaword
+megawords
+melancholy
+meld
+melding
+melds
+mellow
+mellowed
+mellowing
+mellowly
+mellowness
+mellows
+melodies
+melodious
+melodiously
+melodiousness
+melodrama
+melodrama's
+melodramas
+melody
+melody's
+melon
+melon's
+melons
+melt
+melted
+melter
+melting
+meltingly
+melts
+member
+member's
+membered
+members
+membership
+membership's
+memberships
+membrane
+membrane's
+membraned
+membranes
+memo
+memo's
+memoir
+memoirs
+memorability
+memorable
+memorableness
+memoranda
+memorandum
+memorandums
+memorial
+memorially
+memorials
+memories
+memory
+memory's
+memoryless
+memos
+men
+men's
+menace
+menaced
+menaces
+menacing
+menacingly
+menagerie
+menageries
+mend
+mended
+mender
+mending
+mends
+menial
+menially
+menials
+mens
+mensed
+menses
+mensing
+mental
+mentalities
+mentality
+mentally
+mention
+mentionable
+mentioned
+mentioner
+mentioners
+mentioning
+mentions
+mentor
+mentor's
+mentors
+menu
+menu's
+menus
+mer
+mercenaries
+mercenariness
+mercenary
+mercenary's
+merchandise
+merchandised
+merchandiser
+merchandises
+merchandising
+merchant
+merchant's
+merchants
+mercies
+merciful
+mercifully
+mercifulness
+merciless
+mercilessly
+mercilessness
+mercuries
+mercury
+mercy
+mere
+merely
+merest
+merge
+merged
+merger
+mergers
+merges
+merging
+meridian
+meridians
+merit
+merited
+meriting
+meritorious
+meritoriously
+meritoriousness
+merits
+merrier
+merriest
+merrily
+merriment
+merriments
+merriness
+merry
+mesh
+meshed
+meshes
+meshing
+mess
+message
+message's
+messaged
+messages
+messaging
+messed
+messenger
+messenger's
+messengers
+messes
+messiah
+messiahs
+messier
+messiest
+messieurs
+messily
+messiness
+messing
+messy
+met
+meta
+metacircular
+metacircularity
+metal
+metal's
+metalanguage
+metalanguages
+metallic
+metallurgy
+metals
+metamathematical
+metamorphosis
+metaphor
+metaphor's
+metaphorical
+metaphorically
+metaphors
+metaphysical
+metaphysically
+metaphysics
+metavariable
+mete
+meted
+meteor
+meteor's
+meteoric
+meteorology
+meteors
+meter
+meter's
+metered
+metering
+meters
+metes
+method
+method's
+methodical
+methodically
+methodicalness
+methodist
+methodist's
+methodists
+methodological
+methodologically
+methodologies
+methodologists
+methodology
+methodology's
+methods
+meting
+metric
+metric's
+metrical
+metrically
+metrics
+metropolis
+metropolitan
+mets
+mew
+mewed
+mews
+mica
+mice
+microbicidal
+microbicide
+microcode
+microcoded
+microcodes
+microcoding
+microcomputer
+microcomputer's
+microcomputers
+microeconomics
+microfilm
+microfilm's
+microfilmed
+microfilmer
+microfilms
+microinstruction
+microinstruction's
+microinstructions
+microphone
+microphones
+microphoning
+microprocessing
+microprocessor
+microprocessor's
+microprocessors
+microprogram
+microprogram's
+microprogrammed
+microprogramming
+microprograms
+microscope
+microscope's
+microscopes
+microscopic
+microsecond
+microsecond's
+microseconds
+microstore
+microwave
+microwave's
+microwaves
+microword
+microwords
+mid
+midday
+middle
+middled
+middler
+middles
+middling
+middlingly
+middlings
+midnight
+midnightly
+midnights
+midpoint
+midpoint's
+midpoints
+midst
+midsts
+midsummer
+midway
+midways
+midwinter
+midwinterly
+mien
+miens
+mies
+miff
+miffed
+miffing
+miffs
+might
+mightier
+mightiest
+mightily
+mightiness
+mights
+mighty
+migrate
+migrated
+migrates
+migrating
+migration
+migrations
+migrative
+mild
+milden
+milder
+mildest
+mildew
+mildews
+mildly
+mildness
+mile
+mile's
+mileage
+mileages
+miler
+miles
+milestone
+milestone's
+milestones
+militant
+militantly
+militantness
+militants
+militaries
+militarily
+militarism
+militarisms
+military
+militia
+militias
+milk
+milked
+milker
+milkers
+milkier
+milkiness
+milking
+milkmaid
+milkmaid's
+milkmaids
+milks
+milky
+mill
+milled
+miller
+millers
+millet
+milling
+million
+millionaire
+millionaire's
+millionaires
+millioned
+millions
+millionth
+millipede
+millipede's
+millipedes
+millisecond
+milliseconds
+mills
+millstone
+millstone's
+millstones
+mimic
+mimicked
+mimicking
+mimics
+mince
+minced
+mincer
+mincers
+minces
+mincing
+mincingly
+mind
+minded
+mindedness
+minder
+minders
+mindful
+mindfully
+mindfulness
+minding
+mindless
+mindlessly
+mindlessness
+minds
+mine
+mined
+miner
+mineral
+mineral's
+minerals
+miners
+mines
+ming
+mingle
+mingled
+mingles
+mingling
+miniature
+miniature's
+miniatured
+miniatures
+miniaturing
+minicomputer
+minicomputer's
+minicomputers
+minimal
+minimally
+minimum
+minimums
+mining
+minion
+minions
+minister
+minister's
+ministered
+ministering
+ministers
+ministries
+ministry
+ministry's
+mink
+mink's
+minks
+minnow
+minnow's
+minnows
+minor
+minor's
+minored
+minoring
+minorities
+minority
+minority's
+minors
+minstrel
+minstrel's
+minstrels
+mint
+minted
+minter
+minting
+mints
+minus
+minuses
+minute
+minuted
+minutely
+minuteness
+minuter
+minutes
+minutest
+minuting
+miracle
+miracle's
+miracles
+miraculous
+miraculously
+miraculousness
+mire
+mired
+mires
+miring
+mirror
+mirrored
+mirroring
+mirrors
+mirth
+misapplication
+misapplied
+misapplier
+misapplies
+misapply
+misapplying
+misbehaving
+miscalculation
+miscalculation's
+miscalculations
+miscellaneous
+miscellaneously
+miscellaneousness
+mischief
+mischievous
+mischievously
+mischievousness
+miscommunicate
+miscommunicated
+miscommunicates
+miscommunication
+misconception
+misconception's
+misconceptions
+misconstrue
+misconstrued
+misconstrues
+misconstruing
+misdirect
+misdirected
+misdirection
+misdirects
+miser
+miserable
+miserableness
+miserably
+miseries
+miserliness
+miserly
+misers
+misery
+misery's
+misfeature
+misfit
+misfit's
+misfits
+misfortune
+misfortune's
+misfortunes
+misgiving
+misgivingly
+misgivings
+misguide
+misguided
+misguidedly
+misguidedness
+misguider
+misguides
+misguiding
+mishap
+mishap's
+mishaps
+misinform
+misinformation
+misinformed
+misinforming
+misinforms
+misinterpret
+misinterpreted
+misinterpreter
+misinterpreters
+misinterpreting
+misinterprets
+mislead
+misleader
+misleading
+misleadingly
+misleadings
+misleads
+misled
+mismatch
+mismatched
+mismatches
+mismatching
+misnomer
+misnomered
+misperceive
+misperceived
+misperceives
+misplace
+misplaced
+misplaces
+misplacing
+misread
+misreader
+misreading
+misreads
+misrepresentation
+misrepresentation's
+misrepresentations
+miss
+missed
+misses
+missile
+missile's
+missiles
+missing
+mission
+missionaries
+missionary
+missionary's
+missioned
+missioner
+missioning
+missions
+missive
+missives
+misspell
+misspelled
+misspelling
+misspellings
+misspells
+misstate
+misstated
+misstater
+misstates
+misstating
+mist
+mistakable
+mistake
+mistaken
+mistakenly
+mistaker
+mistakes
+mistaking
+mistakingly
+misted
+mister
+mistered
+mistering
+misters
+mistier
+mistiest
+mistiness
+misting
+mistreat
+mistreated
+mistreating
+mistreats
+mistress
+mistressly
+mistrust
+mistrusted
+mistruster
+mistrusting
+mistrusts
+mists
+misty
+mistype
+mistyped
+mistypes
+mistyping
+misunderstand
+misunderstander
+misunderstanders
+misunderstanding
+misunderstanding's
+misunderstandings
+misunderstands
+misunderstood
+misuse
+misused
+misuser
+misuses
+misusing
+mite
+mites
+mitigate
+mitigated
+mitigates
+mitigating
+mitigation
+mitigations
+mitigative
+mitten
+mitten's
+mittens
+mix
+mixed
+mixer
+mixers
+mixes
+mixing
+mixture
+mixture's
+mixtures
+ml
+mnemonic
+mnemonic's
+mnemonically
+mnemonics
+moan
+moaned
+moaning
+moans
+moat
+moat's
+moats
+mob
+mob's
+mobility
+mobs
+moccasin
+moccasin's
+moccasins
+mock
+mocked
+mocker
+mockers
+mockery
+mocking
+mockingly
+mocks
+modal
+modalities
+modality
+modality's
+modally
+mode
+model
+model's
+models
+modem
+modems
+moderate
+moderated
+moderately
+moderateness
+moderates
+moderating
+moderation
+moderations
+moderator
+moderator's
+moderators
+modern
+modernity
+modernly
+modernness
+moderns
+modes
+modest
+modestly
+modesty
+modifiability
+modifiable
+modifiableness
+modification
+modifications
+modified
+modifier
+modifiers
+modifies
+modify
+modifying
+modular
+modularities
+modularity
+modularly
+modulate
+modulated
+modulates
+modulating
+modulation
+modulations
+modulator
+modulator's
+modulators
+module
+module's
+modules
+modulo
+modulus
+modus
+moist
+moisten
+moistened
+moistener
+moistening
+moistly
+moistness
+moisture
+moistures
+molasses
+mold
+molded
+molder
+moldered
+moldering
+molders
+moldier
+moldiness
+molding
+molds
+moldy
+mole
+molecular
+molecularly
+molecule
+molecule's
+molecules
+moles
+molest
+molested
+molester
+molesters
+molesting
+molests
+molten
+mom
+mom's
+moment
+moment's
+momentarily
+momentariness
+momentary
+momently
+momentous
+momentously
+momentousness
+moments
+momentum
+momentums
+moms
+monarch
+monarchies
+monarchs
+monarchy
+monarchy's
+monasteries
+monastery
+monastery's
+monastic
+monetary
+money
+money's
+moneyed
+moneyer
+moneys
+monitor
+monitored
+monitoring
+monitors
+monk
+monk's
+monkey
+monkeyed
+monkeying
+monkeys
+monks
+mono
+mono's
+monochrome
+monochromes
+monograph
+monograph's
+monographes
+monographs
+monolithic
+monopolies
+monopoly
+monopoly's
+monotheism
+monotone
+monotonic
+monotonically
+monotonicity
+monotonous
+monotonously
+monotonousness
+monotony
+monster
+monster's
+monsters
+monstrous
+monstrously
+monstrousness
+month
+month's
+monthlies
+monthly
+months
+monument
+monument's
+monumental
+monumentally
+monuments
+mood
+mood's
+moodier
+moodiness
+moods
+moody
+moon
+mooned
+mooning
+moonlight
+moonlighted
+moonlighter
+moonlighting
+moonlights
+moonlit
+moons
+moonshine
+moonshiner
+moor
+moor's
+moored
+mooring
+moorings
+moors
+moose
+moot
+mooted
+mop
+moped
+moper
+moping
+mops
+moral
+moral's
+morale
+morales
+moralities
+morality
+morally
+morals
+morass
+morasses
+morbid
+morbidly
+morbidness
+more
+mored
+moreover
+mores
+morion
+morn
+morning
+mornings
+morphological
+morphologically
+morphology
+morrow
+morsel
+morsel's
+morsels
+mortal
+mortality
+mortally
+mortals
+mortar
+mortared
+mortaring
+mortars
+mortgage
+mortgage's
+mortgaged
+mortgager
+mortgages
+mortgaging
+mortification
+mortifications
+mortified
+mortifiedly
+mortifier
+mortifies
+mortify
+mortifying
+mosaic
+mosaic's
+mosaics
+mosquito
+mosquitoes
+mosquitos
+moss
+moss's
+mosses
+mossier
+mossy
+most
+mostly
+motel
+motel's
+motels
+moth
+mother
+mother's
+motherboard
+motherboard's
+motherboards
+mothered
+motherer
+motherers
+mothering
+motherliness
+motherly
+mothers
+motif
+motif's
+motifs
+motion
+motioned
+motioner
+motioning
+motionless
+motionlessly
+motionlessness
+motions
+motivate
+motivated
+motivates
+motivating
+motivation
+motivational
+motivationally
+motivations
+motivative
+motive
+motived
+motives
+motiving
+motley
+motor
+motorcar
+motorcar's
+motorcars
+motorcycle
+motorcycle's
+motorcycles
+motored
+motoring
+motorist
+motorist's
+motorists
+motors
+motto
+mottoes
+mottos
+mould
+moulded
+moulder
+mouldering
+moulding
+moulds
+mound
+mounded
+mounds
+mount
+mountain
+mountain's
+mountaineer
+mountaineering
+mountaineers
+mountainous
+mountainously
+mountainousness
+mountains
+mounted
+mounter
+mounting
+mountings
+mounts
+mourn
+mourned
+mourner
+mourners
+mournful
+mournfully
+mournfulness
+mourning
+mourningly
+mourns
+mouse
+mouser
+mouses
+mousing
+mouth
+mouthed
+mouther
+mouthes
+mouthful
+mouthing
+mouths
+movable
+movableness
+move
+moved
+movement
+movement's
+movements
+mover
+movers
+moves
+movie
+movie's
+movies
+moving
+movingly
+movings
+mow
+mowed
+mower
+mowers
+mowing
+mows
+much
+muchness
+muck
+mucked
+mucker
+mucking
+mucks
+mud
+muddied
+muddier
+muddiness
+muddle
+muddled
+muddler
+muddlers
+muddles
+muddling
+muddy
+muddying
+muds
+muff
+muff's
+muffin
+muffin's
+muffins
+muffle
+muffled
+muffler
+mufflers
+muffles
+muffling
+muffs
+mug
+mug's
+mugs
+mulberries
+mulberry
+mulberry's
+mule
+mule's
+mules
+muling
+multicellular
+multicomponent
+multidimensional
+multilevel
+multinational
+multiple
+multiple's
+multiples
+multiplex
+multiplexed
+multiplexer
+multiplexers
+multiplexes
+multiplexing
+multiplexor
+multiplexor's
+multiplexors
+multiplicand
+multiplicand's
+multiplicands
+multiplication
+multiplications
+multiplicative
+multiplicatively
+multiplicatives
+multiplicity
+multiplied
+multiplier
+multipliers
+multiplies
+multiply
+multiplying
+multiprocess
+multiprocessing
+multiprocessor
+multiprocessor's
+multiprocessors
+multiprogram
+multiprogrammed
+multiprogramming
+multiprogrammings
+multistage
+multitasking
+multitude
+multitude's
+multitudes
+multiuser
+multivariate
+mumble
+mumbled
+mumbler
+mumblers
+mumbles
+mumbling
+mumblings
+mummies
+mummy
+mummy's
+munch
+munched
+muncher
+munches
+munching
+mundane
+mundanely
+mundaneness
+municipal
+municipalities
+municipality
+municipality's
+municipally
+munition
+munitions
+mural
+murals
+murder
+murdered
+murderer
+murderers
+murdering
+murderous
+murderously
+murderousness
+murders
+murkier
+murkiness
+murky
+murmur
+murmured
+murmurer
+murmuring
+murmurs
+muscle
+muscled
+muscles
+muscling
+muscular
+muscularly
+muse
+mused
+muser
+muses
+museum
+museum's
+museums
+mushier
+mushiness
+mushroom
+mushroomed
+mushrooming
+mushrooms
+mushy
+music
+musical
+musically
+musicals
+musician
+musicianly
+musicians
+musics
+musing
+musingly
+musings
+musk
+musket
+musket's
+muskets
+muskrat
+muskrat's
+muskrats
+musks
+muslin
+mussel
+mussel's
+mussels
+must
+mustard
+mustards
+muster
+mustered
+mustering
+musters
+mustier
+mustiness
+musts
+musty
+mutability
+mutable
+mutableness
+mutate
+mutated
+mutates
+mutating
+mutation
+mutations
+mutative
+mutator
+mutators
+mute
+muted
+mutedly
+mutely
+muteness
+muter
+mutes
+mutest
+mutilate
+mutilated
+mutilates
+mutilating
+mutilation
+mutilations
+muting
+mutinies
+mutiny
+mutiny's
+mutter
+muttered
+mutterer
+mutterers
+muttering
+mutters
+mutton
+mutual
+mutually
+muzzle
+muzzle's
+muzzled
+muzzler
+muzzles
+muzzling
+my
+myriad
+myrtle
+myself
+mysteries
+mysterious
+mysteriously
+mysteriousness
+mystery
+mystery's
+mystic
+mystic's
+mystical
+mystically
+mysticism
+mysticisms
+mystics
+myth
+myth's
+mythes
+mythical
+mythically
+mythologies
+mythology
+mythology's
+nag
+nag's
+nags
+nail
+nailed
+nailer
+nailing
+nails
+naive
+naively
+naiveness
+naiver
+naivete
+naked
+nakedly
+nakedness
+name
+name's
+nameable
+named
+nameless
+namelessly
+namelessness
+namely
+namer
+namers
+names
+namesake
+namesake's
+namesakes
+naming
+nanosecond
+nanoseconds
+nap
+nap's
+napkin
+napkin's
+napkins
+naps
+narcissistic
+narcissus
+narcissuses
+narcotic
+narcotics
+narrative
+narrative's
+narratively
+narratives
+narrow
+narrowed
+narrower
+narrowest
+narrowing
+narrowingness
+narrowly
+narrowness
+narrows
+nasal
+nasally
+nastier
+nasties
+nastiest
+nastily
+nastiness
+nasty
+nation
+nation's
+national
+nationalist
+nationalist's
+nationalists
+nationalities
+nationality
+nationality's
+nationally
+nationals
+nations
+nationwide
+native
+natively
+nativeness
+natives
+nativity
+natural
+naturalism
+naturalist
+naturally
+naturalness
+naturals
+nature
+nature's
+natured
+natures
+naught
+naught's
+naughtier
+naughtiness
+naughts
+naughty
+naval
+navally
+navies
+navigable
+navigableness
+navigate
+navigated
+navigates
+navigating
+navigation
+navigations
+navigator
+navigator's
+navigators
+navy
+navy's
+nay
+near
+nearby
+neared
+nearer
+nearest
+nearing
+nearly
+nearness
+nears
+neat
+neaten
+neater
+neatest
+neatly
+neatness
+neats
+nebula
+necessaries
+necessarily
+necessary
+necessitate
+necessitated
+necessitates
+necessitating
+necessitation
+necessitations
+necessities
+necessity
+neck
+necked
+necker
+necking
+necklace
+necklace's
+necklaces
+necks
+necktie
+necktie's
+neckties
+need
+needed
+needer
+needful
+needfully
+needfulness
+needier
+neediness
+needing
+needle
+needled
+needler
+needlers
+needles
+needless
+needlessly
+needlessness
+needlework
+needleworker
+needling
+needly
+needn't
+needs
+needy
+negate
+negated
+negater
+negates
+negating
+negation
+negations
+negative
+negatived
+negatively
+negativeness
+negatives
+negativing
+negator
+negators
+neglect
+neglected
+neglecter
+neglecting
+neglects
+negligence
+negligible
+negotiable
+negotiate
+negotiated
+negotiates
+negotiating
+negotiation
+negotiations
+neigh
+neither
+neophyte
+neophytes
+nephew
+nephew's
+nephews
+nerve
+nerve's
+nerved
+nerves
+nerving
+nervous
+nervously
+nervousness
+nest
+nested
+nester
+nesting
+nestle
+nestled
+nestler
+nestles
+nestling
+nests
+net
+net's
+nether
+nets
+netted
+netting
+nettle
+nettled
+nettles
+nettling
+network
+network's
+networked
+networking
+networks
+neural
+neurally
+neurobiology
+neurobiology's
+neurological
+neurologically
+neurologists
+neuron
+neuron's
+neurons
+neutral
+neutralities
+neutrality
+neutrally
+neutralness
+neutrals
+neutrino
+neutrino's
+neutrinos
+never
+nevertheless
+new
+newborn
+newborns
+newcomer
+newcomer's
+newcomers
+newer
+newest
+newline
+newline's
+newlines
+newly
+newness
+news
+newsgroup
+newsgroup's
+newsgroups
+newsletter
+newsletter's
+newsletters
+newsman
+newsmen
+newspaper
+newspaper's
+newspapers
+newswire
+newt
+newts
+next
+nibble
+nibbled
+nibbler
+nibblers
+nibbles
+nibbling
+nice
+nicely
+niceness
+nicer
+nicest
+niceties
+nicety
+niche
+niches
+niching
+nick
+nicked
+nickel
+nickel's
+nickels
+nicker
+nickered
+nickering
+nicking
+nickname
+nicknamed
+nicknamer
+nicknames
+nicks
+nicotine
+niece
+niece's
+nieces
+niftier
+nifties
+nifty
+nigh
+night
+night's
+nighted
+nighters
+nightfall
+nightgown
+nightingale
+nightingale's
+nightingales
+nightly
+nightmare
+nightmare's
+nightmares
+nights
+nil
+nilly
+nimble
+nimbleness
+nimbler
+nimblest
+nimbly
+nine
+nines
+nineteen
+nineteens
+nineteenth
+nineties
+ninetieth
+ninety
+ninth
+nip
+nips
+nitrogen
+nix
+nixed
+nixer
+nixes
+nixing
+no
+nobilities
+nobility
+noble
+nobleman
+nobleness
+nobler
+nobles
+noblest
+nobly
+nobodies
+nobody
+nobody's
+nocturnal
+nocturnally
+nod
+nod's
+nodded
+nodding
+node
+node's
+nodes
+nods
+noise
+noised
+noiseless
+noiselessly
+noises
+noisier
+noisily
+noisiness
+noising
+noisy
+nomenclature
+nomenclatures
+nominal
+nominally
+nominate
+nominated
+nominates
+nominating
+nomination
+nomination's
+nominations
+nominative
+nominatively
+non
+nonblocking
+nonconservative
+noncyclic
+nondecreasing
+nondescript
+nondescriptly
+nondestructively
+nondeterminacy
+nondeterminate
+nondeterminately
+nondeterminism
+nondeterministic
+nondeterministically
+nondisclosure
+nondisclosures
+none
+nonempty
+nones
+nonetheless
+nonexistence
+nonexistent
+nonextensible
+nonfunctional
+noninteracting
+noninterference
+nonintuitive
+nonlinear
+nonlinearities
+nonlinearity
+nonlinearity's
+nonlinearly
+nonlocal
+nonnegative
+nonorthogonal
+nonorthogonality
+nonperishable
+nonprocedural
+nonprocedurally
+nonprogrammable
+nonprogrammer
+nonsense
+nonsensical
+nonsensically
+nonsensicalness
+nonspecialist
+nonspecialist's
+nonspecialists
+nonstandard
+nontechnical
+nontechnically
+nonterminal
+nonterminal's
+nonterminals
+nonterminating
+nontermination
+nontrivial
+nonuniform
+nonzero
+nook
+nook's
+nooks
+noon
+noonday
+nooning
+noons
+noontide
+nope
+nor
+norm
+norm's
+normal
+normalcy
+normality
+normally
+normals
+normed
+norms
+north
+north's
+northeast
+northeaster
+northeasterly
+northeastern
+norther
+northerly
+northern
+northerner
+northerners
+northernly
+northers
+northing
+northward
+northwards
+northwest
+northwester
+northwesterly
+northwestern
+nose
+nosed
+noses
+nosing
+nostril
+nostril's
+nostrils
+not
+notable
+notableness
+notables
+notably
+notation
+notation's
+notational
+notationally
+notations
+notch
+notched
+notches
+notching
+note
+notebook
+notebook's
+notebooks
+noted
+notedly
+notedness
+noter
+notes
+noteworthiness
+noteworthy
+nothing
+nothingness
+nothings
+notice
+noticeable
+noticeably
+noticed
+notices
+noticing
+notification
+notifications
+notified
+notifier
+notifiers
+notifies
+notify
+notifying
+noting
+notion
+notions
+notorious
+notoriously
+notoriousness
+notwithstanding
+noun
+noun's
+nouns
+nourish
+nourished
+nourisher
+nourishes
+nourishing
+nourishment
+novel
+novel's
+novelist
+novelist's
+novelists
+novels
+novelties
+novelty
+novelty's
+novice
+novice's
+novices
+now
+nowadays
+nowhere
+nowheres
+nows
+nroff
+nroff's
+nuances
+nuclear
+nucleotide
+nucleotide's
+nucleotides
+nucleus
+nucleuses
+nuisance
+nuisance's
+nuisances
+null
+nulled
+nullification
+nullified
+nullifier
+nullifiers
+nullifies
+nullify
+nullifying
+nulls
+numb
+numbed
+number
+numbered
+numberer
+numbering
+numberless
+numbers
+numbing
+numbingly
+numbly
+numbness
+numbs
+numeral
+numeral's
+numerally
+numerals
+numerator
+numerator's
+numerators
+numeric
+numerical
+numerically
+numerics
+numerous
+numerously
+numerousness
+nun
+nun's
+nuns
+nuptial
+nuptials
+nurse
+nurse's
+nursed
+nurser
+nurseries
+nursery
+nursery's
+nurses
+nursing
+nurture
+nurtured
+nurturer
+nurtures
+nurturing
+nut
+nut's
+nutrition
+nutrition's
+nuts
+nymph
+nymphs
+o'clock
+oak
+oaken
+oaks
+oar
+oar's
+oared
+oaring
+oars
+oasis
+oat
+oaten
+oater
+oath
+oaths
+oatmeal
+oats
+obedience
+obediences
+obedient
+obediently
+obey
+obeyed
+obeyer
+obeying
+obeys
+obfuscate
+obfuscated
+obfuscater
+obfuscates
+obfuscating
+obfuscation
+obfuscations
+object
+object's
+objected
+objecting
+objection
+objection's
+objectionable
+objectionableness
+objections
+objective
+objectively
+objectiveness
+objectives
+objector
+objector's
+objectors
+objects
+oblate
+oblately
+oblateness
+oblation
+oblations
+obligate
+obligated
+obligately
+obligates
+obligating
+obligation
+obligation's
+obligations
+obligatory
+oblige
+obliged
+obliger
+obliges
+obliging
+obligingly
+obligingness
+oblique
+obliquely
+obliqueness
+obliterate
+obliterated
+obliterates
+obliterating
+obliteration
+obliterations
+obliterative
+obliteratively
+oblivion
+oblivions
+oblivious
+obliviously
+obliviousness
+oblong
+oblongly
+oblongness
+obscene
+obscenely
+obscure
+obscured
+obscurely
+obscureness
+obscurer
+obscures
+obscuring
+obscurities
+obscurity
+observable
+observance
+observance's
+observances
+observant
+observantly
+observation
+observation's
+observations
+observatories
+observatory
+observe
+observed
+observer
+observers
+observes
+observing
+observingly
+obsession
+obsession's
+obsessions
+obsolescence
+obsolete
+obsoleted
+obsoletely
+obsoleteness
+obsoletes
+obsoleting
+obstacle
+obstacle's
+obstacles
+obstinacy
+obstinate
+obstinately
+obstinateness
+obstruct
+obstructed
+obstructer
+obstructing
+obstruction
+obstruction's
+obstructionist
+obstructions
+obstructive
+obstructively
+obstructiveness
+obstructs
+obtain
+obtainable
+obtainably
+obtained
+obtainer
+obtaining
+obtains
+obviate
+obviated
+obviates
+obviating
+obviation
+obviations
+obvious
+obviously
+obviousness
+occasion
+occasional
+occasionally
+occasioned
+occasioning
+occasionings
+occasions
+occlude
+occluded
+occludes
+occluding
+occlusion
+occlusion's
+occlusions
+occupancies
+occupancy
+occupant
+occupant's
+occupants
+occupation
+occupation's
+occupational
+occupationally
+occupations
+occupied
+occupier
+occupiers
+occupies
+occupy
+occupying
+occur
+occurred
+occurrence
+occurrence's
+occurrences
+occurring
+occurs
+ocean
+ocean's
+oceans
+octal
+octals
+octave
+octaves
+octopus
+odd
+odder
+oddest
+oddities
+oddity
+oddity's
+oddly
+oddness
+odds
+ode
+ode's
+oded
+oder
+odes
+odious
+odiously
+odiousness
+odorous
+odorously
+odorousness
+of
+off
+offend
+offended
+offender
+offenders
+offending
+offends
+offensive
+offensively
+offensiveness
+offensives
+offer
+offered
+offerer
+offerers
+offering
+offerings
+offers
+office
+office's
+officer
+officer's
+officered
+officers
+offices
+official
+official's
+officially
+officials
+officiate
+officiated
+officiates
+officiating
+officiation
+officiations
+officio
+officious
+officiously
+officiousness
+offing
+offs
+offset
+offset's
+offsets
+offspring
+offsprings
+oft
+often
+oftener
+oftentimes
+oh
+oil
+oilcloth
+oiled
+oiler
+oilers
+oilier
+oiliest
+oiliness
+oiling
+oils
+oily
+ointment
+ointments
+okay
+okay's
+okays
+old
+olden
+older
+oldest
+oldness
+olive
+olive's
+oliver
+olives
+omen
+omen's
+omens
+ominous
+ominously
+ominousness
+omission
+omission's
+omissions
+omit
+omits
+omitted
+omitting
+omnipresent
+omnipresently
+omniscient
+omnisciently
+omnivore
+on
+onanism
+once
+oncer
+one
+one's
+oneness
+oner
+onerous
+onerously
+onerousness
+ones
+oneself
+ongoing
+onion
+onions
+online
+onliness
+only
+ons
+onset
+onset's
+onsets
+onto
+onward
+onwards
+oops
+ooze
+oozed
+oozes
+oozing
+opacities
+opacity
+opal
+opal's
+opals
+opaque
+opaquely
+opaqueness
+opcode
+opcode's
+opcodes
+open
+opened
+opener
+openers
+openest
+opening
+opening's
+openings
+openly
+openness
+opens
+opera
+opera's
+operable
+operand
+operand's
+operandi
+operands
+operas
+operate
+operated
+operates
+operating
+operation
+operational
+operationally
+operations
+operative
+operatively
+operativeness
+operatives
+operator
+operator's
+operators
+opiate
+opiates
+opinion
+opinion's
+opinions
+opium
+opponent
+opponent's
+opponents
+opportune
+opportunely
+opportunism
+opportunistic
+opportunistically
+opportunities
+opportunity
+opportunity's
+oppose
+opposed
+opposer
+opposes
+opposing
+opposite
+oppositely
+oppositeness
+opposites
+opposition
+oppositions
+oppress
+oppressed
+oppresses
+oppressing
+oppression
+oppressive
+oppressively
+oppressiveness
+oppressor
+oppressor's
+oppressors
+opt
+opted
+optic
+optical
+optically
+optics
+optimal
+optimality
+optimally
+optimism
+optimistic
+optimistically
+optimum
+opting
+option
+option's
+optional
+optionally
+options
+opts
+or
+or's
+oracle
+oracle's
+oracles
+oral
+orally
+orals
+orange
+orange's
+oranges
+oration
+oration's
+orations
+orator
+orator's
+oratories
+orators
+oratory
+oratory's
+orb
+orbit
+orbital
+orbitally
+orbitals
+orbited
+orbiter
+orbiters
+orbiting
+orbits
+orchard
+orchard's
+orchards
+orchestra
+orchestra's
+orchestras
+orchid
+orchid's
+orchids
+ordain
+ordained
+ordainer
+ordaining
+ordains
+ordeal
+ordeals
+order
+ordered
+orderer
+ordering
+orderings
+orderlies
+orderliness
+orderly
+orders
+ordinal
+ordinance
+ordinance's
+ordinances
+ordinaries
+ordinarily
+ordinariness
+ordinary
+ordinate
+ordinated
+ordinates
+ordinating
+ordination
+ordinations
+ore
+ore's
+ores
+organ
+organ's
+organic
+organics
+organism
+organism's
+organisms
+organist
+organist's
+organists
+organs
+orgies
+orgy
+orgy's
+orient
+orientation
+orientation's
+orientations
+oriented
+orienting
+orients
+orifice
+orifice's
+orifices
+origin
+origin's
+original
+originality
+originally
+originals
+originate
+originated
+originates
+originating
+origination
+originations
+originative
+originatively
+originator
+originator's
+originators
+origins
+orion
+orly
+ornament
+ornamental
+ornamentally
+ornamentation
+ornamentations
+ornamented
+ornamenting
+ornaments
+orphan
+orphaned
+orphaning
+orphans
+orthodox
+orthodoxes
+orthodoxly
+orthogonal
+orthogonality
+orthogonally
+oscillate
+oscillated
+oscillates
+oscillating
+oscillation
+oscillation's
+oscillations
+oscillator
+oscillator's
+oscillators
+oscillatory
+oscilloscope
+oscilloscope's
+oscilloscopes
+ostrich
+ostrich's
+ostriches
+other
+other's
+otherness
+others
+otherwise
+otter
+otter's
+otters
+ought
+oughts
+ounce
+ounces
+our
+ours
+ourself
+ourselves
+out
+outbreak
+outbreak's
+outbreaks
+outburst
+outburst's
+outbursts
+outcast
+outcast's
+outcasts
+outcome
+outcome's
+outcomes
+outcries
+outcry
+outdoor
+outdoors
+outed
+outer
+outermost
+outfit
+outfit's
+outfits
+outgoing
+outgoingness
+outgoings
+outgrew
+outgrow
+outgrowing
+outgrown
+outgrows
+outgrowth
+outing
+outing's
+outings
+outlast
+outlasts
+outlaw
+outlawed
+outlawing
+outlaws
+outlay
+outlay's
+outlays
+outlet
+outlet's
+outlets
+outline
+outlined
+outlines
+outlining
+outlive
+outlived
+outlives
+outliving
+outlook
+outness
+outperform
+outperformed
+outperforming
+outperforms
+outpost
+outpost's
+outposts
+output
+output's
+outputs
+outputting
+outrage
+outraged
+outrageous
+outrageously
+outrageousness
+outrages
+outraging
+outright
+outrightly
+outrun
+outruns
+outs
+outset
+outside
+outsider
+outsider's
+outsiderness
+outsiders
+outskirts
+outstanding
+outstandingly
+outstretched
+outstrip
+outstripped
+outstripping
+outstrips
+outvote
+outvoted
+outvotes
+outvoting
+outward
+outwardly
+outwardness
+outwards
+outweigh
+outweighed
+outweighing
+outweighs
+outwit
+outwits
+outwitted
+outwitting
+oval
+oval's
+ovally
+ovalness
+ovals
+ovaries
+ovary
+ovary's
+oven
+oven's
+ovens
+over
+overall
+overall's
+overalls
+overblown
+overboard
+overcame
+overcast
+overcasting
+overcoat
+overcoat's
+overcoating
+overcoats
+overcome
+overcomer
+overcomes
+overcoming
+overcrowd
+overcrowded
+overcrowding
+overcrowds
+overdone
+overdose
+overdose's
+overdosed
+overdoses
+overdosing
+overdraft
+overdraft's
+overdrafts
+overdraw
+overdrawing
+overdrawn
+overdraws
+overdrew
+overdue
+overemphasis
+overestimate
+overestimated
+overestimates
+overestimating
+overestimation
+overestimations
+overflow
+overflowed
+overflowing
+overflows
+overhang
+overhanging
+overhangs
+overhaul
+overhauled
+overhauler
+overhauling
+overhaulings
+overhauls
+overhead
+overheads
+overhear
+overheard
+overhearer
+overhearing
+overhears
+overing
+overjoy
+overjoyed
+overkill
+overkill's
+overlaid
+overland
+overlap
+overlap's
+overlapped
+overlapping
+overlaps
+overlay
+overlaying
+overlays
+overload
+overloaded
+overloading
+overloads
+overlook
+overlooked
+overlooking
+overlooks
+overly
+overlying
+overnight
+overnighter
+overnighters
+overnights
+overpower
+overpowered
+overpowering
+overpoweringly
+overpowers
+overprint
+overprinted
+overprinting
+overprints
+overproduction
+overridden
+override
+overrider
+overrides
+overriding
+overrode
+overrule
+overruled
+overrules
+overruling
+overrun
+overruns
+overs
+overseas
+oversee
+overseeing
+overseer
+overseers
+oversees
+overshadow
+overshadowed
+overshadowing
+overshadows
+overshoot
+overshooting
+overshoots
+overshot
+oversight
+oversight's
+oversights
+oversimplification
+oversimplifications
+oversimplified
+oversimplifies
+oversimplify
+oversimplifying
+overstate
+overstated
+overstatement
+overstatement's
+overstatements
+overstates
+overstating
+overstocks
+overt
+overtake
+overtaken
+overtaker
+overtakers
+overtakes
+overtaking
+overthrew
+overthrow
+overthrowing
+overthrown
+overthrows
+overtime
+overtly
+overtness
+overtone
+overtone's
+overtones
+overtook
+overture
+overture's
+overtures
+overturn
+overturned
+overturning
+overturns
+overuse
+overview
+overview's
+overviews
+overweight
+overwhelm
+overwhelmed
+overwhelming
+overwhelmingly
+overwhelms
+overwork
+overworked
+overworking
+overworks
+overwrite
+overwrites
+overwriting
+overwritten
+overwrote
+overzealous
+overzealousness
+ovum
+owe
+owed
+owes
+owing
+owl
+owl's
+owler
+owls
+own
+owned
+owner
+owner's
+owners
+ownership
+ownerships
+owning
+owns
+ox
+oxen
+oxidation
+oxide
+oxide's
+oxides
+oxygen
+oxygens
+oyster
+oyster's
+oystering
+oysters
+pa
+pace
+pace's
+paced
+pacer
+pacers
+paces
+pacific
+pacification
+pacifications
+pacified
+pacifier
+pacifies
+pacify
+pacifying
+pacing
+pack
+package
+packaged
+packager
+packagers
+packages
+packaging
+packagings
+packed
+packer
+packers
+packet
+packet's
+packeted
+packeting
+packets
+packing
+packs
+pact
+pact's
+pacts
+pad
+pad's
+padded
+paddies
+padding
+paddings
+paddle
+paddled
+paddler
+paddles
+paddling
+paddy
+pads
+pagan
+pagan's
+pagans
+page
+page's
+pageant
+pageant's
+pageants
+paged
+pager
+pager's
+pagers
+pages
+paginate
+paginated
+paginates
+paginating
+pagination
+paginations
+paging
+paid
+pail
+pail's
+pails
+pain
+pained
+painful
+painfully
+painfulness
+paining
+painless
+painlessly
+painlessness
+pains
+painstaking
+painstakingly
+paint
+painted
+painter
+painterliness
+painterly
+painters
+painting
+paintings
+paints
+pair
+paired
+pairing
+pairings
+pairs
+pairwise
+pal
+pal's
+palace
+palace's
+palaces
+palate
+palate's
+palates
+pale
+paled
+palely
+paleness
+paler
+pales
+palest
+palfrey
+paling
+pall
+palliate
+palliation
+palliative
+palliatively
+palliatives
+pallid
+pallidly
+pallidness
+palling
+pally
+palm
+palmed
+palmer
+palming
+palms
+pals
+pamphlet
+pamphlet's
+pamphlets
+pan
+pan's
+panacea
+panacea's
+panaceas
+pancake
+pancake's
+pancaked
+pancakes
+pancaking
+pancreas
+panda
+panda's
+pandas
+pandemonium
+pander
+pandered
+panderer
+pandering
+panders
+pane
+pane's
+panel
+panelist
+panelist's
+panelists
+panels
+panes
+pang
+pang's
+pangs
+panic
+panic's
+panics
+panned
+panning
+pans
+pansies
+pansy
+pansy's
+pant
+panted
+panther
+panther's
+panthers
+panties
+panting
+pantries
+pantry
+pantry's
+pants
+panty
+papa
+papal
+papally
+paper
+paper's
+paperback
+paperback's
+paperbacks
+papered
+paperer
+paperers
+papering
+paperings
+papers
+paperwork
+paprika
+par
+parachute
+parachute's
+parachuted
+parachuter
+parachutes
+parachuting
+parade
+paraded
+parader
+parades
+paradigm
+paradigm's
+paradigms
+parading
+paradise
+paradox
+paradox's
+paradoxes
+paradoxical
+paradoxically
+paradoxicalness
+paraffin
+paraffins
+paragon
+paragon's
+paragons
+paragraph
+paragraphed
+paragrapher
+paragraphing
+paragraphs
+parallax
+parallax's
+parallel
+parallelism
+parallelogram
+parallelogram's
+parallelograms
+parallels
+paralysis
+parameter
+parameter's
+parameterless
+parameters
+parametric
+paramilitary
+paramount
+paranoia
+paranoid
+parapet
+parapet's
+parapeted
+parapets
+paraphrase
+paraphrased
+paraphraser
+paraphrases
+paraphrasing
+parasite
+parasite's
+parasites
+parasitic
+parasitics
+parcel
+parcels
+parch
+parched
+parchment
+pardon
+pardonable
+pardonableness
+pardonably
+pardoned
+pardoner
+pardoners
+pardoning
+pardons
+pare
+parent
+parent's
+parentage
+parental
+parentally
+parentheses
+parenthesis
+parenthetical
+parenthetically
+parenthood
+parenting
+parents
+parer
+pares
+paring
+parings
+parish
+parish's
+parishes
+parities
+parity
+park
+parked
+parker
+parkers
+parking
+parks
+parliament
+parliament's
+parliamentary
+parliaments
+parole
+paroled
+paroles
+paroling
+parried
+parrot
+parroting
+parrots
+parry
+parrying
+pars
+parse
+parsed
+parser
+parser's
+parsers
+parses
+parsimony
+parsing
+parsings
+parsley
+parson
+parson's
+parsons
+part
+partake
+partaker
+partakes
+partaking
+parted
+parter
+parters
+partial
+partiality
+partially
+partials
+participant
+participant's
+participants
+participate
+participated
+participates
+participating
+participation
+participations
+participative
+participatory
+particle
+particle's
+particles
+particular
+particularly
+particulars
+partied
+parties
+parting
+partings
+partisan
+partisan's
+partisans
+partition
+partitioned
+partitioner
+partitioning
+partitions
+partly
+partner
+partner's
+partnered
+partnering
+partners
+partnership
+partnerships
+partridge
+partridge's
+partridges
+parts
+party
+party's
+partying
+pas
+pass
+passage
+passage's
+passaged
+passages
+passageway
+passaging
+passe
+passed
+passenger
+passenger's
+passengerly
+passengers
+passer
+passers
+passes
+passing
+passion
+passionate
+passionately
+passionateness
+passions
+passive
+passively
+passiveness
+passives
+passivity
+passport
+passport's
+passports
+password
+password's
+passworded
+passwords
+past
+past's
+paste
+pasted
+pastes
+pastime
+pastime's
+pastimes
+pasting
+pastness
+pastor
+pastor's
+pastoral
+pastorally
+pastoralness
+pastors
+pastries
+pastry
+pasts
+pasture
+pasture's
+pastured
+pasturer
+pastures
+pasturing
+pat
+pat's
+patch
+patched
+patcher
+patches
+patching
+patchwork
+patchworker
+patchworkers
+pated
+paten
+patent
+patentable
+patented
+patenter
+patenters
+patenting
+patently
+patents
+pater
+paternal
+paternally
+path
+pathetic
+pathname
+pathname's
+pathnames
+pathological
+pathologically
+pathologies
+pathologist
+pathologist's
+pathologists
+pathology
+pathos
+paths
+pathway
+pathway's
+pathways
+patience
+patient
+patient's
+patiently
+patients
+patriarch
+patriarchs
+patrician
+patrician's
+patricians
+patriot
+patriot's
+patriotic
+patriotism
+patriots
+patrol
+patrol's
+patrols
+patron
+patron's
+patronage
+patronly
+patrons
+pats
+patter
+pattered
+patterer
+pattering
+patterings
+pattern
+patterned
+patterning
+patterns
+patters
+patties
+patty
+patty's
+paucity
+pause
+paused
+pauses
+pausing
+pave
+paved
+pavement
+pavement's
+pavements
+paver
+paves
+pavilion
+pavilion's
+pavilions
+paving
+paw
+pawed
+pawing
+pawn
+pawn's
+pawned
+pawner
+pawning
+pawns
+paws
+pay
+payable
+paycheck
+paycheck's
+paychecks
+payed
+payer
+payer's
+payers
+paying
+payment
+payment's
+payments
+payoff
+payoff's
+payoffs
+payroll
+payrolls
+pays
+pea
+pea's
+peace
+peaceable
+peaceableness
+peaceful
+peacefully
+peacefulness
+peaces
+peach
+peach's
+peaches
+peacock
+peacock's
+peacocks
+peak
+peaked
+peakedness
+peaking
+peaks
+peal
+pealed
+pealing
+peals
+peanut
+peanut's
+peanuts
+pear
+pearl
+pearl's
+pearler
+pearlier
+pearls
+pearly
+pears
+peas
+peasant
+peasant's
+peasantry
+peasants
+peat
+pebble
+pebble's
+pebbled
+pebbles
+pebbling
+peck
+pecked
+pecker
+pecking
+pecks
+peculiar
+peculiarities
+peculiarity
+peculiarity's
+peculiarly
+peculiars
+pedagogic
+pedagogical
+pedagogically
+pedagogics
+pedantic
+peddler
+peddler's
+peddlers
+pedestal
+pedestals
+pedestrian
+pedestrian's
+pedestrians
+pediatric
+pediatrics
+peek
+peeked
+peeking
+peeks
+peel
+peeled
+peeler
+peeler's
+peeling
+peels
+peep
+peeped
+peeper
+peepers
+peeping
+peeps
+peer
+peered
+peering
+peerless
+peerlessly
+peerlessness
+peers
+peeve
+peeve's
+peeved
+peevers
+peeves
+peeving
+peg
+peg's
+pegs
+pellet
+pellet's
+pelleted
+pelleting
+pellets
+pelt
+pelter
+pelting
+pelts
+pen
+penalties
+penalty
+penalty's
+penance
+penanced
+penances
+penancing
+pence
+pencil
+pencils
+pend
+pended
+pending
+pends
+pendulum
+pendulum's
+pendulums
+penetrate
+penetrated
+penetrates
+penetrating
+penetratingly
+penetration
+penetrations
+penetrative
+penetratively
+penetrativeness
+penetrator
+penetrator's
+penetrators
+penguin
+penguin's
+penguins
+peninsula
+peninsula's
+peninsulas
+penitent
+penitentiary
+penitently
+penned
+pennies
+penniless
+penning
+penny
+penny's
+pens
+pension
+pensioned
+pensioner
+pensioners
+pensioning
+pensions
+pensive
+pensively
+pensiveness
+pent
+pentagon
+pentagon's
+pentagons
+penthouse
+penthouse's
+penthouses
+people
+people's
+peopled
+peoples
+peopling
+pep
+pepper
+peppercorn
+peppercorn's
+peppercorns
+peppered
+pepperer
+peppering
+peppers
+per
+perceivable
+perceivably
+perceive
+perceived
+perceiver
+perceivers
+perceives
+perceiving
+percent
+percentage
+percentages
+percentile
+percentiles
+percents
+perceptible
+perceptibly
+perception
+perceptions
+perceptive
+perceptively
+perceptiveness
+perceptual
+perceptually
+perch
+perchance
+perched
+perches
+perching
+percolate
+percolated
+percolates
+percolating
+percolation
+percutaneous
+percutaneously
+peremptoriness
+peremptory
+perennial
+perennially
+perennials
+perfect
+perfected
+perfecter
+perfecting
+perfection
+perfectionist
+perfectionist's
+perfectionists
+perfections
+perfective
+perfectively
+perfectiveness
+perfectly
+perfectness
+perfects
+perforce
+perform
+performance
+performance's
+performances
+performed
+performer
+performers
+performing
+performs
+perfume
+perfumed
+perfumer
+perfumes
+perfuming
+perhaps
+peril
+peril's
+perilous
+perilously
+perilousness
+perils
+period
+period's
+periodic
+periodical
+periodically
+periodicals
+periods
+peripheral
+peripherally
+peripherals
+peripheries
+periphery
+periphery's
+perish
+perishable
+perishable's
+perishables
+perished
+perisher
+perishers
+perishes
+perishing
+perishingly
+permanence
+permanent
+permanently
+permanentness
+permanents
+permeate
+permeated
+permeates
+permeating
+permeation
+permeations
+permeative
+permissibility
+permissible
+permissibleness
+permissibly
+permission
+permissions
+permissive
+permissively
+permissiveness
+permit
+permit's
+permits
+permitted
+permitting
+permutation
+permutation's
+permutations
+permute
+permuted
+permutes
+permuting
+perpendicular
+perpendicularly
+perpendiculars
+perpetrate
+perpetrated
+perpetrates
+perpetrating
+perpetration
+perpetrations
+perpetrator
+perpetrator's
+perpetrators
+perpetual
+perpetually
+perpetuate
+perpetuated
+perpetuates
+perpetuating
+perpetuation
+perplex
+perplexed
+perplexedly
+perplexes
+perplexing
+perplexities
+perplexity
+persecute
+persecuted
+persecutes
+persecuting
+persecution
+persecutive
+persecutor
+persecutor's
+persecutors
+perseverance
+persevere
+persevered
+perseveres
+persevering
+persist
+persisted
+persistence
+persistent
+persistently
+persister
+persisting
+persists
+person
+person's
+personable
+personableness
+personage
+personage's
+personages
+personal
+personalities
+personality
+personality's
+personally
+personals
+personification
+personifications
+personified
+personifier
+personifies
+personify
+personifying
+personnel
+persons
+perspective
+perspective's
+perspectively
+perspectives
+perspicuous
+perspicuously
+perspicuousness
+perspiration
+perspirations
+persuadable
+persuade
+persuaded
+persuader
+persuaders
+persuades
+persuading
+persuasion
+persuasion's
+persuasions
+persuasive
+persuasively
+persuasiveness
+pertain
+pertained
+pertaining
+pertains
+pertinent
+pertinently
+perturb
+perturbation
+perturbation's
+perturbations
+perturbed
+perturbing
+perusal
+peruse
+perused
+peruser
+perusers
+peruses
+perusing
+pervade
+pervaded
+pervades
+pervading
+pervasive
+pervasively
+pervasiveness
+pervert
+perverted
+pervertedly
+pervertedness
+perverter
+perverting
+perverts
+pessimistic
+pest
+pester
+pestered
+pestering
+pesters
+pestilence
+pestilences
+pests
+pet
+petal
+petal's
+petals
+peter
+petered
+peters
+petition
+petitioned
+petitioner
+petitioning
+petitions
+petroleum
+pets
+petted
+petter
+petter's
+petters
+petticoat
+petticoat's
+petticoated
+petticoats
+pettier
+pettiest
+pettiness
+pettinesses
+petting
+petty
+pew
+pew's
+pews
+pewter
+pewterer
+phantom
+phantom's
+phantoms
+phase
+phased
+phaser
+phasers
+phases
+phasing
+pheasant
+pheasant's
+pheasants
+phenomena
+phenomenal
+phenomenally
+phenomenological
+phenomenologically
+phenomenologies
+phenomenology
+phenomenon
+philosopher
+philosopher's
+philosophers
+philosophic
+philosophical
+philosophically
+philosophies
+philosophy
+philosophy's
+phone
+phone's
+phoned
+phoneme
+phoneme's
+phonemes
+phonemic
+phonemics
+phones
+phonetic
+phonetics
+phoning
+phonograph
+phonographer
+phonographs
+phosphate
+phosphate's
+phosphates
+phosphoric
+photo
+photo's
+photocopied
+photocopier
+photocopies
+photocopy
+photocopying
+photograph
+photographed
+photographer
+photographers
+photographic
+photographing
+photographs
+photography
+photos
+phrase
+phrased
+phrases
+phrasing
+phrasings
+phyla
+phylum
+physic
+physical
+physically
+physicalness
+physicals
+physician
+physician's
+physicians
+physicist
+physicist's
+physicists
+physics
+physiological
+physiologically
+physiology
+physique
+physiqued
+pi
+piano
+piano's
+pianos
+piazza
+piazza's
+piazzas
+picayune
+pick
+picked
+picker
+pickering
+pickers
+picket
+picketed
+picketer
+picketers
+picketing
+pickets
+picking
+pickings
+pickle
+pickled
+pickles
+pickling
+picks
+pickup
+pickup's
+pickups
+picnic
+picnic's
+picnics
+pictorial
+pictorially
+pictorialness
+picture
+pictured
+pictures
+picturesque
+picturesquely
+picturesqueness
+picturing
+pie
+piece
+pieced
+piecemeal
+piecer
+pieces
+piecewise
+piecing
+pied
+pier
+pierce
+pierced
+pierces
+piercing
+piercingly
+piers
+pies
+pieties
+piety
+pig
+pig's
+pigeon
+pigeon's
+pigeons
+pigment
+pigmented
+pigments
+pigs
+pike
+pike's
+piked
+piker
+pikes
+piking
+pile
+piled
+pilers
+piles
+pilferage
+pilgrim
+pilgrim's
+pilgrimage
+pilgrimage's
+pilgrimages
+pilgrims
+piling
+pilings
+pill
+pill's
+pillage
+pillaged
+pillager
+pillages
+pillaging
+pillar
+pillared
+pillars
+pillow
+pillow's
+pillows
+pills
+pilot
+pilot's
+piloted
+piloting
+pilots
+pin
+pin's
+pinch
+pinched
+pincher
+pinches
+pinching
+pine
+pineapple
+pineapple's
+pineapples
+pined
+pines
+ping
+pinger
+pinging
+pining
+pinion
+pinioned
+pinions
+pink
+pinked
+pinker
+pinkest
+pinking
+pinkly
+pinkness
+pinks
+pinnacle
+pinnacle's
+pinnacled
+pinnacles
+pinnacling
+pinned
+pinning
+pinnings
+pinpoint
+pinpointed
+pinpointing
+pinpoints
+pins
+pint
+pint's
+pinter
+pints
+pioneer
+pioneered
+pioneering
+pioneers
+pious
+piously
+piousness
+pipe
+piped
+pipeline
+pipelined
+pipelines
+pipelining
+piper
+pipers
+pipes
+piping
+pipingly
+pipings
+pique
+piqued
+piquing
+pirate
+pirate's
+pirated
+pirates
+pirating
+piss
+pissed
+pisser
+pisses
+pissing
+pistil
+pistil's
+pistils
+pistol
+pistol's
+pistols
+piston
+piston's
+pistons
+pit
+pit's
+pitch
+pitched
+pitcher
+pitchers
+pitches
+pitching
+piteous
+piteously
+piteousness
+pitfall
+pitfall's
+pitfalls
+pith
+pithed
+pithes
+pithier
+pithiest
+pithiness
+pithing
+pithy
+pitiable
+pitiableness
+pitied
+pitier
+pitiers
+pities
+pitiful
+pitifully
+pitifulness
+pitiless
+pitilessly
+pitilessness
+pits
+pitted
+pity
+pitying
+pityingly
+pivot
+pivotal
+pivotally
+pivoted
+pivoting
+pivots
+pixel
+pixel's
+pixels
+placard
+placard's
+placards
+place
+placed
+placement
+placement's
+placements
+placer
+places
+placid
+placidly
+placidness
+placing
+plague
+plagued
+plaguer
+plagues
+plaguing
+plaid
+plaid's
+plaided
+plaids
+plain
+plainer
+plainest
+plainly
+plainness
+plains
+plaintiff
+plaintiff's
+plaintiffs
+plaintive
+plaintively
+plaintiveness
+plait
+plait's
+plaiter
+plaiting
+plaits
+plan
+plan's
+planar
+planarity
+plane
+plane's
+planed
+planer
+planers
+planes
+planet
+planet's
+planetary
+planets
+planing
+plank
+planking
+planks
+planned
+planner
+planner's
+planners
+planning
+plans
+plant
+plantation
+plantation's
+plantations
+planted
+planter
+planters
+planting
+plantings
+plants
+plasma
+plaster
+plastered
+plasterer
+plasterers
+plastering
+plasters
+plastic
+plasticity
+plasticly
+plastics
+plate
+plateau
+plateau's
+plateaus
+plated
+platelet
+platelet's
+platelets
+platen
+platen's
+platens
+plater
+platers
+plates
+platform
+platform's
+platforms
+plating
+platings
+platinum
+platter
+platter's
+platters
+plausibility
+plausible
+plausibleness
+play
+playable
+played
+player
+player's
+players
+playful
+playfully
+playfulness
+playground
+playground's
+playgrounds
+playing
+playmate
+playmate's
+playmates
+plays
+plaything
+plaything's
+playthings
+playwright
+playwright's
+playwrights
+plea
+plea's
+plead
+pleaded
+pleader
+pleading
+pleadingly
+pleadings
+pleads
+pleas
+pleasant
+pleasantly
+pleasantness
+please
+pleased
+pleasely
+pleaser
+pleases
+pleasing
+pleasingly
+pleasingness
+pleasurable
+pleasurableness
+pleasure
+pleasured
+pleasures
+pleasuring
+plebeian
+plebeianly
+plebiscite
+plebiscite's
+plebiscites
+pledge
+pledged
+pledger
+pledges
+pledging
+plenary
+plenteous
+plenteously
+plenteousness
+plenties
+plentiful
+plentifully
+plentifulness
+plenty
+pleurisy
+plication
+plied
+plier
+pliers
+plies
+plight
+plighter
+plod
+plods
+plot
+plot's
+plots
+plotted
+plotter
+plotter's
+plotters
+plotting
+ploy
+ploy's
+ploys
+pluck
+plucked
+plucker
+pluckier
+pluckiness
+plucking
+plucky
+plug
+plug's
+plugged
+plugging
+plugs
+plum
+plum's
+plumage
+plumaged
+plumages
+plumb
+plumb's
+plumbed
+plumber
+plumbers
+plumbing
+plumbs
+plume
+plumed
+plumes
+pluming
+plummeting
+plump
+plumped
+plumpen
+plumper
+plumply
+plumpness
+plums
+plunder
+plundered
+plunderer
+plunderers
+plundering
+plunders
+plunge
+plunged
+plunger
+plungers
+plunges
+plunging
+plural
+plurality
+plurally
+plurals
+plus
+pluses
+plush
+plushly
+plushness
+ply
+plying
+pneumonia
+poach
+poached
+poacher
+poachers
+poaches
+poaching
+pocket
+pocketbook
+pocketbook's
+pocketbooks
+pocketed
+pocketing
+pockets
+pod
+pod's
+pods
+poem
+poem's
+poems
+poet
+poet's
+poetic
+poetical
+poetically
+poeticalness
+poetics
+poetries
+poetry
+poetry's
+poets
+point
+pointed
+pointedly
+pointedness
+pointer
+pointers
+pointier
+pointiest
+pointing
+pointless
+pointlessly
+pointlessness
+points
+pointy
+poise
+poised
+poises
+poising
+poison
+poisoned
+poisoner
+poisoning
+poisonous
+poisonously
+poisonousness
+poisons
+poke
+poked
+poker
+pokes
+poking
+polar
+polarities
+polarity
+polarity's
+pole
+poled
+polemic
+polemics
+poler
+poles
+police
+police's
+policed
+policeman
+policeman's
+policemen
+policemen's
+polices
+policies
+policing
+policy
+policy's
+poling
+polish
+polished
+polisher
+polishers
+polishes
+polishing
+polite
+politely
+politeness
+politer
+politest
+politic
+political
+politically
+politician
+politician's
+politicians
+politics
+poll
+polled
+pollen
+poller
+polling
+polls
+pollute
+polluted
+polluter
+pollutes
+polluting
+pollution
+pollutive
+polo
+polygon
+polygon's
+polygons
+polymer
+polymer's
+polymers
+polynomial
+polynomial's
+polynomials
+polyphonic
+pomp
+pompous
+pompously
+pompousness
+pond
+ponder
+pondered
+ponderer
+pondering
+ponderous
+ponderously
+ponderousness
+ponders
+ponds
+ponies
+pony
+pony's
+poof
+pool
+pooled
+pooling
+pools
+poor
+poorer
+poorest
+poorly
+poorness
+pop
+pop's
+pope
+pope's
+popes
+poplar
+popped
+poppied
+poppies
+popping
+poppy
+poppy's
+pops
+populace
+popular
+popularity
+popularly
+populate
+populated
+populates
+populating
+population
+populations
+populous
+populously
+populousness
+porcelain
+porch
+porch's
+porches
+porcupine
+porcupine's
+porcupines
+pore
+pored
+pores
+poring
+pork
+porker
+porn
+pornographic
+porridge
+port
+portability
+portable
+portables
+portably
+portal
+portal's
+portals
+portamento
+portamento's
+ported
+portend
+portended
+portending
+portends
+porter
+portering
+porters
+porting
+portion
+portion's
+portioned
+portioning
+portions
+portlier
+portliness
+portly
+portrait
+portrait's
+portraits
+portray
+portrayed
+portrayer
+portraying
+portrays
+ports
+pose
+posed
+poser
+posers
+poses
+posing
+posit
+posited
+positing
+position
+positional
+positioned
+positioning
+positions
+positive
+positively
+positiveness
+positives
+posits
+possess
+possessed
+possessedly
+possessedness
+possesses
+possessing
+possession
+possession's
+possessional
+possessions
+possessive
+possessive's
+possessively
+possessiveness
+possessives
+possessor
+possessor's
+possessors
+possibilities
+possibility
+possibility's
+possible
+possibles
+possibly
+possum
+possum's
+possums
+post
+postage
+postal
+postcard
+postcard's
+postcards
+postcondition
+postconditions
+posted
+poster
+poster's
+posterior
+posteriorly
+posterity
+posters
+posting
+postings
+postman
+postmaster
+postmaster's
+postmasters
+postpone
+postponed
+postponer
+postpones
+postponing
+posts
+postscript
+postscript's
+postscripts
+postulate
+postulated
+postulates
+postulating
+postulation
+postulations
+posture
+posture's
+postured
+posturer
+postures
+posturing
+pot
+pot's
+potash
+potassium
+potato
+potatoes
+potent
+potentate
+potentate's
+potentates
+potential
+potentialities
+potentiality
+potentially
+potentials
+potentiating
+potentiometer
+potentiometer's
+potentiometers
+potently
+pots
+potted
+potter
+potter's
+potterer
+potteries
+potters
+pottery
+potting
+pouch
+pouch's
+pouched
+pouches
+poultry
+pounce
+pounced
+pounces
+pouncing
+pound
+pounded
+pounder
+pounders
+pounding
+pounds
+pour
+poured
+pourer
+pourers
+pouring
+pouringly
+pours
+pout
+pouted
+pouter
+pouting
+pouts
+poverty
+powder
+powdered
+powderer
+powdering
+powders
+power
+powered
+powerful
+powerfully
+powerfulness
+powering
+powerless
+powerlessly
+powerlessness
+powers
+pox
+poxes
+practicable
+practicableness
+practicably
+practical
+practicalities
+practicality
+practically
+practicalness
+practice
+practice's
+practices
+practitioner
+practitioner's
+practitioners
+pragmatic
+pragmatically
+pragmatics
+prairie
+prairies
+praise
+praised
+praiser
+praisers
+praises
+praising
+praisingly
+prance
+pranced
+prancer
+prances
+prancing
+prancingly
+prank
+prank's
+pranks
+prate
+prated
+prater
+prates
+prating
+pratingly
+pray
+prayed
+prayer
+prayer's
+prayers
+praying
+prays
+preach
+preached
+preacher
+preachers
+preaches
+preaching
+preachingly
+preallocate
+preallocated
+preallocates
+preallocating
+preallocation
+preallocation's
+preallocations
+preallocator
+preallocators
+preassign
+preassigned
+preassigning
+preassigns
+precarious
+precariously
+precariousness
+precaution
+precaution's
+precautioned
+precautioning
+precautions
+precede
+preceded
+precedence
+precedence's
+precedences
+precedent
+precedented
+precedents
+precedes
+preceding
+precept
+precept's
+preceptive
+preceptively
+precepts
+precinct
+precinct's
+precincts
+precious
+preciously
+preciousness
+precipice
+precipitate
+precipitated
+precipitately
+precipitateness
+precipitates
+precipitating
+precipitation
+precipitative
+precipitous
+precipitously
+precipitousness
+precise
+precisely
+preciseness
+precision
+precisions
+preclude
+precluded
+precludes
+precluding
+precocious
+precociously
+precociousness
+preconceive
+preconceived
+preconception
+preconception's
+preconceptions
+precondition
+preconditioned
+preconditions
+precursor
+precursor's
+precursors
+predate
+predated
+predates
+predating
+predation
+predecessor
+predecessor's
+predecessors
+predefine
+predefined
+predefines
+predefining
+predefinition
+predefinition's
+predefinitions
+predetermine
+predetermined
+predeterminer
+predetermines
+predetermining
+predicament
+predicate
+predicated
+predicates
+predicating
+predication
+predications
+predicative
+predict
+predictability
+predictable
+predictably
+predicted
+predicting
+prediction
+prediction's
+predictions
+predictive
+predictively
+predictor
+predictors
+predicts
+predominant
+predominantly
+predominate
+predominated
+predominately
+predominates
+predominating
+predomination
+preempt
+preempted
+preempting
+preemption
+preemptive
+preemptively
+preempts
+preface
+prefaced
+prefacer
+prefaces
+prefacing
+prefer
+preferable
+preferableness
+preferably
+preference
+preference's
+preferences
+preferential
+preferentially
+preferred
+preferring
+prefers
+prefix
+prefixed
+prefixes
+prefixing
+pregnant
+pregnantly
+prehistoric
+prejudge
+prejudged
+prejudger
+prejudice
+prejudiced
+prejudices
+prejudicing
+prelate
+preliminaries
+preliminary
+prelude
+prelude's
+preluded
+preluder
+preludes
+preluding
+premature
+prematurely
+prematureness
+prematurity
+premeditated
+premeditatedly
+premier
+premier's
+premiere
+premiered
+premieres
+premiering
+premiers
+premise
+premise's
+premised
+premises
+premising
+premium
+premium's
+premiums
+preoccupation
+preoccupations
+preoccupied
+preoccupies
+preoccupy
+preparation
+preparation's
+preparations
+preparative
+preparative's
+preparatively
+preparatives
+preparatory
+prepare
+prepared
+preparedly
+preparedness
+preparer
+prepares
+preparing
+prepend
+prepended
+prepender
+prependers
+prepending
+prepends
+preposition
+preposition's
+prepositional
+prepositionally
+prepositions
+preposterous
+preposterously
+preposterousness
+preprint
+preprinted
+preprinting
+preprints
+preprocessor
+preprocessors
+preproduction
+preprogrammed
+prerequisite
+prerequisite's
+prerequisites
+prerogative
+prerogative's
+prerogatived
+prerogatives
+prescribe
+prescribed
+prescriber
+prescribes
+prescribing
+prescription
+prescription's
+prescriptions
+prescriptive
+prescriptively
+preselect
+preselected
+preselecting
+preselects
+presence
+presence's
+presences
+present
+presentation
+presentation's
+presentations
+presented
+presenter
+presenters
+presenting
+presently
+presentness
+presents
+preservation
+preservations
+preservative
+preservative's
+preservatives
+preserve
+preserved
+preserver
+preservers
+preserves
+preserving
+preset
+presets
+preside
+presided
+presidency
+president
+president's
+presidential
+presidentially
+presidents
+presider
+presides
+presiding
+press
+pressed
+presser
+presses
+pressing
+pressingly
+pressings
+pressure
+pressured
+pressures
+pressuring
+prestige
+presumably
+presume
+presumed
+presumer
+presumes
+presuming
+presumingly
+presumption
+presumption's
+presumptions
+presumptuous
+presumptuously
+presumptuousness
+presuppose
+presupposed
+presupposes
+presupposing
+pretend
+pretended
+pretendedly
+pretender
+pretenders
+pretending
+pretends
+pretentious
+pretentiously
+pretentiousness
+pretext
+pretext's
+pretexts
+prettied
+prettier
+pretties
+prettiest
+prettily
+prettiness
+pretty
+prettying
+prevail
+prevailed
+prevailing
+prevailingly
+prevails
+prevalence
+prevalent
+prevalently
+prevent
+preventable
+preventably
+prevented
+preventer
+preventing
+prevention
+preventions
+preventive
+preventively
+preventiveness
+preventives
+prevents
+preview
+previewed
+previewer
+previewers
+previewing
+previews
+previous
+previously
+previousness
+prey
+preyed
+preyer
+preying
+preys
+price
+priced
+priceless
+pricer
+pricers
+prices
+pricing
+prick
+pricked
+pricker
+pricking
+pricklier
+prickliness
+prickly
+pricks
+pride
+prided
+prides
+priding
+pried
+prier
+pries
+priest
+priestliness
+priestly
+priests
+primacy
+primaries
+primarily
+primary
+primary's
+prime
+primed
+primely
+primeness
+primer
+primers
+primes
+primeval
+primevally
+priming
+primitive
+primitively
+primitiveness
+primitives
+primrose
+prince
+princelier
+princeliness
+princely
+princes
+princess
+princess's
+princesses
+principal
+principalities
+principality
+principality's
+principally
+principals
+principle
+principled
+principles
+print
+printable
+printably
+printed
+printer
+printers
+printing
+printout
+printouts
+prints
+prior
+priori
+priorities
+priority
+priority's
+priorly
+priors
+priory
+prism
+prism's
+prisms
+prison
+prisoner
+prisoner's
+prisoners
+prisons
+privacies
+privacy
+private
+privately
+privateness
+privates
+privation
+privations
+privative
+privatively
+privies
+privilege
+privileged
+privileges
+privy
+privy's
+prize
+prized
+prizer
+prizers
+prizes
+prizing
+pro
+pro's
+probabilistic
+probabilistically
+probabilities
+probability
+probable
+probably
+probate
+probated
+probates
+probating
+probation
+probationer
+probationers
+probative
+probe
+probed
+prober
+probes
+probing
+probings
+problem
+problem's
+problematic
+problematical
+problematically
+problems
+procedural
+procedurally
+procedure
+procedure's
+procedures
+proceed
+proceeded
+proceeder
+proceeding
+proceedings
+proceeds
+process
+process's
+processed
+processes
+processing
+procession
+processor
+processor's
+processors
+proclaim
+proclaimed
+proclaimer
+proclaimers
+proclaiming
+proclaims
+proclamation
+proclamation's
+proclamations
+proclivities
+proclivity
+proclivity's
+procrastinate
+procrastinated
+procrastinates
+procrastinating
+procrastination
+procrastinator
+procrastinator's
+procrastinators
+procure
+procured
+procurement
+procurement's
+procurements
+procurer
+procurers
+procures
+procuring
+prodigal
+prodigally
+prodigious
+prodigiously
+prodigiousness
+produce
+produced
+producer
+producers
+produces
+producible
+producing
+product
+product's
+production
+production's
+productions
+productive
+productively
+productiveness
+productivities
+productivity
+products
+profane
+profaned
+profanely
+profaneness
+profaner
+profaning
+profess
+professed
+professedly
+professes
+professing
+profession
+profession's
+professional
+professionalism
+professionalisms
+professionally
+professionals
+professions
+professor
+professor's
+professors
+proffer
+proffered
+proffering
+proffers
+proficiencies
+proficiency
+proficient
+proficiently
+profile
+profiled
+profiler
+profiler's
+profilers
+profiles
+profiling
+profit
+profit's
+profitability
+profitable
+profitableness
+profitably
+profited
+profiteer
+profiteer's
+profiteers
+profiter
+profiters
+profiting
+profits
+profound
+profoundest
+profoundly
+profoundness
+progeny
+program
+program's
+programmability
+programmable
+programmed
+programmer
+programmer's
+programmers
+programming
+programs
+progress
+progressed
+progresses
+progressing
+progression
+progression's
+progressions
+progressive
+progressively
+progressiveness
+prohibit
+prohibited
+prohibiter
+prohibiting
+prohibition
+prohibition's
+prohibitions
+prohibitive
+prohibitively
+prohibitiveness
+prohibits
+project
+project's
+projected
+projecting
+projection
+projection's
+projections
+projective
+projectively
+projector
+projector's
+projectors
+projects
+prolegomena
+proletariat
+proliferate
+proliferated
+proliferates
+proliferating
+proliferation
+proliferative
+prolific
+prolificness
+prolog
+prolog's
+prologs
+prologue
+prologue's
+prologues
+prolong
+prolonged
+prolonger
+prolonging
+prolongs
+promenade
+promenade's
+promenader
+promenades
+promenading
+prominence
+prominent
+prominently
+promiscuity
+promiscuity's
+promiscuous
+promiscuously
+promiscuousness
+promise
+promised
+promiser
+promises
+promising
+promisingly
+promontories
+promontory
+promote
+promoted
+promoter
+promoters
+promotes
+promoting
+promotion
+promotional
+promotions
+promotive
+promotiveness
+prompt
+prompted
+prompter
+prompters
+promptest
+prompting
+promptings
+promptly
+promptness
+prompts
+promulgate
+promulgated
+promulgates
+promulgating
+promulgation
+promulgations
+prone
+pronely
+proneness
+prong
+pronged
+prongs
+pronoun
+pronoun's
+pronounce
+pronounceable
+pronounced
+pronouncedly
+pronouncement
+pronouncement's
+pronouncements
+pronouncer
+pronounces
+pronouncing
+pronouns
+pronunciation
+pronunciation's
+pronunciations
+proof
+proof's
+proofed
+proofer
+proofing
+proofs
+prop
+propaganda
+propagate
+propagated
+propagates
+propagating
+propagation
+propagations
+propagative
+propel
+propelled
+propeller
+propeller's
+propellers
+propels
+propensities
+propensity
+proper
+properly
+properness
+propertied
+properties
+property
+prophecies
+prophecy
+prophecy's
+prophesied
+prophesier
+prophesies
+prophesy
+prophesying
+prophet
+prophet's
+prophetic
+prophets
+propitious
+propitiously
+propitiousness
+proponent
+proponent's
+proponents
+proportion
+proportional
+proportionally
+proportionately
+proportioned
+proportioner
+proportioning
+proportionment
+proportions
+proposal
+proposal's
+proposals
+propose
+proposed
+proposer
+proposers
+proposes
+proposing
+proposition
+propositional
+propositionally
+propositioned
+propositioning
+propositions
+propound
+propounded
+propounder
+propounding
+propounds
+proprietary
+proprietor
+proprietor's
+proprietors
+propriety
+props
+propulsion
+propulsion's
+propulsions
+pros
+prose
+prosecute
+prosecuted
+prosecutes
+prosecuting
+prosecution
+prosecutions
+proser
+prosing
+prosodic
+prosodics
+prospect
+prospected
+prospecting
+prospection
+prospection's
+prospections
+prospective
+prospectively
+prospectiveness
+prospectives
+prospector
+prospector's
+prospectors
+prospects
+prospectus
+prosper
+prospered
+prospering
+prosperity
+prosperous
+prosperously
+prosperousness
+prospers
+prostitution
+prostrate
+prostrated
+prostration
+protect
+protected
+protectedly
+protecting
+protection
+protection's
+protections
+protective
+protectively
+protectiveness
+protector
+protector's
+protectorate
+protectors
+protects
+protege
+protege's
+proteges
+protein
+protein's
+proteins
+protest
+protest's
+protestants
+protestation
+protestations
+protested
+protester
+protester's
+protesters
+protesting
+protestingly
+protests
+protocol
+protocol's
+protocols
+proton
+proton's
+protons
+protoplasm
+prototype
+prototype's
+prototyped
+prototypes
+prototypical
+prototypically
+prototyping
+protrude
+protruded
+protrudes
+protruding
+protrusion
+protrusion's
+protrusions
+proud
+prouder
+proudest
+proudly
+provability
+provable
+provableness
+provably
+prove
+proved
+proven
+provenly
+prover
+proverb
+proverb's
+proverbs
+provers
+proves
+provide
+provided
+providence
+provider
+providers
+provides
+providing
+province
+province's
+provinces
+provincial
+provincially
+proving
+provision
+provisional
+provisionally
+provisioned
+provisioner
+provisioning
+provisions
+provocation
+provoke
+provoked
+provokes
+provoking
+provokingly
+prow
+prow's
+prowess
+prowl
+prowled
+prowler
+prowlers
+prowling
+prowls
+prows
+proximal
+proximally
+proximate
+proximately
+proximateness
+proximity
+prudence
+prudent
+prudently
+prune
+pruned
+pruner
+pruners
+prunes
+pruning
+pry
+prying
+pryingly
+psalm
+psalm's
+psalms
+pseudo
+psyche
+psyche's
+psyches
+psychiatrist
+psychiatrist's
+psychiatrists
+psychiatry
+psychological
+psychologically
+psychologist
+psychologist's
+psychologists
+psychology
+psychosocial
+psychosocially
+pub
+pub's
+public
+publication
+publication's
+publications
+publicity
+publicly
+publicness
+publics
+publish
+published
+publisher
+publishers
+publishes
+publishing
+pubs
+pucker
+puckered
+puckering
+puckers
+pudding
+pudding's
+puddings
+puddle
+puddled
+puddler
+puddles
+puddling
+puff
+puffed
+puffer
+puffers
+puffing
+puffs
+pull
+pulled
+puller
+pulley
+pulley's
+pulleys
+pulling
+pullings
+pulls
+pulp
+pulper
+pulping
+pulpit
+pulpit's
+pulpits
+pulse
+pulsed
+pulser
+pulses
+pulsing
+pump
+pumped
+pumper
+pumping
+pumpkin
+pumpkin's
+pumpkins
+pumps
+pun
+pun's
+punch
+punched
+puncher
+puncher's
+punchers
+punches
+punching
+punchings
+punctual
+punctually
+punctualness
+punctuation
+puncture
+puncture's
+punctured
+punctures
+puncturing
+punier
+puniness
+punish
+punishable
+punished
+punisher
+punishes
+punishing
+punishment
+punishment's
+punishments
+punitive
+punitively
+punitiveness
+puns
+punt
+punted
+punter
+punters
+punting
+punts
+puny
+pup
+pup's
+pupa
+pupas
+pupil
+pupil's
+pupils
+puppet
+puppet's
+puppets
+puppies
+puppy
+puppy's
+pups
+purchasable
+purchase
+purchased
+purchaser
+purchasers
+purchases
+purchasing
+pure
+purely
+pureness
+purer
+purest
+purge
+purged
+purger
+purges
+purging
+purification
+purifications
+purified
+purifier
+purifiers
+purifies
+purify
+purifying
+purity
+purple
+purpled
+purpler
+purples
+purplest
+purpling
+purport
+purported
+purportedly
+purporter
+purporters
+purporting
+purports
+purpose
+purposed
+purposeful
+purposefully
+purposefulness
+purposely
+purposes
+purposing
+purposive
+purposively
+purposiveness
+purr
+purred
+purring
+purringly
+purrs
+purse
+pursed
+purser
+pursers
+purses
+pursing
+pursue
+pursued
+pursuer
+pursuers
+pursues
+pursuing
+pursuit
+pursuit's
+pursuits
+purview
+push
+pushbutton
+pushbuttons
+pushdown
+pushed
+pusher
+pushers
+pushes
+pushing
+puss
+pussier
+pussies
+pussy
+put
+puts
+putter
+putterer
+puttering
+putters
+putting
+puzzle
+puzzled
+puzzlement
+puzzler
+puzzlers
+puzzles
+puzzling
+puzzlings
+pygmies
+pygmy
+pygmy's
+pyramid
+pyramid's
+pyramids
+quack
+quacked
+quacking
+quacks
+quadrant
+quadrant's
+quadrants
+quadratic
+quadratical
+quadratically
+quadratics
+quadrature
+quadrature's
+quadratures
+quadruple
+quadrupled
+quadruples
+quadrupling
+quadword
+quadword's
+quadwords
+quagmire
+quagmire's
+quagmires
+quail
+quail's
+quails
+quaint
+quaintly
+quaintness
+quake
+quaked
+quaker
+quakers
+quakes
+quaking
+qualification
+qualifications
+qualified
+qualifiedly
+qualifier
+qualifiers
+qualifies
+qualify
+qualifying
+qualitative
+qualitatively
+qualities
+quality
+quality's
+qualm
+qualms
+quandaries
+quandary
+quandary's
+quanta
+quantifiable
+quantification
+quantifications
+quantified
+quantifier
+quantifiers
+quantifies
+quantify
+quantifying
+quantitative
+quantitatively
+quantitativeness
+quantities
+quantity
+quantity's
+quantum
+quarantine
+quarantine's
+quarantined
+quarantines
+quarantining
+quarrel
+quarrels
+quarrelsome
+quarrelsomely
+quarrelsomeness
+quarried
+quarrier
+quarries
+quarry
+quarry's
+quarrying
+quart
+quarter
+quartered
+quarterer
+quartering
+quarterlies
+quarterly
+quarters
+quartet
+quartet's
+quartets
+quarts
+quartz
+quash
+quashed
+quashes
+quashing
+quasi
+quaver
+quavered
+quavering
+quaveringly
+quavers
+quay
+quays
+queen
+queen's
+queenly
+queens
+queer
+queerer
+queerest
+queerly
+queerness
+queers
+quell
+quelled
+queller
+quelling
+quells
+quench
+quenched
+quencher
+quenches
+quenching
+queried
+querier
+queries
+query
+querying
+quest
+quested
+quester
+questers
+questing
+question
+questionable
+questionableness
+questionably
+questioned
+questioner
+questioners
+questioning
+questioningly
+questionings
+questionnaire
+questionnaire's
+questionnaires
+questions
+quests
+queue
+queue's
+queued
+queuer
+queuer's
+queuers
+queues
+quick
+quicken
+quickened
+quickener
+quickening
+quickens
+quicker
+quickest
+quickly
+quickness
+quicksilver
+quiet
+quieted
+quieten
+quietened
+quietening
+quietens
+quieter
+quietest
+quieting
+quietly
+quietness
+quiets
+quietude
+quill
+quills
+quilt
+quilted
+quilter
+quilting
+quilts
+quinine
+quit
+quite
+quits
+quitter
+quitter's
+quitters
+quitting
+quiver
+quivered
+quivering
+quivers
+quiz
+quizzed
+quizzes
+quizzing
+quo
+quota
+quota's
+quotas
+quotation
+quotation's
+quotations
+quote
+quoted
+quotes
+quoth
+quotient
+quotients
+quoting
+rabbit
+rabbit's
+rabbited
+rabbiter
+rabbiting
+rabbits
+rabble
+rabbled
+rabbler
+rabbling
+raccoon
+raccoon's
+raccoons
+race
+raced
+racehorse
+racehorse's
+racehorses
+racer
+racers
+races
+racial
+racially
+racing
+rack
+racked
+racker
+racket
+racket's
+racketeer
+racketeering
+racketeers
+rackets
+racking
+racks
+radar
+radar's
+radars
+radial
+radially
+radiance
+radiant
+radiantly
+radiate
+radiated
+radiately
+radiates
+radiating
+radiation
+radiations
+radiative
+radiatively
+radiator
+radiator's
+radiators
+radical
+radically
+radicalness
+radicals
+radio
+radioed
+radioing
+radiology
+radios
+radish
+radish's
+radishes
+radius
+radiuses
+radix
+radixes
+raft
+rafter
+raftered
+rafters
+rafts
+rag
+rag's
+rage
+raged
+rages
+ragged
+raggedly
+raggedness
+raging
+rags
+raid
+raided
+raider
+raiders
+raiding
+raids
+rail
+railed
+railer
+railers
+railing
+railroad
+railroaded
+railroader
+railroaders
+railroading
+railroads
+rails
+railway
+railway's
+railways
+raiment
+rain
+rain's
+rainbow
+rainbows
+raincoat
+raincoat's
+raincoats
+raindrop
+raindrop's
+raindrops
+rained
+rainfall
+rainier
+rainiest
+raining
+rains
+rainy
+raise
+raised
+raiser
+raisers
+raises
+raisin
+raising
+raisins
+rake
+raked
+raker
+rakes
+raking
+rallied
+rallies
+rally
+rallying
+ram
+ram's
+ramble
+rambled
+rambler
+ramblers
+rambles
+rambling
+ramblingly
+ramblings
+ramification
+ramification's
+ramifications
+ramp
+ramp's
+rampart
+ramparts
+ramped
+ramping
+ramps
+rams
+ramses
+ran
+ranch
+ranched
+rancher
+ranchers
+ranches
+ranching
+random
+randomly
+randomness
+rang
+range
+ranged
+ranger
+rangers
+ranges
+ranging
+rank
+ranked
+ranker
+ranker's
+rankers
+rankest
+ranking
+ranking's
+rankings
+rankle
+rankled
+rankles
+rankling
+rankly
+rankness
+ranks
+ransack
+ransacked
+ransacker
+ransacking
+ransacks
+ransom
+ransomer
+ransoming
+ransoms
+rant
+ranted
+ranter
+ranters
+ranting
+rantingly
+rants
+rap
+rap's
+rape
+raped
+raper
+rapes
+rapid
+rapidity
+rapidly
+rapidness
+rapids
+raping
+raps
+rapt
+raptly
+raptness
+rapture
+rapture's
+raptured
+raptures
+rapturing
+rapturous
+rapturously
+rapturousness
+rare
+rarely
+rareness
+rarer
+rarest
+raring
+rarities
+rarity
+rarity's
+rascal
+rascally
+rascals
+rash
+rasher
+rashes
+rashly
+rashness
+rasp
+raspberry
+rasped
+rasper
+rasping
+raspingly
+raspings
+rasps
+raster
+rasters
+rat
+rat's
+rate
+rated
+rater
+raters
+rates
+rather
+ratification
+ratifications
+ratified
+ratifies
+ratify
+ratifying
+rating
+ratings
+ratio
+ratio's
+ration
+rational
+rationale
+rationale's
+rationales
+rationalities
+rationality
+rationally
+rationalness
+rationed
+rationing
+rations
+ratios
+rats
+rattle
+rattled
+rattler
+rattlers
+rattles
+rattlesnake
+rattlesnake's
+rattlesnakes
+rattling
+rattlingly
+ravage
+ravaged
+ravager
+ravagers
+ravages
+ravaging
+rave
+raved
+raven
+ravened
+ravener
+ravening
+ravenous
+ravenously
+ravenousness
+ravens
+raver
+raves
+ravine
+ravine's
+ravined
+ravines
+raving
+ravings
+raw
+rawer
+rawest
+rawly
+rawness
+raws
+ray
+ray's
+rayed
+rays
+razor
+razor's
+razors
+re
+reabbreviate
+reabbreviated
+reabbreviates
+reabbreviating
+reach
+reachable
+reachably
+reached
+reacher
+reaches
+reaching
+reacquainted
+react
+reacted
+reacting
+reaction
+reaction's
+reactionaries
+reactionary
+reactionary's
+reactions
+reactivate
+reactivated
+reactivates
+reactivating
+reactivation
+reactive
+reactively
+reactiveness
+reactivity
+reactor
+reactor's
+reactors
+reacts
+read
+readability
+readable
+readableness
+readapting
+reader
+reader's
+readers
+readied
+readier
+readies
+readiest
+readily
+readiness
+reading
+readings
+readjustable
+readjusted
+readjustments
+readjusts
+readout
+readout's
+readouts
+reads
+ready
+readying
+reaffirm
+reaffirmed
+reaffirming
+reaffirms
+reagents
+real
+realest
+realign
+realigned
+realigning
+realignment
+realignments
+realigns
+realism
+realist
+realist's
+realistic
+realistically
+realists
+realities
+reality
+realizable
+realizable's
+realizableness
+realizables
+realizablies
+realizably
+realization
+realization's
+realizations
+realize
+realized
+realizer
+realizers
+realizes
+realizing
+realizing's
+realizingly
+realizings
+reallocate
+reallocated
+reallocates
+reallocating
+reallocation
+reallocation's
+reallocations
+reallocator
+reallocator's
+reallocators
+reallotments
+reallots
+reallotted
+reallotting
+really
+realm
+realm's
+realms
+realness
+reals
+ream
+ream's
+reamed
+reamer
+reaming
+reams
+reanalysis
+reap
+reaped
+reaper
+reaping
+reappear
+reappeared
+reappearing
+reappears
+reapplying
+reapportioned
+reappraisal
+reappraisals
+reappraised
+reappraises
+reaps
+rear
+reared
+rearer
+rearing
+rearmed
+rearms
+rearrange
+rearrangeable
+rearranged
+rearrangement
+rearrangement's
+rearrangements
+rearranges
+rearranging
+rearrest
+rearrested
+rears
+reason
+reasonable
+reasonableness
+reasonably
+reasoned
+reasoner
+reasoning
+reasonings
+reasons
+reassemble
+reassembled
+reassembler
+reassembles
+reassembling
+reasserts
+reassess
+reassessed
+reassesses
+reassessing
+reassessment
+reassessment's
+reassessments
+reassign
+reassignable
+reassigned
+reassigning
+reassignment
+reassignment's
+reassignments
+reassigns
+reassurances
+reassure
+reassured
+reassures
+reassuring
+reassuringly
+reawaken
+reawakened
+reawakening
+reawakens
+rebate
+rebate's
+rebated
+rebater
+rebates
+rebating
+rebel
+rebel's
+rebelled
+rebelling
+rebellion
+rebellion's
+rebellions
+rebellious
+rebelliously
+rebelliousness
+rebells
+rebels
+rebidding
+rebids
+rebirth
+rebirth's
+rebonds
+reboot
+rebooted
+rebooter
+rebooters
+rebooting
+reboots
+reborn
+rebound
+rebounded
+rebounder
+rebounding
+rebounds
+rebroadcast
+rebroadcasts
+rebuff
+rebuffed
+rebuffing
+rebuffs
+rebuild
+rebuilding
+rebuilds
+rebuilt
+rebuke
+rebuked
+rebuker
+rebukes
+rebuking
+rebut
+rebuttal
+rebuttals
+rebutted
+rebutting
+recalculate
+recalculated
+recalculates
+recalculating
+recalculation
+recalculations
+recall
+recalled
+recaller
+recalling
+recalls
+recapitulate
+recapitulated
+recapitulates
+recapitulating
+recapitulation
+recapped
+recapping
+recapture
+recaptured
+recaptures
+recapturing
+recast
+recasting
+recasts
+recede
+receded
+recedes
+receding
+receipt
+receipt's
+receipted
+receipting
+receipts
+receivable
+receivables
+receive
+received
+receiver
+receiver's
+receivers
+receives
+receiving
+recent
+recently
+recentness
+receptacle
+receptacle's
+receptacles
+reception
+reception's
+receptions
+receptive
+receptively
+receptiveness
+receptivity
+receptor
+receptor's
+receptors
+recess
+recessed
+recesses
+recessing
+recession
+recession's
+recessions
+recessive
+recessively
+recessiveness
+recharged
+recharges
+rechartering
+rechecked
+rechecks
+recipe
+recipe's
+recipes
+recipient
+recipient's
+recipients
+reciprocal
+reciprocally
+reciprocals
+reciprocate
+reciprocated
+reciprocates
+reciprocating
+reciprocation
+reciprocative
+reciprocity
+recirculate
+recirculated
+recirculates
+recirculating
+recirculation
+recital
+recital's
+recitals
+recitation
+recitation's
+recitations
+recite
+recited
+reciter
+recites
+reciting
+reckless
+recklessly
+recklessness
+reckon
+reckoned
+reckoner
+reckoning
+reckonings
+reckons
+reclaim
+reclaimable
+reclaimed
+reclaimer
+reclaimers
+reclaiming
+reclaims
+reclamation
+reclamations
+reclassification
+reclassified
+reclassifies
+reclassify
+reclassifying
+recline
+reclined
+reclines
+reclining
+reclustered
+reclusters
+recode
+recoded
+recodes
+recoding
+recognition
+recognition's
+recognitions
+recoil
+recoiled
+recoiling
+recoils
+recoinage
+recollect
+recollected
+recollecting
+recollection
+recollection's
+recollections
+recollects
+recombination
+recombination's
+recombinational
+recombinations
+recombine
+recombined
+recombines
+recombining
+recommenced
+recommences
+recommend
+recommendation
+recommendation's
+recommendations
+recommended
+recommender
+recommending
+recommends
+recompense
+recompilations
+recompile
+recompiled
+recompiles
+recompiling
+recompute
+recomputed
+recomputes
+recomputing
+reconcile
+reconciled
+reconciler
+reconciles
+reconciliation
+reconciliation's
+reconciliations
+reconciling
+reconditioned
+reconfigurable
+reconfiguration
+reconfiguration's
+reconfigurations
+reconfigure
+reconfigured
+reconfigurer
+reconfigures
+reconfiguring
+reconnect
+reconnected
+reconnecter
+reconnecting
+reconnection
+reconnects
+reconsider
+reconsideration
+reconsidered
+reconsidering
+reconsiders
+reconsolidated
+reconsolidates
+reconstituted
+reconstitutes
+reconstruct
+reconstructed
+reconstructible
+reconstructing
+reconstruction
+reconstructions
+reconstructive
+reconstructs
+recontacted
+reconvened
+reconvenes
+reconverts
+record
+recorded
+recorder
+recorders
+recording
+recordings
+records
+recored
+recount
+recounted
+recounter
+recounting
+recounts
+recourse
+recourses
+recover
+recoverability
+recoverable
+recovered
+recoverer
+recoveries
+recovering
+recovers
+recovery
+recovery's
+recreate
+recreated
+recreates
+recreating
+recreation
+recreational
+recreations
+recreative
+recruit
+recruit's
+recruited
+recruiter
+recruiter's
+recruiters
+recruiting
+recruits
+recta
+rectangle
+rectangle's
+rectangles
+rectangular
+rectangularly
+rector
+rector's
+rectors
+rectum
+rectum's
+rectums
+recur
+recurrence
+recurrence's
+recurrences
+recurrent
+recurrently
+recurring
+recurs
+recurse
+recursed
+recurses
+recursing
+recursion
+recursion's
+recursions
+recursive
+recursively
+recursiveness
+recurved
+recyclable
+recycle
+recycled
+recycles
+recycling
+red
+redbreast
+redden
+reddened
+reddening
+redder
+reddest
+reddish
+reddishness
+redeclare
+redeclared
+redeclares
+redeclaring
+redecorated
+redecorates
+redeem
+redeemed
+redeemer
+redeemers
+redeeming
+redeems
+redefine
+redefined
+redefines
+redefining
+redefinition
+redefinition's
+redefinitions
+redemption
+redemptioner
+redeploys
+redeposit
+redeposit's
+redeposited
+redepositing
+redepositor
+redepositor's
+redepositors
+redeposits
+redesign
+redesigned
+redesigning
+redesigns
+redetermination
+redetermines
+redevelop
+redeveloped
+redeveloper
+redevelopers
+redeveloping
+redevelopment
+redevelops
+redials
+redirect
+redirected
+redirecting
+redirection
+redirections
+redirector
+redirector's
+redirectors
+redirects
+rediscovered
+rediscovers
+redisplay
+redisplayed
+redisplaying
+redisplays
+redistribute
+redistributed
+redistributes
+redistributing
+redistribution
+redistribution's
+redistributions
+redistributive
+redly
+redness
+redoing
+redone
+redouble
+redoubled
+redoubles
+redoubling
+redoubtable
+redraw
+redrawing
+redrawn
+redraws
+redress
+redressed
+redresser
+redresses
+redressing
+reds
+reduce
+reduced
+reducer
+reducers
+reduces
+reducibility
+reducible
+reducibly
+reducing
+reduction
+reduction's
+reductions
+redundancies
+redundancy
+redundant
+redundantly
+reduplicated
+reed
+reed's
+reeder
+reeding
+reeds
+reeducation
+reef
+reefer
+reefing
+reefs
+reel
+reelect
+reelected
+reelecting
+reelects
+reeled
+reeler
+reeling
+reels
+reemerged
+reenactment
+reenforcement
+reenlists
+reenter
+reentered
+reentering
+reenters
+reentrant
+reestablish
+reestablished
+reestablishes
+reestablishing
+reestimating
+reevaluate
+reevaluated
+reevaluates
+reevaluating
+reevaluation
+reeves
+reexamine
+reexamined
+reexamines
+reexamining
+refaced
+refaces
+refelled
+refelling
+refer
+referee
+referee's
+refereed
+refereeing
+referees
+reference
+referenced
+referencer
+references
+referencing
+referendum
+referent
+referent's
+referential
+referentiality
+referentially
+referents
+referral
+referral's
+referrals
+referred
+referrer
+referring
+refers
+refill
+refillable
+refilled
+refilling
+refills
+refine
+refined
+refinement
+refinement's
+refinements
+refiner
+refines
+refining
+refinished
+reflect
+reflected
+reflecting
+reflection
+reflection's
+reflections
+reflective
+reflectively
+reflectiveness
+reflectivity
+reflector
+reflector's
+reflectors
+reflects
+reflex
+reflex's
+reflexed
+reflexes
+reflexive
+reflexively
+reflexiveness
+reflexivity
+reflexly
+refluent
+refocus
+refocused
+refocuses
+refocusing
+refolded
+reform
+reformable
+reformat
+reformation
+reformative
+reformats
+reformatted
+reformatter
+reformatting
+reformed
+reformer
+reformers
+reforming
+reforms
+reformulate
+reformulated
+reformulates
+reformulating
+reformulation
+refractoriness
+refractory
+refrain
+refrained
+refraining
+refrains
+refresh
+refreshed
+refreshen
+refresher
+refreshers
+refreshes
+refreshing
+refreshingly
+refreshment
+refreshment's
+refreshments
+refried
+refries
+refrigerator
+refrigerator's
+refrigerators
+refry
+refrying
+refuel
+refuels
+refuge
+refuged
+refugee
+refugee's
+refugees
+refuges
+refuging
+refund
+refund's
+refunded
+refunder
+refunders
+refunding
+refunds
+refusal
+refusals
+refuse
+refused
+refuser
+refuses
+refusing
+refutable
+refutation
+refute
+refuted
+refuter
+refutes
+refuting
+regain
+regained
+regaining
+regains
+regal
+regaled
+regaling
+regally
+regard
+regarded
+regarding
+regardless
+regardlessly
+regardlessness
+regards
+regenerate
+regenerated
+regenerately
+regenerateness
+regenerates
+regenerating
+regeneration
+regenerative
+regeneratively
+regenerators
+regent
+regent's
+regents
+regime
+regime's
+regimen
+regiment
+regimented
+regiments
+regimes
+region
+region's
+regional
+regionally
+regions
+register
+registered
+registering
+registers
+registration
+registration's
+registrations
+regreets
+regress
+regressed
+regresses
+regressing
+regression
+regression's
+regressions
+regressive
+regressively
+regressiveness
+regret
+regretful
+regretfully
+regretfulness
+regrets
+regrettable
+regrettably
+regretted
+regretting
+regrids
+regroup
+regrouped
+regrouping
+regular
+regularities
+regularity
+regularly
+regulars
+regulate
+regulated
+regulates
+regulating
+regulation
+regulations
+regulative
+regulator
+regulator's
+regulators
+rehash
+rehashed
+rehashes
+rehashing
+rehearsal
+rehearsal's
+rehearsals
+rehearse
+rehearsed
+rehearser
+rehearses
+rehearsing
+rehoused
+rehouses
+reign
+reigned
+reigning
+reigns
+reimbursed
+reimbursement
+reimbursement's
+reimbursements
+rein
+reincarnate
+reincarnated
+reincarnation
+reincorporating
+reincorporation
+reindeer
+reined
+reinforce
+reinforced
+reinforcement
+reinforcement's
+reinforcements
+reinforcer
+reinforces
+reinforcing
+reining
+reins
+reinsert
+reinserted
+reinserting
+reinsertions
+reinserts
+reinstall
+reinstalled
+reinstaller
+reinstalling
+reinstalls
+reinstate
+reinstated
+reinstatement
+reinstates
+reinstating
+reintegrated
+reinterpret
+reinterpretations
+reinterpreted
+reinterpreting
+reinterprets
+reinterviewed
+reintroduce
+reintroduced
+reintroduces
+reintroducing
+reinvent
+reinvented
+reinventing
+reinvention
+reinvents
+reinvested
+reinvoked
+reinvokes
+reissue
+reissued
+reissuer
+reissuer's
+reissuers
+reissues
+reissuing
+reiterate
+reiterated
+reiterates
+reiterating
+reiteration
+reiterations
+reiterative
+reiteratively
+reiterativeness
+reject
+rejected
+rejecter
+rejecting
+rejectingly
+rejection
+rejection's
+rejections
+rejective
+rejector
+rejector's
+rejectors
+rejects
+rejoice
+rejoiced
+rejoicer
+rejoices
+rejoicing
+rejoicingly
+rejoin
+rejoined
+rejoining
+rejoins
+rekindle
+rekindled
+rekindler
+rekindles
+rekindling
+reknit
+relabel
+relabels
+relapse
+relapsed
+relapser
+relapses
+relapsing
+relate
+related
+relatedly
+relatedness
+relater
+relates
+relating
+relation
+relational
+relationally
+relations
+relationship
+relationship's
+relationships
+relative
+relatively
+relativeness
+relatives
+relativism
+relativistic
+relativistically
+relativity
+relativity's
+relax
+relaxation
+relaxation's
+relaxations
+relaxed
+relaxedly
+relaxedness
+relaxer
+relaxes
+relaxing
+relay
+relayed
+relaying
+relays
+relearns
+release
+released
+releaser
+releases
+releasing
+relegate
+relegated
+relegates
+relegating
+relegation
+relent
+relented
+relenting
+relentless
+relentlessly
+relentlessness
+relents
+relevance
+relevances
+relevant
+relevantly
+reliabilities
+reliability
+reliable
+reliableness
+reliably
+reliance
+relic
+relic's
+relicense
+relicensed
+relicenser
+relicenses
+relicensing
+relics
+relied
+relief
+reliefs
+relier
+relies
+relieve
+relieved
+relievedly
+reliever
+relievers
+relieves
+relieving
+religion
+religion's
+religions
+religious
+religiously
+religiousness
+relinking
+relinquish
+relinquished
+relinquishes
+relinquishing
+relish
+relished
+relishes
+relishing
+relive
+relives
+reliving
+reload
+reloaded
+reloader
+reloading
+reloads
+relocate
+relocated
+relocates
+relocating
+relocation
+relocations
+reluctance
+reluctances
+reluctant
+reluctantly
+rely
+relying
+remade
+remain
+remainder
+remainder's
+remaindered
+remaindering
+remainders
+remained
+remaining
+remains
+remark
+remarkable
+remarkableness
+remarkably
+remarked
+remarking
+remarks
+remarriages
+remarried
+remedied
+remedies
+remedy
+remedying
+remember
+remembered
+rememberer
+remembering
+remembers
+remembrance
+remembrance's
+remembrancer
+remembrances
+remind
+reminded
+reminder
+reminders
+reminding
+reminds
+reminiscence
+reminiscence's
+reminiscences
+reminiscent
+reminiscently
+remissions
+remittance
+remittances
+remixed
+remnant
+remnant's
+remnants
+remodel
+remodels
+remodulate
+remodulated
+remodulates
+remodulating
+remodulation
+remodulator
+remodulator's
+remodulators
+remolding
+remonstrate
+remonstrated
+remonstrates
+remonstrating
+remonstration
+remonstrative
+remonstratively
+remorse
+remote
+remotely
+remoteness
+remotest
+remotion
+remoulds
+removable
+removableness
+removal
+removal's
+removals
+remove
+removed
+remover
+removes
+removing
+renaissance
+renal
+rename
+renamed
+renames
+renaming
+renatured
+renatures
+rend
+render
+rendered
+renderer
+rendering
+renderings
+renders
+rendezvous
+rendezvoused
+rendezvouses
+rendezvousing
+rending
+rendition
+rendition's
+renditions
+rends
+renegotiable
+renegotiated
+renegotiates
+renew
+renewal
+renewals
+renewed
+renewer
+renewing
+renews
+reno
+renominated
+renominates
+renounce
+renounced
+renouncer
+renounces
+renouncing
+renown
+renowned
+rent
+rental
+rental's
+rentals
+rented
+renter
+renter's
+renters
+renting
+rents
+renumber
+renumbered
+renumbering
+renumbers
+reopen
+reopened
+reopening
+reopens
+reorder
+reordered
+reordering
+reorders
+reoriented
+repackage
+repackaged
+repackager
+repackages
+repackaging
+repacks
+repaid
+repaint
+repainted
+repainter
+repainters
+repainting
+repaints
+repair
+repaired
+repairer
+repairers
+repairing
+repairman
+repairs
+reparable
+reparation
+reparation's
+reparations
+repartition
+repartitioned
+repartitioner
+repartitioners
+repartitioning
+repartitions
+repast
+repast's
+repasts
+repaving
+repay
+repayable
+repaying
+repayments
+repays
+repeal
+repealed
+repealer
+repealing
+repeals
+repeat
+repeatable
+repeated
+repeatedly
+repeater
+repeaters
+repeating
+repeats
+repel
+repels
+repent
+repentance
+repented
+repenter
+repenting
+repents
+repercussion
+repercussion's
+repercussions
+repertoire
+repetition
+repetition's
+repetitions
+repetitive
+repetitively
+repetitiveness
+rephrase
+rephrased
+rephrases
+rephrasing
+repine
+repined
+repiner
+repining
+replace
+replaceable
+replaced
+replacement
+replacement's
+replacements
+replacer
+replaces
+replacing
+replanted
+replay
+replayed
+replaying
+replays
+repleader
+replenish
+replenished
+replenisher
+replenishes
+replenishing
+replete
+repleteness
+repletion
+replica
+replica's
+replicas
+replicate
+replicated
+replicates
+replicating
+replication
+replications
+replicative
+replied
+replier
+replies
+reply
+replying
+report
+reported
+reportedly
+reporter
+reporters
+reporting
+reports
+repose
+reposed
+reposes
+reposing
+reposition
+repositioned
+repositioning
+repositions
+repositories
+repository
+repository's
+repost
+reposted
+reposter
+reposting
+repostings
+reposts
+represent
+representable
+representably
+representation
+representation's
+representational
+representationally
+representations
+representative
+representatively
+representativeness
+representatives
+represented
+representer
+representing
+represents
+repress
+repressed
+represses
+repressing
+repression
+repression's
+repressions
+repressive
+repressively
+repressiveness
+reprieve
+reprieved
+reprieves
+reprieving
+reprint
+reprinted
+reprinter
+reprinting
+reprints
+reprisal
+reprisal's
+reprisals
+reproach
+reproached
+reproacher
+reproaches
+reproaching
+reproachingly
+reprobates
+reprocessed
+reproduce
+reproduced
+reproducer
+reproducers
+reproduces
+reproducibilities
+reproducibility
+reproducible
+reproducibly
+reproducing
+reproduction
+reproduction's
+reproductions
+reproductive
+reproductively
+reproductivity
+reprogrammed
+reprogrammer
+reprogrammer's
+reprogrammers
+reprogramming
+reproof
+reprove
+reproved
+reprover
+reproving
+reprovingly
+reptile
+reptile's
+reptiles
+republic
+republic's
+republican
+republican's
+republicans
+republication
+republics
+republish
+republished
+republisher
+republisher's
+republishers
+republishes
+republishing
+repudiate
+repudiated
+repudiates
+repudiating
+repudiation
+repudiations
+repulse
+repulsed
+repulses
+repulsing
+repulsion
+repulsions
+repulsive
+repulsively
+repulsiveness
+reputable
+reputably
+reputation
+reputation's
+reputations
+repute
+reputed
+reputedly
+reputes
+reputing
+request
+requested
+requester
+requesters
+requesting
+requestioned
+requests
+requiem
+requiem's
+requiems
+require
+required
+requirement
+requirement's
+requirements
+requirer
+requires
+requiring
+requisite
+requisiteness
+requisites
+requisition
+requisitioned
+requisitioner
+requisitioning
+requisitions
+requite
+requited
+requiter
+requiting
+reran
+reread
+rereading
+rereads
+reroute
+rerouted
+rerouter
+rerouters
+reroutes
+reroutings
+rerun
+rerunning
+reruns
+res
+resalable
+resaturated
+resaturates
+rescaled
+rescan
+rescanned
+rescanning
+rescans
+reschedule
+rescheduled
+rescheduler
+reschedules
+rescheduling
+rescue
+rescued
+rescuer
+rescuers
+rescues
+rescuing
+resealed
+research
+researched
+researcher
+researcher's
+researchers
+researches
+researching
+reselect
+reselected
+reselecting
+reselects
+resell
+reseller
+resellers
+reselling
+resells
+resemblance
+resemblance's
+resemblances
+resemble
+resembled
+resembles
+resembling
+resends
+resent
+resented
+resentful
+resentfully
+resentfulness
+resenting
+resentment
+resents
+resequenced
+reservation
+reservation's
+reservations
+reserve
+reserved
+reservedly
+reservedness
+reserver
+reserves
+reserving
+reservoir
+reservoir's
+reservoirs
+reset
+reseted
+reseter
+reseting
+resets
+resetting
+resettings
+resettled
+resettles
+resettling
+reshape
+reshaped
+reshaper
+reshapes
+reshaping
+reside
+resided
+residence
+residence's
+residences
+resident
+resident's
+residential
+residentially
+residents
+resider
+resides
+residing
+residue
+residue's
+residues
+resifted
+resign
+resignation
+resignation's
+resignations
+resigned
+resignedly
+resignedness
+resigner
+resigning
+resigns
+resin
+resin's
+resined
+resining
+resins
+resist
+resistance
+resistances
+resistant
+resistantly
+resisted
+resister
+resistible
+resistibly
+resisting
+resistive
+resistively
+resistiveness
+resistivity
+resistor
+resistor's
+resistors
+resists
+resize
+resized
+resizes
+resizing
+resold
+resoluble
+resolute
+resolutely
+resoluteness
+resolution
+resolutions
+resolutive
+resolvable
+resolve
+resolved
+resolver
+resolvers
+resolves
+resolving
+resonance
+resonances
+resonant
+resonantly
+resort
+resorted
+resorter
+resorting
+resorts
+resound
+resounding
+resoundingly
+resounds
+resource
+resource's
+resourced
+resourceful
+resourcefully
+resourcefulness
+resources
+resourcing
+respecified
+respect
+respectability
+respectable
+respectableness
+respectably
+respected
+respecter
+respectful
+respectfully
+respectfulness
+respecting
+respective
+respectively
+respectiveness
+respects
+respiration
+respirations
+respired
+respires
+respite
+respited
+respiting
+resplendent
+resplendently
+respond
+responded
+respondent
+respondent's
+respondents
+responder
+responders
+responding
+responds
+response
+responser
+responses
+responsibilities
+responsibility
+responsible
+responsibleness
+responsibly
+responsions
+responsive
+responsively
+responsiveness
+rest
+restart
+restarted
+restarter
+restarting
+restarts
+restate
+restated
+restatement
+restates
+restating
+restaurant
+restaurant's
+restaurants
+rested
+rester
+restful
+restfully
+restfulness
+resting
+restive
+restively
+restiveness
+restless
+restlessly
+restlessness
+restoration
+restoration's
+restorations
+restore
+restored
+restorer
+restorers
+restores
+restoring
+restrain
+restrained
+restrainedly
+restrainer
+restrainers
+restraining
+restrains
+restraint
+restraint's
+restraints
+restrict
+restricted
+restrictedly
+restricting
+restriction
+restriction's
+restrictions
+restrictive
+restrictively
+restrictiveness
+restricts
+restroom
+restroom's
+restrooms
+restructure
+restructured
+restructures
+restructuring
+rests
+resubmit
+resubmits
+resubmitted
+resubmitting
+result
+resultant
+resultantly
+resultants
+resulted
+resulting
+results
+resumable
+resume
+resumed
+resumes
+resuming
+resumption
+resumption's
+resumptions
+resupplier
+resupplier's
+resuppliers
+resurface
+resurfaced
+resurfacer
+resurfacer's
+resurfacers
+resurfaces
+resurfacing
+resurged
+resurges
+resurrect
+resurrected
+resurrecting
+resurrection
+resurrection's
+resurrections
+resurrects
+resuspended
+retail
+retailed
+retailer
+retailers
+retailing
+retails
+retain
+retained
+retainer
+retainers
+retaining
+retainment
+retains
+retaliation
+retard
+retarded
+retarder
+retarding
+retention
+retentions
+retentive
+retentively
+retentiveness
+rethinks
+rethreading
+reticence
+reticent
+reticently
+reticle
+reticle's
+reticles
+reticular
+reticulate
+reticulated
+reticulately
+reticulates
+reticulating
+reticulation
+retied
+retina
+retina's
+retinal
+retinas
+retinue
+retinues
+retire
+retired
+retiredly
+retiredness
+retirement
+retirement's
+retirements
+retires
+retiring
+retiringly
+retiringness
+retitled
+retold
+retort
+retorted
+retorting
+retorts
+retrace
+retraced
+retraces
+retracing
+retract
+retractable
+retracted
+retracting
+retraction
+retractions
+retractor
+retractor's
+retractors
+retracts
+retrain
+retrained
+retraining
+retrains
+retranslated
+retransmission
+retransmission's
+retransmissions
+retransmit
+retransmits
+retransmitted
+retransmitting
+retreat
+retreated
+retreater
+retreating
+retreats
+retried
+retrier
+retriers
+retries
+retrievable
+retrieval
+retrieval's
+retrievals
+retrieve
+retrieved
+retriever
+retrievers
+retrieves
+retrieving
+retroactively
+retrospect
+retrospection
+retrospective
+retrospectively
+retry
+retrying
+return
+returnable
+returned
+returner
+returners
+returning
+returns
+retype
+retyped
+retypes
+retyping
+reunion
+reunion's
+reunions
+reunite
+reunited
+reuniting
+reupholstering
+reusable
+reuse
+reused
+reuses
+reusing
+revalidated
+revalidates
+revalidation
+revalued
+revalues
+revamp
+revamped
+revamping
+revamps
+reveal
+revealed
+revealer
+revealing
+reveals
+revel
+revelation
+revelation's
+revelations
+revelry
+revels
+revenge
+revenge's
+revenged
+revenger
+revenges
+revenging
+revenue
+revenuer
+revenuers
+revenues
+revere
+revered
+reverence
+reverencer
+reverend
+reverend's
+reverends
+reverently
+reveres
+reverified
+reverifies
+reverify
+reverifying
+revering
+reversal
+reversal's
+reversals
+reverse
+reversed
+reversely
+reverser
+reverses
+reversible
+reversing
+reversion
+reversioner
+reversions
+revert
+reverted
+reverter
+reverting
+revertive
+reverts
+revetting
+review
+reviewed
+reviewer
+reviewers
+reviewing
+reviews
+revile
+reviled
+reviler
+reviling
+revise
+revised
+reviser
+revises
+revising
+revision
+revision's
+revisions
+revisit
+revisited
+revisiting
+revisits
+revival
+revival's
+revivals
+revive
+revived
+reviver
+revives
+reviving
+revocation
+revocations
+revoke
+revoked
+revoker
+revokes
+revoking
+revolt
+revolted
+revolter
+revolting
+revoltingly
+revolts
+revolution
+revolution's
+revolutionaries
+revolutionariness
+revolutionary
+revolutionary's
+revolutions
+revolve
+revolved
+revolver
+revolvers
+revolves
+revolving
+reward
+rewarded
+rewarder
+rewarding
+rewardingly
+rewards
+rewind
+rewinded
+rewinder
+rewinding
+rewinds
+rewired
+rewires
+reword
+reworded
+rewording
+rewording's
+rewordings
+rewords
+rework
+reworked
+reworking
+reworks
+rewound
+rewrite
+rewriter
+rewrites
+rewriting
+rewritings
+rewritten
+rewrote
+rhetoric
+rheumatism
+rhinoceros
+rhubarb
+rhyme
+rhymed
+rhymer
+rhymes
+rhyming
+rhythm
+rhythm's
+rhythmic
+rhythmical
+rhythmically
+rhythmics
+rhythms
+rib
+rib's
+ribbed
+ribbing
+ribbon
+ribbon's
+ribbons
+ribs
+rice
+ricer
+rices
+rich
+richen
+richened
+richening
+richer
+riches
+richest
+richly
+richness
+rickshaw
+rickshaw's
+rickshaws
+rid
+ridden
+riddle
+riddled
+riddler
+riddles
+riddling
+ride
+rider
+rider's
+riders
+rides
+ridge
+ridge's
+ridged
+ridges
+ridging
+ridicule
+ridiculed
+ridiculer
+ridicules
+ridiculing
+ridiculous
+ridiculously
+ridiculousness
+riding
+ridings
+rids
+rifle
+rifled
+rifleman
+rifler
+rifles
+rifling
+rift
+rig
+rig's
+rigged
+rigging
+right
+righted
+righten
+righteous
+righteously
+righteousness
+righter
+rightful
+rightfully
+rightfulness
+righting
+rightly
+rightmost
+rightness
+rights
+rightward
+rightwards
+rigid
+rigidities
+rigidity
+rigidly
+rigidness
+rigorous
+rigorously
+rigorousness
+rigs
+rill
+rim
+rim's
+rime
+rimer
+riming
+rims
+rind
+rind's
+rinded
+rinds
+ring
+ringed
+ringer
+ringers
+ringing
+ringingly
+ringings
+rings
+rinse
+rinsed
+rinser
+rinses
+rinsing
+riot
+rioted
+rioter
+rioters
+rioting
+riotous
+riotously
+riotousness
+riots
+rip
+ripe
+ripely
+ripen
+ripened
+ripener
+ripeness
+ripening
+ripens
+riper
+ripest
+ripped
+ripping
+ripple
+rippled
+rippler
+ripples
+rippling
+rips
+rise
+risen
+riser
+risers
+rises
+rising
+risings
+risk
+risked
+risker
+risking
+risks
+rite
+rite's
+rited
+rites
+ritual
+ritually
+rituals
+rival
+rivalries
+rivalry
+rivalry's
+rivals
+rive
+rived
+riven
+river
+river's
+rivers
+riverside
+rivet
+riveted
+riveter
+riveting
+rivets
+riving
+rivulet
+rivulet's
+rivulets
+road
+road's
+roads
+roadside
+roadsides
+roadster
+roadster's
+roadsters
+roadway
+roadway's
+roadways
+roam
+roamed
+roamer
+roaming
+roams
+roar
+roared
+roarer
+roaring
+roaringest
+roars
+roast
+roasted
+roaster
+roasting
+roasts
+rob
+robbed
+robber
+robber's
+robberies
+robbers
+robbery
+robbery's
+robbing
+robe
+robed
+robes
+robin
+robin's
+robing
+robins
+robot
+robot's
+robotic
+robotics
+robots
+robs
+robust
+robustly
+robustness
+rock
+rocked
+rocker
+rockers
+rocket
+rocket's
+rocketed
+rocketing
+rockets
+rockier
+rockies
+rockiness
+rocking
+rocks
+rocky
+rod
+rod's
+rode
+rods
+roe
+roes
+rogue
+rogue's
+rogues
+roguing
+role
+role's
+roles
+roll
+rolled
+roller
+rollers
+rolling
+rolls
+romance
+romanced
+romancer
+romancers
+romances
+romancing
+romantic
+romantic's
+romantically
+romantics
+romp
+romped
+romper
+rompers
+romping
+romps
+roof
+roofed
+roofer
+roofers
+roofing
+roofs
+rook
+rooks
+room
+roomed
+roomer
+roomers
+rooming
+rooms
+roost
+rooster
+roosters
+root
+root's
+rooted
+rootedness
+rooter
+rooting
+roots
+rope
+roped
+roper
+ropers
+ropes
+roping
+rose
+rose's
+rosebud
+rosebud's
+rosebuds
+roses
+rosier
+rosiness
+rosy
+rot
+rotary
+rotate
+rotated
+rotates
+rotating
+rotation
+rotational
+rotationally
+rotations
+rotative
+rotatively
+rotator
+rotator's
+rotators
+rots
+rotten
+rottenly
+rottenness
+rouge
+rough
+roughed
+roughen
+roughened
+roughening
+roughens
+rougher
+roughest
+roughly
+roughness
+rouging
+round
+roundabout
+roundaboutness
+rounded
+roundedness
+rounder
+rounders
+roundest
+rounding
+roundly
+roundness
+roundoff
+rounds
+roundup
+roundup's
+roundups
+rouse
+roused
+rouser
+rouses
+rousing
+rout
+route
+routed
+router
+routers
+routes
+routine
+routinely
+routines
+routing
+routings
+rove
+roved
+rover
+roves
+roving
+row
+rowed
+rowen
+rower
+rowers
+rowing
+rows
+royal
+royalist
+royalist's
+royalists
+royally
+royalties
+royalty
+royalty's
+rub
+rubbed
+rubber
+rubber's
+rubbers
+rubbing
+rubbish
+rubbishes
+rubble
+rubbled
+rubbling
+rubies
+rubout
+rubs
+ruby
+ruby's
+rudder
+rudder's
+rudders
+ruddier
+ruddiness
+ruddy
+rude
+rudely
+rudeness
+ruder
+rudest
+rudiment
+rudiment's
+rudimentariness
+rudimentary
+rudiments
+rue
+ruefully
+rues
+ruffian
+ruffianly
+ruffians
+ruffle
+ruffled
+ruffler
+ruffles
+ruffling
+rug
+rug's
+rugged
+ruggedly
+ruggedness
+rugs
+ruin
+ruination
+ruination's
+ruinations
+ruined
+ruiner
+ruing
+ruining
+ruinous
+ruinously
+ruinousness
+ruins
+rule
+ruled
+ruler
+rulers
+rules
+ruling
+rulings
+rum
+rumble
+rumbled
+rumbler
+rumbles
+rumbling
+rumen
+rumens
+rump
+rumple
+rumpled
+rumples
+rumplier
+rumpling
+rumply
+rumps
+run
+runaway
+runaways
+rung
+rung's
+rungs
+runnable
+runner
+runner's
+runners
+running
+runs
+runtime
+rupture
+ruptured
+ruptures
+rupturing
+rural
+rurally
+rush
+rushed
+rusher
+rushes
+rushing
+russet
+russeted
+russeting
+russets
+rust
+rusted
+rustic
+rusticate
+rusticated
+rusticates
+rusticating
+rustication
+rustier
+rustiness
+rusting
+rustle
+rustled
+rustler
+rustlers
+rustles
+rustling
+rusts
+rusty
+rut
+rut's
+ruthless
+ruthlessly
+ruthlessness
+ruts
+rye
+rye's
+sable
+sable's
+sables
+sabotage
+sabotaged
+sabotages
+sabotaging
+sack
+sacked
+sacker
+sacking
+sacks
+sacred
+sacredly
+sacredness
+sacrifice
+sacrificed
+sacrificer
+sacrificers
+sacrifices
+sacrificial
+sacrificially
+sacrificing
+sad
+sadden
+saddened
+saddening
+saddens
+sadder
+saddest
+saddle
+saddled
+saddler
+saddles
+saddling
+sadism
+sadist
+sadist's
+sadistic
+sadistically
+sadists
+sadly
+sadness
+safe
+safeguard
+safeguarded
+safeguarding
+safeguards
+safely
+safeness
+safer
+safes
+safest
+safetied
+safeties
+safety
+safetying
+sag
+sagacious
+sagaciously
+sagaciousness
+sagacity
+sage
+sagely
+sageness
+sages
+sags
+said
+sail
+sailed
+sailer
+sailing
+sailor
+sailorly
+sailors
+sails
+saint
+sainted
+saintliness
+saintly
+saints
+sake
+saker
+sakes
+salable
+salad
+salad's
+salads
+salaried
+salaries
+salary
+sale
+sale's
+sales
+salesman
+salesmen
+salespeople
+salespeople's
+salesperson
+salesperson's
+salient
+saliently
+saline
+saliva
+sallied
+sallies
+sallow
+sallowness
+sally
+sallying
+salmon
+salmons
+salon
+salon's
+salons
+saloon
+saloon's
+saloons
+salt
+salted
+salter
+salters
+saltier
+saltiest
+saltiness
+salting
+saltness
+salts
+salty
+salutariness
+salutary
+salutation
+salutation's
+salutations
+salute
+saluted
+saluter
+salutes
+saluting
+salvage
+salvaged
+salvager
+salvages
+salvaging
+salvation
+salve
+salver
+salves
+salving
+same
+sameness
+sample
+sample's
+sampled
+sampler
+samplers
+samples
+sampling
+samplings
+sanctification
+sanctified
+sanctifier
+sanctify
+sanction
+sanctioned
+sanctioning
+sanctions
+sanctities
+sanctity
+sanctuaries
+sanctuary
+sanctuary's
+sand
+sandal
+sandal's
+sandals
+sanded
+sander
+sanders
+sandier
+sandiness
+sanding
+sandpaper
+sands
+sandstone
+sandstones
+sandwich
+sandwiched
+sandwiches
+sandwiching
+sandy
+sane
+sanely
+saneness
+saner
+sanest
+sang
+sanguine
+sanguinely
+sanguineness
+sanitarium
+sanitariums
+sanitary
+sanitation
+sanity
+sank
+sap
+sap's
+sapling
+sapling's
+saplings
+sapphire
+saps
+sarcasm
+sarcasm's
+sarcasms
+sarcastic
+sash
+sashed
+sashes
+sat
+satchel
+satchel's
+satchels
+sate
+sated
+satellite
+satellite's
+satellites
+sates
+satin
+sating
+satire
+satire's
+satires
+satirist
+satirist's
+satirists
+satisfaction
+satisfaction's
+satisfactions
+satisfactorily
+satisfactoriness
+satisfactory
+satisfiability
+satisfiable
+satisfied
+satisfier
+satisfiers
+satisfies
+satisfy
+satisfying
+satisfyingly
+saturate
+saturated
+saturater
+saturates
+saturating
+saturation
+saturations
+satyr
+sauce
+saucepan
+saucepan's
+saucepans
+saucer
+saucers
+sauces
+saucier
+sauciness
+saucing
+saucy
+saunter
+sauntered
+saunterer
+sauntering
+saunters
+sausage
+sausage's
+sausages
+savage
+savaged
+savagely
+savageness
+savager
+savagers
+savages
+savaging
+save
+saved
+saver
+savers
+saves
+saving
+savings
+saw
+sawed
+sawer
+sawing
+sawmill
+sawmill's
+sawmills
+saws
+sawtooth
+say
+sayer
+sayers
+saying
+sayings
+says
+scabbard
+scabbard's
+scabbards
+scaffold
+scaffolding
+scaffoldings
+scaffolds
+scalable
+scalar
+scalar's
+scalars
+scald
+scalded
+scalding
+scalds
+scale
+scaled
+scaler
+scalers
+scales
+scalier
+scaliness
+scaling
+scalings
+scallop
+scalloped
+scalloper
+scalloping
+scallops
+scalp
+scalp's
+scalper
+scalping
+scalps
+scaly
+scam
+scam's
+scamper
+scampered
+scampering
+scampers
+scams
+scan
+scandal
+scandal's
+scandalous
+scandalously
+scandalousness
+scandals
+scanned
+scanner
+scanner's
+scanners
+scanning
+scans
+scant
+scantier
+scanties
+scantiest
+scantily
+scantiness
+scantly
+scantness
+scanty
+scar
+scar's
+scarce
+scarcely
+scarceness
+scarcer
+scarcest
+scarcity
+scare
+scared
+scarer
+scares
+scarf
+scarfs
+scarier
+scaring
+scarlet
+scars
+scary
+scatter
+scattered
+scatterer
+scattering
+scatteringly
+scatters
+scavenger
+scavenger's
+scavengers
+scenario
+scenario's
+scenarios
+scene
+scene's
+sceneries
+scenery
+scenes
+scenic
+scenics
+scent
+scented
+scents
+schedule
+schedule's
+scheduled
+scheduler
+scheduler's
+schedulers
+schedules
+scheduling
+schema
+schema's
+schemas
+schemata
+schematic
+schematically
+schematics
+scheme
+scheme's
+schemed
+schemer
+schemers
+schemes
+scheming
+schizophrenia
+scholar
+scholarly
+scholars
+scholarship
+scholarship's
+scholarships
+scholastic
+scholastically
+scholastics
+school
+schoolboy
+schoolboy's
+schoolboys
+schooled
+schooler
+schoolers
+schoolhouse
+schoolhouse's
+schoolhouses
+schooling
+schoolmaster
+schoolmaster's
+schoolmasters
+schoolroom
+schoolroom's
+schoolrooms
+schools
+schoolyard
+schoolyard's
+schoolyards
+schooner
+science
+science's
+sciences
+scientific
+scientifically
+scientist
+scientist's
+scientists
+scissor
+scissored
+scissoring
+scissors
+scoff
+scoffed
+scoffer
+scoffing
+scoffs
+scold
+scolded
+scolder
+scolding
+scolds
+scoop
+scooped
+scooper
+scooping
+scoops
+scope
+scoped
+scopes
+scoping
+scorch
+scorched
+scorcher
+scorches
+scorching
+scorchingly
+score
+score's
+scored
+scorer
+scorers
+scores
+scoring
+scorings
+scorn
+scorned
+scorner
+scornful
+scornfully
+scornfulness
+scorning
+scorns
+scorpion
+scorpion's
+scorpions
+scoundrel
+scoundrel's
+scoundrelly
+scoundrels
+scour
+scoured
+scourer
+scourge
+scourger
+scourging
+scouring
+scourings
+scours
+scout
+scouted
+scouter
+scouting
+scouts
+scow
+scowl
+scowled
+scowler
+scowling
+scowls
+scramble
+scrambled
+scrambler
+scrambles
+scrambling
+scrap
+scrap's
+scrape
+scraped
+scraper
+scrapers
+scrapes
+scraping
+scrapings
+scrapped
+scraps
+scratch
+scratched
+scratcher
+scratchers
+scratches
+scratching
+scrawl
+scrawled
+scrawler
+scrawling
+scrawls
+scream
+screamed
+screamer
+screamers
+screaming
+screamingly
+screams
+screech
+screeched
+screecher
+screeches
+screeching
+screen
+screened
+screener
+screening
+screenings
+screens
+screw
+screwed
+screwer
+screwing
+screws
+scribble
+scribbled
+scribbler
+scribbles
+scribbling
+scribe
+scriber
+scribes
+scribing
+script
+script's
+scripted
+scripting
+scripts
+scripture
+scriptures
+scroll
+scrolled
+scrolling
+scrolls
+scrooge
+scrooge's
+scrooges
+scrub
+scrubs
+scruple
+scrupled
+scruples
+scrupling
+scrupulous
+scrupulously
+scrupulousness
+scrutiny
+scuffle
+scuffled
+scuffles
+scuffling
+sculpt
+sculpted
+sculpting
+sculptor
+sculptor's
+sculptors
+sculpts
+sculpture
+sculptured
+sculptures
+sculpturing
+scum
+scum's
+scums
+scurried
+scurry
+scurrying
+scuttle
+scuttled
+scuttles
+scuttling
+scythe
+scythe's
+scythes
+scything
+sea
+seaboard
+seacoast
+seacoast's
+seacoasts
+seal
+sealed
+sealer
+sealing
+seals
+sealy
+seam
+seaman
+seamanly
+seamed
+seamen
+seamer
+seaming
+seams
+seaport
+seaport's
+seaports
+sear
+search
+searched
+searcher
+searcher's
+searchers
+searches
+searching
+searchingly
+searchings
+seared
+searing
+searingly
+sears
+seas
+seashore
+seashore's
+seashores
+seaside
+season
+season's
+seasonable
+seasonableness
+seasonably
+seasonal
+seasonally
+seasoned
+seasoner
+seasoners
+seasoning
+seasonings
+seasonly
+seasons
+seat
+seated
+seater
+seating
+seats
+seaward
+seawards
+seaweed
+seaweeds
+secede
+seceded
+seceder
+secedes
+seceding
+secluded
+secludedly
+secludedness
+seclusion
+second
+secondaries
+secondarily
+secondariness
+secondary
+seconded
+seconder
+seconders
+secondhand
+seconding
+secondly
+seconds
+secrecy
+secret
+secretarial
+secretaries
+secretary
+secretary's
+secrete
+secreted
+secretes
+secreting
+secretion
+secretions
+secretive
+secretively
+secretiveness
+secretly
+secrets
+sect
+sect's
+section
+sectional
+sectionally
+sectioned
+sectioning
+sections
+sector
+sector's
+sectored
+sectoring
+sectors
+sects
+secular
+secularly
+secure
+secured
+securely
+secureness
+securer
+secures
+securing
+securings
+securities
+security
+sedge
+sediment
+sediment's
+sediments
+seduce
+seduced
+seducer
+seducers
+seduces
+seducing
+seductive
+seductively
+seductiveness
+see
+seed
+seeded
+seeder
+seeders
+seeding
+seedings
+seedling
+seedling's
+seedlings
+seeds
+seeing
+seek
+seeker
+seekers
+seeking
+seekingly
+seeks
+seem
+seemed
+seeming
+seemingly
+seemlier
+seemliness
+seemly
+seems
+seen
+seep
+seeped
+seeping
+seeps
+seer
+seers
+sees
+seethe
+seethed
+seethes
+seething
+segment
+segmentation
+segmentation's
+segmentations
+segmented
+segmenting
+segments
+segregate
+segregated
+segregates
+segregating
+segregation
+segregative
+seismic
+seizable
+seize
+seized
+seizer
+seizers
+seizes
+seizin
+seizing
+seizings
+seizins
+seizor
+seizors
+seizure
+seizure's
+seizures
+seldom
+select
+selected
+selecting
+selection
+selection's
+selections
+selective
+selectively
+selectiveness
+selectivity
+selectness
+selector
+selector's
+selectors
+selects
+self
+selfish
+selfishly
+selfishness
+selfness
+selfsame
+selfsameness
+sell
+seller
+sellers
+selling
+sells
+selves
+semantic
+semantical
+semantically
+semanticist
+semanticist's
+semanticists
+semantics
+semaphore
+semaphore's
+semaphores
+semblance
+semester
+semester's
+semesters
+semiautomated
+semicolon
+semicolon's
+semicolons
+semiconductor
+semiconductor's
+semiconductors
+seminal
+seminally
+seminar
+seminar's
+seminaries
+seminars
+seminary
+seminary's
+semipermanent
+semipermanently
+senate
+senate's
+senates
+senator
+senator's
+senators
+send
+sender
+senders
+sending
+sends
+senior
+senior's
+seniority
+seniors
+sensation
+sensation's
+sensational
+sensationally
+sensations
+sense
+sensed
+senseless
+senselessly
+senselessness
+senses
+sensibilities
+sensibility
+sensible
+sensibleness
+sensibly
+sensing
+sensitive
+sensitively
+sensitiveness
+sensitives
+sensitivities
+sensitivity
+sensor
+sensor's
+sensors
+sensory
+sent
+sentence
+sentenced
+sentences
+sentencing
+sentential
+sententially
+sentiment
+sentiment's
+sentimental
+sentimentally
+sentiments
+sentinel
+sentinel's
+sentinels
+sentries
+sentry
+sentry's
+separable
+separableness
+separate
+separated
+separately
+separateness
+separates
+separating
+separation
+separations
+separative
+separator
+separator's
+separators
+sequel
+sequel's
+sequels
+sequence
+sequenced
+sequencer
+sequencers
+sequences
+sequencing
+sequencings
+sequential
+sequentiality
+sequentially
+sequester
+sequestered
+sequestering
+serendipitous
+serendipitously
+serendipity
+serene
+serenely
+sereneness
+serenity
+serf
+serf's
+serfs
+sergeant
+sergeant's
+sergeants
+serial
+serially
+serials
+series
+serious
+seriously
+seriousness
+sermon
+sermon's
+sermons
+serpent
+serpent's
+serpentine
+serpentinely
+serpents
+serum
+serum's
+serums
+servant
+servant's
+servants
+serve
+served
+server
+server's
+servers
+serves
+service
+serviceable
+serviceableness
+serviced
+servicer
+services
+servicing
+servile
+servilely
+servileness
+serving
+servings
+servitude
+session
+session's
+sessions
+set
+set's
+sets
+setter
+setter's
+setters
+setting
+settings
+settle
+settled
+settlement
+settlement's
+settlements
+settler
+settlers
+settles
+settling
+settlings
+setup
+setups
+seven
+sevens
+seventeen
+seventeens
+seventeenth
+seventh
+seventies
+seventieth
+seventy
+sever
+several
+severally
+severals
+severance
+severe
+severed
+severely
+severeness
+severer
+severest
+severing
+severities
+severity
+severity's
+severs
+sew
+sewed
+sewer
+sewers
+sewing
+sews
+sex
+sexed
+sexes
+sexism
+sexism's
+sexist
+sexist's
+sexists
+sexual
+sexuality
+sexually
+shabbier
+shabbiness
+shabby
+shack
+shacked
+shackle
+shackled
+shackler
+shackles
+shackling
+shacks
+shade
+shaded
+shader
+shades
+shadier
+shadiest
+shadily
+shadiness
+shading
+shadings
+shadow
+shadowed
+shadower
+shadowiness
+shadowing
+shadows
+shadowy
+shady
+shaft
+shaft's
+shafted
+shafting
+shafts
+shaggier
+shagginess
+shaggy
+shakable
+shakably
+shake
+shaken
+shaker
+shakers
+shakes
+shakier
+shakiness
+shaking
+shaky
+shale
+shales
+shall
+shallow
+shallower
+shallowly
+shallowness
+shallows
+sham
+sham's
+shambles
+shame
+shamed
+shameful
+shamefully
+shamefulness
+shameless
+shamelessly
+shamelessness
+shames
+shaming
+shams
+shan't
+shanties
+shanty
+shanty's
+shape
+shaped
+shapeless
+shapelessly
+shapelessness
+shapelier
+shapeliness
+shapely
+shaper
+shapers
+shapes
+shaping
+sharable
+share
+sharecropper
+sharecropper's
+sharecroppers
+shared
+shareholder
+shareholder's
+shareholders
+sharer
+sharers
+shares
+sharing
+shark
+shark's
+sharks
+sharp
+sharped
+sharpen
+sharpened
+sharpener
+sharpening
+sharpens
+sharper
+sharpest
+sharping
+sharply
+sharpness
+sharps
+shatter
+shattered
+shattering
+shatteringly
+shatters
+shave
+shaved
+shaven
+shaver
+shaves
+shaving
+shavings
+shawl
+shawl's
+shawls
+she
+she'd
+she'll
+she's
+sheaf
+shear
+sheared
+shearer
+shearers
+shearing
+shears
+sheath
+sheather
+sheathing
+sheaths
+sheaves
+shed
+sheds
+sheep
+sheer
+sheered
+sheerly
+sheerness
+sheet
+sheeted
+sheeter
+sheeting
+sheets
+shelf
+shelfs
+shell
+shell's
+shelled
+sheller
+shelling
+shells
+shelter
+sheltered
+shelterer
+sheltering
+shelters
+shelve
+shelved
+shelver
+shelves
+shelving
+shepherd
+shepherd's
+shepherded
+shepherding
+shepherds
+sheriff
+sheriff's
+sheriffs
+shied
+shield
+shielded
+shielder
+shielding
+shields
+shier
+shies
+shiest
+shift
+shifted
+shifter
+shifters
+shiftier
+shiftiest
+shiftily
+shiftiness
+shifting
+shifts
+shifty
+shilling
+shillings
+shimmer
+shimmered
+shimmering
+shin
+shine
+shined
+shiner
+shiners
+shines
+shingle
+shingle's
+shingled
+shingler
+shingles
+shingling
+shinier
+shininess
+shining
+shiningly
+shiny
+ship
+ship's
+shipboard
+shipboards
+shipbuilding
+shipment
+shipment's
+shipments
+shippable
+shipped
+shipper
+shipper's
+shippers
+shipping
+ships
+shipwreck
+shipwrecked
+shipwrecks
+shirk
+shirker
+shirking
+shirks
+shirt
+shirting
+shirts
+shit
+shiver
+shivered
+shiverer
+shivering
+shivers
+shoal
+shoal's
+shoals
+shock
+shocked
+shocker
+shockers
+shocking
+shockingly
+shocks
+shod
+shoe
+shoed
+shoeing
+shoemaker
+shoer
+shoes
+shone
+shook
+shoot
+shooter
+shooters
+shooting
+shootings
+shoots
+shop
+shop's
+shopkeeper
+shopkeeper's
+shopkeepers
+shopped
+shopper
+shopper's
+shoppers
+shopping
+shops
+shore
+shore's
+shored
+shores
+shoring
+shorn
+short
+shortage
+shortage's
+shortages
+shortcoming
+shortcoming's
+shortcomings
+shortcut
+shortcut's
+shortcuts
+shorted
+shorten
+shortened
+shortener
+shortening
+shortens
+shorter
+shortest
+shorthand
+shorthanded
+shorthands
+shorting
+shortly
+shortness
+shorts
+shot
+shot's
+shotgun
+shotgun's
+shotguns
+shots
+should
+shoulder
+shouldered
+shouldering
+shoulders
+shouldest
+shouldn't
+shout
+shouted
+shouter
+shouters
+shouting
+shouts
+shove
+shoved
+shovel
+shovels
+shover
+shoves
+shoving
+show
+showed
+shower
+showered
+showering
+showers
+showing
+showings
+shown
+shows
+shrank
+shred
+shred's
+shredder
+shredder's
+shredders
+shreds
+shrew
+shrew's
+shrewd
+shrewdest
+shrewdly
+shrewdness
+shrews
+shriek
+shrieked
+shrieking
+shrieks
+shrill
+shrilled
+shrilling
+shrillness
+shrilly
+shrimp
+shrine
+shrine's
+shrines
+shrink
+shrinkable
+shrinker
+shrinking
+shrinks
+shrivel
+shrivels
+shroud
+shrouded
+shrouding
+shrouds
+shrub
+shrub's
+shrubbery
+shrubs
+shrug
+shrugs
+shrunk
+shrunken
+shudder
+shuddered
+shuddering
+shudders
+shuffle
+shuffled
+shuffler
+shuffles
+shuffling
+shun
+shuns
+shut
+shutdown
+shutdown's
+shutdowns
+shuts
+shutter
+shuttered
+shuttering
+shutters
+shutting
+shuttle
+shuttled
+shuttles
+shuttling
+shy
+shying
+shyly
+shyness
+sibling
+sibling's
+siblings
+sick
+sicken
+sickened
+sickener
+sickening
+sickeningly
+sicker
+sickerly
+sickest
+sicking
+sickle
+sickled
+sicklied
+sickliness
+sickling
+sickly
+sicklying
+sickness
+sickness's
+sicknesses
+sicks
+side
+sideboard
+sideboard's
+sideboards
+sideburns
+sided
+sidedness
+sidelight
+sidelight's
+sidelights
+sides
+sidetrack
+sidetracked
+sidetracking
+sidetracks
+sidewalk
+sidewalk's
+sidewalks
+sideways
+sidewise
+siding
+sidings
+siege
+siege's
+sieges
+sieging
+sierra
+sierras
+sieve
+sieve's
+sievers
+sieves
+sieving
+sift
+sifted
+sifter
+sifting
+siftings
+sifts
+sigh
+sighed
+sigher
+sighing
+sighs
+sight
+sighted
+sighter
+sighting
+sightings
+sightliness
+sightly
+sights
+sign
+signal
+signally
+signals
+signature
+signature's
+signatures
+signed
+signer
+signers
+signet
+significance
+significances
+significant
+significantly
+significants
+signification
+signified
+signifier
+signifies
+signify
+signifying
+signing
+signs
+silence
+silenced
+silencer
+silencers
+silences
+silencing
+silent
+silently
+silentness
+silents
+silhouette
+silhouetted
+silhouettes
+silicon
+silicone
+silicons
+silk
+silken
+silkier
+silkiest
+silkily
+silkiness
+silks
+silky
+sill
+sill's
+sillier
+silliest
+silliness
+sills
+silly
+silt
+silted
+silting
+silts
+silver
+silvered
+silverer
+silveriness
+silvering
+silverly
+silvers
+silvery
+similar
+similarities
+similarity
+similarly
+similitude
+simmer
+simmered
+simmering
+simmers
+simple
+simpleness
+simpler
+simples
+simplest
+simplex
+simplexes
+simplicities
+simplicity
+simplicity's
+simplification
+simplifications
+simplified
+simplifier
+simplifiers
+simplifies
+simplify
+simplifying
+simplistic
+simply
+simulate
+simulated
+simulates
+simulating
+simulation
+simulations
+simulative
+simulator
+simulator's
+simulators
+simultaneity
+simultaneous
+simultaneously
+simultaneousness
+sin
+sin's
+since
+sincere
+sincerely
+sincereness
+sincerest
+sincerity
+sine
+sines
+sinew
+sinew's
+sinews
+sinful
+sinfully
+sinfulness
+sing
+singable
+singed
+singer
+singer's
+singers
+singing
+singingly
+single
+singled
+singleness
+singles
+singleton
+singleton's
+singletons
+singling
+singly
+sings
+singular
+singularities
+singularity
+singularity's
+singularly
+sining
+sinister
+sinisterly
+sinisterness
+sink
+sinked
+sinker
+sinkers
+sinkhole
+sinkholes
+sinking
+sinks
+sinned
+sinner
+sinner's
+sinners
+sinning
+sins
+sinusoidal
+sinusoidally
+sinusoids
+sip
+sips
+sir
+sire
+sired
+siren
+sirens
+sires
+siring
+sirs
+sirup
+sister
+sister's
+sistered
+sistering
+sisterly
+sisters
+sit
+site
+site's
+sited
+sites
+siting
+sits
+sitter
+sitter's
+sitters
+sitting
+sittings
+situate
+situated
+situates
+situating
+situation
+situational
+situationally
+situations
+six
+sixes
+sixpence
+sixpences
+sixteen
+sixteens
+sixteenth
+sixth
+sixthly
+sixties
+sixtieth
+sixty
+sizable
+sizableness
+size
+sized
+sizer
+sizers
+sizes
+sizing
+sizings
+skate
+skated
+skater
+skater's
+skaters
+skates
+skating
+skeletal
+skeletally
+skeleton
+skeleton's
+skeletons
+skeptic
+skeptic's
+skeptical
+skeptically
+skeptics
+sketch
+sketched
+sketcher
+sketches
+sketchier
+sketchily
+sketchiness
+sketching
+sketchy
+skew
+skewed
+skewer
+skewered
+skewering
+skewers
+skewing
+skewness
+skews
+ski
+skied
+skien
+skier
+skies
+skiing
+skill
+skilled
+skillful
+skillfully
+skillfulness
+skilling
+skills
+skim
+skim's
+skimmed
+skimmer
+skimmer's
+skimmers
+skimming
+skimmings
+skimp
+skimped
+skimping
+skimps
+skims
+skin
+skin's
+skinned
+skinner
+skinner's
+skinners
+skinning
+skins
+skip
+skipped
+skipper
+skipper's
+skippered
+skippering
+skippers
+skipping
+skips
+skirmish
+skirmished
+skirmisher
+skirmishers
+skirmishes
+skirmishing
+skirt
+skirted
+skirter
+skirting
+skirts
+skis
+skulk
+skulked
+skulker
+skulking
+skulks
+skull
+skull's
+skulled
+skulls
+skunk
+skunk's
+skunks
+sky
+sky's
+skying
+skylark
+skylarker
+skylarking
+skylarks
+skylight
+skylight's
+skylights
+skyscraper
+skyscraper's
+skyscrapers
+slab
+slabs
+slack
+slacked
+slacken
+slackened
+slackening
+slackens
+slacker
+slackest
+slacking
+slackly
+slackness
+slacks
+slain
+slam
+slammed
+slamming
+slams
+slander
+slandered
+slanderer
+slandering
+slanders
+slang
+slanging
+slant
+slanted
+slanting
+slantingly
+slants
+slap
+slapped
+slapping
+slaps
+slash
+slashed
+slasher
+slashes
+slashing
+slashingly
+slat
+slat's
+slate
+slated
+slater
+slaters
+slates
+slating
+slats
+slaughter
+slaughtered
+slaughterer
+slaughtering
+slaughters
+slave
+slaved
+slaver
+slavered
+slavering
+slavery
+slaves
+slaving
+slay
+slayer
+slayers
+slaying
+slays
+sled
+sled's
+sledge
+sledge's
+sledges
+sledging
+sleds
+sleek
+sleekly
+sleekness
+sleep
+sleeper
+sleepers
+sleepier
+sleepily
+sleepiness
+sleeping
+sleepless
+sleeplessly
+sleeplessness
+sleeps
+sleepy
+sleet
+sleeve
+sleeve's
+sleeved
+sleeves
+sleeving
+sleigh
+sleighs
+sleken
+slekened
+slekening
+slender
+slenderer
+slenderly
+slenderness
+slept
+slew
+slewed
+slewing
+slice
+sliced
+slicer
+slicers
+slices
+slicing
+slick
+slicker
+slickers
+slickly
+slickness
+slicks
+slid
+slide
+slider
+sliders
+slides
+sliding
+slier
+sliest
+slight
+slighted
+slighter
+slightest
+slighting
+slightingly
+slightly
+slightness
+slights
+slim
+slime
+slimed
+slimes
+slimier
+sliminess
+sliming
+slimly
+slimness
+slimy
+sling
+slinger
+slinging
+slings
+slip
+slip's
+slippage
+slipped
+slipper
+slipper's
+slipperier
+slipperiness
+slippers
+slippery
+slipping
+slips
+slit
+slit's
+slits
+slogan
+slogan's
+slogans
+slop
+slope
+sloped
+sloper
+slopers
+slopes
+sloping
+slopped
+sloppier
+sloppiness
+slopping
+sloppy
+slops
+slot
+slot's
+sloth
+sloths
+slots
+slotted
+slouch
+slouched
+sloucher
+slouches
+slouching
+slow
+slowed
+slower
+slowest
+slowing
+slowly
+slowness
+slows
+slug
+sluggish
+sluggishly
+sluggishness
+slugs
+slum
+slum's
+slumber
+slumber's
+slumbered
+slumberer
+slumbering
+slumbers
+slump
+slumped
+slumps
+slums
+slung
+slur
+slur's
+slurs
+sly
+slyly
+smack
+smacked
+smacker
+smacking
+smacks
+small
+smaller
+smallest
+smallness
+smallpox
+smart
+smarted
+smarten
+smartened
+smartening
+smarter
+smartest
+smarting
+smartly
+smartness
+smarts
+smash
+smashed
+smasher
+smashers
+smashes
+smashing
+smashingly
+smear
+smeared
+smearer
+smearing
+smears
+smell
+smelled
+smeller
+smellier
+smelling
+smells
+smelly
+smelt
+smelter
+smelts
+smile
+smiled
+smiler
+smiles
+smiling
+smilingly
+smite
+smiter
+smith
+smith's
+smithies
+smiths
+smithy
+smiting
+smitten
+smock
+smocking
+smocks
+smog
+smokable
+smoke
+smoked
+smoker
+smoker's
+smokers
+smokes
+smokier
+smokies
+smokiness
+smoking
+smoky
+smolder
+smoldered
+smoldering
+smolderingly
+smolders
+smooth
+smoothed
+smoothen
+smoothened
+smoothening
+smoother
+smoothers
+smoothes
+smoothest
+smoothing
+smoothly
+smoothness
+smote
+smother
+smothered
+smothering
+smothers
+smug
+smuggle
+smuggled
+smuggler
+smugglers
+smuggles
+smuggling
+smugly
+smugness
+snail
+snail's
+snails
+snake
+snaked
+snakes
+snaking
+snap
+snapped
+snapper
+snapper's
+snappers
+snappier
+snappiest
+snappily
+snappiness
+snapping
+snappy
+snaps
+snapshot
+snapshot's
+snapshots
+snare
+snared
+snarer
+snares
+snarf
+snarfed
+snarfing
+snarfings
+snarfs
+snaring
+snarl
+snarled
+snarler
+snarling
+snarls
+snatch
+snatched
+snatcher
+snatches
+snatching
+sneak
+sneaked
+sneaker
+sneakered
+sneakers
+sneakier
+sneakiest
+sneakily
+sneakiness
+sneaking
+sneakingly
+sneaks
+sneaky
+sneer
+sneered
+sneerer
+sneering
+sneers
+sneeze
+sneezed
+sneezer
+sneezes
+sneezing
+sniff
+sniffed
+sniffer
+sniffing
+sniffs
+snoop
+snooped
+snooper
+snooping
+snoops
+snore
+snored
+snorer
+snores
+snoring
+snort
+snorted
+snorter
+snorting
+snorts
+snout
+snout's
+snouted
+snouts
+snow
+snowed
+snowier
+snowiest
+snowily
+snowiness
+snowing
+snowman
+snowmen
+snows
+snowshoe
+snowshoe's
+snowshoed
+snowshoer
+snowshoes
+snowy
+snuff
+snuffed
+snuffer
+snuffing
+snuffs
+snug
+snuggle
+snuggled
+snuggles
+snuggling
+snugly
+snugness
+snugs
+so
+soak
+soaked
+soaker
+soaking
+soaks
+soap
+soaped
+soaping
+soaps
+soar
+soared
+soarer
+soaring
+soars
+sob
+sober
+sobered
+soberer
+soberest
+sobering
+soberly
+soberness
+sobers
+sobs
+soccer
+sociability
+sociable
+sociably
+social
+socialism
+socialist
+socialist's
+socialists
+socially
+societal
+societally
+societies
+society
+society's
+sociological
+sociologically
+sociology
+sock
+socked
+socket
+socket's
+sockets
+socking
+socks
+sod
+sod's
+soda
+sodium
+sodomy
+sods
+sofa
+sofa's
+sofas
+soft
+soften
+softened
+softener
+softening
+softens
+softer
+softest
+softly
+softness
+software
+software's
+softwares
+soil
+soiled
+soiling
+soils
+sojourn
+sojourner
+sojourners
+solace
+solaced
+solacer
+solacing
+solar
+sold
+solder
+soldered
+solderer
+soldering
+solders
+soldier
+soldiered
+soldiering
+soldierly
+soldiers
+sole
+soled
+solely
+solemn
+solemnity
+solemnly
+solemnness
+soleness
+soles
+solicit
+solicited
+soliciting
+solicitor
+solicitors
+solicits
+solid
+solidification
+solidified
+solidifies
+solidify
+solidifying
+solidity
+solidly
+solidness
+solids
+soling
+solingen
+solitaire
+solitariness
+solitary
+solitude
+solitude's
+solitudes
+solo
+solo's
+soloed
+soloing
+solos
+solubility
+soluble
+solution
+solution's
+solutions
+solvable
+solve
+solved
+solvent
+solvent's
+solvently
+solvents
+solver
+solvers
+solves
+solving
+somber
+somberly
+somberness
+some
+somebody
+somebody's
+someday
+somehow
+someone
+someone's
+someplace
+someplace's
+somers
+something
+sometime
+sometimes
+somewhat
+somewhere
+somewheres
+son
+son's
+sonar
+sonars
+song
+song's
+songs
+sonly
+sonnet
+sonnet's
+sonnets
+sons
+soon
+sooner
+soonest
+soot
+sooth
+soothe
+soothed
+soother
+soothes
+soothing
+soothingly
+soothingness
+soothly
+sophisticated
+sophisticatedly
+sophistication
+sophomore
+sophomore's
+sophomores
+sorcerer
+sorcerer's
+sorcerers
+sorcery
+sordid
+sordidly
+sordidness
+sore
+sorely
+soreness
+sorer
+sores
+sorest
+sorrier
+sorriest
+sorriness
+sorrow
+sorrow's
+sorrower
+sorrowful
+sorrowfully
+sorrowfulness
+sorrows
+sorry
+sort
+sorted
+sorter
+sorters
+sorting
+sorts
+sos
+sought
+soul
+soul's
+souled
+souls
+sound
+sounded
+sounder
+soundest
+sounding
+sounding's
+soundingly
+soundings
+soundly
+soundness
+sounds
+soup
+soup's
+soups
+sour
+source
+source's
+sources
+soured
+sourer
+sourest
+souring
+sourly
+sourness
+sours
+south
+souther
+southerly
+southern
+southerner
+southerners
+southernly
+southernness
+southing
+sovereign
+sovereign's
+sovereignly
+sovereigns
+soviet
+soviet's
+soviets
+space
+spaced
+spacer
+spacers
+spaces
+spaceship
+spaceship's
+spaceships
+spacing
+spacings
+spade
+spaded
+spader
+spades
+spading
+spaghetti
+span
+span's
+spank
+spanked
+spanker
+spanking
+spanks
+spanned
+spanner
+spanner's
+spanners
+spanning
+spans
+spare
+spared
+sparely
+spareness
+sparer
+spares
+sparest
+sparing
+sparingly
+spark
+sparked
+sparker
+sparking
+sparks
+sparrow
+sparrow's
+sparrows
+sparse
+sparsely
+sparseness
+sparser
+sparsest
+spat
+spate
+spate's
+spates
+spatial
+spatially
+spats
+spatter
+spattered
+spawn
+spawned
+spawner
+spawning
+spawns
+speak
+speakable
+speaker
+speaker's
+speakers
+speaking
+speaks
+spear
+speared
+spearer
+spearing
+spears
+special
+specialist
+specialist's
+specialists
+specially
+specialness
+specials
+species
+specifiable
+specific
+specifically
+specification
+specifications
+specificities
+specificity
+specifics
+specified
+specifier
+specifiers
+specifies
+specify
+specifying
+specimen
+specimen's
+specimens
+speck
+speck's
+speckle
+speckled
+speckles
+speckling
+specks
+spectacle
+spectacled
+spectacles
+spectacular
+spectacularly
+spectator
+spectator's
+spectators
+spectra
+spectrogram
+spectrogram's
+spectrograms
+spectroscopically
+spectrum
+spectrums
+speculate
+speculated
+speculates
+speculating
+speculation
+speculations
+speculative
+speculatively
+speculator
+speculator's
+speculators
+sped
+speech
+speech's
+speeches
+speechless
+speechlessly
+speechlessness
+speed
+speeded
+speeder
+speeders
+speedier
+speedily
+speediness
+speeding
+speeds
+speedup
+speedup's
+speedups
+speedy
+spell
+spelled
+speller
+spellers
+spelling
+spellings
+spells
+spend
+spender
+spenders
+spending
+spends
+spent
+sphere
+sphere's
+spheres
+spherical
+spherically
+sphering
+spice
+spiced
+spices
+spicier
+spiciness
+spicing
+spicy
+spider
+spider's
+spiders
+spied
+spier
+spies
+spike
+spiked
+spiker
+spikes
+spiking
+spill
+spilled
+spiller
+spilling
+spills
+spin
+spinach
+spinal
+spinally
+spindle
+spindled
+spindler
+spindles
+spindling
+spine
+spines
+spinner
+spinner's
+spinners
+spinning
+spins
+spiral
+spirally
+spirals
+spire
+spire's
+spired
+spires
+spiring
+spirit
+spirited
+spiritedly
+spiritedness
+spiriting
+spirits
+spiritual
+spiritually
+spiritualness
+spirituals
+spit
+spite
+spited
+spiteful
+spitefully
+spitefulness
+spites
+spiting
+spits
+spitting
+splash
+splashed
+splasher
+splashers
+splashes
+splashing
+spleen
+splendid
+splendidly
+splendidness
+splice
+spliced
+splicer
+splicers
+splices
+splicing
+splicings
+spline
+spline's
+splined
+splines
+splinter
+splintered
+splintering
+splinters
+split
+split's
+splits
+splitter
+splitter's
+splitters
+splitting
+splittings
+spoil
+spoiled
+spoiler
+spoilers
+spoiling
+spoils
+spoke
+spoked
+spoken
+spokes
+spokesman
+spokesmen
+spoking
+sponge
+sponged
+sponger
+spongers
+sponges
+sponging
+sponsor
+sponsored
+sponsoring
+sponsors
+sponsorship
+spontaneous
+spontaneously
+spontaneousness
+spook
+spookier
+spookiness
+spooky
+spool
+spooled
+spooler
+spoolers
+spooling
+spools
+spoon
+spooned
+spooning
+spoons
+spore
+spore's
+spored
+spores
+sporing
+sport
+sported
+sporting
+sportingly
+sportive
+sportively
+sportiveness
+sports
+sportsman
+sportsmanly
+spot
+spot's
+spotless
+spotlessly
+spotlessness
+spotlight
+spotlight's
+spotlighted
+spotlighting
+spotlights
+spots
+spotted
+spotter
+spotter's
+spotters
+spotting
+spouse
+spouse's
+spouses
+spousing
+spout
+spouted
+spouter
+spouting
+spouts
+sprang
+sprawl
+sprawled
+sprawling
+sprawls
+spray
+sprayed
+sprayer
+spraying
+sprays
+spread
+spreader
+spreaders
+spreading
+spreadings
+spreads
+spreadsheet
+spreadsheets
+spree
+spree's
+sprees
+sprig
+sprightlier
+sprightliness
+sprightly
+spring
+springer
+springers
+springier
+springiest
+springiness
+springing
+springs
+springtime
+springy
+sprinkle
+sprinkled
+sprinkler
+sprinklered
+sprinkles
+sprinkling
+sprint
+sprinted
+sprinter
+sprinters
+sprinting
+sprints
+sprite
+sprout
+sprouted
+sprouting
+sprouts
+spruce
+spruced
+sprucely
+spruceness
+sprucer
+sprucest
+sprucing
+sprung
+spun
+spur
+spur's
+spurious
+spuriously
+spuriousness
+spurn
+spurned
+spurner
+spurning
+spurns
+spurs
+spurt
+spurted
+spurting
+spurts
+sputter
+sputtered
+sputterer
+spy
+spying
+squabble
+squabbled
+squabbler
+squabbles
+squabbling
+squad
+squad's
+squadron
+squadron's
+squadrons
+squads
+squall
+squall's
+squaller
+squalls
+square
+squared
+squarely
+squareness
+squarer
+squares
+squarest
+squaring
+squash
+squashed
+squasher
+squashes
+squashing
+squat
+squatly
+squatness
+squats
+squawk
+squawked
+squawker
+squawking
+squawks
+squeak
+squeaked
+squeaker
+squeaking
+squeaks
+squeal
+squealed
+squealer
+squealing
+squeals
+squeeze
+squeezed
+squeezer
+squeezes
+squeezing
+squid
+squids
+squint
+squinted
+squinter
+squinting
+squintingly
+squints
+squire
+squire's
+squires
+squiring
+squirm
+squirmed
+squirming
+squirms
+squirrel
+squirrelly
+squirrels
+stab
+stabbed
+stabbing
+stabilities
+stability
+stability's
+stable
+stabled
+stableness
+stabler
+stables
+stablest
+stabling
+stably
+stabs
+stack
+stack's
+stacked
+stacker
+stacking
+stacks
+staff
+staff's
+staffed
+staffer
+staffers
+staffing
+staffs
+stag
+stag's
+stage
+stagecoach
+staged
+stager
+stagers
+stages
+stagger
+staggered
+staggerer
+staggering
+staggeringly
+staggers
+staging
+stagnant
+stagnantly
+stags
+staid
+staidly
+staidness
+stain
+stained
+stainer
+staining
+stainless
+stainlessly
+stains
+stair
+stair's
+staircase
+staircase's
+staircases
+stairs
+stairway
+stairway's
+stairways
+stake
+staked
+stakes
+staking
+stale
+staled
+stalely
+staleness
+staler
+stales
+stalest
+staling
+stalk
+stalked
+stalker
+stalking
+stalks
+stall
+stalled
+stalling
+stallings
+stalls
+stalwart
+stalwartly
+stalwartness
+stamen
+stamen's
+stamens
+stamina
+stammer
+stammered
+stammerer
+stammering
+stammers
+stamp
+stamped
+stampede
+stampeded
+stampeder
+stampedes
+stampeding
+stamper
+stampers
+stamping
+stamps
+stance
+stance's
+stances
+stanch
+stancher
+stanchest
+stand
+standard
+standardly
+standards
+standby
+stander
+standing
+standings
+standpoint
+standpoint's
+standpoints
+stands
+standstill
+stanza
+stanza's
+stanzas
+staple
+stapled
+stapler
+staplers
+staples
+stapling
+star
+star's
+starboard
+starboarded
+starboarding
+starboards
+starch
+starched
+starches
+starching
+stare
+stared
+starer
+stares
+starfish
+staring
+stark
+starkest
+starkly
+starkness
+starlet
+starlet's
+starlets
+starlight
+starred
+starrier
+starring
+starry
+stars
+start
+started
+starter
+starters
+starting
+startle
+startled
+startles
+startling
+startlingly
+startlingness
+starts
+startup
+startup's
+startups
+starvation
+starve
+starved
+starver
+starves
+starving
+state
+state's
+stated
+statelier
+stateliness
+stately
+statement
+statement's
+statements
+stater
+states
+statesman
+statesman's
+statesmanly
+static
+statically
+statics
+stating
+station
+stationaries
+stationary
+stationed
+stationer
+stationing
+stations
+statistic
+statistic's
+statistical
+statistically
+statistician
+statistician's
+statisticians
+statistics
+stative
+statue
+statue's
+statued
+statues
+statuesque
+statuesquely
+statuesqueness
+stature
+status
+statuses
+statute
+statute's
+statutes
+statutorily
+statutoriness
+statutory
+staunch
+staunchest
+staunchly
+staunchness
+stave
+staved
+staves
+staving
+stay
+stayed
+stayer
+stayers
+staying
+stays
+stdio
+stead
+steadfast
+steadfastly
+steadfastness
+steadied
+steadier
+steadies
+steadiest
+steadily
+steadiness
+steading
+steady
+steadying
+steak
+steak's
+steaks
+steal
+stealer
+stealing
+steals
+stealth
+stealthier
+stealthily
+stealthiness
+stealthy
+steam
+steamboat
+steamboat's
+steamboats
+steamed
+steamer
+steamers
+steaming
+steams
+steamship
+steamship's
+steamships
+steed
+steeds
+steel
+steeled
+steelers
+steeling
+steels
+steep
+steeped
+steepen
+steepened
+steepening
+steeper
+steepest
+steeping
+steeple
+steeple's
+steeples
+steeply
+steepness
+steeps
+steer
+steered
+steerer
+steering
+steers
+stellar
+stem
+stem's
+stemmed
+stemming
+stems
+stench
+stench's
+stenches
+stencil
+stencil's
+stencils
+stenographer
+stenographer's
+stenographers
+step
+step's
+stepmother
+stepmother's
+stepmothers
+stepped
+stepper
+stepping
+steps
+stepwise
+stereo
+stereo's
+stereos
+stereotype
+stereotyped
+stereotyper
+stereotypers
+stereotypes
+stereotypical
+stereotypically
+stereotyping
+sterile
+sterling
+sterlingly
+sterlingness
+stern
+sternly
+sternness
+sterns
+stew
+steward
+steward's
+stewards
+stewed
+stewing
+stews
+stick
+sticked
+sticker
+stickers
+stickier
+stickiest
+stickily
+stickiness
+sticking
+sticks
+sticky
+stiff
+stiffen
+stiffened
+stiffener
+stiffeners
+stiffening
+stiffens
+stiffer
+stiffest
+stiffly
+stiffness
+stiffnesses
+stiffs
+stifle
+stifled
+stifler
+stifles
+stifling
+stiflingly
+stigma
+stigmas
+stile
+stile's
+stiles
+still
+stilled
+stiller
+stillest
+stilling
+stillness
+stills
+stimulant
+stimulant's
+stimulants
+stimulate
+stimulated
+stimulates
+stimulating
+stimulation
+stimulations
+stimulative
+stimuli
+stimulus
+sting
+stinger
+stinging
+stingingly
+stings
+stink
+stinker
+stinkers
+stinking
+stinkingly
+stinks
+stint
+stint's
+stinted
+stinter
+stinting
+stints
+stipend
+stipend's
+stipends
+stipple
+stippled
+stippler
+stipples
+stippling
+stipulate
+stipulated
+stipulates
+stipulating
+stipulation
+stipulations
+stir
+stirred
+stirrer
+stirrer's
+stirrers
+stirring
+stirringly
+stirrings
+stirrup
+stirrups
+stirs
+stitch
+stitched
+stitcher
+stitches
+stitching
+stochastic
+stochastically
+stock
+stockade
+stockade's
+stockaded
+stockades
+stockading
+stocked
+stocker
+stockers
+stockholder
+stockholder's
+stockholders
+stocking
+stockinged
+stockings
+stocks
+stole
+stole's
+stoled
+stolen
+stoles
+stomach
+stomached
+stomacher
+stomaches
+stomaching
+stone
+stone's
+stoned
+stoner
+stones
+stonier
+stoniness
+stoning
+stony
+stood
+stool
+stools
+stoop
+stooped
+stooping
+stoops
+stop
+stop's
+stopcock
+stopcocks
+stopgap
+stopgap's
+stopgaps
+stoppable
+stoppage
+stoppages
+stopped
+stopper
+stopper's
+stoppered
+stoppering
+stoppers
+stopping
+stops
+storage
+storage's
+storages
+store
+stored
+storehouse
+storehouse's
+storehouses
+stores
+storied
+stories
+storing
+stork
+stork's
+storks
+storm
+stormed
+stormier
+stormiest
+storminess
+storming
+storms
+stormy
+story
+story's
+storying
+stout
+stouten
+stoutened
+stoutening
+stouter
+stoutest
+stoutly
+stoutness
+stove
+stove's
+stover
+stoves
+stow
+stowed
+stowing
+stows
+straggle
+straggled
+straggler
+stragglers
+straggles
+straggling
+straight
+straighten
+straightened
+straightener
+straighteners
+straightening
+straightens
+straighter
+straightest
+straightforward
+straightforwardly
+straightforwardness
+straightforwards
+straightly
+straightness
+straightway
+strain
+strained
+strainer
+strainers
+straining
+strains
+strait
+straiten
+straitened
+straitening
+straitly
+straitness
+straits
+strand
+stranded
+strandedness
+strander
+stranding
+strands
+strange
+strangely
+strangeness
+stranger
+stranger's
+strangers
+strangest
+strangle
+strangled
+strangler
+stranglers
+strangles
+strangling
+stranglings
+strangulation
+strangulation's
+strangulations
+strap
+strap's
+straps
+stratagem
+stratagem's
+stratagems
+strategic
+strategics
+strategies
+strategy
+strategy's
+stratification
+stratifications
+stratified
+stratifies
+stratify
+stratifying
+stratum
+straw
+straw's
+strawberries
+strawberry
+strawberry's
+straws
+stray
+stray's
+strayed
+strayer
+straying
+strays
+streak
+streaked
+streaking
+streaks
+stream
+streamed
+streamer
+streamers
+streaming
+streamline
+streamlined
+streamliner
+streamlines
+streamlining
+streams
+street
+streetcar
+streetcar's
+streetcars
+streeters
+streets
+strength
+strengthen
+strengthened
+strengthener
+strengthening
+strengthens
+strengths
+strenuous
+strenuously
+strenuousness
+stress
+stressed
+stresses
+stressing
+stretch
+stretched
+stretcher
+stretchers
+stretches
+stretching
+strew
+strewing
+strewn
+strews
+strewth
+stricken
+strict
+stricter
+strictest
+strictly
+strictness
+stride
+strider
+strides
+striding
+strife
+strike
+striker
+strikers
+strikes
+striking
+strikingly
+string
+string's
+stringed
+stringent
+stringently
+stringer
+stringers
+stringier
+stringiest
+stringiness
+stringing
+strings
+stringy
+strip
+strip's
+stripe
+striped
+striper
+stripes
+striping
+stripped
+stripper
+stripper's
+strippers
+stripping
+strips
+strive
+striver
+strives
+striving
+strivings
+strobe
+strobe's
+strobed
+strobes
+strobing
+stroboscopic
+strode
+stroke
+stroked
+stroker
+strokers
+strokes
+stroking
+stroll
+strolled
+stroller
+strolling
+strolls
+strong
+stronger
+strongest
+stronghold
+strongly
+strove
+struck
+structural
+structurally
+structure
+structured
+structurer
+structures
+structuring
+struggle
+struggled
+struggler
+struggles
+struggling
+strung
+strut
+struts
+strutted
+strutter
+strutting
+stub
+stub's
+stubbed
+stubbing
+stubble
+stubborn
+stubbornly
+stubbornness
+stubs
+stuck
+stud
+stud's
+student
+student's
+students
+studied
+studiedly
+studiedness
+studier
+studies
+studio
+studio's
+studios
+studious
+studiously
+studiousness
+studs
+study
+studying
+stuff
+stuffed
+stuffer
+stuffier
+stuffiest
+stuffiness
+stuffing
+stuffings
+stuffs
+stuffy
+stumble
+stumbled
+stumbler
+stumbles
+stumbling
+stumblingly
+stump
+stumped
+stumper
+stumping
+stumps
+stun
+stung
+stunning
+stunningly
+stuns
+stunt
+stunt's
+stunted
+stuntedness
+stunting
+stunts
+stupefy
+stupefying
+stupendous
+stupendously
+stupendousness
+stupid
+stupider
+stupidest
+stupidities
+stupidity
+stupidly
+stupidness
+stupor
+sturdier
+sturdiness
+sturdy
+style
+styled
+styler
+stylers
+styles
+styling
+stylish
+stylishly
+stylishness
+stylistic
+stylistically
+stylistics
+sub
+subatomic
+subclass
+subclass's
+subclasses
+subcommittee
+subcommittee's
+subcommittees
+subcomponent
+subcomponent's
+subcomponents
+subcomputation
+subcomputation's
+subcomputations
+subconscious
+subconsciously
+subconsciousness
+subculture
+subculture's
+subcultures
+subdivide
+subdivided
+subdivider
+subdivides
+subdividing
+subdivision
+subdivision's
+subdivisions
+subdue
+subdued
+subduedly
+subduer
+subdues
+subduing
+subexpression
+subexpression's
+subexpressions
+subfield
+subfield's
+subfields
+subfile
+subfile's
+subfiles
+subgoal
+subgoal's
+subgoals
+subgraph
+subgraphs
+subgroup
+subgroup's
+subgrouping
+subgroups
+subinterval
+subinterval's
+subintervals
+subject
+subject's
+subjected
+subjecting
+subjection
+subjective
+subjectively
+subjectiveness
+subjectivity
+subjects
+sublimation
+sublimations
+sublime
+sublimed
+sublimely
+sublimeness
+sublimer
+subliming
+sublist
+sublist's
+sublists
+submarine
+submarined
+submariner
+submariners
+submarines
+submarining
+submerge
+submerged
+submerges
+submerging
+submission
+submission's
+submissions
+submit
+submits
+submitted
+submitting
+submode
+submodes
+submodule
+submodule's
+submodules
+subnetwork
+subnetwork's
+subnetworks
+subordinate
+subordinated
+subordinately
+subordinateness
+subordinates
+subordinating
+subordination
+subordinative
+subproblem
+subproblem's
+subproblems
+subprocess
+subprocess's
+subprocesses
+subprogram
+subprogram's
+subprograms
+subproject
+subproof
+subproof's
+subproofs
+subrange
+subrange's
+subranges
+subroutine
+subroutine's
+subroutines
+subs
+subschema
+subschema's
+subschemas
+subscribe
+subscribed
+subscriber
+subscribers
+subscribes
+subscribing
+subscript
+subscripted
+subscripting
+subscription
+subscription's
+subscriptions
+subscripts
+subsection
+subsection's
+subsections
+subsegment
+subsegment's
+subsegments
+subsequence
+subsequence's
+subsequences
+subsequent
+subsequently
+subsequentness
+subset
+subset's
+subsets
+subside
+subsided
+subsides
+subsidiaries
+subsidiary
+subsidiary's
+subsidies
+subsiding
+subsidy
+subsidy's
+subsist
+subsisted
+subsistence
+subsisting
+subsists
+subspace
+subspace's
+subspaces
+substance
+substance's
+substances
+substantial
+substantially
+substantialness
+substantiate
+substantiated
+substantiates
+substantiating
+substantiation
+substantiations
+substantiative
+substantive
+substantively
+substantiveness
+substantivity
+substitutability
+substitutable
+substitute
+substituted
+substituter
+substitutes
+substituting
+substitution
+substitutions
+substitutive
+substitutively
+substrate
+substrate's
+substrates
+substring
+substrings
+substructure
+substructure's
+substructures
+subsume
+subsumed
+subsumes
+subsuming
+subsystem
+subsystem's
+subsystems
+subtask
+subtask's
+subtasks
+subterranean
+subterraneanly
+subtitle
+subtitle's
+subtitled
+subtitles
+subtitling
+subtle
+subtleness
+subtler
+subtlest
+subtleties
+subtlety
+subtly
+subtopic
+subtopic's
+subtopics
+subtract
+subtracted
+subtracter
+subtracter's
+subtracters
+subtracting
+subtraction
+subtractions
+subtractive
+subtracts
+subtrahend
+subtrahend's
+subtrahends
+subtree
+subtree's
+subtrees
+subunit
+subunit's
+subunits
+suburb
+suburb's
+suburban
+suburbs
+subversion
+subvert
+subverted
+subverter
+subverting
+subverts
+subway
+subway's
+subways
+succeed
+succeeded
+succeeder
+succeeding
+succeeds
+success
+successes
+successful
+successfully
+successfulness
+succession
+succession's
+successions
+successive
+successively
+successiveness
+successor
+successor's
+successors
+succinct
+succinctly
+succinctness
+succumb
+succumbed
+succumbing
+succumbs
+such
+suck
+sucked
+sucker
+suckered
+suckering
+suckers
+sucking
+suckle
+suckled
+suckles
+suckling
+sucks
+suction
+sudden
+suddenly
+suddenness
+suds
+sudser
+sudsing
+sue
+sued
+sueded
+sueding
+suer
+sues
+suffer
+sufferance
+suffered
+sufferer
+sufferers
+suffering
+sufferings
+suffers
+suffice
+sufficed
+sufficer
+suffices
+sufficiency
+sufficient
+sufficiently
+sufficing
+suffix
+suffixed
+suffixer
+suffixes
+suffixing
+suffocate
+suffocated
+suffocates
+suffocating
+suffocatingly
+suffocation
+suffocative
+suffrage
+sugar
+sugared
+sugaring
+sugarings
+sugars
+suggest
+suggested
+suggester
+suggestible
+suggesting
+suggestion
+suggestion's
+suggestions
+suggestive
+suggestively
+suggestiveness
+suggests
+suicidal
+suicidally
+suicide
+suicide's
+suicided
+suicides
+suiciding
+suing
+suit
+suit's
+suitability
+suitable
+suitableness
+suitably
+suitcase
+suitcase's
+suitcases
+suite
+suited
+suiters
+suites
+suiting
+suitor
+suitor's
+suitors
+suits
+sulk
+sulked
+sulkies
+sulkiness
+sulking
+sulks
+sulky
+sullen
+sullenly
+sullenness
+sulphate
+sulphates
+sulphur
+sulphured
+sulphuric
+sultan
+sultan's
+sultans
+sultrier
+sultriness
+sultry
+sum
+sum's
+sumer
+summand
+summand's
+summands
+summaries
+summary
+summary's
+summation
+summation's
+summations
+summed
+summer
+summer's
+summered
+summering
+summers
+summing
+summit
+summon
+summoned
+summoner
+summoners
+summoning
+summons
+summonses
+sumptuous
+sumptuously
+sumptuousness
+sums
+sun
+sun's
+sunbeam
+sunbeam's
+sunbeams
+sunburn
+sundown
+sundowner
+sundowners
+sundries
+sundry
+sung
+sunglass
+sunglasses
+sunk
+sunken
+sunlight
+sunlights
+sunned
+sunnier
+sunniness
+sunning
+sunny
+sunrise
+sunrises
+suns
+sunset
+sunsets
+sunshine
+sunshines
+sup
+super
+superb
+superbly
+superbness
+superclass
+superclass's
+supercomputer
+supercomputer's
+supercomputers
+supered
+superego
+superego's
+superegos
+superficial
+superficially
+superficialness
+superfluities
+superfluity
+superfluity's
+superfluous
+superfluously
+superfluousness
+superhuman
+superhumanly
+superhumanness
+superimpose
+superimposed
+superimposes
+superimposing
+supering
+superintend
+superintendent
+superintendent's
+superintendents
+superior
+superior's
+superiority
+superiorly
+superiors
+superlative
+superlatively
+superlativeness
+superlatives
+supermarket
+supermarket's
+supermarkets
+superpose
+superposed
+superposes
+superposing
+superscript
+superscripted
+superscripting
+superscripts
+supersede
+superseded
+superseder
+supersedes
+superseding
+superset
+superset's
+supersets
+superstition
+superstition's
+superstitions
+superstitious
+superstitiously
+superstitiousness
+supertitle
+supertitle's
+supertitled
+supertitles
+supertitling
+superuser
+superuser's
+superusers
+supervise
+supervised
+supervises
+supervising
+supervision
+supervisions
+supervisor
+supervisor's
+supervisors
+supervisory
+supper
+supper's
+suppers
+supplant
+supplanted
+supplanter
+supplanting
+supplants
+supple
+suppled
+supplely
+supplement
+supplemental
+supplementaries
+supplementary
+supplemented
+supplementer
+supplementing
+supplements
+suppleness
+suppler
+supplication
+supplied
+supplier
+supplier's
+suppliers
+supplies
+suppling
+supply
+supply's
+supplying
+support
+supportable
+supported
+supporter
+supporters
+supporting
+supportingly
+supportive
+supportively
+supports
+suppose
+supposed
+supposedly
+supposer
+supposes
+supposing
+supposition
+supposition's
+suppositions
+suppress
+suppressed
+suppresses
+suppressing
+suppression
+suppressions
+suppressive
+suppressiveness
+supremacy
+supreme
+supremely
+supremeness
+sure
+sured
+surely
+sureness
+surer
+surest
+sureties
+surety
+surf
+surface
+surfaced
+surfaceness
+surfacer
+surfacers
+surfaces
+surfacing
+surfer
+surfer's
+surfers
+surfing
+surge
+surged
+surgely
+surgeon
+surgeon's
+surgeons
+surgeries
+surgery
+surges
+surgical
+surgically
+surging
+surlier
+surliness
+surly
+surmise
+surmised
+surmiser
+surmises
+surmising
+surmount
+surmounted
+surmounting
+surmounts
+surname
+surname's
+surnamed
+surnames
+surpass
+surpassed
+surpasses
+surpassing
+surpassingly
+surplus
+surplus's
+surpluses
+surprise
+surprise's
+surprised
+surpriser
+surprises
+surprising
+surprisingly
+surrender
+surrendered
+surrenderer
+surrendering
+surrenders
+surrogate
+surrogate's
+surrogates
+surrogation
+surround
+surrounded
+surrounding
+surroundings
+surrounds
+survey
+surveyed
+surveying
+surveyor
+surveyor's
+surveyors
+surveys
+survival
+survivals
+survive
+survived
+surviver
+survives
+surviving
+survivor
+survivor's
+survivors
+susceptible
+suspect
+suspected
+suspecter
+suspecting
+suspects
+suspend
+suspended
+suspender
+suspender's
+suspenders
+suspending
+suspends
+suspense
+suspenses
+suspension
+suspensions
+suspensive
+suspensively
+suspicion
+suspicion's
+suspicioned
+suspicioning
+suspicions
+suspicious
+suspiciously
+suspiciousness
+sustain
+sustained
+sustainer
+sustaining
+sustains
+suture
+sutured
+sutures
+suturing
+swagger
+swaggered
+swaggering
+swain
+swain's
+swains
+swallow
+swallowed
+swallower
+swallowing
+swallows
+swam
+swamp
+swamped
+swamper
+swampier
+swampiness
+swamping
+swamps
+swampy
+swan
+swan's
+swans
+swap
+swapped
+swapper
+swapper's
+swappers
+swapping
+swaps
+swarm
+swarmed
+swarmer
+swarming
+swarms
+swarthier
+swarthiness
+swarthy
+swatted
+sway
+swayed
+swayer
+swaying
+sways
+swear
+swearer
+swearing
+swears
+sweat
+sweated
+sweater
+sweaters
+sweating
+sweats
+sweep
+sweeper
+sweepers
+sweeping
+sweepingly
+sweepingness
+sweepings
+sweeps
+sweet
+sweeten
+sweetened
+sweetener
+sweeteners
+sweetening
+sweetenings
+sweetens
+sweeter
+sweetest
+sweetheart
+sweetheart's
+sweethearts
+sweetie
+sweetie's
+sweeties
+sweeting
+sweetly
+sweetness
+sweets
+swell
+swelled
+swelling
+swellings
+swells
+swept
+swerve
+swerved
+swerves
+swerving
+swift
+swifter
+swiftest
+swiftly
+swiftness
+swim
+swimmer
+swimmer's
+swimmers
+swimming
+swimmingly
+swims
+swimsuit
+swimsuit's
+swimsuits
+swine
+swing
+swinger
+swingers
+swinging
+swingingly
+swings
+swipe
+swiped
+swipes
+swiping
+swirl
+swirled
+swirler
+swirling
+swirlingly
+swirls
+swish
+swished
+swisher
+switch
+switch's
+switchboard
+switchboard's
+switchboards
+switched
+switcher
+switchers
+switches
+switching
+switchings
+swollen
+swoon
+swooned
+swooner
+swooning
+swooningly
+swoons
+swoop
+swooped
+swooper
+swooping
+swoops
+sword
+sword's
+swords
+swore
+sworn
+swum
+swung
+sycamore
+syllabi
+syllable
+syllable's
+syllabled
+syllables
+syllabling
+syllabus
+syllogism
+syllogism's
+syllogisms
+symbiosis
+symbiotic
+symbol
+symbol's
+symbolic
+symbolic's
+symbolically
+symbolics
+symbolism
+symbolisms
+symbols
+symmetric
+symmetrical
+symmetrically
+symmetricalness
+symmetries
+symmetry
+symmetry's
+sympathetic
+sympathies
+sympathy
+sympathy's
+symphonies
+symphony
+symphony's
+symposium
+symposiums
+symptom
+symptom's
+symptomatic
+symptoms
+synapse
+synapse's
+synapsed
+synapses
+synapsing
+synchronous
+synchronously
+synchronousness
+synchrony
+syndicate
+syndicated
+syndicates
+syndicating
+syndication
+syndrome
+syndrome's
+syndromes
+synergism
+synergistic
+synonym
+synonym's
+synonymous
+synonymously
+synonyms
+synopses
+synopsis
+syntactic
+syntactical
+syntactically
+syntacticly
+syntactics
+syntax
+syntaxes
+syntheses
+synthesis
+synthetic
+synthetics
+syringe
+syringed
+syringes
+syringing
+syrup
+system
+system's
+systematic
+systematically
+systematicness
+systematics
+systems
+tab
+tabernacle
+tabernacle's
+tabernacled
+tabernacles
+tabernacling
+table
+tableau
+tableau's
+tableaus
+tablecloth
+tablecloths
+tabled
+tables
+tablespoon
+tablespoon's
+tablespoonful
+tablespoonful's
+tablespoonfuls
+tablespoons
+tablet
+tablet's
+tablets
+tabling
+taboo
+taboo's
+taboos
+tabs
+tabular
+tabularly
+tabulate
+tabulated
+tabulates
+tabulating
+tabulation
+tabulations
+tabulator
+tabulator's
+tabulators
+tachometer
+tachometer's
+tachometers
+tachometry
+tacit
+tacitly
+tacitness
+tack
+tacked
+tacker
+tacking
+tackle
+tackle's
+tackled
+tackler
+tackles
+tackling
+tacks
+tact
+tactics
+tactile
+tactilely
+tag
+tag's
+tagged
+tagging
+tags
+tail
+tailed
+tailer
+tailing
+tailings
+tailor
+tailored
+tailoring
+tailors
+tails
+taint
+tainted
+taints
+take
+taken
+taker
+takers
+takes
+taketh
+taking
+takings
+tale
+tale's
+talent
+talented
+talents
+taler
+tales
+talion
+talk
+talkative
+talkatively
+talkativeness
+talked
+talker
+talkers
+talkie
+talking
+talks
+tall
+taller
+tallest
+tallness
+tallow
+tame
+tamed
+tamely
+tameness
+tamer
+tames
+tamest
+taming
+tamper
+tampered
+tamperer
+tampering
+tampers
+tan
+tandem
+tang
+tanged
+tangent
+tangent's
+tangential
+tangentially
+tangents
+tangible
+tangibleness
+tangibly
+tangier
+tangle
+tangled
+tangles
+tangling
+tangly
+tangy
+tank
+tanked
+tanker
+tankers
+tanking
+tanks
+tanner
+tanner's
+tanners
+tans
+tantamount
+tantrum
+tantrum's
+tantrums
+tap
+tap's
+tape
+taped
+taper
+tapered
+taperer
+tapering
+tapers
+tapes
+tapestried
+tapestries
+tapestry
+tapestry's
+taping
+tapings
+tapped
+tapper
+tapper's
+tappers
+tapping
+taproot
+taproot's
+taproots
+taps
+tar
+tardier
+tardies
+tardiness
+tardy
+target
+targeted
+targeting
+targets
+tariff
+tariff's
+tariffs
+taring
+tarried
+tarries
+tarry
+tarrying
+tars
+tart
+tartly
+tartness
+tarts
+task
+tasked
+tasking
+tasks
+taste
+tasted
+tasteful
+tastefully
+tastefulness
+tasteless
+tastelessly
+tastelessness
+taster
+tasters
+tastes
+tasting
+tatter
+tattered
+tattoo
+tattooed
+tattooer
+tattoos
+tau
+taught
+taunt
+taunted
+taunter
+taunting
+tauntingly
+taunts
+taut
+tauten
+tautened
+tautening
+tautly
+tautness
+tautological
+tautologically
+tautologies
+tautology
+tautology's
+tavern
+tavern's
+taverner
+taverns
+tawnier
+tawnies
+tawniness
+tawny
+tax
+taxable
+taxation
+taxed
+taxer
+taxes
+taxi
+taxi's
+taxicab
+taxicab's
+taxicabs
+taxied
+taxiing
+taxing
+taxingly
+taxis
+taxonomic
+taxonomically
+taxonomy
+taxpayer
+taxpayer's
+taxpayers
+tea
+teach
+teachable
+teachableness
+teacher
+teacher's
+teachers
+teaches
+teaching
+teachings
+team
+team's
+teamed
+teaming
+teams
+tear
+tear's
+teared
+tearer
+tearful
+tearfully
+tearfulness
+tearing
+tears
+teas
+tease
+teased
+teaser
+teases
+teasing
+teasingly
+teaspoon
+teaspoon's
+teaspoonful
+teaspoonful's
+teaspoonfuls
+teaspoons
+technical
+technicalities
+technicality
+technicality's
+technically
+technicalness
+technician
+technician's
+technicians
+technique
+technique's
+techniques
+technological
+technologically
+technologies
+technologist
+technologist's
+technologists
+technology
+technology's
+tedious
+tediously
+tediousness
+tedium
+teem
+teemed
+teeming
+teemingly
+teemingness
+teems
+teen
+teenage
+teenaged
+teenager
+teenagers
+teener
+teens
+teeth
+teethe
+teethed
+teether
+teethes
+teething
+telecommunication
+telecommunications
+teleconference
+teleconference's
+teleconferenced
+teleconferences
+teleconferencing
+telegram
+telegram's
+telegrams
+telegraph
+telegraphed
+telegrapher
+telegraphers
+telegraphic
+telegraphing
+telegraphs
+teleological
+teleologically
+teleology
+telephone
+telephoned
+telephoner
+telephoners
+telephones
+telephonic
+telephoning
+telephony
+telescope
+telescoped
+telescopes
+telescoping
+teletype
+teletype's
+teletypes
+televise
+televised
+televises
+televising
+television
+televisions
+televisor
+televisor's
+televisors
+tell
+teller
+tellers
+telling
+tellingly
+tellings
+tells
+temper
+temperament
+temperamental
+temperamentally
+temperaments
+temperance
+temperate
+temperately
+temperateness
+temperature
+temperature's
+temperatures
+tempered
+temperer
+tempering
+tempers
+tempest
+tempests
+tempestuous
+tempestuously
+tempestuousness
+template
+template's
+templates
+temple
+temple's
+templed
+temples
+temporal
+temporally
+temporaries
+temporarily
+temporariness
+temporary
+tempt
+temptation
+temptation's
+temptations
+tempted
+tempter
+tempters
+tempting
+temptingly
+tempts
+ten
+ten's
+tenacious
+tenaciously
+tenaciousness
+tenant
+tenant's
+tenants
+tend
+tended
+tendencies
+tendency
+tender
+tendered
+tendering
+tenderly
+tenderness
+tenders
+tending
+tends
+tenement
+tenement's
+tenements
+tennis
+tenor
+tenor's
+tenors
+tens
+tense
+tensed
+tensely
+tenseness
+tenser
+tenses
+tensest
+tensing
+tension
+tensioned
+tensioner
+tensioning
+tensions
+tensive
+tensor
+tensor's
+tensors
+tent
+tentacle
+tentacled
+tentacles
+tentative
+tentatively
+tentativeness
+tented
+tenter
+tenth
+tenthes
+tenting
+tents
+tenure
+tenured
+tenures
+tequila
+tequila's
+term
+termcap
+termed
+termer
+terminal
+terminal's
+terminally
+terminals
+terminate
+terminated
+terminates
+terminating
+termination
+terminations
+terminative
+terminatively
+terminator
+terminator's
+terminators
+terming
+terminologies
+terminology
+terminus
+termly
+terms
+ternary
+terrace
+terraced
+terraces
+terracing
+terrain
+terrain's
+terrains
+terrestrial
+terrestrial's
+terrestrially
+terrestrials
+terrible
+terribleness
+terribly
+terrier
+terrier's
+terriers
+terrific
+terrificly
+terrified
+terrifies
+terrify
+terrifying
+terrifyingly
+territorial
+territorially
+territories
+territory
+territory's
+terror
+terror's
+terrorism
+terrorist
+terrorist's
+terroristic
+terrorists
+terrors
+tertiaries
+tertiary
+test
+test's
+testability
+testable
+testament
+testament's
+testaments
+tested
+tester
+tester's
+testers
+testicle
+testicle's
+testicles
+testified
+testifier
+testifiers
+testifies
+testify
+testifying
+testimonies
+testimony
+testimony's
+testing
+testings
+tests
+text
+text's
+textbook
+textbook's
+textbooks
+textile
+textile's
+textiles
+texts
+textual
+textually
+texture
+textured
+textures
+texturing
+than
+thank
+thanked
+thanker
+thankful
+thankfully
+thankfulness
+thanking
+thankless
+thanklessly
+thanklessness
+thanks
+thanksgiving
+thanksgiving's
+thanksgivings
+that
+that's
+thatch
+thatched
+thatcher
+thatches
+thatching
+thats
+thaw
+thawed
+thawing
+thaws
+the
+theatrical
+theatrically
+theatricals
+theft
+theft's
+thefts
+their
+their's
+theirs
+them
+thematic
+theme
+theme's
+themes
+themselves
+then
+thence
+thenceforth
+theologian
+theologian's
+theologians
+theological
+theologically
+theologies
+theology
+theorem
+theorem's
+theorems
+theoretic
+theoretical
+theoretically
+theoreticians
+theoretics
+theories
+theorist
+theorist's
+theorists
+theory
+theory's
+therapeutic
+therapeutics
+therapies
+therapist
+therapist's
+therapists
+therapy
+therapy's
+there
+there's
+thereabouts
+thereafter
+thereby
+therefore
+therein
+thereof
+thereon
+thereto
+thereupon
+therewith
+thermodynamic
+thermodynamics
+thermometer
+thermometer's
+thermometers
+thermostat
+thermostat's
+thermostated
+thermostats
+these
+theses
+thesis
+they
+they'd
+they'll
+they're
+they've
+thick
+thicken
+thickened
+thickener
+thickeners
+thickening
+thickens
+thicker
+thickest
+thicket
+thicket's
+thicketed
+thickets
+thickly
+thickness
+thicknesses
+thicks
+thief
+thieve
+thieves
+thieving
+thigh
+thighed
+thighs
+thimble
+thimble's
+thimbles
+thin
+thiner
+thinest
+thing
+thingamajig
+thingamajig's
+thingamajigs
+thingness
+things
+think
+thinkable
+thinkableness
+thinkably
+thinker
+thinkers
+thinking
+thinkingly
+thinkingness
+thinks
+thinly
+thinner
+thinners
+thinness
+thinnest
+thins
+third
+thirdly
+thirds
+thirst
+thirsted
+thirster
+thirstier
+thirstiness
+thirsts
+thirsty
+thirteen
+thirteens
+thirteenth
+thirties
+thirtieth
+thirty
+this
+thistle
+thong
+thonged
+thorn
+thorn's
+thornier
+thorniness
+thorns
+thorny
+thorough
+thoroughfare
+thoroughfare's
+thoroughfares
+thoroughly
+thoroughness
+those
+though
+thought
+thought's
+thoughtful
+thoughtfully
+thoughtfulness
+thoughtless
+thoughtlessly
+thoughtlessness
+thoughts
+thousand
+thousands
+thousandth
+thrash
+thrashed
+thrasher
+thrashes
+thrashing
+thread
+threaded
+threader
+threaders
+threading
+threads
+threat
+threaten
+threatened
+threatener
+threatening
+threateningly
+threatens
+threats
+three
+three's
+threes
+threescore
+threshold
+threshold's
+thresholded
+thresholding
+thresholds
+threw
+thrice
+thrift
+thriftier
+thriftiness
+thrifty
+thrill
+thrilled
+thriller
+thrillers
+thrilling
+thrillingly
+thrills
+thrive
+thrived
+thriver
+thrives
+thriving
+thrivingly
+throat
+throated
+throating
+throats
+throb
+throbbed
+throbbing
+throbs
+throne
+throne's
+thrones
+throng
+throng's
+thronging
+throngs
+throning
+throttle
+throttled
+throttler
+throttles
+throttling
+through
+throughly
+throughout
+throughput
+throw
+thrower
+throwing
+thrown
+throws
+thrush
+thrushes
+thrust
+thruster
+thrusters
+thrusting
+thrusts
+thud
+thuds
+thug
+thug's
+thugs
+thumb
+thumbed
+thumbing
+thumbs
+thump
+thumped
+thumper
+thumping
+thumps
+thunder
+thunderbolt
+thunderbolt's
+thunderbolts
+thundered
+thunderer
+thunderers
+thundering
+thunderingly
+thunders
+thunderstorm
+thunderstorm's
+thunderstorms
+thunderstruck
+thus
+thusly
+thwart
+thwarted
+thwarter
+thwarting
+thwartly
+thwarts
+thyself
+tick
+ticked
+ticker
+tickers
+ticket
+ticket's
+ticketed
+ticketing
+tickets
+ticking
+tickle
+tickled
+tickler
+tickles
+tickling
+ticklish
+ticklishly
+ticklishness
+ticks
+tidal
+tidally
+tide
+tided
+tides
+tidied
+tidier
+tidies
+tidiness
+tiding
+tidings
+tidy
+tidying
+tie
+tied
+tier
+tiered
+tiers
+ties
+tiger
+tiger's
+tigers
+tight
+tighten
+tightened
+tightener
+tighteners
+tightening
+tightenings
+tightens
+tighter
+tightest
+tightly
+tightness
+tights
+tilde
+tildes
+tile
+tiled
+tiler
+tiles
+tiling
+till
+tillable
+tilled
+tiller
+tillered
+tillering
+tillers
+tilling
+tills
+tilt
+tilted
+tilter
+tilters
+tilting
+tilts
+timber
+timbered
+timbering
+timbers
+time
+timed
+timeless
+timelessly
+timelessness
+timelier
+timeliness
+timely
+timeout
+timeouts
+timer
+timers
+times
+timeshare
+timeshared
+timeshares
+timesharing
+timetable
+timetable's
+timetabled
+timetables
+timetabling
+timid
+timidity
+timidly
+timidness
+timing
+timings
+tin
+tin's
+tinge
+tinged
+tinging
+tingle
+tingled
+tingles
+tingling
+tinglingly
+tinier
+tiniest
+tinily
+tininess
+tinker
+tinkered
+tinkerer
+tinkering
+tinkers
+tinkle
+tinkled
+tinkles
+tinkling
+tinned
+tinnier
+tinniest
+tinnily
+tinniness
+tinning
+tinny
+tins
+tint
+tinted
+tinter
+tinting
+tints
+tiny
+tip
+tip's
+tipped
+tipper
+tipper's
+tippers
+tipping
+tips
+tiptoe
+tiptoed
+tire
+tired
+tiredly
+tiredness
+tireless
+tirelessly
+tirelessness
+tires
+tiresome
+tiresomely
+tiresomeness
+tiring
+tissue
+tissue's
+tissued
+tissues
+tissuing
+tit
+tit's
+tithe
+tithe's
+tither
+tithes
+tithing
+title
+titled
+titles
+titling
+tits
+titter
+tittered
+tittering
+titters
+tizzies
+tizzy
+to
+toad
+toad's
+toads
+toast
+toasted
+toaster
+toasters
+toastier
+toasting
+toasts
+toasty
+tobacco
+today
+today's
+todays
+toe
+toe's
+toed
+toes
+together
+togetherness
+toggle
+toggled
+toggles
+toggling
+toil
+toiled
+toiler
+toilet
+toilet's
+toilets
+toiling
+toils
+token
+token's
+tokens
+told
+tolerability
+tolerable
+tolerably
+tolerance
+tolerances
+tolerant
+tolerantly
+tolerate
+tolerated
+tolerates
+tolerating
+toleration
+tolerative
+toll
+tolled
+tolling
+tolls
+tom
+tom's
+tomahawk
+tomahawk's
+tomahawks
+tomato
+tomatoes
+tomb
+tomb's
+tombs
+tomography
+tomorrow
+tomorrow's
+tomorrows
+toms
+ton
+ton's
+tone
+toned
+toner
+tones
+tongs
+tongue
+tongued
+tongues
+tonguing
+tonic
+tonic's
+tonics
+tonight
+toning
+tonnage
+tons
+tonsil
+too
+took
+tool
+tooled
+tooler
+toolers
+tooling
+toolkit
+toolkit's
+toolkits
+tools
+tooth
+toothbrush
+toothbrush's
+toothbrushes
+toothbrushing
+toothed
+toothing
+toothpick
+toothpick's
+toothpicks
+top
+toped
+toper
+topic
+topic's
+topical
+topically
+topics
+toping
+topmost
+topological
+topologically
+topologies
+topology
+topple
+toppled
+topples
+toppling
+tops
+torch
+torch's
+torches
+tore
+torment
+tormented
+tormenter
+tormenters
+tormenting
+torments
+torn
+tornado
+tornadoes
+tornados
+torpedo
+torpedoed
+torpedoes
+torpedoing
+torpedos
+torque
+torquer
+torquers
+torques
+torquing
+torrent
+torrent's
+torrents
+torrid
+torridly
+torridness
+tortoise
+tortoise's
+tortoises
+torture
+tortured
+torturer
+torturers
+tortures
+torturing
+torus
+torus's
+toruses
+toss
+tossed
+tosser
+tosses
+tossing
+total
+total's
+totalities
+totality
+totality's
+totally
+totals
+totter
+tottered
+tottering
+totteringly
+totters
+touch
+touchable
+touched
+toucher
+touches
+touchier
+touchiest
+touchily
+touchiness
+touching
+touchingly
+touchy
+tough
+toughen
+toughened
+toughening
+toughens
+tougher
+toughest
+toughly
+toughness
+tour
+toured
+tourer
+touring
+tourist
+tourist's
+tourists
+tournament
+tournament's
+tournaments
+tours
+tow
+toward
+towardliness
+towardly
+towards
+towed
+towel
+towel's
+towels
+tower
+towered
+towering
+toweringly
+towers
+towing
+town
+town's
+towner
+towns
+township
+township's
+townships
+tows
+toxicity
+toxin
+toxin's
+toxins
+toy
+toyed
+toyer
+toying
+toys
+trace
+traceable
+traceableness
+traced
+traceless
+tracelessly
+tracer
+tracers
+traces
+tracing
+tracings
+track
+tracked
+tracker
+trackers
+tracking
+tracks
+tract
+tract's
+tractability
+tractable
+tractive
+tractor
+tractor's
+tractors
+tracts
+trade
+traded
+trademark
+trademark's
+trademarks
+tradeoff
+tradeoffs
+trader
+traders
+trades
+tradesman
+trading
+tradition
+tradition's
+traditional
+traditionally
+traditions
+traffic
+traffic's
+trafficked
+trafficker
+trafficker's
+traffickers
+trafficking
+traffics
+tragedies
+tragedy
+tragedy's
+tragic
+tragically
+trail
+trailed
+trailer
+trailers
+trailing
+trailings
+trails
+train
+trained
+trainee
+trainee's
+trainees
+trainer
+trainers
+training
+trains
+trait
+trait's
+traitor
+traitor's
+traitors
+traits
+trajectories
+trajectory
+trajectory's
+tramp
+tramped
+tramper
+tramping
+trample
+trampled
+trampler
+tramples
+trampling
+tramps
+trance
+trance's
+trances
+trancing
+tranquil
+tranquility
+tranquillity
+tranquilly
+tranquilness
+transact
+transacted
+transacting
+transaction
+transaction's
+transactions
+transacts
+transceiver
+transceiver's
+transceivers
+transcend
+transcended
+transcendent
+transcendently
+transcending
+transcends
+transcontinental
+transcribe
+transcribed
+transcriber
+transcribers
+transcribes
+transcribing
+transcript
+transcript's
+transcription
+transcription's
+transcriptions
+transcripts
+transfer
+transfer's
+transferability
+transferable
+transferal
+transferal's
+transferals
+transfered
+transference
+transferral
+transferral's
+transferrals
+transferred
+transferrer
+transferrer's
+transferrers
+transferring
+transfers
+transfinite
+transform
+transformable
+transformation
+transformation's
+transformational
+transformations
+transformed
+transformer
+transformers
+transforming
+transforms
+transgress
+transgressed
+transgresses
+transgressing
+transgression
+transgression's
+transgressions
+transgressive
+transience
+transiency
+transient
+transiently
+transients
+transistor
+transistor's
+transistors
+transit
+transition
+transitional
+transitionally
+transitioned
+transitions
+transitive
+transitively
+transitiveness
+transitivity
+transitoriness
+transitory
+translatability
+translatable
+translate
+translated
+translates
+translating
+translation
+translational
+translations
+translative
+translator
+translator's
+translators
+translucent
+translucently
+transmission
+transmission's
+transmissions
+transmit
+transmits
+transmittal
+transmitted
+transmitter
+transmitter's
+transmitters
+transmitting
+transmogrification
+transmogrify
+transparencies
+transparency
+transparency's
+transparent
+transparently
+transparentness
+transpire
+transpired
+transpires
+transpiring
+transplant
+transplanted
+transplanter
+transplanting
+transplants
+transport
+transportability
+transportation
+transportations
+transported
+transporter
+transporters
+transporting
+transports
+transpose
+transposed
+transposes
+transposing
+transposition
+trap
+trap's
+trapezoid
+trapezoid's
+trapezoidal
+trapezoids
+trapped
+trapper
+trapper's
+trappers
+trapping
+trappings
+traps
+trash
+trashed
+trasher
+trashes
+trashing
+traumatic
+travail
+travails
+travel
+travels
+traversal
+traversal's
+traversals
+traverse
+traversed
+traverser
+traverses
+traversing
+travesties
+travesty
+travesty's
+tray
+tray's
+trays
+treacheries
+treacherous
+treacherously
+treacherousness
+treachery
+treachery's
+tread
+treaded
+treader
+treading
+treads
+treason
+treasure
+treasured
+treasurer
+treasures
+treasuries
+treasuring
+treasury
+treasury's
+treat
+treated
+treater
+treaters
+treaties
+treating
+treatise
+treatise's
+treatises
+treatment
+treatment's
+treatments
+treats
+treaty
+treaty's
+treble
+trebled
+trebles
+trebling
+tree
+tree's
+treed
+trees
+treetop
+treetop's
+treetops
+trek
+trek's
+treks
+tremble
+trembled
+trembler
+trembles
+trembling
+tremendous
+tremendously
+tremendousness
+tremor
+tremor's
+tremors
+trench
+trenched
+trencher
+trenchers
+trenches
+trend
+trending
+trends
+trespass
+trespassed
+trespasser
+trespassers
+trespasses
+tress
+tress's
+tressed
+tresses
+trial
+trial's
+trials
+triangle
+triangle's
+triangles
+triangular
+triangularly
+tribal
+tribally
+tribe
+tribe's
+tribes
+tribunal
+tribunal's
+tribunals
+tribune
+tribune's
+tribunes
+tributary
+tribute
+tribute's
+tributes
+tributing
+trichotomy
+trick
+tricked
+tricker
+trickier
+trickiest
+trickiness
+tricking
+trickle
+trickled
+trickles
+trickling
+tricks
+tricky
+tried
+trier
+triers
+tries
+trifle
+trifled
+trifler
+trifles
+trifling
+trigger
+triggered
+triggering
+triggers
+trigonometric
+trigonometry
+trihedral
+trill
+trilled
+triller
+trillion
+trillions
+trillionth
+trim
+trimer
+trimly
+trimmed
+trimmer
+trimmest
+trimming
+trimmings
+trimness
+trims
+trinket
+trinket's
+trinketed
+trinketer
+trinkets
+trip
+trip's
+triple
+tripled
+triples
+triplet
+triplet's
+triplets
+triplication
+tripling
+triply
+trips
+triumph
+triumphal
+triumphantly
+triumphed
+triumphing
+triumphs
+trivia
+trivial
+trivialities
+triviality
+trivially
+trod
+troff
+troff's
+troffer
+troll
+troll's
+trolley
+trolley's
+trolleyed
+trolleys
+trolls
+troop
+trooped
+trooper
+troopers
+trooping
+troops
+trophied
+trophies
+trophy
+trophy's
+trophying
+tropic
+tropic's
+tropical
+tropically
+tropics
+trot
+trots
+trouble
+troubled
+troublemaker
+troublemaker's
+troublemakers
+troubler
+troubles
+troubleshoot
+troubleshooted
+troubleshooter
+troubleshooters
+troubleshooting
+troubleshoots
+troublesome
+troublesomely
+troublesomeness
+troubling
+trough
+trouser
+trousered
+trousers
+trout
+trouts
+trowel
+trowel's
+trowels
+truant
+truant's
+truants
+truce
+trucing
+truck
+trucked
+trucker
+truckers
+trucking
+trucks
+trudge
+trudged
+trudger
+trudges
+trudging
+true
+trued
+trueness
+truer
+trues
+truest
+truing
+truism
+truism's
+truisms
+truly
+trump
+trumped
+trumpet
+trumpeted
+trumpeter
+trumpeting
+trumpets
+trumps
+truncate
+truncated
+truncates
+truncating
+truncation
+truncation's
+truncations
+trunk
+trunk's
+trunked
+trunks
+trust
+trusted
+trustee
+trustee's
+trusteed
+trustees
+truster
+trustful
+trustfully
+trustfulness
+trustier
+trusties
+trustiness
+trusting
+trustingly
+trusts
+trustworthiness
+trustworthy
+trusty
+truth
+truthful
+truthfully
+truthfulness
+truths
+try
+trying
+tryingly
+tty
+tty's
+ttys
+tub
+tub's
+tube
+tubed
+tuber
+tuberculosis
+tubers
+tubes
+tubing
+tubs
+tuck
+tucked
+tucker
+tuckered
+tuckering
+tucking
+tucks
+tuft
+tuft's
+tufted
+tufter
+tufts
+tug
+tugs
+tuition
+tuitions
+tulip
+tulip's
+tulips
+tumble
+tumbled
+tumbler
+tumblers
+tumbles
+tumbling
+tumult
+tumult's
+tumults
+tumultuous
+tumultuously
+tumultuousness
+tunable
+tunableness
+tune
+tuned
+tuner
+tuners
+tunes
+tunic
+tunic's
+tunics
+tuning
+tuning's
+tunings
+tunnel
+tunnels
+tuple
+tuple's
+tuples
+turban
+turban's
+turbaned
+turbans
+turbulence
+turbulence's
+turbulent
+turbulently
+turf
+turkey
+turkey's
+turkeys
+turmoil
+turmoil's
+turmoils
+turn
+turnable
+turned
+turner
+turners
+turning
+turnings
+turnip
+turnip's
+turnips
+turnkey
+turnkeys
+turnover
+turnovers
+turns
+turpentine
+turquoise
+turret
+turret's
+turreted
+turrets
+turtle
+turtle's
+turtles
+turtling
+tutor
+tutored
+tutorial
+tutorial's
+tutorials
+tutoring
+tutors
+twain
+twang
+twanging
+twas
+tweak
+tweaked
+tweaker
+tweaking
+tweaks
+tweed
+tweezer
+tweezers
+twelfth
+twelve
+twelves
+twenties
+twentieth
+twenty
+twice
+twig
+twig's
+twigs
+twilight
+twilight's
+twilights
+twill
+twilled
+twilling
+twin
+twin's
+twine
+twined
+twiner
+twines
+twining
+twinkle
+twinkled
+twinkler
+twinkles
+twinkling
+twins
+twirl
+twirled
+twirler
+twirling
+twirlingly
+twirls
+twist
+twisted
+twister
+twisters
+twisting
+twists
+twitch
+twitched
+twitcher
+twitching
+twitter
+twittered
+twitterer
+twittering
+two
+two's
+twofold
+twos
+tying
+type
+type's
+typed
+typedef
+typedefs
+typer
+types
+typewriter
+typewriter's
+typewriters
+typhoid
+typical
+typically
+typicalness
+typification
+typified
+typifies
+typify
+typifying
+typing
+typist
+typist's
+typists
+typographic
+typographical
+typographically
+typography
+typos
+tyranny
+tyrant
+tyrant's
+tyrants
+ubiquitous
+ubiquitously
+ubiquitousness
+ubiquity
+ugh
+uglier
+ugliest
+ugliness
+ugly
+ulcer
+ulcer's
+ulcered
+ulcering
+ulcers
+ultimate
+ultimately
+ultimateness
+umbrella
+umbrella's
+umbrellas
+umpire
+umpire's
+umpired
+umpires
+umpiring
+unabashed
+unabashedly
+unabated
+unabatedly
+unabbreviated
+unable
+unabridged
+unaccelerated
+unacceptability
+unacceptable
+unacceptably
+unaccessible
+unaccommodated
+unaccompanied
+unaccomplished
+unaccountably
+unaccounted
+unaccustomed
+unaccustomedly
+unachievable
+unachieved
+unacknowledged
+unacquainted
+unadaptable
+unadjustable
+unadjusted
+unadopted
+unadorned
+unadulterated
+unadulteratedly
+unadvised
+unadvisedly
+unaffected
+unaffectedly
+unaffectedness
+unaffectionate
+unaffectionately
+unafraid
+unaggregated
+unaided
+unalienability
+unalienable
+unaligned
+unallocated
+unalloyed
+unalterable
+unalterableness
+unalterably
+unaltered
+unambiguous
+unambiguously
+unambitious
+unanchored
+unanimous
+unanimously
+unannounced
+unanswerable
+unanswered
+unanticipated
+unanticipatedly
+unapologetically
+unappealing
+unappealingly
+unappreciated
+unapproachability
+unapproachable
+unappropriated
+unapt
+unaptly
+unaptness
+unarguable
+unarguably
+unarmed
+unarticulated
+unary
+unashamed
+unashamedly
+unasked
+unassailable
+unassailableness
+unassembled
+unassigned
+unassigns
+unassisted
+unassuming
+unassumingness
+unattached
+unattainability
+unattainable
+unattended
+unattenuated
+unattractive
+unattractively
+unattractiveness
+unattributed
+unauthentic
+unauthenticated
+unavailability
+unavailable
+unavailing
+unavailingly
+unavailingness
+unavoidable
+unavoidably
+unaware
+unawarely
+unawareness
+unawares
+unbacked
+unbalanced
+unbalancedness
+unbanned
+unbanning
+unbans
+unbarbered
+unbarred
+unbated
+unbearable
+unbearably
+unbeatable
+unbeatably
+unbeaten
+unbeautifully
+unbecoming
+unbecomingly
+unbecomingness
+unbelievable
+unbelievably
+unbelieving
+unbelievingly
+unbelted
+unbendable
+unbetrothed
+unbiased
+unbiasedness
+unbidden
+unblemished
+unblinded
+unblinking
+unblinkingly
+unblock
+unblocked
+unblocking
+unblocks
+unblown
+unblushing
+unblushingly
+unbodied
+unbolted
+unboned
+unbonneted
+unborn
+unbound
+unbounded
+unboundedness
+unbowed
+unbranched
+unbreakable
+unbreathable
+unbred
+unbridled
+unbroken
+unbudging
+unbudgingly
+unbuffered
+unbuilt
+unbundled
+unburdened
+unbureaucratic
+unburied
+unburned
+unbuttered
+unbuttoned
+unbuttons
+uncaged
+uncalculating
+uncalled
+uncandidly
+uncanniness
+uncanny
+uncared
+uncaring
+uncatchable
+uncaught
+uncaused
+unceasing
+unceasingly
+uncensored
+uncertain
+uncertainly
+uncertainness
+uncertainties
+uncertainty
+uncertified
+unchallenged
+unchangeability
+unchangeable
+unchangeably
+unchanged
+unchanging
+unchangingly
+unchangingness
+uncharacteristically
+uncharged
+uncharitable
+uncharitableness
+uncharted
+unchartered
+uncheckable
+unchecked
+unchivalrously
+unchosen
+uncivil
+uncivilly
+unclaimed
+unclamorous
+unclamorously
+unclamorousness
+unclarity
+unclassified
+uncle
+uncle's
+unclean
+uncleanliness
+uncleanly
+uncleanness
+unclear
+uncleared
+unclenched
+uncles
+unclipped
+unclosed
+unclothed
+unclouded
+uncloudedly
+unclustered
+uncluttered
+uncoated
+uncoded
+uncoiled
+uncoined
+uncomfortable
+uncomfortably
+uncomforted
+uncommented
+uncommitted
+uncommon
+uncommonly
+uncommonness
+uncomplaining
+uncomplainingly
+uncompleted
+uncomplimentary
+uncomprehending
+uncomprehendingly
+uncompress
+uncompressed
+uncompresses
+uncompressing
+uncompromising
+uncompromisingly
+uncomputable
+unconceivable
+unconcerned
+unconcernedly
+unconcernedness
+unconditional
+unconditionally
+unconditioned
+unconfined
+unconfirmed
+unconformity
+unconnected
+unconquerable
+unconscious
+unconsciously
+unconsciousness
+unconsidered
+unconsolidated
+unconstitutional
+unconstitutionality
+unconstitutionally
+unconstrained
+uncontaminated
+uncontested
+uncontrollability
+uncontrollable
+uncontrollably
+uncontrolled
+unconventional
+unconventionally
+unconvertible
+unconvinced
+unconvincing
+unconvincingly
+unconvincingness
+uncool
+uncooled
+uncooperative
+uncoordinated
+uncorked
+uncorrectable
+uncorrected
+uncorrelated
+uncountable
+uncountably
+uncounted
+uncouth
+uncouthly
+uncouthness
+uncovenanted
+uncover
+uncovered
+uncovering
+uncovers
+uncreated
+uncritically
+uncrowned
+uncrushable
+uncured
+uncurled
+uncynical
+uncynically
+undamaged
+undamped
+undaunted
+undauntedly
+undebatable
+undecidable
+undecided
+undeclared
+undecomposable
+undecorated
+undefended
+undefinability
+undefinable
+undefined
+undefinedness
+undeformed
+undelete
+undeleted
+undemocratic
+undemocratically
+undemonstrative
+undemonstratively
+undemonstrativeness
+undeniable
+undeniableness
+undeniably
+undepicted
+under
+underbrush
+underdone
+underestimate
+underestimated
+underestimates
+underestimating
+underestimation
+underestimations
+underflow
+underflowed
+underflowing
+underflows
+underfoot
+undergo
+undergoes
+undergoing
+undergone
+undergrad
+undergrad's
+undergrads
+undergraduate
+undergraduate's
+undergraduates
+underground
+undergrounder
+underivable
+underived
+underlie
+underlies
+underline
+underlined
+underlines
+underling
+underling's
+underlings
+underlining
+underlinings
+underly
+underlying
+undermine
+undermined
+undermines
+undermining
+underneath
+underpayment
+underpayment's
+underpayments
+underpinning
+underpinnings
+underplay
+underplayed
+underplaying
+underplays
+underscore
+underscored
+underscores
+understand
+understandability
+understandable
+understandably
+understanding
+understandingly
+understandings
+understands
+understated
+understood
+undertake
+undertaken
+undertaker
+undertaker's
+undertakers
+undertakes
+undertaking
+undertakings
+undertook
+underway
+underwear
+underwent
+underworld
+underwrite
+underwriter
+underwriters
+underwrites
+underwriting
+undescended
+undesigned
+undesigning
+undesirability
+undesirable
+undesirableness
+undesirably
+undesired
+undetectable
+undetected
+undetermined
+undeveloped
+undeviated
+undeviating
+undeviatingly
+undid
+undies
+undifferentiated
+undigested
+undignified
+undiluted
+undiminished
+undimmed
+undiplomatic
+undirected
+undisciplined
+undisclosed
+undiscovered
+undiscussed
+undisguised
+undisguisedly
+undismayed
+undisputed
+undisrupted
+undissociated
+undistinguished
+undistorted
+undistributed
+undisturbed
+undivided
+undo
+undocumented
+undoer
+undoes
+undoing
+undoings
+undomesticated
+undone
+undoubled
+undoubted
+undoubtedly
+undrained
+undramatically
+undreamed
+undress
+undressed
+undresses
+undressing
+undried
+undrinkable
+undue
+unduly
+undumper
+undumper's
+undutiful
+undutifully
+undutifulness
+undying
+unearned
+unearthliness
+unearthly
+uneasily
+uneasiness
+uneasy
+uneconomical
+unedited
+unelected
+unembellished
+unemotional
+unemotionally
+unemphatic
+unemphatically
+unemployable
+unemployed
+unemployment
+unencumbered
+unending
+unendingly
+unendurable
+unendurableness
+unendurably
+unenlightening
+unenthusiastic
+unenthusiastically
+unenumerated
+unenvied
+unequal
+unequally
+unequivocal
+unequivocally
+unerring
+unerringly
+unessential
+unethically
+unevaluated
+uneven
+unevenly
+unevenness
+uneventful
+uneventfully
+unexamined
+unexampled
+unexceptionally
+unexcused
+unexpanded
+unexpected
+unexpectedly
+unexpectedness
+unexpended
+unexperienced
+unexplainable
+unexplained
+unexploited
+unexplored
+unexpressed
+unextended
+unfading
+unfadingly
+unfair
+unfairly
+unfairness
+unfaith
+unfaithful
+unfaithfully
+unfaithfulness
+unfaltering
+unfalteringly
+unfamiliar
+unfamiliarity
+unfamiliarly
+unfashionable
+unfashionably
+unfastened
+unfathered
+unfeathered
+unfeigned
+unfeignedly
+unfenced
+unfettered
+unfilial
+unfilially
+unfilled
+unfinished
+unfired
+unfit
+unfitly
+unfitness
+unfitted
+unfixed
+unflagging
+unflaggingly
+unflattering
+unflatteringly
+unfledged
+unflinching
+unflinchingly
+unfocused
+unfold
+unfolded
+unfolding
+unfolds
+unforeseen
+unforgeable
+unforgettable
+unforgettably
+unforgivable
+unforgiving
+unforgivingness
+unformatted
+unformed
+unforthcoming
+unfortunate
+unfortunately
+unfortunates
+unfounded
+unfrequented
+unfriendliness
+unfriendly
+unfrosted
+unfruitful
+unfruitfully
+unfruitfulness
+unfulfilled
+unfunded
+unfunnily
+unfurnished
+ungainliness
+ungainly
+ungallantly
+ungenerously
+ungirt
+unglazed
+unglued
+ungot
+ungotten
+ungoverned
+ungraceful
+ungracefully
+ungracefulness
+ungraciously
+ungraded
+ungrammatical
+ungrateful
+ungratefully
+ungratefulness
+ungratified
+ungrounded
+unguarded
+unguardedly
+unguardedness
+unguessable
+unguessed
+unguided
+unhallow
+unhallowed
+unhampered
+unhandily
+unhandsomely
+unhappier
+unhappiest
+unhappily
+unhappiness
+unhappy
+unharmed
+unhealthily
+unhealthiness
+unhealthy
+unheard
+unheeded
+unheeding
+unhelm
+unhelpfully
+unheralded
+unhesitating
+unhesitatingly
+unhinged
+unhitched
+unhooks
+unhoped
+unhurriedly
+unhysterical
+unhysterically
+unicorn
+unicorn's
+unicorns
+unidentifiable
+unidentified
+unidirectional
+unidirectionality
+unidirectionally
+unification
+unifications
+unified
+unifier
+unifiers
+unifies
+uniform
+uniformed
+uniforming
+uniformities
+uniformity
+uniformly
+uniformness
+uniforms
+unify
+unifying
+unilluminating
+unimaginable
+unimaginably
+unimaginatively
+unimpaired
+unimpassioned
+unimpeded
+unimplemented
+unimportance
+unimportant
+unimpressed
+unimproved
+unincorporated
+unindented
+uninfected
+uninfluenced
+uninformatively
+uninformed
+uninhabited
+uninhibited
+uninhibitedly
+uninhibitedness
+uninitiated
+uninjured
+uninspired
+uninspiring
+uninstantiated
+uninsulated
+unintelligent
+unintelligently
+unintelligibility
+unintelligible
+unintelligibleness
+unintelligibly
+unintended
+unintentional
+unintentionally
+uninteresting
+uninterestingly
+uninterpretable
+uninterpreted
+uninterrupted
+uninterruptedly
+uninterruptedness
+uninterviewed
+uninvited
+union
+union's
+unions
+unique
+uniquely
+uniqueness
+unison
+unit
+unit's
+unite
+united
+unitedly
+uniter
+unites
+unities
+uniting
+unitive
+units
+unity
+unity's
+univalve
+univalve's
+univalves
+universal
+universality
+universally
+universalness
+universals
+universe
+universe's
+universes
+universities
+university
+university's
+unjacketed
+unjam
+unjammed
+unjamming
+unjoined
+unjust
+unjustifiable
+unjustified
+unjustly
+unjustness
+unkind
+unkindliness
+unkindly
+unkindness
+unknit
+unknowable
+unknowing
+unknowingly
+unknown
+unknowns
+unlaced
+unlamented
+unlashed
+unlaundered
+unlawful
+unlawfully
+unlawfulness
+unleaded
+unleash
+unleashed
+unleashes
+unleashing
+unleavened
+unless
+unlettered
+unlicensed
+unlicked
+unlike
+unlikelihood
+unlikelihoods
+unlikeliness
+unlikely
+unlikeness
+unlimbers
+unlimited
+unlimitedly
+unlined
+unlink
+unlinked
+unlinking
+unlinks
+unlisted
+unload
+unloaded
+unloader
+unloaders
+unloading
+unloads
+unlock
+unlocked
+unlocking
+unlocks
+unlogged
+unloved
+unluckily
+unluckiness
+unlucky
+unmade
+unmagnified
+unmaintainable
+unmaintained
+unmaliciously
+unmanageable
+unmanageably
+unmanaged
+unmanned
+unmannered
+unmanneredly
+unmannerliness
+unmannerly
+unmapped
+unmaps
+unmarked
+unmarried
+unmarrieds
+unmasked
+unmatchable
+unmatched
+unmated
+unmates
+unmeant
+unmeasurable
+unmentionable
+unmentionables
+unmentioned
+unmerciful
+unmercifully
+unmeshed
+unmistakable
+unmistakably
+unmitigated
+unmitigatedly
+unmitigatedness
+unmixed
+unmoderated
+unmodifiable
+unmodified
+unmolested
+unmotivated
+unmount
+unmountable
+unmounted
+unmoved
+unmurmuring
+unnameable
+unnamed
+unnatural
+unnaturally
+unnaturalness
+unnecessarily
+unnecessary
+unneeded
+unnegated
+unnerve
+unnerved
+unnerves
+unnerving
+unnervingly
+unnoticed
+unnourished
+unnumbered
+unobservable
+unobservables
+unobserved
+unobtainable
+unoccupied
+unofficial
+unofficially
+unopened
+unordered
+unoriginals
+unorthodoxly
+unpack
+unpackaged
+unpackages
+unpacked
+unpacker
+unpacking
+unpacks
+unpadded
+unpaged
+unpaid
+unpainted
+unpaired
+unparliamentary
+unparsed
+unpartitioned
+unpatriotic
+unpaved
+unperceived
+unperformed
+unperturbed
+unperturbedly
+unplaced
+unplagued
+unplanned
+unpleasant
+unpleasantly
+unpleasantness
+unpleased
+unplowed
+unplugged
+unplugging
+unplugs
+unplumbed
+unpolled
+unpolluted
+unpopular
+unpopularity
+unprecedented
+unprecedentedly
+unpredictability
+unpredictable
+unpredictably
+unpredicted
+unprejudiced
+unprescribed
+unpreserved
+unpretending
+unpretentious
+unpretentiously
+unpretentiousness
+unpriced
+unprimed
+unprincipled
+unprincipledness
+unprintable
+unprinted
+unprivileged
+unproblematic
+unproblematical
+unproblematically
+unprocessed
+unprofitable
+unprofitableness
+unprofitably
+unprojected
+unpromising
+unpromisingly
+unprompted
+unpronounceable
+unpropagated
+unpropertied
+unprotected
+unprotectedly
+unprovability
+unprovable
+unproved
+unproven
+unprovided
+unpublished
+unpunched
+unpunished
+unqualified
+unqualifiedly
+unquantifiable
+unquenched
+unquestionably
+unquestioned
+unquestioningly
+unquoted
+unranked
+unrated
+unravel
+unravels
+unreachable
+unreacted
+unread
+unreadability
+unreadable
+unreal
+unrealism
+unrealistic
+unrealistically
+unrealized
+unrealizes
+unreasonable
+unreasonableness
+unreasonably
+unreassuringly
+unreconstructed
+unrecordable
+unrecorded
+unrecoverable
+unredeemed
+unreferenced
+unrefined
+unreflected
+unregister
+unregistered
+unregistering
+unregisters
+unregulated
+unrehearsed
+unreinforced
+unrelated
+unreleased
+unrelenting
+unrelentingly
+unreliabilities
+unreliability
+unreliable
+unreliably
+unremarked
+unreported
+unrepresentable
+unrepresented
+unrequested
+unrequited
+unreserved
+unreservedly
+unreservedness
+unresisted
+unresisting
+unresolved
+unresponsive
+unresponsively
+unresponsiveness
+unrest
+unrestrained
+unrestrainedly
+unrestrainedness
+unrestricted
+unrestrictedly
+unrestrictive
+unreturned
+unrevealing
+unrifled
+unrighteous
+unrighteously
+unrighteousness
+unroll
+unrolled
+unrolling
+unrolls
+unromantically
+unrotated
+unruffled
+unruled
+unruliness
+unruly
+unsafe
+unsafely
+unsaid
+unsalted
+unsanitary
+unsatisfactorily
+unsatisfactory
+unsatisfiability
+unsatisfiable
+unsatisfied
+unsatisfying
+unsaturated
+unsaved
+unscheduled
+unschooled
+unscientific
+unscientifically
+unscramble
+unscrambled
+unscrambler
+unscrambles
+unscrambling
+unscratched
+unscreened
+unscrews
+unscripted
+unscrupulous
+unscrupulously
+unscrupulousness
+unsealed
+unseals
+unseasonable
+unseasonableness
+unseasonably
+unseasoned
+unsecured
+unseeded
+unseeing
+unseemly
+unseen
+unsegmented
+unsegregated
+unselected
+unselfish
+unselfishly
+unselfishness
+unsent
+unserved
+unserviced
+unsettled
+unsettledness
+unsettling
+unsettlingly
+unshaded
+unshakable
+unshaken
+unshared
+unsharpened
+unshaved
+unshaven
+unsheathing
+unshelled
+unsheltered
+unshielded
+unshod
+unsigned
+unsimplified
+unsized
+unskilled
+unskillful
+unskillfully
+unskillfulness
+unslings
+unsloped
+unslung
+unsmiling
+unsmilingly
+unsnap
+unsnapped
+unsnapping
+unsnaps
+unsociability
+unsociable
+unsociableness
+unsociably
+unsocial
+unsocially
+unsolicited
+unsolvable
+unsolved
+unsophisticated
+unsophistication
+unsorted
+unsought
+unsound
+unsounded
+unsoundly
+unsoundness
+unsparing
+unsparingly
+unspeakable
+unspecified
+unspent
+unspoiled
+unspoken
+unspotted
+unsprayed
+unsprung
+unstable
+unstableness
+unstably
+unstacked
+unstacks
+unstained
+unstapled
+unstaring
+unstated
+unsteadily
+unsteadiness
+unsteady
+unstemmed
+unstinting
+unstintingly
+unstoppable
+unstopped
+unstrained
+unstratified
+unstreamed
+unstressed
+unstriped
+unstructured
+unstrung
+unstuck
+unsubscripted
+unsubstantially
+unsubstantiated
+unsubstituted
+unsuccessful
+unsuccessfully
+unsuffixed
+unsuitability
+unsuitable
+unsuitably
+unsuited
+unsung
+unsupportable
+unsupported
+unsure
+unsurpassed
+unsurprised
+unsurprising
+unsurprisingly
+unsuspected
+unsuspecting
+unsuspended
+unswerving
+unsymmetrically
+unsympathetic
+untamed
+untampered
+untaped
+untapped
+untaught
+untented
+unterminated
+untestable
+untested
+unthematic
+unthinkable
+unthinkably
+unthinkingly
+untidiness
+untidy
+untie
+untied
+unties
+until
+untimeliness
+untimely
+untitled
+unto
+untold
+untouchable
+untouchable's
+untouchables
+untouched
+untoward
+untowardly
+untowardness
+untraceable
+untraced
+untracked
+untrained
+untransformed
+untranslated
+untransposed
+untreated
+untried
+untrod
+untroubled
+untrue
+untruly
+untrusted
+untrustworthiness
+untruth
+untruthful
+untruthfully
+untruthfulness
+untutored
+untwisted
+untying
+untyped
+unusable
+unused
+unusual
+unusually
+unusualness
+unuttered
+unvalued
+unvarnished
+unvarying
+unveil
+unveiled
+unveiling
+unveils
+unventilated
+unverified
+unvisited
+unvoiced
+unwaged
+unwanted
+unwarily
+unwarranted
+unwashed
+unwashedness
+unwatched
+unwavering
+unwaveringly
+unwearied
+unweariedly
+unweighed
+unwelcome
+unwept
+unwholesome
+unwholesomely
+unwieldiness
+unwieldy
+unwilled
+unwilling
+unwillingly
+unwillingness
+unwind
+unwinder
+unwinders
+unwinding
+unwinds
+unwinking
+unwired
+unwise
+unwisely
+unwiser
+unwisest
+unwitnessed
+unwitting
+unwittingly
+unwonted
+unwontedly
+unwontedness
+unworldliness
+unworldly
+unworn
+unworthiness
+unworthy
+unwound
+unwounded
+unwoven
+unwrap
+unwrapped
+unwrapping
+unwraps
+unwrinkled
+unwritable
+unwritten
+unyielded
+unyielding
+unyieldingly
+up
+upbraid
+upbraider
+upbringing
+update
+updated
+updater
+updates
+updating
+upfield
+upgrade
+upgraded
+upgrades
+upgrading
+upheld
+uphill
+uphold
+upholder
+upholders
+upholding
+upholds
+upholster
+upholstered
+upholsterer
+upholsterers
+upholstering
+upholsters
+upkeep
+upland
+uplander
+uplands
+uplift
+uplifted
+uplifter
+uplifting
+uplifts
+upload
+uploaded
+uploading
+uploads
+upon
+upper
+uppermost
+uppers
+upright
+uprightly
+uprightness
+uprising
+uprising's
+uprisings
+uproar
+uproot
+uprooted
+uprooter
+uprooting
+uproots
+ups
+upset
+upsets
+upsetting
+upshot
+upshot's
+upshots
+upside
+upsides
+upstairs
+upstream
+upturn
+upturned
+upturning
+upturns
+upward
+upwardly
+upwardness
+upwards
+urban
+urchin
+urchin's
+urchins
+urge
+urged
+urgent
+urgently
+urger
+urges
+urging
+urgings
+urinate
+urinated
+urinates
+urinating
+urination
+urine
+urn
+urn's
+urning
+urns
+us
+usability
+usable
+usably
+usage
+usages
+use
+used
+useful
+usefully
+usefulness
+useless
+uselessly
+uselessness
+user
+user's
+users
+uses
+usher
+ushered
+ushering
+ushers
+using
+usual
+usually
+usualness
+usurp
+usurped
+usurper
+utensil
+utensil's
+utensils
+utilities
+utility
+utility's
+utmost
+utopian
+utopian's
+utopians
+utter
+utterance
+utterance's
+utterances
+uttered
+utterer
+uttering
+utterly
+uttermost
+utters
+uucp
+uucp's
+vacancies
+vacancy
+vacancy's
+vacant
+vacantly
+vacantness
+vacate
+vacated
+vacates
+vacating
+vacation
+vacationed
+vacationer
+vacationers
+vacationing
+vacations
+vacillate
+vacillated
+vacillates
+vacillating
+vacillatingly
+vacillation
+vacillations
+vacillator
+vacillator's
+vacillators
+vacuo
+vacuous
+vacuously
+vacuousness
+vacuum
+vacuumed
+vacuuming
+vacuums
+vagabond
+vagabond's
+vagabonds
+vagaries
+vagary
+vagary's
+vagina
+vagina's
+vaginas
+vagrant
+vagrantly
+vagrants
+vague
+vaguely
+vagueness
+vaguer
+vaguest
+vainly
+vale
+vale's
+valedictorian
+valedictorian's
+valence
+valence's
+valences
+valentine
+valentine's
+valentines
+vales
+valet
+valet's
+valets
+valiant
+valiantly
+valiantness
+valid
+validate
+validated
+validates
+validating
+validation
+validations
+validity
+validly
+validness
+valley
+valley's
+valleys
+valuable
+valuableness
+valuables
+valuably
+valuation
+valuation's
+valuations
+valuator
+valuators
+value
+valued
+valuer
+valuers
+values
+valuing
+valve
+valve's
+valved
+valves
+valving
+van
+van's
+vane
+vane's
+vaned
+vanes
+vanilla
+vanish
+vanished
+vanisher
+vanishes
+vanishing
+vanishingly
+vanities
+vanity
+vanquish
+vanquished
+vanquisher
+vanquishes
+vanquishing
+vans
+vantage
+vantages
+variability
+variable
+variable's
+variableness
+variables
+variably
+variance
+variance's
+variances
+variant
+variantly
+variants
+variation
+variation's
+variations
+varied
+variedly
+varier
+varies
+varieties
+variety
+variety's
+various
+variously
+variousness
+varnish
+varnish's
+varnished
+varnisher
+varnishers
+varnishes
+varnishing
+vary
+varying
+varyingly
+varyings
+vase
+vase's
+vases
+vassal
+vassals
+vast
+vaster
+vastest
+vastly
+vastness
+vat
+vat's
+vats
+vaudeville
+vault
+vaulted
+vaulter
+vaulting
+vaults
+vaunt
+vaunted
+vaunter
+veal
+vealer
+vealing
+vector
+vector's
+vectored
+vectoring
+vectors
+veer
+veered
+veering
+veeringly
+veers
+vegetable
+vegetable's
+vegetables
+vegetarian
+vegetarian's
+vegetarians
+vegetate
+vegetated
+vegetates
+vegetating
+vegetation
+vegetative
+vegetatively
+vegetativeness
+vehemence
+vehement
+vehemently
+vehicle
+vehicle's
+vehicles
+vehicular
+veil
+veiled
+veiling
+veils
+vein
+veined
+veiner
+veining
+veins
+velocities
+velocity
+velocity's
+velvet
+vend
+vender
+vending
+vendor
+vendor's
+vendors
+venerable
+venerableness
+vengeance
+venison
+venom
+venomous
+venomously
+venomousness
+vent
+vented
+venter
+ventilate
+ventilated
+ventilates
+ventilating
+ventilation
+ventilations
+ventilative
+venting
+ventral
+ventrally
+ventricle
+ventricle's
+ventricles
+vents
+venture
+ventured
+venturer
+venturers
+ventures
+venturing
+venturings
+veracity
+veranda
+veranda's
+verandaed
+verandas
+verb
+verb's
+verbal
+verbally
+verbose
+verbosely
+verboseness
+verbs
+verdict
+verdicts
+verdure
+verdured
+verge
+verger
+verges
+verier
+veriest
+verifiability
+verifiable
+verifiableness
+verification
+verifications
+verified
+verifier
+verifier's
+verifiers
+verifies
+verify
+verifying
+verily
+veritable
+veritableness
+vermin
+versa
+versatile
+versatilely
+versatileness
+versatility
+verse
+versed
+verser
+verses
+versing
+version
+versions
+versus
+vertebrate
+vertebrate's
+vertebrates
+vertebration
+vertex
+vertexes
+vertical
+vertically
+verticalness
+verticals
+vertices
+very
+vessel
+vessel's
+vessels
+vest
+vested
+vestige
+vestige's
+vestiges
+vestigial
+vestigially
+vesting
+vests
+veteran
+veteran's
+veterans
+veterinarian
+veterinarian's
+veterinarians
+veterinary
+veto
+vetoed
+vetoer
+vetoes
+vetoing
+vetting
+vex
+vexation
+vexed
+vexedly
+vexes
+vexing
+vi
+vi's
+via
+viability
+viable
+viably
+vial
+vial's
+vials
+vibrate
+vibrated
+vibrates
+vibrating
+vibration
+vibrations
+vice
+vice's
+viceroy
+vices
+vicing
+vicinities
+vicinity
+vicious
+viciously
+viciousness
+vicissitude
+vicissitude's
+vicissitudes
+victim
+victim's
+victims
+victor
+victor's
+victories
+victorious
+victoriously
+victoriousness
+victors
+victory
+victory's
+victual
+victuals
+video
+videos
+videotape
+videotape's
+videotaped
+videotapes
+videotaping
+vie
+vied
+vier
+vies
+view
+viewable
+viewed
+viewer
+viewers
+viewing
+viewings
+viewpoint
+viewpoint's
+viewpoints
+views
+vigilance
+vigilant
+vigilante
+vigilante's
+vigilantes
+vigilantly
+vignette
+vignette's
+vignetted
+vignetter
+vignettes
+vignetting
+vigorous
+vigorously
+vigorousness
+vii
+viii
+vile
+vilely
+vileness
+viler
+vilest
+vilification
+vilifications
+vilified
+vilifier
+vilifies
+vilify
+vilifying
+villa
+villa's
+village
+village's
+villager
+villagers
+villages
+villain
+villain's
+villainous
+villainously
+villainousness
+villains
+villainy
+villas
+vindictive
+vindictively
+vindictiveness
+vine
+vine's
+vinegar
+vinegars
+vines
+vineyard
+vineyard's
+vineyards
+vining
+vintage
+vintager
+vintages
+violate
+violated
+violates
+violating
+violation
+violations
+violative
+violator
+violator's
+violators
+violence
+violent
+violently
+violet
+violet's
+violets
+violin
+violin's
+violinist
+violinist's
+violinists
+violins
+viper
+viper's
+vipers
+viral
+virally
+virgin
+virgin's
+virginity
+virgins
+virtual
+virtually
+virtue
+virtue's
+virtues
+virtuoso
+virtuoso's
+virtuosos
+virtuous
+virtuously
+virtuousness
+virus
+virus's
+viruses
+vis
+visa
+visaed
+visage
+visaged
+visaing
+visas
+viscosities
+viscosity
+viscount
+viscount's
+viscounts
+viscous
+viscously
+viscousness
+visibilities
+visibility
+visible
+visibleness
+visibly
+vision
+vision's
+visionariness
+visionary
+visioned
+visioning
+visions
+visit
+visitation
+visitation's
+visitations
+visited
+visiting
+visitor
+visitor's
+visitors
+visits
+visor
+visor's
+visored
+visors
+vista
+vista's
+vistaed
+vistas
+visual
+visually
+visuals
+vita
+vitae
+vital
+vitality
+vitally
+vitals
+vitamin
+vitamin's
+vitamins
+vivid
+vividly
+vividness
+vizier
+vocabularies
+vocabulary
+vocal
+vocally
+vocals
+vocation
+vocation's
+vocational
+vocationally
+vocations
+vogue
+voice
+voiced
+voicer
+voicers
+voices
+voicing
+void
+voided
+voider
+voiding
+voidness
+voids
+volatile
+volatileness
+volatiles
+volatilities
+volatility
+volcanic
+volcano
+volcano's
+volcanos
+volley
+volleyball
+volleyball's
+volleyballs
+volleyed
+volleyer
+volleying
+volleys
+volt
+voltage
+voltages
+volts
+volume
+volume's
+volumed
+volumes
+voluming
+voluntarily
+voluntariness
+voluntary
+volunteer
+volunteered
+volunteering
+volunteers
+vomit
+vomited
+vomiter
+vomiting
+vomits
+vortex
+vortexes
+vote
+voted
+voter
+voters
+votes
+voting
+votive
+votively
+votiveness
+vouch
+voucher
+vouchers
+vouches
+vouching
+vow
+vowed
+vowel
+vowel's
+vowels
+vower
+vowing
+vows
+voyage
+voyaged
+voyager
+voyagers
+voyages
+voyaging
+voyagings
+vulgar
+vulgarly
+vulnerabilities
+vulnerability
+vulnerable
+vulnerableness
+vulture
+vulture's
+vultures
+wade
+waded
+wader
+waders
+wades
+wading
+wafer
+wafer's
+wafered
+wafering
+wafers
+waffle
+waffle's
+waffled
+waffles
+waffling
+waft
+wafter
+wag
+wage
+waged
+wager
+wagered
+wagerer
+wagering
+wagers
+wages
+waging
+wagon
+wagon's
+wagons
+wags
+wail
+wailed
+wailer
+wailing
+wails
+waist
+waist's
+waistcoat
+waistcoat's
+waistcoated
+waistcoats
+waisted
+waister
+waists
+wait
+waited
+waiter
+waiter's
+waiters
+waiting
+waitress
+waitress's
+waitresses
+waits
+waive
+waived
+waiver
+waiverable
+waivers
+waives
+waiving
+wake
+waked
+waken
+wakened
+wakener
+wakening
+waker
+wakes
+waking
+walk
+walked
+walker
+walkers
+walking
+walks
+walkway
+walkway's
+walkways
+wall
+wall's
+walled
+waller
+wallet
+wallet's
+wallets
+walling
+wallow
+wallowed
+wallower
+wallowing
+wallows
+walls
+walnut
+walnut's
+walnuts
+walrus
+walrus's
+walruses
+waltz
+waltzed
+waltzer
+waltzes
+waltzing
+wan
+wand
+wander
+wandered
+wanderer
+wanderers
+wandering
+wanderings
+wanders
+wane
+waned
+wanes
+waning
+wanly
+wanness
+want
+wanted
+wanter
+wanting
+wanton
+wantoner
+wantonly
+wantonness
+wants
+war
+war's
+warble
+warbled
+warbler
+warbles
+warbling
+ward
+warded
+warden
+wardens
+warder
+warding
+wardrobe
+wardrobe's
+wardrobes
+wards
+ware
+warehouse
+warehoused
+warehouser
+warehouses
+warehousing
+wares
+warfare
+warier
+wariest
+warily
+wariness
+waring
+warlike
+warm
+warmed
+warmer
+warmers
+warmest
+warming
+warmly
+warmness
+warms
+warmth
+warn
+warned
+warner
+warning
+warningly
+warnings
+warns
+warp
+warp's
+warped
+warper
+warping
+warps
+warrant
+warranted
+warranter
+warranties
+warranting
+warrants
+warranty
+warranty's
+warred
+warring
+warrior
+warrior's
+warriors
+wars
+warship
+warship's
+warships
+wart
+wart's
+warted
+warts
+wary
+was
+wash
+washed
+washer
+washers
+washes
+washing
+washings
+wasn't
+wasp
+wasp's
+wasps
+waste
+wasted
+wasteful
+wastefully
+wastefulness
+waster
+wastes
+wasting
+wastingly
+watch
+watched
+watcher
+watchers
+watches
+watchful
+watchfully
+watchfulness
+watching
+watchings
+watchman
+watchword
+watchword's
+watchwords
+water
+watered
+waterer
+waterfall
+waterfall's
+waterfalls
+wateriness
+watering
+waterings
+waterproof
+waterproofed
+waterproofer
+waterproofing
+waterproofness
+waterproofs
+waters
+waterway
+waterway's
+waterways
+watery
+wave
+waved
+waveform
+waveform's
+waveforms
+wavefront
+wavefront's
+wavefronts
+wavelength
+wavelengths
+waver
+wavered
+waverer
+wavering
+waveringly
+wavers
+waves
+waving
+wax
+waxed
+waxen
+waxer
+waxers
+waxes
+waxier
+waxiness
+waxing
+waxy
+way
+way's
+ways
+wayside
+waysides
+wayward
+waywardly
+waywardness
+we
+we'd
+we'll
+we're
+we've
+weak
+weaken
+weakened
+weakener
+weakening
+weakens
+weaker
+weakest
+weakliness
+weakly
+weakness
+weakness's
+weaknesses
+wealth
+wealthier
+wealthiest
+wealthiness
+wealths
+wealthy
+wean
+weaned
+weaner
+weaning
+weapon
+weapon's
+weaponed
+weapons
+wear
+wearable
+wearer
+wearied
+wearier
+wearies
+weariest
+wearily
+weariness
+wearing
+wearingly
+wearisome
+wearisomely
+wearisomeness
+wears
+weary
+wearying
+weasel
+weasel's
+weasels
+weather
+weathercock
+weathercock's
+weathercocks
+weathered
+weatherer
+weathering
+weatherly
+weathers
+weave
+weaver
+weavers
+weaves
+weaving
+web
+web's
+weber
+webs
+wed
+wedded
+wedding
+wedding's
+weddings
+wedge
+wedged
+wedges
+wedging
+weds
+wee
+weed
+weeded
+weeder
+weeding
+weeds
+week
+week's
+weekday
+weekday's
+weekdays
+weekend
+weekend's
+weekender
+weekends
+weeklies
+weekly
+weeks
+weep
+weeped
+weeper
+weepers
+weeping
+weeps
+weigh
+weighed
+weigher
+weighing
+weighings
+weighs
+weight
+weighted
+weighter
+weighting
+weightings
+weights
+weird
+weirdly
+weirdness
+welcome
+welcomed
+welcomely
+welcomeness
+welcomer
+welcomes
+welcoming
+weld
+welded
+welder
+welders
+welding
+weldings
+welds
+welfare
+well
+welled
+welling
+wellness
+wells
+wench
+wench's
+wencher
+wenches
+went
+wept
+were
+weren't
+west
+wester
+westered
+westering
+westerlies
+westerly
+western
+westerner
+westerners
+westing
+westward
+westwards
+wet
+wetly
+wetness
+wets
+wetted
+wetter
+wettest
+wetting
+whack
+whacked
+whacker
+whacking
+whacks
+whale
+whaler
+whales
+whaling
+whammies
+whammy
+wharf
+wharfs
+wharves
+what
+what's
+whatchamacallit
+whatchamacallit's
+whatchamacallits
+whatever
+whatsoever
+wheat
+wheaten
+wheel
+wheeled
+wheeler
+wheelers
+wheeling
+wheelings
+wheels
+whelp
+when
+whence
+whenever
+whens
+where
+where's
+whereabouts
+whereas
+whereby
+wherein
+whereupon
+wherever
+whether
+whew
+whey
+which
+whichever
+while
+whiled
+whiles
+whiling
+whim
+whim's
+whimper
+whimpered
+whimpering
+whimpers
+whims
+whimsical
+whimsically
+whimsicalness
+whimsied
+whimsies
+whimsy
+whimsy's
+whine
+whined
+whiner
+whines
+whining
+whiningly
+whip
+whip's
+whipped
+whipper
+whipper's
+whippers
+whipping
+whipping's
+whippings
+whips
+whirl
+whirled
+whirler
+whirling
+whirlpool
+whirlpool's
+whirlpools
+whirls
+whirlwind
+whirr
+whirring
+whisk
+whisked
+whisker
+whiskered
+whiskers
+whiskey
+whiskey's
+whiskeys
+whisking
+whisks
+whisper
+whispered
+whisperer
+whispering
+whisperingly
+whisperings
+whispers
+whistle
+whistled
+whistler
+whistlers
+whistles
+whistling
+whit
+white
+whited
+whitely
+whiten
+whitened
+whitener
+whiteners
+whiteness
+whitening
+whitens
+whiter
+whites
+whitespace
+whitest
+whitewash
+whitewashed
+whitewasher
+whitewashing
+whiting
+whittle
+whittled
+whittler
+whittles
+whittling
+whittlings
+whiz
+whizzed
+whizzes
+whizzing
+who
+who's
+whoever
+whole
+wholehearted
+wholeheartedly
+wholeness
+wholes
+wholesale
+wholesaled
+wholesaler
+wholesalers
+wholesales
+wholesaling
+wholesome
+wholesomely
+wholesomeness
+wholly
+whom
+whomever
+whoop
+whooped
+whooper
+whooping
+whoops
+whore
+whore's
+whores
+whoring
+whorl
+whorl's
+whorled
+whorls
+whose
+why
+wick
+wicked
+wickedly
+wickedness
+wicker
+wicking
+wicks
+wide
+widely
+widen
+widened
+widener
+wideness
+widening
+widens
+wider
+widespread
+widest
+widget
+widget's
+widgets
+widow
+widowed
+widower
+widowers
+widows
+width
+widths
+wield
+wielded
+wielder
+wielding
+wields
+wife
+wife's
+wifeliness
+wifely
+wig
+wig's
+wigs
+wigwam
+wild
+wildcat
+wildcat's
+wildcats
+wilder
+wilderness
+wildest
+wilding
+wildly
+wildness
+wile
+wiled
+wiles
+wilier
+wiliness
+wiling
+will
+willed
+willer
+willful
+willfully
+willfulness
+willing
+willingly
+willingness
+willings
+willow
+willow's
+willower
+willows
+wills
+wilt
+wilted
+wilting
+wilts
+wily
+win
+wince
+winced
+winces
+wincing
+wind
+winded
+winder
+winders
+windier
+windiness
+winding
+windmill
+windmill's
+windmilling
+windmills
+window
+window's
+windowed
+windowing
+windows
+winds
+windy
+wine
+wined
+winer
+winers
+wines
+wing
+winged
+winger
+wingers
+winging
+wings
+wining
+wink
+winked
+winker
+winking
+winks
+winner
+winner's
+winners
+winning
+winningly
+winnings
+wins
+winter
+wintered
+winterer
+wintering
+winterly
+winters
+wintrier
+wintriness
+wintry
+wipe
+wiped
+wiper
+wipers
+wipes
+wiping
+wire
+wired
+wireless
+wirer
+wires
+wiretap
+wiretap's
+wiretaps
+wirier
+wiriness
+wiring
+wirings
+wiry
+wisdom
+wisdoms
+wise
+wised
+wisely
+wiseness
+wiser
+wises
+wisest
+wish
+wished
+wisher
+wishers
+wishes
+wishful
+wishfully
+wishfulness
+wishing
+wising
+wisp
+wisp's
+wisps
+wistful
+wistfully
+wistfulness
+wit
+wit's
+witch
+witchcraft
+witches
+witching
+with
+withal
+withdraw
+withdrawal
+withdrawal's
+withdrawals
+withdrawer
+withdrawing
+withdrawn
+withdrawnness
+withdraws
+withdrew
+wither
+withered
+withering
+witheringly
+withers
+withheld
+withhold
+withholder
+withholders
+withholding
+withholdings
+withholds
+within
+without
+withstand
+withstanding
+withstands
+withstood
+witness
+witnessed
+witnesses
+witnessing
+wits
+wittier
+wittiest
+wittiness
+witty
+wives
+wizard
+wizard's
+wizardly
+wizards
+woe
+woeful
+woefully
+woeness
+woke
+wolf
+wolfer
+wolves
+woman
+woman's
+womanhood
+womanliness
+womanly
+womb
+womb's
+wombed
+wombs
+women
+women's
+womens
+won't
+wonder
+wondered
+wonderer
+wonderful
+wonderfully
+wonderfulness
+wondering
+wonderingly
+wonderland
+wonderland's
+wonderment
+wonders
+wondrous
+wondrously
+wondrousness
+wont
+wonted
+wontedly
+wontedness
+wonting
+woo
+wood
+wood's
+woodchuck
+woodchuck's
+woodchucks
+woodcock
+woodcock's
+woodcocks
+wooded
+wooden
+woodenly
+woodenness
+woodier
+woodiness
+wooding
+woodland
+woodlander
+woodman
+woodpecker
+woodpecker's
+woodpeckers
+woods
+woodser
+woodwork
+woodworker
+woodworking
+woody
+wooed
+wooer
+woof
+woofed
+woofer
+woofers
+woofing
+woofs
+wooing
+wool
+wooled
+woolen
+woolens
+woollier
+woollies
+woolliness
+woolly
+wools
+wooly
+woos
+word
+word's
+worded
+wordier
+wordily
+wordiness
+wording
+wordings
+words
+wordy
+wore
+work
+workable
+workableness
+workably
+workaround
+workaround's
+workarounds
+workbench
+workbench's
+workbenches
+workbook
+workbook's
+workbooks
+worked
+worker
+worker's
+workers
+workhorse
+workhorse's
+workhorses
+working
+workingman
+workings
+workload
+workloads
+workman
+workmanly
+workmanship
+workmen
+workmen's
+works
+workshop
+workshop's
+workshops
+workstation
+workstation's
+workstations
+world
+world's
+worlders
+worldliness
+worldly
+worlds
+worldwide
+worm
+wormed
+wormer
+worming
+worms
+worn
+worried
+worriedly
+worrier
+worriers
+worries
+worrisome
+worrisomely
+worrisomeness
+worry
+worrying
+worryingly
+worse
+worser
+worship
+worshipful
+worshipfully
+worshipfulness
+worships
+worst
+worsted
+worth
+worthier
+worthies
+worthiest
+worthiness
+worthing
+worthless
+worthlessly
+worthlessness
+worths
+worthwhile
+worthwhileness
+worthy
+would
+wouldest
+wouldn't
+wound
+wounded
+wounding
+wounds
+wove
+woven
+wrangle
+wrangled
+wrangler
+wranglers
+wrangles
+wrangling
+wrap
+wrap's
+wrapped
+wrapper
+wrapper's
+wrappers
+wrapping
+wrappings
+wraps
+wrath
+wreak
+wreaks
+wreath
+wreathed
+wreathes
+wreathing
+wreck
+wreckage
+wrecked
+wrecker
+wreckers
+wrecking
+wrecks
+wren
+wren's
+wrench
+wrenched
+wrenches
+wrenching
+wrenchingly
+wrens
+wrest
+wrested
+wrester
+wresting
+wrestle
+wrestled
+wrestler
+wrestles
+wrestling
+wrestlings
+wrests
+wretch
+wretched
+wretchedly
+wretchedness
+wretches
+wriggle
+wriggled
+wriggler
+wriggles
+wriggling
+wring
+wringer
+wringing
+wrings
+wrinkle
+wrinkled
+wrinkles
+wrinkling
+wrist
+wrist's
+wrists
+wristwatch
+wristwatch's
+wristwatches
+writ
+writ's
+writable
+write
+writer
+writer's
+writers
+writes
+writhe
+writhed
+writhes
+writhing
+writing
+writings
+writs
+written
+wrong
+wronged
+wronger
+wrongest
+wronging
+wrongly
+wrongness
+wrongs
+wrote
+wrought
+wrung
+xi
+xii
+xiii
+xiv
+xix
+xv
+xvi
+xvii
+xviii
+xx
+yacc
+yacc's
+yank
+yanked
+yanking
+yanks
+yard
+yard's
+yarded
+yarding
+yards
+yardstick
+yardstick's
+yardsticks
+yarn
+yarn's
+yarned
+yarning
+yarns
+yawn
+yawner
+yawning
+yawningly
+yawns
+yea
+yeah
+year
+year's
+yearly
+yearn
+yearned
+yearner
+yearning
+yearningly
+yearnings
+yearns
+years
+yeas
+yeast
+yeast's
+yeasts
+yecch
+yell
+yelled
+yeller
+yelling
+yellow
+yellowed
+yellower
+yellowest
+yellowing
+yellowish
+yellowness
+yellows
+yells
+yelp
+yelped
+yelper
+yelping
+yelps
+yeoman
+yeomanly
+yeomen
+yes
+yeses
+yesterday
+yesterday's
+yesterdays
+yet
+yield
+yielded
+yielder
+yielding
+yields
+yoke
+yoke's
+yokes
+yoking
+yon
+yonder
+you
+you'd
+you'll
+you're
+you've
+young
+younger
+youngest
+youngly
+youngness
+youngster
+youngster's
+youngsters
+your
+your's
+yours
+yourself
+yourselves
+youth
+youth's
+youthes
+youthful
+youthfully
+youthfulness
+yuck
+yummier
+yummy
+yuppie
+yuppie's
+yuppies
+zap
+zapped
+zapping
+zaps
+zeal
+zealous
+zealously
+zealousness
+zebra
+zebra's
+zebras
+zenith
+zero
+zeroed
+zeroes
+zeroing
+zeros
+zeroth
+zest
+zigzag
+zinc
+zinc's
+zodiac
+zodiacs
+zonal
+zonally
+zone
+zoned
+zonely
+zoner
+zones
+zoning
+zoo
+zoo's
+zoological
+zoologically
+zoom
+zoomed
+zooming
+zooms
+zoos
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.1 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.1
new file mode 100644
index 00000000000..658faad3d19
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.1
@@ -0,0 +1,20864 @@
+AI
+ALU
+AMA
+ANSI's
+ARCO
+ARPA
+Aaron
+Abe
+Abe's
+Abigail
+Abigail's
+Abilene
+Abilene's
+Abner
+Abner's
+Abraham
+Abrams
+Abramson
+Acapulco
+Ackerman
+Acta
+Adam
+Adams
+Adamson
+Addison
+Addressograph
+Adirondack
+Adirondacks
+Adonis
+Adriatic
+Aegean
+Aeneid
+Afghani
+Afghani's
+Afghanis
+Afrikaans
+Agatha
+Aggie
+Aggies
+Agnes
+Aires
+Ajax
+Akron
+Al
+Al's
+Alabamans
+Alameda
+Alamo
+Alamos
+Alan
+Alan's
+Albany
+Albert
+Alberta
+Alberto
+Albuquerque
+Alcoa
+Alec
+Aleck
+Aler
+Aleut
+Alex
+Alexander
+Alexanders
+Alexandra
+Alexandre
+Alexandria
+Alfa
+Algiers
+Alhambra
+Alice
+Alicia
+Alistair
+Allan
+Alleghenies
+Allegheny
+Allen
+Allendale
+Allentown
+Allison
+Allstate
+Alsatian
+Alsatians
+Alvarez
+Alvin
+Amadeus
+Amarillo
+Amarillo's
+Americanism
+Amherst
+Amherst's
+Amoco
+Amoco's
+Amos
+Ampex
+Ampex's
+Amy
+Amy's
+Anaheim
+Anaheim's
+Andean
+Andean's
+Andersen
+Andersen's
+Anderson
+Anderson's
+Andes
+Andover
+Andover's
+Andre
+Andre's
+Andrew
+Andrew's
+Andromeda
+Andy
+Andy's
+Angela
+Angeles
+Angelina
+Angeline
+Angelo
+Angie
+Anglia
+Anglo
+Angus
+Anheuser
+Anita
+Ankara
+Ann
+Anna
+Annapolis
+Anne
+Anne's
+Annie
+Anson
+Antares
+Anthony
+Antietam
+Antioch
+Antoine
+Antoinette
+Antony
+Apollinaire
+Appaloosas
+Appian
+Appleton
+Appomattox
+Aquinas
+Araby
+Arcadia
+Archibald
+Archimedes
+Arcturus
+Argonne
+Argus
+Ariadne
+Aristotelean
+Arkansan
+Arlene
+Arlington
+Armonk
+Arnold
+Arnold's
+Arpanet
+Arthur
+Aruba
+Asheville
+Ashland
+Ashley
+Assad
+Assyria
+Astaire
+Astaires
+Astor
+Astoria
+Atari
+Atkins
+Atkinson
+Atlanta
+Atlantis
+Atreus
+Attica
+Augean
+Augustan
+Augustine
+Augustus
+Aurelius
+Auschwitz
+Australis
+Aventine
+Aventino
+Avis
+Aviv
+Avogadro
+Avon
+Aztec
+Aztecan
+BCD
+BS
+BTW
+Babcock
+Babylon
+Babylonian
+Babylonians
+Bacchus
+Baghdad
+Bahama
+Bahamas
+Bailey
+Baileys
+Bakelite
+Bakersfield
+Baldwin
+Bali
+Balinese
+Ballard
+Ballards
+Baltimore
+Balzac
+Bamberger
+Bambi
+Bancroft
+Bangor
+Baptiste
+Barbara
+Barcelona
+Barclay
+Barnabas
+Barnard
+Barney
+Barron
+Barry
+Barry's
+Barrymore
+Barrymores
+Barstow
+Barth
+Bartholomew
+Bartlett
+Bartok
+Bascom
+Basie
+Bassett
+Batavia
+Batista
+Baudelaire
+Bauer
+Bauhaus
+Bavaria
+Bavarian
+Bayesian
+Baylor
+Bayonne
+Beatrice
+Beauchamps
+Beaujolais
+Beaumont
+Beauregard
+Beaverton
+Bechtel
+Becky
+Bedford
+Beelzebub
+Beelzebub's
+Beirut
+Belfast
+Belgrade
+Bella
+Bellatrix
+Belleville
+Bellwood
+Belmont
+Beloit
+Belton
+Beltsville
+Ben
+Ben's
+Bendix
+Benjamin
+Bennett
+Bennington
+Benny
+Benson
+Bentham
+Bentley
+Bentleys
+Benz
+Beowulf
+Bergson
+Beringer
+Berkowitz
+Berkshire
+Berkshires
+Berlioz
+Berlitz
+Bern
+Bernadine
+Bernard
+Bernardine
+Bernice
+Bernie
+Bernoulli
+Bernstein
+Berra
+Bert
+Bertha
+Bertrand
+Bess
+Bessemer
+Bessie
+Betelgeuse
+Bethesda
+Bethlehem
+Betsy
+Betties
+Betty
+Bhutan
+Biddle
+Bienville
+Bierce
+Bigelow
+Billie
+Bimini
+Bingham
+Binghamton
+Biscayne
+Bismarck
+Blackburn
+Blackfeet
+Blackman
+Blackmer
+Blackstone
+Blackwell
+Blackwells
+Blair
+Blake
+Blakey
+Blanche
+Blanton
+Blatz
+Bloomfield
+Bloomington
+Blvd
+Bobbie
+Bobbsey
+Bobrow
+Bodenheim
+Boeing
+Boer
+Bogart
+Bogartian
+Bogota
+Boheme
+Bohemia
+Bohemian
+Bohr
+Boise
+Bolshevist
+Bolshevistic
+Bolshoi
+Bolton
+Boltzmann
+Bombay
+Bombay's
+Bonaparte
+Bonaventure
+Bonham
+Boniface
+Bonn
+Bonneville
+Bonnie
+Bontempo
+Boone
+Bootle
+Bordeaux
+Borden
+Borealis
+Boreas
+Borg
+Borroughs
+Bose
+Bostitch
+Boswell
+Bouvier
+Bowes
+Boyce
+Bradbury
+Bradford
+Bradley
+Bradshaw
+Brady
+Brahms
+Brainard
+Brainards
+Branchville
+Brandeis
+Brandel
+Brandenburg
+Brandon
+Braniff
+Brannon
+Brasilia
+Braun
+Brenda
+Brian
+Bridewell
+Bridgeport
+Bridgetown
+Bridgewater
+Brien
+Brigadoon
+Brigham
+Brinkley
+Britannic
+Britannica
+Brittany
+Britten
+Britten's
+Broadway
+Brock
+Bronx
+Brookdale
+Brooke
+Brookfield
+Brookhaven
+Brooklyn
+Brookmont
+Browne
+Brownell
+Brownian
+Bruce
+Brunhilde
+Bruno
+Brussels
+Bruxelles
+Bryan
+Bryant
+Bryce
+Bryn
+Buchanan
+Bucharest
+Buchwald
+Bucky
+Budapest
+Budd
+Buddha
+Buddhism
+Buddhist
+Buddhists
+Budweiser
+Budweisers
+Bugatti
+Buick
+Bulba
+Bulgaria
+Bulgarian
+Bumbry
+Bundestag
+Bundy
+Bunsen
+Bunsen's
+Bunsens
+Bunyan
+Bunyan's
+Burbank
+Burbank's
+Burch
+Burgundian
+Burgundies
+Burgundy
+Burlingame
+Burma
+Burmese
+Burne
+Burnes
+Burnett
+Burnside
+Burnsides
+Burroughs
+Burt
+Burton
+Burundi
+Busch
+Bushnell
+Butterfield
+Byrne
+Byron
+Byron's
+Byronic
+Byronism
+Byzantine
+Byzantium
+CACM
+CDT
+CIA
+CPA
+CPR
+CRT
+CST
+Cadillac
+Cadillacs
+Caesar
+Cain
+Caine
+Cairo
+Cal
+CalComp
+Calcutta
+Calcutta's
+Calder
+Calgary
+Calif
+Caligula
+Callisto
+Caltech
+Calumet
+Calvinist
+Cambodia
+Camelot
+Camille
+Camino
+Campbellsport
+Canadian
+Canadians
+Canaveral
+Canberra
+Candide
+Candlewick
+Canis
+Canoga
+Canterbury
+Cantonese
+Canute
+Capet
+Capetown
+Capistrano
+Capitan
+Cappy
+Capricorn
+Capt
+Caracas
+Carbondale
+Carbones
+Caribbean
+Carl
+Carl's
+Carla
+Carleton
+Carletonian
+Carlos
+Carlsbad
+Carlson
+Carlton
+Carlyle
+Carmichael
+Carnegie
+Caroline
+Caroline's
+Carolinian
+Carolinians
+Carolyn
+Carrie
+Carson
+Carthage
+Carty
+Caruso
+Casey
+Cassandra
+Cassiopeia
+Cassite
+Cassius
+Castro
+Catalina
+Catawba
+Catherine
+Cathy
+Catskill
+Catskills
+Caucasian
+Caucasians
+Caucasus
+Cauchy
+Cavendish
+Cecil
+Cecilia
+Celanese
+Celsius
+Celtic
+Cenozoic
+Centralia
+Cerberus
+Cervantes
+Cessna
+Cetus
+Ceylon
+Cezanne
+Cezannes
+Chablis
+Chad
+Chaffey
+Chalmers
+Champlain
+Chancellorsville
+Chandy
+Chandy's
+Chang
+Channing
+Chantilly
+Chaplin
+Chapman
+Charles
+Charleston
+Charley
+Charlie
+Charlotte
+Charlottesville
+Charybdis
+Chattahoochee
+Chattanooga
+Chaucer
+Chautauqua
+Chekhov
+Chen
+Cheng
+Cheriton
+Cheriton's
+Cherokee
+Cherokees
+Cheryl's
+Chesapeake
+Cheshire
+Chesterfield
+Chesterton
+Chevrolet
+Chevy
+Cheyenne
+Cheyennes
+Chicago
+Chicago's
+Chicagoan
+Chicagoans
+Chicana
+Chicana's
+Chicanas
+Chicano
+Chicano's
+Chicanos
+Chickasaws
+Chile
+Chiles
+Chimiques
+Chinaman
+Chinamen
+Ching
+Chinook
+Chippendale
+Chippewa
+Chisholm
+Choctaw
+Choctaws
+Chomsky
+Chomsky's
+Chopin
+Chris
+Christ
+Christendom
+Christenson
+Christianity
+Christie
+Christine
+Christlike
+Christopher
+Christopher's
+Christy
+Chrysler
+Churchill
+Churchillian
+Cicero
+Ciceronian
+Cincinnati
+Cinderella
+Cinerama
+Circe
+Citroen
+Claire
+Clara
+Clare
+Claremont
+Clarence
+Clark
+Clarke
+Clarridge
+Claude
+Claudia
+Claudio
+Claus
+Clausen
+Clearwater
+Clemens
+Clemente
+Clemson
+Cleveland
+Clifford
+Clint
+Clinton
+Clinton's
+Clio
+Clive
+Clyde
+Clytemnestra
+Coates
+Cochise
+Coffman
+Cohen
+Cohn
+Colby
+Coleridge
+Colgate
+Colombia
+Colombian
+Colombians
+Colosseum
+Columbia
+Columbian
+Columbus
+Comanche
+Commie
+Compuserve
+Compuserve's
+Concorde
+Concordia
+Conestoga
+Confucian
+Confucianism
+Confucius
+Congo
+Connecticut
+Connelly
+Connie
+Conrad
+Conrad's
+Conrail
+Conrail's
+Constantinople
+Coolidge
+Coors
+Copeland
+Copenhagen
+Copernicus
+Copperfield
+Corinthian
+Corinthians
+Cornell
+Cornell's
+Cornish
+Cornwall
+Cornwallis
+Corp
+Corsica
+Corsican
+Cortland
+Costello
+Covent
+Coventry
+Craig
+Cramer
+Crandall
+Cranford
+Cranston
+Crawford
+Cree
+Creighton
+Creole
+Creon
+Crestview
+Cretaceous
+Cretaceously
+Cretan
+Crete
+Crimea
+Crimean
+Croatian
+Crockett
+Croix
+Cromwell
+Cromwellian
+Crosby
+Crowley
+Crusoe
+Cuba
+Cuban
+Cubans
+Culver
+Culvers
+Cumberland
+Cunard
+Cunningham
+Cupid
+Cushman
+Cyanamid
+Cygnus
+Cynthia
+Cyprian
+Cypriot
+Cyprus
+Cyril
+Cyrus
+Czech
+Czechoslovakia
+DAG
+DB
+DECsystem
+DECtape
+DNA
+Dacron
+Dadaism
+Dadaist
+Dade
+Daedalus
+Daimler
+Dakar
+Dakota
+Dali
+Dallas
+Dalton
+Daly
+Damascus
+Danbury
+Dane
+Danes
+Daniel
+Daniels
+Danielson
+Danish
+Danny
+Danny's
+Dante
+Danube
+Danville
+Danzig
+Daphne
+Darlene
+Darlington
+Darrell
+Darrow
+Dartmouth
+Darwin
+Darwinian
+Darwinism
+Datamedia
+Datsun
+Dave
+Dave's
+David
+David's
+Davidson
+Davie
+Davies
+Davinich
+Davis
+Davy
+Dawson
+Dayton
+DeKalb
+Dearborn
+Debby
+Deborah
+Debra
+Debussy
+Dec
+Decca
+Deere
+Defoe
+Delhi
+Delhi's
+Delilah
+Dellwood
+Delphi
+Delphic
+Dempsey
+Deneen
+Dennis
+Denny
+Denver
+Dependant
+Dependants
+Dept
+Derbyshire
+Descartes
+Desmond
+Deutsch
+Devon
+Devonshire
+Dewey
+Dewitt
+Dexedrine
+DiMaggio
+Diana
+Diane
+Dianne
+Dick's
+Dickinson
+Dickson
+Diego
+Dietrich
+Dijon
+Dillon
+Dinah
+Diogenes
+Dion
+Dionysian
+Dionysus
+Dirac
+Disney
+Disneyland
+Disraeli
+Dixie
+Dixiecrats
+Dixieland
+Djakarta
+Dmitri
+Doberman
+Doc
+Dodington
+Dogtown
+Dolores
+Domesday
+Domingo
+Dominic
+Dominican
+Dominicans
+Donahue
+Donald
+Donald's
+Donaldson
+Donna
+Donnelly
+Donovan
+Doolittle
+Doppler
+Dora
+Dora's
+Dorado
+Dorchester
+Doris
+Dorothy
+Dostoevsky
+Doubleday
+Doug
+Dougherty
+Douglas
+Douglass
+Dow
+Downey
+Doyle
+Dr
+Dramamine
+Drexel
+Dreyfuss
+Drury
+Dryden
+DuPont
+DuPonts
+Duane
+Dublin
+Dubuque
+Duffy
+Dulles
+Duluth
+Dumas
+Dumont
+Dumpty
+Duncan
+Dunham
+Dunkirk
+Dunlap
+Dunne
+Dupont
+Duponts
+Durham
+Durkee
+Dusenberg
+Dusseldorf
+Dustin
+Dutch
+Dutchman
+Dutchmen
+Dvorak
+Dwight
+Dyke
+EBCDIC
+EEG
+EPA
+Earp
+Easthampton
+Eastland
+Eastman
+Eastwick
+Eastwood
+Econometrica
+Ecuador
+Eddie
+Edgar
+Edgerton
+Edgewater
+Edgewood
+Edinburgh
+Edison
+Edith
+Edmund
+Edna
+Eduard
+Edward
+Edwardian
+Edwards
+Edwin
+Edwina
+Egerton
+Egypt
+Egyptian
+Egyptians
+Eichmann
+Eileen
+Einstein
+Einsteinian
+Eisenhower
+Ekberg
+Ektachrome
+Elaine
+Elba
+Eleanor
+Electra
+Eli
+Elijah
+Eliot
+Elisabeth
+Elise
+Elise's
+Elizabeth
+Elizabethan
+Elizabethans
+Elkhart
+Ella
+Ellie
+Elliot
+Elliott
+Ellis
+Ellison
+Ellsworth
+Elmhurst
+Elmira
+Elmsford
+Eloise
+Elroy
+Elsie
+Elsinore
+Elysees
+Elysium
+Emanuel
+Emerson
+Emily
+Emma
+Emmanuel
+Emory
+Endicott
+Englewood
+Englishman
+Englishmen
+Enoch
+Enos
+Enrico
+Ensolite
+Eocene
+Ephesian
+Ephesians
+Ephraim
+Epicurus
+Episcopalian
+Epsom
+Epstein
+Erasmus
+Eratosthenes
+Eric
+Erich
+Erickson
+Ericsson
+Erie
+Erik
+Erik's
+Erikson
+Ernest
+Ernestine
+Ernie
+Ernst
+Eros
+Errol
+Ervin
+Erwin
+Eskimo
+Eskimos
+Esp
+Espagnol
+Essex
+Esther
+Ethan
+Ethel
+Ethiopia
+Ethiopians
+Etruscan
+Eucharist
+Euclid
+Euclidean
+Eugene
+Eugenia
+Euler
+Eulerian
+Eunice
+Euphrates
+Eurasia
+Eurasian
+Euripides
+Europa
+Eurydice
+Eva
+Evangeline
+Evans
+Evanston
+Evansville
+Evelyn
+Eveready
+Everett
+Everglades
+Ewen
+Exeter
+Exxon
+Ezekiel
+Ezra
+FAQ's
+FAQs
+FBI
+FCC
+FDA
+FTP
+Fagin
+Fahrenheit
+Fahrenheits
+Fairchild
+Fairfax
+Fairfield
+Fairmont
+Fairport
+Fairview
+Falk
+Falstaff
+Fannies
+Fanny
+Faraday
+Farber
+Fargo
+Farley
+Farmington
+Farrell
+Fatima
+Faulkner
+Faulknerian
+Fauntleroy
+Faust
+Faustian
+Faustus
+Fawkes
+Fayetteville
+Featherman
+Feb
+Feldman
+Felice
+Felicia
+Felix
+Fellini
+Fenwick
+Ferdinand
+Ferdinando
+Fermi
+Fernando
+Fess
+Fiberglas
+Fibonacci
+Fidel
+Figaro
+Filipino
+Filipinos
+Filippo
+Fillmore
+Finland
+Finn
+Finnegan
+Finnish
+Finns
+Fiorello
+Fiori
+Firestone
+Fischer
+Fishkill
+Fisk
+Fitch
+Fitchburg
+Fitzgerald
+Fitzpatrick
+Fitzroy
+Flanagan
+Flanders
+Fledermaus
+Fleischman
+Fleisher
+Fleming
+Flemings
+Flemish
+Flemished
+Flemishes
+Flemishing
+Florence
+Florentine
+Floridian
+Floridians
+Floyd
+Flynn
+Folsom
+Fontainebleau
+Fontana
+Foote
+Forbes
+Fordham
+Formica
+Formosa
+Formosan
+Foxhall
+Fran
+Fran's
+Francaise
+Francesca
+Francesco
+Francie
+Francis
+Franciscan
+Franciscans
+Francisco
+Franco
+Francois
+Frankford
+Frankfort
+Frankfurt
+Frankie
+Franny
+Franz
+Frau
+Frayne
+Frazier
+Fred
+Freddie
+Freddy
+Freddy's
+Frederic
+Frederick
+Fredericks
+Frederico
+Fredrick
+Fredrickson
+Freeport
+Freida
+Frenchman
+Frenchmen
+Fresnel
+Fresno
+Freud
+Freudian
+Frey
+Fri
+Frick
+Friedman
+Frigga
+Frigidaire
+Frisbee
+Frito
+Fritz
+Frostbelt
+Frostbelt's
+Fuchs
+Fuji
+Fulbright
+Fullerton
+GM
+GNP
+GSA
+Gabriel
+Gabrielle
+Gaelic
+Gail
+Gainesville
+Gaithersburg
+Galahad
+Galapagos
+Galatea
+Galbreath
+Galilee
+Galloway
+Gallup
+Galois
+Galveston
+Ganges
+Ganymede
+Garcia
+Gardner
+Garfield
+Garibaldi
+Garnett
+Garrett
+Garry
+Garvey
+Gary
+Gary's
+Gascony
+Gasset
+Gaston
+Gatlinburg
+Gatsby
+Gauguin
+Gaul
+Gauntley
+Gaussian
+Gavin
+Gaylor
+Gaylord
+Gaynor
+Geary
+Gehrig
+Geiger
+Gemini
+Geneva
+Geneva's
+Genevieve
+Genevieve's
+George
+George's
+Georges
+Georgetown
+Georgia
+Georgian
+Georgians
+Gerald
+Geraldine
+Gerard
+Gerber
+Gerhard
+Gerhardt
+Germania
+Germanic
+Germantown
+Gerome
+Gerry
+Gerry's
+Gershwin
+Gershwins
+Gertrude
+Getty
+Gettysburg
+Ghana
+Ghent
+Giacomo
+Gibbs
+Gibby
+Gibraltar
+Giddings
+Gideon
+Gifford
+Gilbertson
+Gilda
+Gilda's
+Giles
+Gilkson
+Gillespie
+Gillette
+Gilligan
+Gimbel
+Gioconda
+Giorgio
+Giovanni
+Gladstone
+Gladys
+Glasgow
+Gleason
+Glenda
+Glendale
+Glenn
+Gloria
+Gloucester
+Glynn
+Godot
+Goethe
+Gogh
+Golda
+Goldberg
+Goldman
+Goldstein
+Goldstein's
+Goldwater
+Goliath
+Gomez
+Gonzales
+Goodman
+Goodrich
+Goodwin
+Goodyear
+Gordian
+Gordon
+Gorham
+Gorky
+Gotham
+Gothicism
+Gracie
+Grady
+Grafton
+Granville
+Grayson
+Grecian
+Greece
+Greenberg
+Greenblatt
+Greenbriar
+Greenfeld
+Greenfield
+Greenland
+Greensboro
+Greensville
+Greentree
+Greenville
+Greenwich
+Gregg
+Gregory
+Grendel
+Grenier
+Grenoble
+Grenville
+Greta
+Gretchen
+Gretel
+Gretel's
+Griffith
+Grimm
+Gris
+Groot
+Grosset
+Grossman
+Grosvenor
+Groton
+Grumman
+Grusky
+Guadalupe
+Guam
+Guatemala
+Guatemalan
+Guggenheim
+Guhleman
+Guiana
+Gunderson
+Gunnar
+Gus
+Gutenberg
+Guthrie
+Guyana
+Gwen
+HP
+Hackett
+Hades
+Hafiz
+Hague
+Haifa
+Haiti
+Haitian
+Hal
+Halifax
+Hallinan
+Halloween
+Hamey
+Hamilton
+Hamiltonian
+Hamiltonians
+Hammett
+Hammond
+Hampshire
+Hampton
+Hancock
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+Hanson
+Hanukkah
+Hapgood
+Harcourt
+Hardin
+Harlem
+Harold
+Harriet
+Harris
+Harrisburg
+Harrison
+Harrisonburg
+Harry's
+Hartford
+Hartley
+Hartman
+Harvard
+Harvey
+Harveys
+Haskell
+Haskins
+Hatchure
+Hatfield
+Hattie
+Hauser
+Havana
+Hawaii
+Hawaiian
+Hawkins
+Hawley
+Hawthorne
+Haydn
+Hayes
+Haynes
+Hayward
+Haywood
+Hearst
+Heartwood
+Heathkit
+Heathman
+Hebraic
+Hebrew
+Hebrews
+Hecuba
+Hedda
+Hegel
+Hegelian
+Heidegger
+Heidelberg
+Heidi
+Heidi's
+Heinz
+Heinze
+Heisenberg
+Heiser
+Helen
+Helena
+Helene
+Heliopolis
+Hellenic
+Helmholtz
+Helmut
+Helsinki
+Hemingway
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+Hendrix
+Hennessey
+Hennessey's
+Henrietta
+Hepburn
+Hera
+Heraclitus
+Herbert
+Herculean
+Hercules
+Hereford
+Herman
+Hermes
+Hermite
+Hermosa
+Hernandez
+Herodotus
+Herr
+Herrington
+Herschel
+Hersey
+Hershel
+Hershey
+Hesperus
+Hess
+Hessian
+Hessians
+Heublein
+Heywood
+Hiawatha
+Hibernia
+Hickey
+Hickeys
+Hickok
+Hieronymus
+Highfield
+Hilbert
+Hillary
+Hillcrest
+Hillel
+Hillsboro
+Hillsdale
+Hilton
+Himalayas
+Himmler
+Hindi
+Hindu
+Hindu's
+Hinduism
+Hindus
+Hinkle
+Hinsdale
+Hiram
+Hirey
+Hiroshima
+Hispanic
+Hispanic's
+Hispanics
+Hitachi
+Hitchcock
+Hitler
+Hobbes
+Hobbs
+Hobday
+Hoboken
+Hoffman
+Holbrook
+Hollerith
+Hollister
+Hollywood
+Hollywood's
+Holmes
+Holocene
+Holst
+Holstein
+Holyoke
+Holzman
+Homeric
+Hondo
+Honduras
+Honeywell
+Honolulu
+Hoosier
+Hoover
+Hoover's
+Hopi
+Hopkins
+Hopkinsian
+Horace
+Horatio
+Hornblower
+Horowitz
+Horton
+Houdini
+Houston
+Howard
+Howe
+Howell
+Hubble
+Hubble's
+Hubert
+Huck
+Hudson
+Huey
+Hugh
+Hughes
+Hugo
+Humboldt
+Hume
+Humphrey
+Humphreys
+Humpty
+Hungarian
+Hungary
+Huntsville
+Huron
+Hurst
+Hutchins
+Hutchinson
+Hutchison
+Huxley
+Hyannis
+ICC
+ISO
+ITT
+IUD
+IUDs
+Iberia
+Iberian
+Ibero
+Ibsen
+Icarus
+Iceland
+Iceland's
+Icelander
+Icelandic
+Idaho
+Igor
+Iliad
+Imbrium
+Inca
+Incas
+Indianapolis
+Indies
+Indira
+Indochina
+Indonesia
+Indonesian
+Indy
+Ingersoll
+Ingram
+Inverness
+Io
+Iowa
+Iraq
+Iraqi
+Irene
+Irish
+Irishman
+Irishmen
+Irma
+Iroquois
+Irvine
+Irving
+Irwin's
+Isaac
+Isaacs
+Isabel
+Islam
+Islamic
+Islandia
+Israelite
+Israelites
+Istanbul
+Italy
+Ithaca
+Ithacan
+Ivan
+Ivanhoe
+Izaak
+Izvestia
+Jackie
+Jackman
+Jackson
+Jacksonian
+Jacksons
+Jacksonville
+Jacky
+Jacob
+Jacobean
+Jacobian
+Jacobite
+Jacobs
+Jacobsen
+Jacoby
+Jacqueline
+Jacques
+Jakarta
+Jake
+Jakes
+Jamaica
+Jamaican
+Jameson
+Jamestown
+Jan
+Jane
+Jane's
+Janeiro
+Janesville
+Janet
+Janet's
+Janice
+Janis
+Jansen
+Janus
+Jason
+Jastrow
+Java
+Javanese
+Jaycee
+Jaycees
+Jeanette
+Jeanie
+Jeanne
+Jeannie
+Jeff
+Jeffersonian
+Jeffersonians
+Jeffrey
+Jeffreys
+Jehovah
+Jello
+Jenkins
+Jennie
+Jennifer
+Jennings
+Jeremiah
+Jeremy
+Jericho
+Jerome
+Jerry's
+Jerusalem
+Jesse
+Jesse's
+Jessica
+Jessie
+Jessy
+Jesuit
+Jesuits
+Jesus
+Jew
+Jewelled
+Jewish
+Jewishness
+Jews
+Jim
+Jim's
+Jimmie
+Jimmy's
+Jinny
+Joan
+Joanna
+Joanne
+Joanne's
+Joannes
+Joaquin
+Jobrel
+Jodi
+Jodi's
+Jody
+Joe
+Joel
+Joes
+Johann
+Johannes
+Johannesburg
+Johansen
+Johanson
+Johnny
+Johnny's
+Johnsen
+Johnson
+Johnstown
+Joliet
+Jon
+Jon's
+Jonas
+Jonathan
+Jones
+Joneses
+Joplin
+Jordan
+Jorge
+Jorgensen
+Jorgenson
+Jose
+Josef
+Joseph
+Josephine
+Josephson
+Josephus
+Joshua
+Josiah
+Jovanovich
+Jove
+Jovian
+Joyce
+Juan
+Juanita
+Jubal
+Judaism
+Judas
+Jude
+Judea
+Judith
+Judy
+Jules
+Julia
+Julian
+Juliet
+Julio
+Julius
+Juneau
+Jungian
+Juno
+Jupiter
+Justine
+Justinian
+Jutish
+KGB
+Kabuki
+Kabul
+Kaddish
+Kafka
+Kafkaesque
+Kalamazoo
+Kamikazes
+Kankakee
+Kansas
+Kant
+Karen
+Karl
+Karol
+Kate
+Katherine
+Kathleen
+Kathy
+Katie
+Katie's
+Katmandu
+Kay
+Keaton
+Keats
+Keegan
+Keenan
+Keith
+Keller
+Kelley
+Kellogg
+Kelly
+Kelly's
+Kelvin
+Kenilworth
+Kennecott
+Kennedy
+Kenneth
+Kenny
+Kenosha
+Kensington
+Kent
+Kentucky
+Kenya
+Kepler
+Kepler's
+Kermit
+Kettering
+Kevin
+Kewaskum
+Kewaunee
+Keynes
+Keynesian
+Khmer
+Khrushchev
+Khrushchevs
+Kickapoo
+Kiel
+Kiev
+Killebrew
+Kim
+Kingsbury
+Kingsley
+Kingston
+Kingstown
+Kingwood
+Kinnickinnic
+Kinsey
+Kipling
+Kirby
+Kirchoff
+Kirk
+Kirk's
+Kirkland
+Kirkpatrick
+Kirkwood
+Kiwanis
+Klan
+Klaus
+Knobeloch
+Knowles
+Knox
+Knoxville
+Knudsen
+Knudson
+Knutsen
+Knutson
+Koch
+Kodachrome
+Kodak
+Kodaks
+Kodiak
+Koenig
+Koenigsberg
+Kohler
+Kong
+Konrad
+Korea
+Korean
+Koreans
+Kraemer
+Krakatoa
+Krakow
+Kramer
+Krause
+Kremlin
+Kresge
+Kris
+Krishna
+Kristina
+Krueger
+Kruger
+Kurd
+Kurdish
+Kurt
+Kuwait
+Kyle
+Kyoto
+LIFO
+Labrador
+Lacey
+Lackawanna
+Lafayette
+Lagrange
+Laguna
+Lakehurst
+Lakewood
+Lancashire
+Lancaster
+Landis
+Landwehr
+Lange
+Langeland
+Langford
+Langley
+Lansing
+Laocoon
+Laos
+Laotian
+Laotians
+Laplace
+Laramie
+Laredo
+Larry
+Larry's
+Lars
+Larsen
+Larson
+Lathrop
+Latinate
+Lattimer
+Lauderdale
+Laundromat
+Laundromats
+Laura's
+Lauren
+Laurence
+Laurentian
+Lawford
+Lawrence
+Lawrenceville
+Lawson
+Lazarus
+Leary
+Leavenworth
+Lebanese
+Lebanon
+Lebesgue
+Lee's
+Lehigh
+Leigh
+Leighton
+Leila
+Lemke
+Lenin
+Leningrad
+Leninism
+Leninist
+Lenny
+Leo
+Leon
+Leona
+Leonard
+Leonardo
+Leone
+Leopold
+Leopoldville
+Leroy
+Leslie
+Levi
+Levine
+Levis
+Leviticus
+Lewellyn
+Lexington
+Leyden
+Liberace
+Liberia
+Libya
+Libyan
+Lichtenstein
+Lichter
+Lieberman
+Liechtenstein
+Lilliputian
+Lima
+Lincoln
+Linda
+Lindberg
+Lindy
+Linotype
+Linus
+Lionel
+Lipton
+Lisa
+Lisbon
+Liss
+Liston
+Lithuanian
+Littleton
+Litton
+Livermore
+Liverpool
+Livingston
+Lizzie
+Lizzy
+Lloyd
+Locke
+Lockhart
+Lockheed
+Lockian
+Lockwood
+Logan
+Lois
+Lola
+Lombard
+London
+Londonderry
+Londoner
+Longfellow
+Longstreet
+Lopez
+Lorelei
+Lorentzian
+Lorenz
+Lorenz's
+Lorraine
+Lothario
+Lottie
+Louis
+Louisa
+Louise
+Louisiana
+Louisianan
+Louisville
+Lovejoy
+Lovelace
+Loveland
+Lowell
+Loy
+Loyola
+Ltd
+Lubbock
+Lucas
+Lucerne
+Lucia
+Lucian
+Lucien
+Lucifer
+Lucille
+Lucius
+Lucretia
+Lucretius
+Lucy
+Ludmilla
+Ludwig
+Lufthansa
+Luftwaffe
+Luke
+Luke's
+Luna
+Luna's
+Luther
+Lutheran
+Luxembourg
+Lydia
+Lynchburg
+Lyndon
+Lynn
+Lyon
+MAG
+MBA
+MD
+MDT
+MIG
+MIGs
+MIMD
+MPH
+MST
+MTS
+MTV
+Mac
+MacArthur
+MacDonald
+MacGregor
+MacKenzie
+MacMillan
+Macarthur
+Macaulay
+Macbeth
+Macdonald
+Macedon
+Macedonia
+Macedonian
+Macgregor
+Mach
+Machiavelli
+Mackenzie
+Mackinac
+Macmillan
+Macon
+Madagascar
+Madame
+Madames
+Madeleine
+Madeleine's
+Madeline
+Madeline's
+Madison
+Madonna
+Madonnas
+Madrid
+Maelstrom
+Magdalene
+Maggie
+Magill
+Magruder
+Maguire
+Maguires
+Mahler
+Mahler's
+Maine
+Malamud
+Malay
+Malaysia
+Malaysian
+Malcolm
+Mallory
+Malone
+Malta
+Maltese
+Malthusian
+Managua
+Manchester
+Manfred
+Manitoba
+Manitowoc
+Mankowski
+Mansfield
+Manville
+Mao
+Maori
+Maplecrest
+Marcotte
+Marcus
+Marcy
+Mardi
+Mardis
+Marguerite
+Maria's
+Marian
+Marian's
+Marie
+Marie's
+Marietta
+Marilyn
+Marin
+Marino
+Mario
+Marion
+Marjorie
+Mark's
+Markov
+Markovian
+Markovitz
+Marlborough
+Marlene
+Marlowe
+Marquette
+Marriott
+Marseilles
+Marsha
+Marshall
+Marshalled
+Marshalling
+Martha
+Martian
+Martians
+Martinez
+Martinique
+Martinson
+Marty
+Marvin
+Marx
+Marxism
+Marxisms
+Marxist
+Masonic
+Masonite
+Mathews
+Mathewson
+Mathias
+Mathieu
+Matilda
+Matisse
+Matisses
+Matthew
+Matthews
+Mattie
+Maude
+Maureen
+Maurice
+Mauritania
+Mauritius
+Mawr
+Maximilian
+Maxine
+Maxwellian
+Maya
+Mayans
+Mayfair
+Mayflower
+Maynard
+Mazda
+McAdams
+McAllister
+McAllister's
+McBride
+McBride's
+McCabe
+McCabe's
+McCall
+McCall's
+McCarthy
+McCarthy's
+McCauley
+McCauley's
+McClain
+McClain's
+McClellan
+McClellan's
+McClure
+McClure's
+McCluskey
+McCluskey's
+McConnell
+McConnell's
+McCoy
+McCoy's
+McCracken
+McCracken's
+McDaniel
+McDaniel's
+McDermott
+McDermott's
+McDonald
+McDonald's
+McDonnell
+McDonnell's
+McDougall
+McDougall's
+McFadden
+McFadden's
+McFarland
+McFarland's
+McGill
+McGill's
+McGovern
+McGovern's
+McGrath
+McGrath's
+McGraw
+McGraw's
+McGregor
+McGregor's
+McGuire
+McGuire's
+McIntosh
+McIntosh's
+McIntyre
+McIntyre's
+McKay
+McKay's
+McKee
+McKee's
+McKesson
+McKesson's
+McKinley
+McKinley's
+McKinney
+McKinney's
+McKnight
+McKnight's
+McLanahan
+McLaughlin
+McLaughlin's
+McLean
+McLean's
+McLeod
+McLeod's
+McMillan
+McMillan's
+McNaughton
+McNaughton's
+McNeil
+McNeil's
+McPherson
+McPherson's
+Medea
+Medfield
+Medicaid
+Medicare
+Medici
+Medicis
+Mediterranean
+Meister
+Meistersinger
+Mekong
+Mel
+Melanesia
+Melanesian
+Melanie
+Melbourne
+Melinda
+Melisande
+Melissa
+Mellon
+Melville
+Melvin
+Memphis
+Mencken
+Mendelssohn
+Mendoza
+Menelaus
+Menlo
+Mennonite
+Mennonites
+Menominee
+Mensch
+Mephistopheles
+Mercator
+Mercedes
+Meredith
+Meriwether
+Merle
+Merriam
+Merrick
+Merrill
+Merrimac
+Merrimack
+Mesozoic
+Messrs
+Methuselah
+Methuselahs
+Mexican
+Mexicans
+Mexico
+Meyer
+Meyers
+Miami
+Michael
+Michael's
+Michaelangelo
+Michaels
+Michaelson
+Michelangelo
+Michelin
+Michelson
+Mick
+Mickelson
+Mickey
+Mickey's
+Mickie
+Micky
+Micronesia
+Micronesian
+Middlebury
+Middlesex
+Middleton
+Middletown
+Midwestern
+Midwesterner
+Midwesterners
+Miguel
+Mikhail
+Mikoyan
+Milan
+Mildred
+Millard
+Millie
+Milquetoast
+Milquetoasts
+Milton
+Miltonic
+Milwaukee
+Mimi
+Minerva
+Minneapolis
+Minnie
+Minoan
+Miocene
+Mira
+Miranda
+Miriam
+Mississippi
+Mississippian
+Mississippians
+Missoula
+Missouri
+Missy
+Mitch
+Mitch's
+Mitchell
+Mitchell's
+Mobil
+Modesto
+Mohammed
+Mohammedan
+Mohawk
+Moines
+Moliere
+Moline
+Molly
+Molotov
+Mon
+Monaco
+Monet
+Monfort
+Mongolia
+Mongolian
+Monica
+Monroe
+Monrovia
+Monsanto
+Montague
+Montaigne
+Montclair
+Monterey
+Montevideo
+Montgomery
+Monticello
+Montpelier
+Montreal
+Monty
+Mooney
+Moore
+Moorish
+Moravia
+Moravian
+Morehouse
+Moreland
+Morgan
+Moriarty
+Mormon
+Moroccan
+Morrison
+Morristown
+Morse
+Mortimer
+Morton
+Morton's
+Moscone
+Moscow
+Moses
+Mossberg
+Mozart
+Mozart's
+Muhammad
+Muir
+Mulligan's
+Mumford
+Muncie
+Mundt
+Munich
+Munroe
+Munson
+Muriel
+Murphy
+Murray
+Murrow
+Muscat
+Muscovy
+Muskegon
+Mussolini
+Mussolini's
+Mussolinis
+Mussorgsky
+Mussorgsky's
+Muzak
+Mycenae
+Mycenaean
+Myron
+NAACP
+NASA
+NATO
+NBC
+NBS
+NCAA
+NCC
+NCR
+NOAA
+NSF
+NYSE
+NaCl
+Nabisco
+Nagasaki
+Nairobi
+Nakamura
+Nakoma
+Nan
+Nancy
+Nancy's
+Nanette
+Nanking
+Nanook
+Nantucket
+Naomi
+Naples
+Napoleon
+Napoleonic
+Nash
+Nashua
+Nashville
+Nassau
+Nat
+Natalie
+Natalie's
+Natchez
+Nate
+Nathan
+Nathaniel
+Navaho
+Navajo
+Navona
+Nazarene
+Nazareth
+Nazism
+Neal's
+Neanderthal
+Neapolitan
+Needham
+Nepali
+Neptune
+Nero
+Nestor
+Neumann
+Nevada
+Newark
+Newbury
+Newburyport
+Newcastle
+Newell
+Newman
+Newport
+Newsweek
+Newsweekly
+Niagara
+Nicaean
+Nicaragua
+Niccolo
+Nicholas
+Nichols
+Nicholson
+Nicklaus
+Nicodemus
+Nielsen
+Nielson
+Nietzsche
+Nigeria
+Nigerian
+Nijinsky
+Nile
+Nilsen
+Nilsson
+Nina
+Niobe
+Nippon
+Nixon
+Noah
+Nobel
+Noel
+Norfolk
+Norma
+Norman
+Normandy
+Norris
+Norristown
+Norse
+Northampton
+Northfield
+Northumberland
+Norton
+Norwalk
+Norway
+Norwegian
+Norwich
+Nostradamus
+Notre
+Nottingham
+Noyes
+Nubian
+Nugent
+O'Brien
+O'Brien's
+O'Clock
+O'Connell
+O'Connell's
+O'Connor
+O'Connor's
+O'Dell
+O'Dell's
+O'Donnell
+O'Donnell's
+O'Dwyer
+O'Dwyer's
+O'Er
+O'Hare
+O'Hare's
+O'Leary
+O'Leary's
+O'Shea
+O'Shea's
+O'Sullivan
+O'Sullivan's
+OK's
+OPEC
+Oakland
+Oakley
+Oakmont
+Oberlin
+Occam
+Occam's
+Oconomowoc
+Octavia
+Odessa
+Odysseus
+Oedipal
+Oedipally
+Offenbach
+Ogden
+Okamoto
+Okinawa
+Olaf
+Oldenburg
+Oldsmobile
+Oleg
+Olga
+Olivers
+Olivetti
+Olivia
+Olsen
+Olson
+Olympia
+Olympian
+Olympic
+Olympics
+Olympus
+Omaha
+Oman
+Oneida
+Ontario
+Opel
+Oppenheimer
+Oregon
+Oregonians
+Orlando
+Orleans
+Orlick
+Orpheus
+Orphic
+Ortega
+Orwell
+Orwellian
+Osaka
+Osbert
+Osborn
+Osborne
+Oscar
+Oshkosh
+Oslo
+Ostrander
+Oswald
+Othello
+Ottawa
+Otto
+Otto's
+Ottoman
+Ovid
+Owen
+Owens
+Oxford
+Oxnard
+Oz
+Ozark
+Ozarks
+Ozzie
+PBS
+PDT
+PM
+PST
+PTA
+Pablo
+Pabst
+Packwood
+Paganini
+Paine
+Pakistan
+Pakistani
+Pakistanis
+Palatine
+Paleolithic
+Paleozoic
+Palermo
+Palestine
+Palmolive
+Palmyra
+Palomar
+Pam
+Pam's
+Pamela
+Pancho
+Pandora
+Pappas
+Paraguay
+Paris
+Parisian
+Parkersburg
+Parkhouse
+Parkinson
+Parrish
+Parthenon
+Pasadena
+Passaic
+Passover
+Pasternak
+Pasteur
+Patagonia
+Patagonians
+Patrice
+Patricia
+Patrick
+Patsies
+Patsy
+Patterson
+Patton
+Paul
+Paul's
+Paula
+Paulette
+Paulette's
+Pauli
+Pauline
+Pauling
+Paulsen
+Paulson
+Pavlov
+Pawtucket
+Payne
+Paynes
+Payson
+Peabody
+Peachtree
+Pearce
+Pearson
+Pecos
+Pedro
+Pegasus
+Peggy
+Peking
+Pelham
+Pendleton
+Penn
+Pensacola
+Pentecost
+Peoria
+Pepsi
+Pepsico
+Percy
+Perez
+Pergamon
+Pericles
+Perkins
+Pernod
+Perry
+Perry's
+Perseus
+Pershing
+Persia
+Persian
+Persians
+Perth
+Peru
+Peruvian
+Peruvians
+Pete
+Pete's
+Petersburg
+Petersen
+Peterson
+Pettibone
+Peugeot
+Pewaukee
+Peyton
+Peyton's
+Pfizer
+Ph
+Phaedra
+Phil
+Philadelphia
+Philco
+Philip
+Philippe
+Philippians
+Philippine
+Philippines
+Philistine
+Philistines
+Phillies
+Phillips
+Philly
+Phyllis
+Picasso
+Piccadilly
+Pickford
+Pickman
+Pierre
+Pierson
+Pillsbury
+Pinehurst
+Pipestone
+Pisa
+Pisces
+Pitney
+Pitt
+Pittsburgh
+Pittsburghers
+Pittsfield
+Pittston
+Pius
+Plainfield
+Plainview
+Plato
+Platonism
+Platonist
+Platteville
+Pleiades
+Pleistocene
+Plexiglas
+Pliny
+Pliocene
+Plutarch
+Pluto
+Plymouth
+Pocahontas
+Pocono
+Poconos
+Poe
+Poincare
+Poindexter
+Poisson
+Polaris
+Polaroid
+Polk
+Pollux
+Polynesian
+Polyphemus
+Pomerania
+Pomeranian
+Pomona
+Pompeii
+Pompey
+Pontiac
+Popsicle
+Popsicles
+Portland
+Portsmouth
+Portugal
+Portuguese
+Poseidon
+Potemkin
+Potomac
+Potsdam
+Pottawatomie
+Potts
+Poughkeepsie
+Poussin
+Poussins
+Powell
+Prague
+Pratt
+Prattville
+Pravda
+Precambrian
+Prentice
+Prenticed
+Prenticing
+Presbyterian
+Presbyterianism
+Prescott
+Presley
+Preston
+Preston's
+Pretoria
+Priestley
+Princeton
+Principia
+Priscilla
+Procrustes
+Procyon
+Prokofieff
+Promethean
+Prometheus
+Protestantism
+Proust
+Proxmire
+Prussia
+Prussian
+Ptolemaic
+Ptolemaists
+Ptolemy
+Puccini
+Puerto
+Pulaski
+Pulitzer
+Pullman
+Pullmans
+Purcell
+Purdue
+Purina
+Pygmalion
+Pyhrric
+Pyrex
+Pythagoras
+Pythagorean
+Pythagoreans
+Quakeress
+Quantico
+Quasimodo
+Quebec
+Quinn
+Quinn's
+Quixote
+RCA
+RISC
+RMS
+ROTC
+RPM
+RSVP
+Rachel
+Rachmaninoff
+Racine
+Radcliffe
+Rafael
+Rajive
+Rajive's
+Raleigh
+Ralph
+Ralph's
+Ralston
+Ramada
+Ramirez
+Ramona
+Ramsey
+Rand
+Randall
+Randolph
+Randy's
+Rangoon
+Raoul
+Raphael
+Rapunzel
+Rasmussen
+Rawlings
+Rawlins
+Rawlinson
+Rawson
+Rayburn
+Rayleigh
+Raymond
+Raymondville
+Raytheon
+Reagan
+Rebecca
+Redhook
+Redstone
+Reedville
+Reese
+Regina
+Reginald
+Regulus
+Reich
+Reichenberg
+Reichstag
+Reilly
+Reinhard
+Reinhardt
+Reinhold
+Rembrandt
+Remington
+Remus
+Renaults
+Renee
+Renee's
+Renoir
+Renville
+Reuben
+Reuters
+Reuther
+Rev
+Rex
+Reynolds
+Rhea
+Rheims
+Rheinholdt
+Rhenish
+Rhine
+Rhinelander
+Rhodes
+Rhodesia
+Rhonda
+Rican
+Ricans
+Richard
+Richard's
+Richards
+Richardson
+Richey
+Richfield
+Richland
+Richmond
+Richter
+Rickenbaugh
+Ridgefield
+Ridgway
+Riemann
+Riggs
+Riley
+Rilke
+Rinehart
+Rio
+Ripley
+Ritter
+Ritz
+Riverview
+Riviera
+Riyadh
+Robbie
+Robbins
+Roberta
+Roberto
+Robertson
+Robertsons
+Robinsonville
+Rochester
+Rochester's
+Rockaway
+Rockaways
+Rockefeller
+Rockford
+Rockland
+Rockville
+Rockwell
+Rodgers
+Rodney
+Rodney's
+Rodriguez
+Roger
+Roger's
+Rogers
+Roland
+Rollie
+Rollins
+Romano
+Rome
+Romeo
+Romeos
+Romulus
+Ron
+Ronald
+Ronnie
+Rooney
+Roosevelt
+Roosevelt's
+Rooseveltian
+Rorschach
+Rosa
+Rosabelle
+Rosalie
+Roseland
+Rosella
+Rosen
+Rosenberg
+Rosetta
+Rosie
+Ross
+Rossi
+Roswell
+Rotarian
+Rotarians
+Roth
+Rousseau
+Rousseau's
+Rowena
+Rowena's
+Rowland
+Rowland's
+Rowley
+Rowley's
+Roxy
+Roxy's
+Rozelle
+Rozelle's
+Rudolph
+Rudolph's
+Rudy
+Rufus
+Rumania
+Rumanian
+Rumanians
+Rumford
+Rummel
+Runnymede
+Runyon
+Ruppert
+Rushmore
+Russ
+Russell
+Russia
+Rutgers
+Ruth
+Rutherford
+Rutland
+Rutledge
+Ryan
+Ryder
+SCSI
+SIMD
+SMSA
+SMSA's
+SMSAs
+SPSS
+Sabine
+Sacramento
+Sadie
+Saginaw
+Sahara
+Saigon
+Salem
+Salerno
+Salisbury
+Salk
+Salvador
+Salvadoran
+Salvatore
+Sammy
+Sammy's
+Samoa
+Samoan
+Sampson
+Samson
+Samuel
+Samuels
+Samuelson
+Sanchez
+Sancho
+Sandburg
+Sanderson
+Sandia
+Sandra
+Sandusky
+Sanford
+Sanhedrin
+Sanskrit
+Sanskritic
+Santa
+Santayana
+Santiago
+Sara
+Sarah
+Sarasota
+Saratoga
+Sargent
+Sartre
+Saskatchewan
+Satan
+Saturn
+Satyanarayanan
+Satyanarayanan's
+Saud
+Saudi
+Saukville
+Saunders
+Savannah
+Saviour
+Savonarola
+Saxon
+Saxons
+Saxony
+Saxton
+Scandinavia
+Scandinavian
+Scandinavians
+Schaefer
+Schaeffer
+Schafer
+Schaffner
+Schapiro
+Scheherezade
+Schelling
+Schenectady
+Schlitz
+Schmidt
+Schmitt
+Schneider
+Schopenhauer
+Schroeder
+Schroedinger
+Schubert
+Schultz
+Schulz
+Schumacher
+Schuman
+Schumann
+Schuster
+Schwartz
+Scorpio
+Scot
+Scotchgard
+Scotchman
+Scotia
+Scotian
+Scots
+Scotsman
+Scotsmen
+Scott
+Scottish
+Scottsdale
+Scotty
+Scranton
+Scribners
+Scripps
+Scylla
+Scythia
+Seaborg
+Seabrook
+Seaquarium
+Seattle
+Seattle's
+Sebastian
+Sedgwick
+Seeley
+Segundo
+Selectric
+Selfridge
+Selma
+Seminole
+Semite
+Seneca
+Senegal
+Senora
+Seoul
+Serafin
+Serbian
+Serbo
+Serra
+Seville
+Seward
+Seymour
+Shakespeare
+Shakespearean
+Shakespearian
+Shanghai
+Shanghaiing
+Shapiro
+Sharon
+Shasta
+Shawano
+Shawnee
+Sheboygan
+Sheffield
+Sheffielder
+Sheffielders
+Sheila
+Shelby
+Sheldon
+Shelley
+Shelton
+Shenandoah
+Sheraton
+Sheridan
+Sherman
+Sherwin
+Sherwood
+Shiite
+Shiite's
+Shiites
+Shillong
+Shiloh
+Shinto
+Shintoism
+Shirley
+Shorewood
+Shreveport
+Shylock
+Shylockian
+Siamese
+Siberia
+Siberian
+Sicilian
+Siciliana
+Sicilians
+Sicily
+Sidney
+Siegfried
+Sigmund
+Signora
+Sikh
+Sikh's
+Sikhes
+Sikhs
+Sikorsky
+Silas
+Silverman
+Simmons
+Simmonsville
+Simms
+Simon
+Simpson
+Sinai
+Sinatra
+Sinclair
+Sioux
+Sirius
+Sistine
+Sisyphean
+Sisyphus
+Siva
+Skippy
+Skye
+Slav
+Slavic
+Slavs
+Slesinger
+Sloan
+Sloane
+Smallwood
+Smithfield
+Smithsonian
+Smithtown
+Smucker
+Snead
+Sneed
+Snodgrass
+Snowbelt
+Snowbelt's
+Snyder
+Socrates
+Socratic
+Sofia
+Sol
+Solly
+Solomon
+Somali
+Somalis
+Somerset
+Somerville
+Sonoma
+Sonora
+Sophia
+Sophias
+Sophie
+Sophoclean
+Sophocles
+Sorensen
+Sorenson
+Sorrentine
+Sousa
+Southampton
+Southfield
+Spahn
+Spalding
+Spaniard
+Spaniards
+Sparkman
+Sparta
+Spartan
+Spencerian
+Spenglerian
+Sperry
+Spiegel
+Spokane
+Springfield
+Squaresville
+Squibb
+Squibbing
+Stacy
+Stacy's
+Stafford
+Staffordshire
+Staley
+Staley's
+Stalin
+Stalin's
+Stalinist
+Stalins
+Stamford
+Stan
+Stan's
+Standish
+Standish's
+Stanford
+Stanford's
+Stanley
+Stans
+Stanton
+Stapleton
+Starkey
+Starr
+Staten
+Statler
+Stauffer
+Stearns
+Steinbecks
+Steinberg
+Stella
+Stephan
+Stephanie
+Stephanie's
+Stephen
+Stephens
+Stephenson
+Sterno
+Stetson
+Stetsons
+Steuben
+Steve
+Steve's
+Steven
+Steven's
+Stevens
+Stevenson
+Stevie
+Stewart
+Stewart's
+Stillwell
+Stimson
+Stirling
+Stockholm
+Stockton
+Stonehenge
+Stouffer
+Stowe
+Strasbourg
+Stratford
+Strauss
+Stravinsky
+Stromberg
+Strongheart
+Stuart
+Stubblefield
+Stubblefields
+Studebaker
+Stuttgart
+Stuyvesant
+Stygian
+Styrofoam
+Styx
+Sudan
+Sudanese
+Sudanic
+Suez
+Suffolk
+Sukarno
+Sullivan
+Sulzberger
+Sumatra
+Sumerian
+Summerdale
+Sumter
+Sunbelt
+Sunbelt's
+Sunnyvale
+Superman's
+Susan
+Susan's
+Susanne
+Susanne's
+Susie
+Susie's
+Susquehanna
+Susquehanna's
+Sussex
+Sussex's
+Sutherland
+Sutherland's
+Sutton
+Sutton's
+Suwanee
+Suwanee's
+Suzanne
+Suzanne's
+Suzuki
+Suzuki's
+Swabian
+Swabian's
+Swabians
+Swahili
+Swahili's
+Swanson
+Swarthmore
+Swartz
+Swaziland
+Swede
+Sweden
+Swedes
+Swedish
+Sweeney
+Sweeneys
+Swenson
+Swinburne
+Switzer
+Switzerland
+Sybil
+Sydney
+Sylvania
+Sylvester
+Sylvia
+Sylvie
+Symington
+Syracuse
+Syria
+Syrian
+Syrian's
+Syrians
+TNT
+TRW
+TTL
+TV
+TVA
+TWA
+Tacitus
+Tacoma
+Taft
+Tahiti
+Tahoe
+Taipei
+Taiwan
+Taiwanese
+Talladega
+Tallahassee
+Tallahatchie
+Tallahoosa
+Tallchief
+Talleyrand
+Talmud
+Tammany
+Tampa
+Tanganyika
+Tanganyika's
+Tannenbaum
+Tantalus
+Tanya
+Tanzania
+Tapdance
+Tara
+Tarrytown
+Tartuffe
+Tarzan
+Tasmania
+Tate
+Tawney
+Taylor
+Taylors
+Tchaikovsky
+Teddy
+Teheran
+Tehran
+Teledyne
+Telefunken
+Telemann
+Telex
+Templeman
+Templeton
+Tenex
+Tenneco
+Tenney
+Tennyson
+Teresa
+Terra
+Terran
+Tess
+Tessie
+Teutonic
+Tex
+Texaco
+Texan
+Texans
+Textron
+Thai
+Thailand
+Thames
+Thebes
+Thelma
+Theodore
+Theodosian
+Theodosius
+Theresa
+Theseus
+Thiensville
+Thomas
+Thompson
+Thompson's
+Thomson
+Thor
+Thoreau
+Thornburg
+Thornton
+Thorpe
+Throneberry
+Thruway
+Thruways
+Thu
+Thule
+Thurber
+Thurman
+Tiber
+Tibet
+Tibetan
+Tiburon
+Ticonderoga
+Tieck
+Tigris
+Tijuana
+Tillich
+Tillie
+Tim
+Tim's
+Timex
+Timmy
+Timon
+Tims
+Tioga
+Tippecanoe
+Tipperary
+Tito
+Titus
+Tobago
+Todd
+Todd's
+Togo
+Tokyo
+Toland
+Toledo
+Tolley
+Tolstoy
+Tombigbee
+Tommie
+Toni
+Tonio
+Toomey
+Topeka
+Topsy
+Torah
+Toronto
+Torquemada
+Tosca
+Tosca's
+Toscanini
+Toscanini's
+Toshiba
+Toshiba's
+Toto
+Toulouse
+Townley
+Townsend
+Towsley
+Toynbee
+Toyota
+Tractarians
+Tracy
+Transylvania
+Travis
+Treadwell
+Trenton
+Trianon
+Trimble
+Trinidad
+Tristan
+Trojan
+Tropez
+Trotsky
+Troutman
+Truckee
+Trudy
+Trujillo
+Truman
+Trumbull
+Tsunematsu
+Tucson
+Tudor
+Tue
+Tulane
+Tulsa
+Tunis
+Tunisia
+Tunisian
+Turin
+Turkish
+Tuscaloosa
+Tuscan
+Tuscany
+Tuskegee
+Tuttle
+Tyler
+Typhon
+Tyson
+UN
+UNESCO
+USA
+USAF
+USART
+USDA
+USPS
+USSR
+Udall
+Uganda
+Ukrainian
+Ukrainians
+Ullman
+Ulysses
+Unibus
+Uniroyal
+Unisys
+Univac
+Upton
+Uranus
+Urbana
+Ursa
+Ursula
+Ursuline
+Uruguay
+Utica
+Uzi
+Uzi's
+VGA
+VHF
+VLSI
+Vail
+Valerie
+Valhalla
+Valkyrie
+Vance
+Vancouver
+Vandenberg
+Vanderbilt
+Vanderburgh
+Varian
+Varityping
+Vatican
+Vaudois
+Vaughn
+Vega
+Vegas
+Velasquez
+Venetian
+Venetian's
+Venetians
+Venezuela
+Venezuelan
+Venice
+Venn
+Venus
+Venusian
+Venusians
+Vera
+Vergil
+Verlag
+Vermont
+Vern
+Verne
+Vernon
+Verona
+Veronica
+Versailles
+Vic
+Vic's
+Vichy
+Vichy's
+Vickers
+Vickie
+Vickie's
+Vicksburg
+Vicksburg's
+Vicky
+Vicky's
+Victoria
+Victoria's
+Victorian
+Victorians
+Victrola
+Victrola's
+Victrolas
+Vidal
+Vidal's
+Vienna
+Vienna's
+Viennese
+Viennese's
+Viet
+Vietnam
+Vietnam's
+Vietnamese
+Vietnamese's
+Viking
+Vikings
+Vince
+Vincent
+Vincent's
+Vinson
+Virginian
+Virginians
+Virgo
+Virgo's
+Virgos
+Vishnu
+Visigoth
+Visigoths
+Vitus
+Vivaldi
+Vivian
+Vladimir
+Vladivostok
+Vogel
+Vol
+Volkswagen
+Volkswagens
+Volstead
+Volta
+Voltaire
+Volvo
+Vulcan
+WFF
+WWW
+Wabash
+Waco
+Wade's
+Wagner
+Wainwright
+Wakefield
+Walbridge
+Walcott
+Walden
+Waldensian
+Waldo
+Waldorf
+Walford
+Walgreen
+Wallace
+Wallenstein
+Wally's
+Walpole
+Walsh
+Walt
+Walter
+Walters
+Walton
+Walworth
+Wang
+Wansee
+Wansley
+Warfield
+Warfield's
+Warsaw
+Warsaw's
+Warwick
+Warwick's
+Washburn
+Washoe
+Wasserman
+Waterbury
+Watergate
+Waterhouse
+Watertown
+Watkins
+Watson
+Watson's
+Wattenberg
+Watterson
+Waukesha
+Waunona
+Waupaca
+Waupun
+Wausau
+Wauwatosa
+Waveland
+Wayne
+Waynesboro
+Weatherford
+Webber
+Webster
+Webster's
+Websterville
+Weider
+Weidman
+Weinberg
+Weiner
+Weinstein
+Weiss
+Weissman
+Weissmuller
+Welch
+Welcher
+Welches
+Weldon
+Weldwood
+Wellesley
+Wellington
+Wellman
+Wellsville
+Welmers
+Wendell
+Wendy
+Wentworth
+Werner
+Wesley
+Wesleyan
+Wesson
+Westbrook
+Westchester
+Westfield
+Westhampton
+Westinghouse
+Westminster
+Westmore
+Weston
+Westphalia
+Westport
+Westwood
+Weyerhauser
+Wharton
+Wheatland
+Wheaton
+Wheatstone
+Wheelock
+Whelan
+Wheller
+Whippany
+Whipple
+Whitcomb
+Whitehall
+Whiteleaf
+Whiteley
+Whitewater
+Whitfield
+Whitlock
+Whitman
+Whitney
+Whittaker
+Whittier
+Wichita
+Wieland
+Wiggins
+Wilcox
+Wiley
+Wilfred
+Wilhelm
+Wilhelmina
+Wilkes
+Wilkinson
+Willamette
+Willard
+Willcox
+Willem
+William
+Williams
+Williamsburg
+Williamson
+Willie
+Willied
+Willies
+Willoughby
+Willy
+Wilma
+Wilmette
+Wilmington
+Wilshire
+Wilsonian
+Winchell
+Windsor
+Winehead
+Winfield
+Winifred
+Winnebago
+Winnetka
+Winnie
+Winnipeg
+Winograd
+Winooski
+Winsborough
+Winsett
+Winslow
+Winston
+Winthrop
+Wisconsin
+Wisconsin's
+Witherspoon
+Wolcott
+Wolfgang
+Wolverton
+Woodard
+Woodberry
+Woodbury
+Woodlawn
+Woodrow
+Woodward
+Woodwards
+Woolworth
+Woonsocket
+Wooster
+Worcester
+Worcestershire
+Worcestershire's
+Wordsworth
+Worthington
+Wrigley
+Wronskian
+Wyman
+Wyoming
+XOR
+Xanthus
+Xavier
+Xenia
+Xerox
+Xerox's
+Xerxes
+YMCA
+YWCA
+Yakima
+Yale
+Yalies
+Yalta
+Yankee
+Yankees
+Yaqui
+Yates
+Yeager
+Yeats
+Yemen
+Yiddish
+Yoknapatawpha
+Yokohama
+Yonkers
+Yorick
+Yorktown
+Yosemite
+Youngstown
+Ypsilanti
+Yuba
+Yucatan
+Yugoslav
+Yugoslavia
+Yukon
+Yuri
+Yves
+Yvette
+Zachary
+Zaire
+Zanzibar
+Zeffirelli
+Zeiss
+Zellerbach
+Zen
+Zennist
+Zeus
+Zeus's
+Ziegfeld
+Ziegfeld's
+Ziegfelds
+Ziegler
+Ziegler's
+Ziggy
+Zimmerman
+Zimmerman's
+Zion
+Zion's
+Zionism
+Zionist
+Zionist's
+Zionists
+Zions
+Zoroaster
+Zoroastrian
+Zoroastrians
+Zurich
+Zurich's
+aardvark
+aardvark's
+aardvarks
+abalone
+abalone's
+abalones
+abdicate
+abdicated
+abdicates
+abdicating
+abdication
+abeyant
+abominate
+abominated
+abominates
+abominating
+abomination
+abominations
+aborning
+aboveboard
+abrasive
+abrasively
+abrasiveness
+abrasives
+abscissae
+abstemiously
+abstinent
+abstinently
+abusable
+academician
+academicianship
+acceptant
+accessors
+accordant
+accordantly
+accrual
+accruals
+acetic
+achromatic
+acknowledgeable
+acquiescent
+acquiescently
+acquisitive
+acquisitively
+acrylate
+actinic
+actinide
+actuaries
+addend
+addle
+addled
+addles
+addling
+adios
+adjectival
+adjectivally
+adjoint
+administrable
+administrate
+administrated
+administrates
+administrating
+administratrix
+adsorbate
+adsorptive
+adsorptively
+advert
+adverted
+adverting
+adverts
+aeolian
+afforest
+afforestation
+afro
+afterbirth
+afterglow
+afterlife
+aftershave
+agribusiness
+agriculturalists
+aha
+ahem
+ahoy
+ain't
+airfare
+airmass
+airpark
+airplay
+airtight
+airtightness
+ala
+albatross
+aldehyde
+aleph
+alewife
+allegiant
+alliterate
+alliterated
+alliterates
+alliterating
+allocable
+allotropic
+allspice
+alluvial
+alluvium
+almagest
+almshouses
+alp
+altercate
+altho
+altimeter
+altimeter's
+altimeters
+alway
+ambrose
+ambrosia
+ambulant
+amethyst
+amethystine
+aminobenzoic
+ammeter
+ammeter's
+ammeters
+amoebae
+amperage
+amperages
+anachronistic
+anaglyph
+analgesic
+anamorphic
+anastigmatic
+androgynous
+angelfish
+angiosperm
+angora
+anhydride
+anhydrite
+animadversion
+animadvert
+anneal
+annealed
+annealer
+annealers
+annealing
+anneals
+annuities
+annuity
+annular
+annularly
+annulus
+anodic
+antacid
+antebellum
+anthropogenic
+anthropometric
+anthropometrics
+anthropometry
+anticlimactic
+antifreeze
+antigone
+antilogs
+antimatter
+antimatter's
+antipasto
+antiperspirant
+antiquary
+antisemitic
+antisemitism
+antisemitism's
+antithetic
+anytime
+apache
+apaches
+apolar
+apparency
+applesauce
+applicate
+apposite
+appositely
+appositeness
+apposition
+appositive
+appositively
+appropriable
+arbitrage
+arbitrager
+arboretum
+arcana
+archetypical
+archetypically
+arcsine
+arctangent
+ardency
+areawide
+arenaceous
+armada
+armature
+armatures
+arrangeable
+arrear
+arrestee
+arrestee's
+arrestees
+arrowroot
+arsenate
+arsenide
+artesian
+articulable
+artier
+artiness
+arty
+ascriptive
+ashame
+ashier
+ashy
+asperity
+asphyxiate
+asphyxiation
+asplenium
+assertional
+assignation
+assignations
+assimilationist
+assn
+associable
+assumability
+asteria
+astigmatic
+astigmatism
+astraddle
+astronautic
+astronomic
+astrophysicist
+astrophysicist's
+astrophysicists
+athwart
+attestation
+attributional
+audibility
+audiotape
+audiovisual
+audiovisuals
+auntie
+auric
+australites
+autoloader
+autostart
+aviate
+aviations
+aviatrix
+axiology
+azimuthal
+azimuthally
+babbitt
+babbitted
+babbitting
+babbitts
+baboon
+babysitting
+baccarat
+bachelorhood
+backarrow
+backboard
+backchaining
+backfill
+backfilled
+backfilling
+backfills
+backhand
+backhanded
+backhandedly
+backhander
+backorder
+backplate
+backplates
+backside
+backstop
+backwood
+badland
+badmen
+baggageman
+baggagemen
+baldy
+baleen
+ballfields
+bandaid
+bandoleers
+bandstop
+bangkok
+barefaced
+barefacedly
+barefacedness
+barkeep
+barkeeper
+barnacle
+barnacled
+barnful
+barnsful
+baronet
+barrette
+barrette's
+barrettes
+barstool
+barstool's
+barstools
+bartend
+baseband
+basemen
+baseplate
+basilar
+basilisk
+basophilic
+basswood
+bates
+batik
+batwings
+bayberries
+bayberry
+beadsman
+beadworker
+beasties
+beautician
+beauticians
+beaux
+bebop
+bedmate
+bedmate's
+bedmates
+bedpan
+bedpan's
+bedpans
+bedstraw
+beechwood
+befuddlement
+begonia
+behemoths
+belate
+belladonna
+bellflower
+bellyache
+bellyacher
+bellyaching
+bellyfull
+belove
+belvedere
+beman
+bemuse
+bemused
+bemusedly
+benefice
+beneficent
+beneficently
+berg
+bergen
+berger
+bergs
+beribbon
+berserk
+berserker
+bespoke
+bestir
+bestirring
+bestubble
+bestubbled
+betatron
+bethel
+bethought
+betoken
+betokened
+betokening
+bettor
+bewhisker
+bezel
+biaxial
+biaxially
+bicep
+bichromate
+bichromated
+biconnected
+bidiagonal
+biharmonic
+bilayer
+bilayers
+bilingualism
+billies
+billy
+bimetallic
+bimetallism
+bindery
+bindle
+biochemist
+biochemists
+biograph
+biologic
+biomass
+biometric
+biometrics
+biometry
+biomolecule
+biomolecules
+biophysic
+biophysical
+biophysically
+biophysicist
+biophysicists
+biophysics
+bioscience
+biosciences
+biosphere
+biostatistic
+biostatistics
+biotic
+birdseed
+birdwatch
+birth's
+birthrate
+birthrate's
+birthrates
+biserial
+bisexual
+bisexual's
+bisexually
+bisexuals
+bishopric
+bistable
+bistate
+bisyllabic
+bittern
+bitternut
+bitterroot
+bitumen
+blackball
+blackballed
+blackballing
+blackballs
+blackbodies
+blackbody
+bladdernut
+bladderwort
+blameworthiness
+blameworthy
+blanc
+blatancy
+blather
+blathered
+blatherer
+blathering
+blatting
+blazon
+blazoned
+blazoner
+blazoning
+bldg
+bleeps
+blest
+blindside
+blindsided
+blindsides
+blindsiding
+blockier
+blocky
+bloodbath
+bloodroot
+blotch
+blowtorch
+blueback
+bluebill
+bluebook
+bluebush
+bluegill
+bluegrass
+bluejacket
+boa
+boas
+bobble
+bobbled
+bobbles
+bobbling
+bobcat
+bobsled
+bobsledding
+bock
+bockwurst
+bodhisattva
+bodyweight
+bogey
+bogeyed
+bogeying
+bogeymen
+bogeys
+bogging
+boggy
+bogies
+bogy
+boilermaker
+boilermaker's
+boilermakers
+bolivar
+bolo
+bolometer
+bolometer's
+bolometers
+bolos
+bona
+bongo
+bonito
+bonjour
+bonzes
+boogie
+bookbind
+bookbinder
+bookbinders
+bookbinding
+bookend
+bookends
+bookkeep
+bookplate
+bookplates
+boomtown
+boomtowns
+boosterism
+bootblack
+bootblacks
+bop
+bopping
+borosilicate
+boson
+bossier
+bossies
+bossiness
+bossy
+botanic
+botfly
+bottommost
+botulin
+bouillon
+boutique
+boutiques
+bowie
+boxier
+boxiness
+boxy
+bpi
+brachia
+brachium
+bracken
+brad
+braggadocio
+brakeman
+brakemen
+brakemen's
+brandywine
+bratwurst
+breadfruit
+breadfruits
+breastfed
+breastfeed
+breastfeeding
+breastplate
+bribery
+brickmason
+brickmasons
+brickyard
+brimming
+brimstone
+brinier
+brininess
+briny
+bristlier
+bristly
+bristol
+bristols
+broadloom
+bronc
+bronchiolar
+bronchiolitis
+bronco
+broncos
+broncs
+broodiness
+broody
+brookside
+brouhaha
+brucellosis
+brushwork
+bubonic
+buckaroo
+buckaroos
+bucketful
+bucketful's
+buckeye
+buckhorn
+bufflehead
+bugaboo
+bugbears
+bugeyed
+bulblet
+bullfinch
+bullfrog
+bullhead
+bullheaded
+bullheadedly
+bullheadedness
+bullhide
+bullseye
+bullshit
+bullwhackers
+bullyboy
+bullyboys
+bulrush
+burble
+burbled
+burbler
+burbles
+burbling
+burg
+burgers
+burlap
+burley
+bushmaster
+busyness
+butch
+butene
+butterball
+buttercup
+buttermilk
+buttery
+buttonweed
+bypath
+byroad
+cabal
+cabals
+cabana
+cabanas
+cabaret
+cabarets
+cabdriver
+cabdrivers
+cabinetmaker
+cabinetmaker's
+cabinetmakers
+cabinetry
+cacao
+cacciatore
+cackly
+cacophonist
+cacophony
+cadaver
+cadaverous
+cadaverously
+caddies
+caddy
+cadent
+cadenza
+cadet
+cadge
+cadged
+cadger
+cadges
+cadging
+cadmium
+cadre
+caffeine
+caffeine's
+cagey
+cageyness
+cahoot
+cahoots
+cairn
+cairned
+cairns
+calamitous
+calamitously
+calamitousness
+calcareous
+calcareously
+calcareousness
+calcification
+calcified
+calcify
+calcite
+calculability
+calculable
+calculableness
+calculi
+calfskin
+californium
+caliphate
+calisthenic
+calisthenics
+callable
+callee
+callee's
+calligraph
+calligrapher
+calligraphers
+calligraphy
+calliope
+callow
+callowness
+caloric
+calorimeter
+calorimeter's
+calorimeters
+calorimetric
+calorimetry
+calumniate
+calumniated
+calumniation
+calumny
+calvary
+calve
+calving
+calypso
+cam
+camaraderie
+camber
+cambered
+cambering
+camellias
+cameo
+cameos
+cameraman
+cameramen
+campesinos
+campfire
+campground
+campgrounds
+campsite
+campsites
+cams
+cancerous
+cancerously
+candidacy
+candlelight
+candlelighter
+canine
+canines
+canister
+canisters
+cannabis
+canneries
+cannery
+cannibalism
+cannibalism's
+cannibalistic
+cannier
+canniness
+cannonball
+canny
+canonic
+canonist
+cant
+cantaloupe
+cantaloupe's
+cantaloupes
+canted
+canteen
+canteens
+canter
+cantered
+canticle
+cantilever
+cantilevers
+canting
+canvasback
+capacitate
+capacitative
+capitalistic
+capitulate
+capitulated
+capitulates
+capitulation
+caprice
+capsize
+capsized
+capsizes
+capsizing
+capstan
+capstans
+capstone
+capsule
+capsuled
+capsules
+capsuling
+captaincy
+captious
+captiously
+captiousness
+caramel
+caraway
+carbide
+carbine
+carbines
+carbonaceous
+carbonyl
+carborundum
+carboy
+carbuncle
+carbuncled
+carcinogen
+carcinogenic
+carcinogens
+carcinoma
+cardiology
+cardiomegaly
+cardiovascular
+careen
+careened
+careening
+careerism
+caretaker
+caretakers
+careworn
+caricature
+caricatured
+caricatures
+caricaturist
+carload
+carloading
+carloads
+carmine
+carnage
+carnal
+carnality
+carnally
+carob
+carouse
+caroused
+carouser
+carousing
+carp
+carped
+carpentry
+carper
+carping
+carpingly
+carport
+carps
+carrageen
+carrel
+carrels
+carrion
+carte
+cartels
+cartilage
+cartographer
+cartographers
+cartographic
+cartoonist
+cartoonists
+cartwheel
+cartwheeler
+cartwheels
+carven
+casbah
+casebook
+casebooks
+casein
+casework
+caseworker
+caseworkers
+cashew
+cashews
+cashmere
+casino
+casinos
+cassette
+cassettes
+cassock
+cassocked
+castanet
+castanets
+castigate
+castigated
+castigates
+castigation
+castor
+cataclysmic
+catalysis
+catalytic
+catalytically
+catapult
+catapulted
+catapulting
+catapults
+catastrophically
+catatonia
+catbird
+catchier
+catchword
+catchwords
+catchy
+catechism
+catecholamine
+catecholamines
+categoric
+catenate
+catenation
+catfish
+catharsis
+cathodic
+catholicism
+catlike
+catnip
+cattail
+cattier
+catties
+cattiness
+cattleman
+cattlemen
+catty
+catwalk
+catwalk's
+catwalks
+caucus
+caucuses
+caucusing
+cauliflower
+cauliflowers
+caulk
+caulker
+caulks
+causate
+causative
+causatively
+cautionary
+cavalcade
+cavalcades
+cavalrymen
+caveman
+cavemen
+cavernous
+cavernously
+caviar
+cavil
+cavort
+cavorted
+cavorting
+cayenne
+cede
+ceded
+ceder
+cedilla
+ceding
+celebrant
+celebrants
+celerity
+celesta
+cello
+cellophane
+cellos
+cellulose
+celluloses
+censorial
+centaur
+centaurs
+centenary
+centennial
+centennially
+centigrade
+centigrades
+centrality
+centrifugal
+centrifugally
+centrifugals
+centrifugate
+centrifugation
+centrist
+centroid
+centroids
+ceramic
+ceramics
+cerate
+cerated
+cerebellum
+cerebrate
+cerebrated
+cerebrates
+cerebrating
+cerebration
+cerebrations
+ceremonious
+ceremoniously
+ceremoniousness
+cerise
+cerium
+certiorari
+certitude
+certitudes
+cerulean
+cervical
+cesium
+cession
+cetera
+ceteras
+chainlike
+chairlady
+chairwoman
+chairwomen
+chaise
+chalkline
+chalky
+chambermaid
+chambermaids
+chamfer
+chamfered
+chamfering
+chamfers
+chamois
+champ
+champers
+champs
+chanceries
+chancery
+chancier
+chanciness
+chancy
+chantey
+chantries
+chantry
+chaparral
+chaperone
+chaperones
+chapping
+charisma
+charismatic
+charitably
+charlatans
+charred
+chartist
+chartists
+chartreuse
+chartroom
+chartrooms
+charwomen
+chassis
+chastisement
+chastisements
+chastity
+chateaux
+chatted
+chattel
+chattels
+chattier
+chattiness
+chatting
+chatty
+chaw
+checkerboard
+checkerboards
+checklist
+checklists
+checksummed
+checksumming
+checkup
+checkups
+cheekbone
+cheekbones
+cheekier
+cheekiness
+cheeky
+cheerleader
+cheerleaders
+cheesecloth
+cheesier
+cheesiness
+cheesy
+cheetah
+chelate
+chelated
+chelating
+chelation
+chelations
+chemic
+chemotherapy
+chemotherapy's
+chevalier
+chevron
+chevroned
+chianti
+chic
+chicanery
+chicly
+chicness
+chicory
+chiefdom
+chiefdoms
+chigger
+chiggers
+chilblain
+chilblains
+childbearing
+childbirth
+childless
+childlessness
+childlike
+childlikeness
+childrearing
+chili
+chimera
+chimeric
+chimpanzee
+chimpanzees
+china
+chinchilla
+chinless
+chipboard
+chipped
+chipper
+chipping
+chiropractor
+chiropractors
+chive
+chives
+chivying
+chlorate
+chloride
+chlorides
+chlorinate
+chlorinated
+chlorinates
+chlorination
+chloroform
+chlorophyll
+choirmaster
+chokeberry
+cholesterol
+cholinesterase
+chomp
+choosier
+choosy
+choppier
+choppiness
+choppy
+chorale
+chorales
+chordal
+chordata
+chordate
+choreograph
+choreographed
+choreographer
+choreographers
+choreographic
+choreography
+chorines
+chortle
+chortled
+chortles
+chortling
+chow
+chowder
+chowders
+chrissake
+chromate
+chromatic
+chromaticness
+chromatics
+chromatogram
+chromatogram's
+chromatograms
+chromatograph
+chromatographic
+chromatography
+chrome
+chromed
+chromes
+chromic
+chroming
+chromite
+chromium
+chromosphere
+chronically
+chronograph
+chronography
+chrysalis
+chrysanthemum
+chrysanthemum's
+chrysanthemums
+chub
+chubs
+chug
+chugging
+chugs
+chummier
+chumminess
+chumming
+chummy
+chunkier
+chunky
+churchgoers
+churchgoing
+churchmen
+churchwoman
+churchwomen
+churl
+churls
+chutney
+chutneys
+ciao
+cicada
+cicadas
+cilia
+ciliate
+ciliated
+ciliately
+ciliates
+cinch
+cinches
+cinema
+cinemas
+cinematic
+cinnabar
+circa
+circlet
+circulant
+circulatory
+circumcise
+circumcised
+circumciser
+circumcises
+circumcising
+circumcision
+circumcisions
+circumferential
+circumferentially
+circumpolar
+circumscribe
+circumscribed
+circumscribes
+circumscribing
+circumscriptions
+circumspection
+circumspections
+circumsphere
+circumvention
+circumventions
+citizenry
+citrate
+citrated
+citric
+citron
+citrus
+citruses
+cityscape
+cityscapes
+citywide
+civet
+cladding
+clairvoyance
+clammier
+clamminess
+clamming
+clammy
+clamshell
+clamshells
+clandestine
+clandestinely
+clandestineness
+clank
+clanked
+clanking
+clankingly
+clannish
+clannishly
+clannishness
+clapboard
+clapboards
+clapped
+clapping
+claret
+clarets
+clarinet
+clarinets
+clarion
+classicist
+classier
+classiest
+classificatory
+classiness
+classless
+classlessness
+classy
+clattery
+claustrophobia
+claustrophobic
+clave
+claver
+clavicle
+clavicle's
+clavicles
+clearcut
+clearheaded
+clearheadedly
+clearheadedness
+clearinghouse
+cleat
+cleated
+cleating
+cleats
+clemence
+clemency
+clement
+clemently
+clements
+clergymen
+cleric
+clerics
+clientele
+cliffhanging
+climactic
+climatological
+climatologically
+climatology
+clinician
+clinicians
+clinometer
+clinometer's
+clinometers
+clipboard
+clipboards
+cloakroom
+cloakrooms
+clockwatcher
+cloddish
+cloddishness
+clodhopper
+clodhopper's
+clodhoppers
+clomp
+clomped
+clomping
+clomps
+closeup
+closeups
+clot
+clothbound
+clothesbrush
+clothesline
+clotheslines
+clothesman
+clothesmen
+clothier
+clotted
+clotting
+cloture
+clotured
+clotures
+cloturing
+cloudburst
+cloudbursts
+cloy
+cloying
+cloyingly
+clubhouse
+clubroom
+clubrooms
+clunkiness
+clunky
+clunkyly
+cm
+coachmen
+coachwork
+coadjutor
+coagulable
+coalescence
+coalescent
+coastline
+coattail
+coattails
+coauthor
+cobalt
+cobble
+cobbled
+cobbles
+cobblestone
+cobblestoned
+cobblestones
+cobbling
+coble
+cobra
+cocaine
+cochineal
+cochlea
+cockatoo
+cockcrow
+cockeye
+cockeyed
+cockeyedly
+cockeyedness
+cockier
+cockiness
+cockle
+cocklebur
+cockleshell
+cockpit
+cockpits
+cockscomb
+cocksure
+cocky
+coda
+coddle
+coddled
+coddler
+coddles
+coddling
+codebook
+codebooks
+codebreak
+codetermine
+codetermines
+codfish
+codicil
+coed
+coedited
+coediting
+coeditor
+coeditor's
+coeditors
+coedits
+coeds
+coeducation
+coequal
+coequally
+coercible
+coexistent
+coextensive
+coextensively
+cofactor
+cofactors
+coffeecup
+coffeepot
+cog
+cognac
+cognate
+cognately
+cognates
+cognation
+cognations
+cogs
+cohabitational
+coherency
+cohort
+cohort's
+cohorts
+coiffure
+coiffured
+coincident
+coincidently
+coital
+coitally
+coitus
+cola
+colander
+colanders
+colatitude
+colatitudes
+coleus
+colicky
+coliform
+coliseum
+collagen
+collapsibility
+collapsible
+collarbone
+collard
+collectivities
+collegian
+collegians
+collimate
+collimated
+collimates
+collimating
+collimation
+collinear
+collinearity
+collocation
+colloidal
+colloidally
+colloquia
+colloquial
+colloquialism
+colloquialism's
+colloquialisms
+colloquially
+colloquium
+collude
+colluded
+colludes
+colluding
+collusion
+collusions
+colonialism
+colonialist
+colonnade
+colonnaded
+colonnades
+coloration
+coloratura
+coltish
+coltishly
+coltishness
+columbines
+columnist
+columnists
+coma
+comas
+comatose
+combatted
+combinable
+combo
+combos
+combustible
+combustibles
+comeback
+cometary
+comeuppance
+commando
+commandos
+commendable
+commendatory
+commensurable
+commercialism
+commies
+commingle
+commingled
+commiserate
+commiserated
+commiserates
+commiserating
+commiseration
+commiserative
+commissary
+committable
+committal
+committeeman
+committeemen
+committeewoman
+committeewomen
+commodious
+commodiously
+commodiousness
+communicable
+communicational
+communique
+communiques
+communism
+communistic
+commutable
+commutate
+commutated
+commutates
+commutating
+commutation
+commutations
+compaction
+compatriot
+compatriots
+compellable
+compendia
+compensable
+competencies
+competency
+complacency
+complacent
+complainant
+complainants
+complaisance
+complaisant
+complaisantly
+complementarity
+complementation
+compliant
+compliantly
+comport
+comported
+comportment
+compositor
+compositors
+compost
+compote
+compressibility
+compressor
+compressors
+compulsive
+compulsively
+compulsiveness
+compulsives
+compulsivity
+con
+concave
+conceptuality
+concertina
+concertmaster
+concerto
+concertos
+concessionaire
+concessionaires
+conch
+conches
+concierge
+concierges
+conciliate
+conciliated
+conciliates
+conciliation
+conciliations
+conciliative
+conciliator
+conciliatory
+conclave
+conclaves
+concoct
+concocted
+concocter
+concoctive
+concocts
+concordance
+concordant
+concordantly
+concourse
+concourses
+concubine
+concubines
+concussion
+concussions
+condemnate
+condemnatory
+condensate
+condensates
+condensations
+condensible
+condescension
+condiment
+condiments
+condo
+condo's
+condolence
+condolences
+condominium
+condominium's
+condominiums
+condoms
+condos
+conduce
+conduced
+conduces
+conducing
+conductance
+conductances
+coneflower
+coney
+confabulate
+confabulated
+confabulates
+confabulation
+confabulations
+confect
+confectionery
+confects
+conferee
+conferees
+conferrable
+confessional
+confessionally
+confessionals
+confirmatory
+confiscatory
+conflagration
+conflagrations
+confluent
+confluents
+conformal
+conformance
+conformation
+conformation's
+conformational
+conformationally
+conformations
+conformist
+conformists
+confrontational
+confute
+confuted
+confuter
+confutes
+confuting
+congeal
+congealed
+congealing
+congeals
+congeniality
+congenital
+congenitally
+congest
+congesting
+congestive
+congests
+conglomerate
+conglomerated
+conglomerates
+conglomeration
+conglomerations
+conglomerative
+congratulatory
+congregationalism
+congregationalist
+congregationalists
+congressmen
+congresswoman
+congresswomen
+congruity
+congruous
+congruously
+congruousness
+conic
+conical
+conically
+conicalness
+conics
+conifer
+coniferous
+conifers
+conjectural
+conjecturally
+conjoin
+conjoining
+conjoins
+conjoint
+conjointly
+conjugal
+conjugally
+conjugate
+conjugated
+conjugately
+conjugateness
+conjugates
+conjugating
+conjugation
+conjugations
+conjugative
+conjuncture
+conjunctures
+conk
+conked
+conker
+conkers
+conking
+conks
+conn
+conned
+conner
+conning
+connivance
+connive
+connived
+conniver
+connives
+conniving
+connotation
+connotations
+connotative
+connotatively
+connubial
+connubially
+conquistador
+conquistadores
+conquistadors
+consanguine
+consanguineous
+consanguineously
+consanguinity
+conscionable
+conscript
+conscripted
+conscripting
+conscription
+conscriptions
+conscripts
+consensual
+consensually
+conservator
+conservatory
+consistence
+consonance
+consonantal
+conspiratorial
+conspiratorially
+constance
+consternate
+consternated
+consternates
+consternating
+constrict
+constricted
+constricting
+constriction
+constrictions
+constrictive
+constrictor
+constrictors
+constricts
+constructional
+constructionally
+consular
+cont'd
+contaminant
+contaminants
+contentious
+contentiously
+contentiousness
+contestant
+contestants
+continence
+continuant
+contort
+contorted
+contorting
+contortion
+contortions
+contortive
+contorts
+contraband
+contrabass
+contraception
+contraceptive
+contraceptives
+contradictorily
+contraindicate
+contraindicated
+contraindicates
+contraindicating
+contraindication
+contraindication's
+contraindications
+contraindicative
+contrarily
+contravene
+contravened
+contravener
+contravenes
+contravening
+contravention
+contrite
+contritely
+contriteness
+contrition
+controversialists
+controvertible
+contumacy
+contumely
+contusion
+contusions
+convalesce
+convalescent
+convalescing
+convection
+convections
+conventionality
+conversationalist
+convexity
+conveyor
+conveyors
+convivial
+convivially
+convocation
+convocations
+convoke
+convoked
+convokes
+convoking
+convolute
+convolutely
+convolution
+convolutions
+convolve
+convolved
+convolves
+convolving
+convulse
+convulsed
+convulses
+convulsing
+convulsive
+convulsively
+convulsiveness
+cookbook
+cookbooks
+coolant
+coolants
+coolheaded
+coplanar
+copolymer
+copolymers
+copperhead
+coppersmith
+coppersmiths
+coppery
+copter
+copters
+copybook
+copybooks
+copyist
+copywriter
+coquette
+coquetted
+coquetting
+cordage
+cordite
+cordon
+corduroy
+corduroys
+coriander
+corkscrew
+corkscrews
+cornbread
+cornea
+cornet
+cornflower
+cornier
+corniest
+corniness
+cornmeal
+cornstarch
+cornucopia
+corny
+corona
+coronal
+coronate
+coroner
+coroners
+corporeal
+corporeality
+corporeally
+corporealness
+corpsman
+corpsmen
+corpulence
+corpulences
+corpulent
+corpulently
+corpulentness
+corpulentnesses
+corpuscular
+corral
+corralled
+corralling
+corrals
+corrigendum
+corrigible
+corrode
+corroded
+corrodes
+corrodible
+corroding
+corrosive
+corrosively
+corrosiveness
+corrosives
+corrugate
+corrugated
+corrugates
+corrugating
+corrugation
+corrugations
+corruptible
+corsage
+corsages
+cortex
+cortexes
+cortical
+cortically
+corticosteroid
+corticosteroids
+cortisone
+corundum
+coruscate
+coruscated
+coruscates
+coruscating
+coruscation
+coruscations
+corvette
+cosily
+cosmic
+cosmical
+cosmically
+cosmological
+cosmologically
+cosmologist
+cosmologist's
+cosmologists
+cosmopolitanism
+cosmos
+cosmoses
+cosponsor
+cosponsored
+cosponsors
+cossack
+cossacks
+cosy
+cotangent
+coterminous
+coterminously
+cotillion
+cotter
+cotters
+cottonmouth
+cottonseed
+cottonwood
+cottony
+cougar
+cougars
+could've
+coulomb
+councilman
+councilmen
+councilwoman
+councilwomen
+counterargument
+counterarguments
+counterattack
+counterattacker
+counterbalance
+counterbalanced
+counterbalances
+counterbalancing
+counterclaim
+countercyclical
+counterflow
+counterforce
+counterintuitive
+counterman
+countermand
+countermanded
+countermanding
+countermands
+countermen
+counterpoise
+counterproposal
+countersink
+countersinking
+countersinks
+countersunk
+countervail
+countervailed
+countervailing
+countervails
+counterweight
+counterweight's
+counterweighted
+counterweighting
+counterweights
+countrified
+countrify
+countrymen
+countrywide
+coup
+coupe
+couplet
+couplet's
+couplets
+coups
+courtesan
+covalent
+covalently
+covariance
+covariances
+covariant
+covariants
+covariate
+covariates
+covariation
+covary
+coven
+coverall
+coveralled
+coveralls
+covington
+cowbell
+cowbird
+cowbirds
+cowhand
+cowhands
+cowherd
+cowhide
+cowhided
+cowhiding
+cowlick
+coworker
+coworker's
+coworkers
+cowpoke
+cowpony
+cowpox
+cowpunch
+cowpuncher
+coxcomb
+coxcombs
+coy
+coyly
+coyness
+cozen
+crabapple
+crabbed
+crabbedly
+crabbedness
+crabbing
+crackpot
+crackpots
+craftsmanship
+craftsmen
+craftspeople
+craggier
+cragginess
+craggy
+crammed
+cramming
+cranelike
+crania
+cranium
+crankcase
+crankshaft
+crannied
+crannies
+cranny
+crappie
+crappier
+crass
+crassest
+crassly
+crassness
+craw
+crawlspace
+crawlway
+crawly
+crayfish
+crayon
+crayons
+creakier
+creaky
+creamery
+creationism
+creationism's
+credent
+credential
+credentials
+credenza
+credo
+credos
+creedal
+creekside
+creepier
+creepiness
+creepy
+crematory
+crescendo
+cress
+crestfallen
+crestfallenly
+crestfallenness
+cretinous
+crewcut
+crewel
+crewman
+crewmen
+cribbing
+criminality
+crimp
+crimped
+crimper
+crimping
+crimps
+crinkle
+crinkled
+crinkles
+crinkling
+crinkly
+criss
+crisscross
+crisscrossed
+crisscrosses
+criticality
+crock
+crocked
+crocker
+crockery
+crocks
+crocodile
+crocodiles
+crocus
+crocuses
+croft
+crofter
+crofters
+crone
+crones
+cronies
+crony
+croon
+crooned
+crooner
+crooners
+crooning
+croons
+crossarm
+crosshatch
+crosshatched
+crosshatches
+crosshatching
+crosspoint
+crossproduct
+crossproducts
+crossroad
+crossroading
+crossroads
+crosstalk
+crosswalk
+crossway
+crossways
+crosswise
+crotch
+crotched
+crotches
+crotchetiness
+crotchety
+croupier
+croutons
+crowbait
+crowbar
+crowbar's
+crowbars
+crowfoot
+crowfoots
+crucible
+crucifix
+crucifixion
+crud
+cruddy
+crudities
+crudity
+cruft
+crufty
+crummier
+crummies
+crummy
+crump
+crushproof
+cryogenic
+cryogenics
+cryostat
+crypt
+cryptanalyst
+cryptanalytic
+cryptogram
+cryptogram's
+cryptograms
+cryptographer
+cryptologic
+cryptological
+cryptologist
+crypts
+crystallite
+crystallites
+crystallographer
+crystallographers
+crystallographic
+crystallography
+cubbyhole
+cubicles
+cubism
+cubist
+cubists
+cud
+cuddlier
+cuddly
+cufflink
+cufflinks
+cuisine
+culinary
+culpa
+culpable
+culpableness
+culpas
+cultist
+cultists
+cultivable
+culvert
+cumin
+cumulate
+cumulated
+cumulates
+cumulating
+cumulation
+cumulations
+cumulus
+cupcakes
+cupidity
+cupric
+cuprous
+curate
+curative
+curatively
+curator
+curators
+curbside
+curd
+curdle
+curdled
+curdles
+curdling
+curia
+curiae
+curie
+curio
+curios
+curlicue
+curricula
+curtsey
+curtseyed
+curtseying
+curtseys
+curvaceous
+curvaceously
+curvilinear
+curvilinearity
+curvilinearly
+cushiest
+cushy
+custodial
+customhouse
+customhouses
+cutaneous
+cutaneously
+cutback
+cutbacks
+cutlass
+cutlet
+cutlets
+cutout
+cutouts
+cutthroat
+cuttlebone
+cuttlebones
+cuttlefish
+cuttlefishes
+cutworm
+cyanate
+cyanic
+cyanide
+cyclical
+cyclist
+cyclists
+cyclohexanol
+cyclopean
+cyclops
+cylindric
+cynic
+cynicism
+cynics
+cytochemistry
+cytolysis
+cytoplasm
+czarevitch
+czarina
+czarism
+czarist
+czarship
+d'art
+d'etat
+d'etre
+d'oeuvre
+d's
+dab
+dabbed
+dabbing
+dabs
+dachshund
+dactyl
+dactylic
+dactyls
+daffier
+daffy
+dairyland
+dairyman
+dairymen
+dais
+daises
+dallied
+dallier
+dally
+dallying
+dammed
+damming
+dammit
+dancelike
+dandily
+dang
+danged
+dank
+dankly
+dankness
+dapper
+dapperly
+dapperness
+dapple
+dappled
+dapples
+dappling
+dashboard
+dashboards
+dastard
+dastardliness
+dastardly
+databanks
+datafile
+datagram
+datagram's
+datagrams
+dataset
+datasets
+dateline
+datelined
+datelines
+daub
+daubed
+dauber
+daubs
+davenport
+davits
+dawdle
+dawdled
+dawdler
+dawdlers
+dawdles
+dawdling
+daybed
+deaconess
+deactivate
+deactivated
+deactivates
+deactivating
+deactivation
+deadhead
+deadheads
+deadweight
+deadwood
+dealerships
+dearie
+deassign
+deassigns
+deathbed
+deathward
+debacle
+debacles
+debar
+debarring
+debars
+debase
+debased
+debaser
+debases
+debasing
+debauch
+debauched
+debauchedly
+debauchedness
+debaucher
+debauchery
+debauches
+debenture
+debentures
+debility
+debit
+debited
+debiting
+debits
+debonair
+debonairly
+debonairness
+debrief
+debriefed
+debriefing
+debriefs
+debunk
+debunker
+debunking
+debunks
+debut
+debutante
+debutante's
+debutantes
+debuting
+debuts
+decaffeinate
+decaffeinated
+decaffeinates
+decaffeinating
+decal
+decant
+decanted
+decanter
+decanters
+decanting
+decants
+decapitated
+decathlon
+decathlons
+decedent
+decennial
+decennially
+decertification
+decertify
+dechlorinate
+dechlorinated
+dechlorinates
+dechlorination
+decibel
+decibels
+deciduous
+deciduously
+deciduousness
+decile
+decisional
+declaim
+declaimed
+declaimer
+declaiming
+declaims
+declamation
+declamations
+declamatory
+declarator
+declarators
+declaratory
+declassification
+declassifications
+declassify
+declension
+declensions
+declivity
+decolletage
+decolletages
+decollimate
+decompress
+decompressed
+decompresser
+decompresses
+decompressing
+decontaminated
+decontrol
+decontrolled
+decontrolling
+decor
+decorator
+decorators
+decorous
+decorously
+decorousness
+decorticate
+decorticated
+decorticates
+decorticating
+decortication
+decried
+decrier
+decries
+decry
+decrying
+decrypt
+decrypted
+decrypting
+decryption
+decrypts
+deductibility
+deductible
+deductibles
+deemphasis
+deerskin
+deerskins
+deerstalker
+deface
+defacement
+defacer
+defaces
+defacing
+defame
+defamed
+defamer
+defames
+defaming
+defecate
+defecated
+defecates
+defecating
+defecation
+defecations
+defensible
+deferent
+deferents
+deflate
+deflated
+deflater
+deflates
+deflating
+deflation
+deflect
+deflected
+deflecting
+deflection
+deflections
+deflective
+deflector
+deflects
+defocus
+defocusing
+deforestation
+deform
+deformational
+deforming
+deforms
+defraud
+defrauded
+defrauder
+defrauding
+defrauds
+defray
+defrayed
+defraying
+defrays
+defrost
+defrosted
+defroster
+defrosting
+defrosts
+deft
+defter
+deftest
+deftness
+defunct
+degrease
+degum
+degumming
+dehumidification
+dehumidifications
+dehumidified
+dehumidifier
+dehumidify
+dehydrate
+dehydrated
+dehydrates
+dehydrating
+dehydration
+deification
+deify
+deja
+deject
+dejection
+delectable
+delectableness
+delectation
+delegable
+deleterious
+deleteriously
+deleteriousness
+deli
+deli's
+delicatessen
+delicti
+delimitation
+delirium
+deliriums
+delis
+deliveryman
+deliveryman's
+deliverymen
+deliverymen's
+delouse
+deloused
+delouses
+delousing
+deltoid
+deltoids
+delusive
+delusively
+delusiveness
+deluxe
+demagnification
+demagnify
+demagogue
+demagogues
+demarcate
+demarcated
+demarcates
+demarcating
+demarcation
+demean
+demeaned
+demeaning
+demeans
+demented
+dementedly
+dementedness
+demerit
+demerits
+demigod
+demiscible
+demit
+demitted
+demitting
+demographer
+demographer's
+demographers
+demographical
+demographically
+demography
+demoniac
+demonic
+demonstrably
+demote
+demoted
+demotes
+demoting
+demotion
+demountable
+demultiplex
+demurred
+demurrer
+demurring
+denature
+denatured
+denatures
+denaturing
+denim
+denims
+denominate
+denominated
+denominationally
+denominative
+denouement
+densitometer
+densitometer's
+densitometers
+densitometric
+densitometry
+dentistry
+denture
+dentures
+denude
+denuded
+denuder
+denudes
+denuding
+denumerable
+denunciate
+denunciated
+denunciates
+denunciating
+denunciation
+denunciations
+denunciative
+deodorant
+deodorant's
+deodorants
+deoxyribonucleic
+depiction
+depictions
+deplorably
+deployable
+depositary
+depository
+depravities
+depravity
+deprecate
+deprecated
+deprecates
+deprecating
+deprecatingly
+deprecation
+deprecations
+deprecatory
+depreciable
+depredations
+depressant
+depressants
+depressible
+depressors
+deputation
+deputations
+depute
+deputed
+deputes
+deputing
+derange
+deranged
+derangement
+deranges
+deranging
+deregulate
+derelict
+dereliction
+derelicts
+derisive
+derisively
+derisiveness
+derivate
+derogate
+derogated
+derogates
+derogating
+derogation
+derogative
+derogatory
+derrick
+derricked
+derricking
+derricks
+derriere
+dervish
+dervishes
+descant
+descendent
+descendent's
+descendents
+desecrate
+desecrated
+desecrater
+desecrates
+desecration
+desegregate
+desegregated
+desegregates
+desegregating
+desegregation
+desist
+desorption
+desperado
+desperadoes
+despicably
+despoil
+despoiled
+despoiler
+despoilers
+despoiling
+despoils
+despond
+despondency
+despondent
+despondently
+despotism
+dessicate
+destinate
+destruct
+destructor
+destructs
+desuetude
+desultoriness
+desultory
+detachable
+detente
+detentions
+deter
+detergency
+detergent
+detergents
+determinability
+deterred
+deterrence
+deterrent
+deterrently
+deterrents
+deterring
+deters
+detersive
+detersives
+detestation
+detestations
+detonable
+detonator
+detonator's
+detonators
+detour
+detoured
+detouring
+detours
+detrimental
+detrimentally
+detune
+detuned
+detunes
+detuning
+deuce
+deuced
+deucedly
+deuces
+deucing
+deus
+deuterium
+deuteriums
+devaluation
+devalue
+devalued
+devalues
+devaluing
+deviance
+deviances
+devious
+deviously
+deviousness
+devoice
+devoiced
+devoices
+devoicing
+devolve
+devolved
+devolves
+devolving
+devotional
+devotionally
+dewar
+dewars
+dexter
+dextrous
+diabase
+diabetic
+diabetics
+diabolic
+diabolical
+diabolically
+diabolicalness
+diachronic
+diachronicness
+diacritical
+diacritically
+diacriticals
+diagnometer
+diagnometer's
+diagnometers
+diagnostician
+diagnosticians
+diagrammaticality
+dialectal
+dialectally
+dialectic
+dialectical
+dialectically
+dialectics
+dialysis
+diamagnetic
+diametric
+diaphanous
+diaphanously
+diaphanousness
+diathermy
+diathesis
+diatom
+diatomic
+diatoms
+diatonic
+dichloride
+dichotomous
+dichotomously
+dichotomousness
+dick
+dicker
+dickered
+dickering
+dickers
+dickey
+dicks
+dicotyledon
+dictatorial
+dictatorially
+dictatorialness
+didactic
+didactics
+diddle
+diddled
+diddler
+diddling
+diehard
+diehards
+diem
+diesel
+diesels
+dietaries
+dietary
+dietetic
+dietetics
+diethylaminoethyl
+diethylstilbestrol
+dietician
+dieticians
+differentiability
+differentiable
+differentiator
+difficile
+diffidence
+diffident
+diffidently
+diffract
+diffracted
+diffracting
+diffraction
+diffractions
+diffractometer
+diffractometer's
+diffractometers
+diffracts
+diffusible
+digitalis
+dignitaries
+dignitary
+digram
+dihedral
+dilapidate
+dilapidated
+dilapidates
+dilapidating
+dilapidation
+dilatation
+dilator
+dilatoriness
+dilatory
+dilettante
+dilettantes
+dilithium
+dill
+dillinger
+dilogarithm
+dimensionless
+dimethyl
+dimethylglyoxime
+ding
+dinghies
+dinghy
+dingo
+dinnertime
+dinnerware
+dinosaur
+dinosaurs
+diocesan
+diocese
+diorama
+dioramas
+dioxalate
+diphthong
+diphthongs
+dipodic
+dipody
+dipole
+dipole's
+dipoles
+directivity
+directorate
+directorship
+directrices
+directrix
+direful
+direfully
+disablement
+disaffected
+disaffectedly
+disaffectedness
+disaffection
+disaffiliate
+disaffiliated
+disaffiliates
+disaffiliating
+disaffiliation
+disaggregate
+disaggregated
+disaggregating
+disaggregation
+disaggregative
+disapprobation
+disarranged
+disarray
+disarrays
+disarticulated
+disassembly
+disavow
+disavowal
+disavowals
+disavowed
+disavowing
+disavows
+disbar
+disbars
+disbelief
+discipleship
+discomfit
+discomfited
+discomfiting
+discomfits
+discontinuation
+discordant
+discordantly
+discorporate
+discorporated
+discourteous
+discourteously
+discourteousness
+discrepant
+discrepantly
+discretionary
+discriminable
+discriminant
+discursive
+discursively
+discursiveness
+discus
+discuses
+discussant
+discussants
+disdainful
+disdainfully
+disdainfulness
+disembodied
+disembowel
+disembowels
+disenchantment
+disengagement
+disequilibrium
+disgruntle
+disgruntles
+disgruntling
+disgustful
+disgustfully
+disharmony
+dishevel
+dishevels
+dishonesty
+dishwater
+disincentives
+disinclination
+disincorporated
+disinherit
+disinheritance
+disinherited
+disinheriting
+disinherits
+disintegrate
+disintegrated
+disintegrates
+disintegrating
+disintegration
+disintegrations
+disintegrative
+disinterest
+disinterred
+disjoin
+diskette
+diskettes
+dislodgement
+disloyal
+disloyally
+disloyalty
+dismantle
+dismantled
+dismantles
+dismantling
+dismembered
+dismemberment
+disobedient
+disobediently
+disoriented
+disparage
+disparaged
+disparagement
+disparager
+disparages
+disparaging
+disparagingly
+dispassionate
+dispassionately
+dispassionateness
+dispensary
+dispensate
+dispersal
+dispersement
+dispersible
+dispositional
+dispossessed
+dispossession
+disproportion
+disproportional
+disproportionate
+disproportionately
+disproportionation
+disputable
+disputant
+disquietude
+disquisition
+disrepair
+disreputable
+disreputableness
+disrepute
+disrespect
+disrobe
+dissect
+dissected
+dissecting
+dissection
+dissects
+dissemble
+dissembled
+dissembler
+dissembling
+dissimulation
+dissociable
+dissonant
+dissonantly
+dissuade
+dissuaded
+dissuader
+dissuades
+dissuading
+distaff
+distaffs
+distend
+distended
+distension
+distillate
+distillates
+distillations
+distilleries
+distillery
+distortable
+distributorship
+disulfide
+disunion
+disunited
+disunity
+disuse
+disused
+disvalues
+disyllable
+dither
+dithered
+ditherer
+dithering
+ditties
+ditto
+dittos
+ditty
+diurnal
+diva
+divalent
+diversionary
+divertimento
+divestiture
+divination
+divisible
+divisional
+divisive
+divisively
+divisiveness
+divorcee
+divorcees
+divvied
+divvies
+divvying
+dizzily
+doable
+docile
+docilely
+docket
+docketed
+docketing
+dockets
+dockside
+dockyard
+doctrinaire
+doctrinal
+doctrinally
+dodecahedra
+dodecahedral
+dodecahedron
+doe
+doff
+doffing
+doffs
+doggone
+doggoned
+doggoning
+doghouse
+dogleg
+dogmatic
+dogmatically
+dogmatics
+dogtooth
+dogtrot
+dogwood
+doldrum
+doldrums
+dolomite
+dolomites
+dolomitic
+dolt
+doltish
+doltishly
+doltishness
+domesticity
+domicile
+domiciled
+dominator
+domineer
+domineering
+domineeringly
+domineeringness
+domino
+donned
+donning
+donnish
+donnishly
+donnishness
+donnybrook
+donor
+donors
+donuts
+doodle
+doodled
+doodler
+doodles
+doodling
+doomsday
+doorbell
+doorkeep
+doorkeeper
+doorkeepers
+doorknob
+doorknobs
+doorman
+doormen
+dopant
+dorm
+dormer
+dosage
+dosages
+dosimeter
+dosimeter's
+dosimeters
+dosimetry
+dossier
+dossiers
+dotage
+dotard
+doubleheader
+doubleton
+doubloon
+dour
+dourly
+dourness
+dovetail
+dowager
+dowagers
+dowdier
+dowdies
+dowdiness
+dowdy
+dowel
+dower
+downbeat
+downgrade
+downgraded
+downgrades
+downgrading
+downhill
+downpour
+downside
+downslope
+downspout
+downswings
+downtrend
+downtrodden
+downturn
+downturns
+downwind
+dowries
+dowry
+dowse
+dowser
+dowses
+dowsing
+draftee
+draftees
+dragger
+dragnet
+dragonfly
+dragonhead
+dram
+dramatical
+dramaturgy
+dreadnought
+dreamboat
+dreamless
+dreamlessly
+dreamlessness
+dreamlike
+dreamt
+dreg
+dressier
+dressiness
+dressmaking
+dressy
+drib
+dribble
+dribbled
+dribbler
+dribbles
+dribbling
+dribs
+dripped
+drippier
+dripping
+drippy
+drizzle
+drizzled
+drizzles
+drizzling
+drizzlingly
+drizzly
+droll
+drollness
+dromedary
+droopier
+droopy
+drophead
+droplet
+droplets
+dropout
+dropouts
+drosophila
+dross
+drowse
+drowsed
+drowses
+drowsily
+drowsing
+drub
+drubbing
+drudge
+drudger
+drudges
+drudging
+drudgingly
+drugged
+drugging
+drugless
+drugstore
+drugstores
+druid
+drumhead
+dryer
+dryers
+dryness
+drywall
+dualism
+dubbed
+ducat
+duce
+duces
+duckling
+duct
+ducted
+ductile
+ducting
+ducts
+ductwork
+dud
+duds
+duet
+duets
+duff
+duffel
+duffer
+duffers
+dugout
+dukedom
+dulcet
+dulcetly
+dulcify
+dullard
+dumbfound
+dumbfounded
+dumbfounder
+dumbfounds
+dumpier
+dumpiness
+dumpy
+dun
+dung
+dunk
+dunker
+duopolist
+duopoly
+dupe
+duped
+duper
+dupes
+duping
+dupion
+duplex
+duplexer
+duplicable
+duplicity
+durational
+duress
+dustbin
+dustbins
+dutiable
+dwarves
+dwelt
+dyad
+dyadic
+dyads
+dynamical
+dynamism
+dynamo
+dynamos
+dynastic
+dysentery
+dyspeptic
+dysprosium
+dystopia
+dystrophy
+e'er
+e's
+eardrum
+eardrums
+earphone
+earphones
+earsplitting
+earthier
+earthiness
+earthmen
+earthmover
+earthmoving
+earthy
+easel
+eastbound
+easternmost
+easygoing
+easygoingness
+eatable
+eatables
+eave
+ebullient
+ebulliently
+ecclesiastic
+echelon
+echelons
+echinoderm
+eclectic
+eclectically
+ecliptic
+ecological
+ecologically
+ecologists
+econometric
+econometricians
+econometrics
+ecosystem
+ecosystems
+ecstatic
+ecstatics
+ecumenic
+ecumenic's
+ecumenical
+ecumenically
+ecumenicist
+ecumenicist's
+ecumenicists
+ecumenics
+ecumenist
+ecumenist's
+ecumenists
+ed
+edelweiss
+eden
+edgewise
+edgier
+edginess
+edgy
+edification
+edified
+edifies
+edify
+edifying
+editorialist
+editorship
+educe
+educing
+eelgrass
+eerily
+efface
+effaceable
+effaced
+effacer
+effaces
+effacing
+effectual
+effectualness
+effectuate
+effectuated
+effectuates
+effectuating
+effectuation
+efferent
+efferently
+effete
+effetely
+effeteness
+efficacious
+efficaciously
+efficaciousness
+effloresce
+efflorescent
+effluent
+effluents
+effluvia
+effluvium
+efflux
+effluxion
+effuse
+effused
+effuses
+effusing
+effusion
+effusive
+effusively
+effusiveness
+egalitarian
+egalitarianism
+egghead
+eggheaded
+eggheadedness
+eggplant
+eggshell
+egocentric
+egotism
+egotist
+egotistic
+egotistical
+egotistically
+egotists
+egregious
+egregiously
+egregiousness
+egress
+egret
+egrets
+eh
+eider
+eidetic
+eigenstate
+eigenstates
+eigenvector
+eigenvectors
+eightfold
+einsteinium
+ejection
+ejector
+ejectors
+elan
+elastomer
+electorate
+electress
+electrician
+electricians
+electro
+electrocardiogram
+electrocardiogram's
+electrocardiograms
+electrocardiograph
+electrodynamic
+electrodynamicly
+electrodynamics
+electroencephalogram
+electroencephalogram's
+electroencephalograms
+electrolysis
+electromagnet
+electromagnetism
+electromagnetisms
+electromagnets
+electromyograph
+electromyographic
+electromyographically
+electromyography
+electrophoresis
+electrophorus
+electroshock
+electroshocks
+electrostatic
+electrostatics
+electrotherapist
+electrotypers
+electroweak
+elegiac
+elegies
+elegy
+elephantine
+elfin
+elision
+elisions
+elite
+eliteness
+elites
+ellipsometer
+ellipsometer's
+ellipsometers
+ellipsometry
+ellipticity
+elocution
+elope
+eloped
+eloper
+elopes
+eloping
+eluate
+eluates
+elute
+eluted
+eluting
+elution
+elysian
+emaciate
+emaciates
+emaciating
+emaciation
+emanate
+emanated
+emanates
+emanation
+emanations
+emanative
+emancipate
+emancipated
+emancipates
+emancipating
+emasculate
+emasculated
+emasculates
+emasculating
+emasculation
+embalm
+embalmer
+embalmers
+embalming
+embalms
+embank
+embanked
+embanking
+embankment
+embankments
+embanks
+embarcadero
+embargo
+embargoed
+embargoes
+embargoing
+embattle
+embattled
+embattles
+embattling
+embedder
+embezzlement
+embittered
+emblematic
+embolden
+emboldened
+emboldens
+emboss
+embossed
+embosser
+embossers
+embosses
+embossing
+embower
+embraceable
+embrittle
+embroil
+embroiled
+embroiling
+embroils
+embryonic
+emcee
+emceed
+emend
+emendable
+emender
+emeritus
+emirate
+emissaries
+emissary
+emission
+emission's
+emissions
+emissivities
+emissivity
+emittance
+emitter
+emitters
+emitting
+emolument
+emoluments
+emotionalism
+emotionality
+empath
+empathetically
+empathic
+emphysema
+emphysematous
+empiric
+empiricism
+emplace
+employability
+emporium
+emporiums
+emulsification
+emulsified
+emulsifier
+emulsifies
+emulsify
+emulsion
+emulsions
+encampment
+encase
+encased
+encephalitis
+encephalographic
+enchain
+enchained
+enchantress
+enchiladas
+enclave
+enclaves
+encomium
+encomiums
+encore
+encored
+encores
+encoring
+encroach
+encroached
+encroacher
+encroaches
+encroaching
+encroachment
+encrust
+encrusted
+encrusting
+encrusts
+encumbrance
+encumbrancer
+encumbrances
+encyclical
+endearment
+endearments
+endemicity
+endgame
+endnote
+endnote's
+endnotes
+endogamous
+endogamy
+endogenous
+endogenously
+endosperm
+endothelial
+endothermic
+endpoint
+endpoints
+energetically
+enervate
+enervated
+enervates
+enervating
+enervation
+enervative
+enfeeble
+enfeebled
+enfeebles
+enfeebling
+enforceability
+enforceable
+enforcible
+engorge
+engorged
+engorges
+engorging
+engulfed
+engulfing
+engulfs
+enigma
+enjoinder
+enlargeable
+enmesh
+enmeshed
+enquiries
+enquiry
+enrapture
+enraptured
+enraptures
+enrapturing
+enrichment
+enrollee
+enrollees
+ensconced
+enshroud
+enslavement
+entailment
+entanglement
+enthalpy
+enthralled
+enthralling
+enthrone
+enthroned
+enthrones
+enthroning
+enthuse
+enthused
+enthuses
+enthusing
+enticements
+entitlement
+entitlements
+entomb
+entombed
+entomologist
+entomology
+entourage
+entourages
+entrain
+entrained
+entrainer
+entraining
+entrains
+entranceway
+entrant
+entrants
+entrap
+entrapment
+entrapments
+entrapped
+entraps
+entree
+entrees
+entrenchment
+entrenchments
+entrepreneurial
+entrepreneurship
+entwine
+entwined
+entwines
+entwining
+enunciable
+enunciate
+enunciated
+enunciates
+enunciating
+envenom
+envenomed
+envenoming
+envenoms
+enviable
+enviableness
+enzymatic
+enzymatically
+enzyme
+enzymes
+enzymology
+eohippus
+ephemerides
+ephemeris
+epicure
+epicurean
+epicycle
+epicycles
+epicyclic
+epicyclical
+epicyclically
+epidemiological
+epidemiologically
+epidemiology
+epidermic
+epidermis
+epigenetic
+epigram
+epigrammatic
+epigrams
+epigraph
+epigrapher
+epilepsy
+epileptic
+epileptics
+epilogue
+epilogues
+epiphany
+epiphenomena
+episcopate
+epistolatory
+epitaxy
+epithelial
+epithelium
+epitome
+epitomes
+epochal
+epochally
+epoxy
+equable
+equableness
+equanimities
+equanimity
+equestrian
+equestrians
+equidistant
+equidistantly
+equilateral
+equilaterals
+equilibrate
+equilibrated
+equilibrates
+equilibrating
+equilibration
+equilibria
+equine
+equines
+equinox
+equipotent
+equiproportional
+equiproportionality
+equiproportionate
+equivocal
+equivocally
+equivocalness
+equivocation
+eradicable
+erbium
+ergodic
+ergodicity
+erode
+eroded
+erodes
+erodible
+eroding
+erosible
+erosion
+erosive
+erosiveness
+erotic
+erotica
+erotically
+errancies
+errancy
+errant
+errantly
+errantry
+errants
+errata
+erratas
+erratically
+erratum
+ersatz
+erstwhile
+erudite
+eruditely
+erudition
+erupt
+erupted
+erupting
+eruptive
+eruptively
+erupts
+escadrille
+escapist
+escarpment
+escarpment's
+escarpments
+escritoire
+escrow
+escutcheon
+escutcheons
+esophagi
+esplanade
+espousal
+espousals
+essayists
+esters
+estimable
+estimableness
+estimator
+estimators
+estoppal
+estrange
+estranged
+estrangement
+estranger
+estranges
+estranging
+estuaries
+estuarine
+estuary
+et
+eta
+etas
+etcetera
+etceteras
+etched
+ethane
+ethanol
+ethicist
+ethicists
+ethnically
+ethnicities
+ethnicity
+ethnographers
+ethnographic
+ethnography
+ethnology
+ethnomethodology
+ethology
+ethos
+ethyl
+ethylene
+etymological
+etymologically
+etymologies
+etymology
+eucalyptus
+eugenic
+eugenics
+eulogies
+eulogy
+euphemist
+euphony
+euphoric
+eureka
+europium
+euthanasia
+evanescent
+evangelic
+evangelical
+evangelicalism
+evangelically
+evangelism
+evangelist
+evangelistic
+evangelists
+evasion
+evasions
+evasive
+evasively
+evasiveness
+evensong
+eventide
+eventides
+eventuate
+eventuated
+eventuates
+eventuating
+everyman
+evidential
+evidentially
+evildoer
+evildoers
+evocable
+evocate
+evocation
+evocations
+evocative
+evocatively
+evocativeness
+evolutionists
+ex
+exaltation
+exaltations
+examinable
+excelsior
+excisable
+excitability
+excitatory
+exclamatory
+exclusionary
+excoriate
+excoriated
+excoriates
+excoriating
+excoriation
+excoriations
+excrescence
+excrescences
+excretory
+excruciate
+excruciated
+excruciates
+excruciating
+excruciation
+exculpatory
+excursus
+excursuses
+exec
+execrable
+execrableness
+execrate
+execrated
+execrates
+execrating
+execration
+execrative
+executrix
+executrixes
+exegesis
+exegete
+exemption
+exemptions
+exercisable
+exhilarate
+exhilarated
+exhilarates
+exhilarating
+exhilaratingly
+exhilaration
+exhilarative
+exhort
+exhorted
+exhorter
+exhorting
+exhorts
+exhumation
+exhumations
+exhume
+exhumed
+exhumer
+exhumes
+exhuming
+exigent
+exigently
+exodus
+exogamous
+exogamy
+exogenous
+exogenously
+exonerate
+exonerated
+exonerates
+exonerating
+exoneration
+exonerative
+exorciser
+exorcism
+exorcist
+exoskeleton
+exothermic
+exotica
+expansible
+expansionist
+expectable
+expectorant
+expectorate
+expectoration
+expediency
+expellable
+experiential
+experientially
+experimentalism
+experimentalist
+experimentalist's
+experimentalists
+expiable
+expiate
+expiated
+expiates
+expiating
+expiation
+expletive
+expletives
+explicable
+explicate
+explicated
+explicates
+explicating
+explication
+explicative
+explicatively
+exportation
+exposit
+exposited
+expressionism
+expressionist
+expressionistic
+expressionists
+expressionless
+expressionlessly
+expressionlessness
+expressway
+expressways
+expurgate
+expurgated
+expurgates
+expurgating
+expurgation
+extemporaneous
+extemporaneously
+extemporaneousness
+extempore
+extendibility
+extensional
+extensionally
+extensor
+exterminator
+exterminator's
+exterminators
+extern
+externalities
+extirpate
+extirpated
+extirpating
+extirpation
+extirpative
+extolled
+extoller
+extolling
+extort
+extorted
+extorter
+extorting
+extortive
+extorts
+extracellular
+extracellularly
+extraditable
+extralegal
+extralegally
+extramarital
+extraterrestrial
+extravaganza
+extravaganzas
+extrema
+extremism
+extricable
+extricate
+extricated
+extricates
+extricating
+extrication
+extroversion
+extrovert
+extroverted
+extroverts
+extrude
+extruded
+extruder
+extrudes
+extruding
+extrusion
+extrusive
+exuberant
+exuberantly
+exudation
+exude
+exuded
+exudes
+exuding
+exultant
+exultantly
+eyeful
+eyelash
+eyelashes
+eyeless
+eyelet
+eyelets
+eyesore
+eyesore's
+eyesores
+eyeteeth
+f's
+faceplate
+facetious
+facetiously
+facetiousness
+facilitators
+facilitatory
+factious
+factiously
+factiousness
+facto
+factuality
+fad
+fadeout
+fads
+faerie
+faery
+failsafe
+fairgoer
+fairgoers
+fairgrounds
+fairless
+fairway
+fairways
+falafel
+falconry
+falloff
+fallout
+fallouts
+fallow
+fallowness
+familial
+fanatical
+fanaticalness
+fanaticism
+fanfare
+fanfold
+fangled
+fanout
+fantasia
+fantasist
+fantastically
+farcical
+farcically
+farfetched
+farfetchedness
+farina
+farmland
+farmlands
+farmworker
+farmworkers
+farsighted
+farsightedly
+farsightedness
+fascicle
+fascicled
+fascicles
+fasciculate
+fasciculated
+fasciculation
+fasciculations
+fascism
+fascist
+fascists
+fastidious
+fastidiously
+fastidiousness
+fatalistic
+fatalists
+fateful
+fatefully
+fatefulness
+fatherhood
+fatherless
+fatso
+fattier
+fatties
+fattiness
+fatty
+fatuity
+fatuous
+fatuously
+fatuousness
+faucet
+faucets
+faun
+fauna
+fax
+fax's
+faxes
+faze
+fazed
+fazes
+fazing
+fealty
+fearsome
+fearsomely
+fearsomeness
+feasibly
+featherbed
+featherbedding
+featherbrain
+featherbrained
+feathertop
+featherweight
+feathery
+febrile
+feces
+fecund
+fecundability
+fecundity
+federalism
+federalist
+federalists
+federate
+federated
+federates
+federating
+federations
+federative
+federatively
+fedora
+feint
+feinted
+feinting
+feints
+feldspar
+felicitous
+felicitously
+felicitousness
+feline
+felinely
+felines
+fella
+fellas
+felon
+felonious
+feloniously
+feloniousness
+felons
+felony
+feminism
+femme
+femmes
+fencepost
+fend
+fender
+fenders
+fennel
+fermion
+fermion's
+fermions
+fermium
+fernery
+ferret
+ferreted
+ferreter
+ferreting
+ferrets
+ferric
+ferris
+ferro
+ferroelectric
+ferromagnet
+ferromagnetic
+ferrous
+fervid
+fervidly
+fervidness
+fest
+fester
+festered
+festering
+festers
+fetal
+fete
+feted
+fetes
+fetish
+fetishes
+fettle
+fettled
+fettles
+fettling
+feudalistic
+feudatory
+fiance
+fiancee
+fiasco
+fiat
+fiats
+fib
+fibbing
+fibrin
+fibrosis
+fiche
+fictive
+fictively
+fiddlestick
+fiddlesticks
+fide
+fidget
+fidgeted
+fidgeting
+fidgets
+fiducial
+fiducially
+fiduciary
+fief
+fiefdom
+fieldstone
+fieldwork
+fieldworker
+fieldworkers
+fiendish
+fiendishly
+fiendishness
+fierily
+fiesta
+fifths
+figment
+figural
+figurine
+figurines
+filamentary
+filbert
+filberts
+filch
+filched
+filches
+filet
+filets
+filibuster
+filibustered
+filibusterer
+filibustering
+filibusters
+filigree
+filigreed
+fillet
+filleted
+filleting
+fillets
+fillies
+filly
+filmdom
+filmier
+filminess
+filmstrip
+filmstrips
+filmy
+filtrate
+filtrated
+filtrates
+filtrating
+finale
+finale's
+finales
+finalist
+finalists
+finch
+findable
+finesse
+finessed
+finessing
+fingernail
+fingernails
+fingerprint
+fingerprinted
+fingerprinting
+fingerprints
+fingertip
+fingertips
+finial
+finickiness
+finicky
+fink
+finned
+finny
+fireball
+fireballs
+fireboat
+firebreak
+firebreaks
+firebug
+firecracker
+firecrackers
+firefight
+firefighters
+firefighting
+firefights
+firehouse
+firehouses
+firemen
+firepower
+fireproof
+firewall
+firework
+fishier
+fishmeal
+fishmonger
+fishmongers
+fishpond
+fishy
+fissile
+fission
+fissioned
+fissioning
+fissions
+fisticuff
+fisticuffs
+fittest
+fivefold
+fizz
+fizzer
+fizzle
+fizzled
+fizzles
+fizzling
+fjord
+fjords
+flabbergast
+flabbergasted
+flabbergasting
+flabbergastingly
+flabbergasts
+flagellate
+flagellated
+flagellates
+flagellating
+flagellation
+flagman
+flagpole
+flagpoles
+flagstaff
+flagstone
+flail
+flailed
+flailing
+flails
+flair
+flak
+flakier
+flakiness
+flaky
+flam
+flamboyant
+flamboyantly
+flamen
+flamethrower
+flange
+flanged
+flanges
+flapped
+flapper
+flappers
+flashback
+flashbacks
+flashbulb
+flashbulbs
+flashier
+flashiness
+flashy
+flatbed
+flathead
+flatiron
+flatirons
+flatland
+flatlander
+flatlands
+flatulence
+flatulent
+flatulently
+flatworm
+flautist
+flaxseed
+fleawort
+fleck
+flecked
+flecker
+flecking
+flecks
+fledge
+fledges
+fledging
+fletch
+fletched
+fletcher
+fletches
+fletching
+fletching's
+fletchings
+flex
+flexed
+flexing
+flexural
+flexure
+flimsier
+flimsies
+flimsiness
+flimsy
+flintier
+flintiness
+flintless
+flintlock
+flinty
+flipflop
+flippant
+flippantly
+flipped
+flippers
+flipping
+flirtation
+flirtations
+flirtatious
+flirtatiously
+flirtatiousness
+flitting
+flocculate
+flocculated
+flocculates
+flocculating
+flocculation
+floe
+floes
+flog
+flogged
+flogging
+flogs
+floodgate
+floodlight
+floorboard
+floorboards
+flophouses
+flopped
+flopping
+floral
+florally
+florid
+floridly
+floridness
+florist
+florists
+flotation
+flotations
+flotilla
+flotillas
+flounce
+flounced
+flounces
+flouncing
+floury
+flout
+flouted
+flouter
+flouting
+flouts
+flowerpot
+flowstone
+flu
+flub
+flubbed
+flubbing
+flubs
+flue
+fluency
+fluff
+fluffs
+fluke
+fluoresce
+fluorescent
+fluorescer
+fluoresces
+fluoridate
+fluoridated
+fluoridates
+fluoridating
+fluoridation
+fluoridations
+fluoride
+fluorides
+fluorimetric
+fluorinated
+fluorine
+fluorite
+fluorocarbon
+flushable
+fluster
+flustered
+flustering
+flusters
+flutist
+flux
+fluxed
+fluxes
+flyaway
+flycatcher
+flycatchers
+flywheel
+flywheels
+foal
+foals
+foamier
+foaminess
+foamy
+fob
+foible
+foibles
+foist
+foisted
+foisting
+foists
+foldout
+foldouts
+foliate
+foliated
+foliates
+foliating
+foliation
+foliations
+folio
+folios
+folklike
+folksier
+folksiness
+folksong
+folksongs
+folksy
+follicle
+follicles
+follicular
+followup
+followup's
+followups
+foment
+fomented
+fomenter
+fomenting
+foments
+foolhardiness
+foolhardy
+footage
+footages
+footbridge
+footbridges
+footfall
+footfalls
+foothill
+foothills
+footloose
+footmen
+footpad
+footpads
+footpath
+footstool
+footstools
+footwear
+footwork
+fop
+foppery
+foppish
+foppishly
+foppishness
+fops
+forbore
+forebears
+foreclosed
+foreclosing
+forefeet
+forefront
+foreknowledge
+foreknown
+foreleg
+foremen
+forensic
+forensics
+forepart
+forepaws
+forerunner
+forerunners
+foresaw
+foreseeing
+foreshortened
+foreshortening
+forestry
+foreword
+forfeiture
+forfeitures
+forfend
+forfended
+forfending
+forfends
+forgo
+forgoer
+forgoing
+forklift
+formability
+formaldehyde
+formate
+formates
+formic
+formidably
+formulaic
+forsook
+forswear
+forswears
+forthcome
+forthright
+forthrightly
+forthrightness
+fortiori
+fossiliferous
+foulmouth
+foulmouthed
+foundling
+foundlings
+fountainhead
+fourfold
+foursome
+foursomes
+foursquare
+fourths
+fovea
+foxglove
+foxhole
+foxholes
+foxhound
+foxier
+foxiness
+foxtail
+foxy
+foyer
+fracases
+fractionated
+fractionation
+fractious
+fractiously
+fractiousness
+fragmentarily
+fragmentation
+francium
+frankfurter
+frankfurters
+franklin
+fraudulent
+fraudulentness
+frazzle
+frazzled
+frazzles
+frazzling
+freakish
+freakishly
+freakishness
+freeboot
+freebooter
+freebooters
+freeborn
+freedman
+freedmen
+freehand
+freehanded
+freehandedly
+freehold
+freeholder
+freeholders
+freemen
+freestone
+freethinkers
+freewheel
+freewheeled
+freewheeler
+freewheelers
+freewheeling
+freewheelingness
+freewheels
+frenetic
+freon
+fresco
+frescoed
+frescoes
+frescoing
+frescos
+freshwater
+fretted
+fretting
+friable
+friableness
+frictional
+frictionally
+friendlily
+frigid
+frigidly
+frigidness
+frilly
+friskier
+friskiness
+frisky
+fritter
+fritterer
+fritters
+frivolity
+frizzle
+frizzled
+frizzles
+frizzling
+fro
+frolicking
+frontage
+frontal
+frontally
+frontiersman
+frontiersmen
+frostbite
+frostbiting
+frostbitten
+frothier
+frothiness
+frothy
+frowzier
+frowzy
+frugality
+frustum
+fuchsia
+fuck
+fuck's
+fucked
+fucker
+fucker's
+fuckers
+fucking
+fucks
+fudge
+fudged
+fudges
+fudging
+fugue
+fulcrum
+fullback
+fullbacking
+fulminate
+fulminated
+fulminates
+fulminating
+fulmination
+fulminations
+fulsome
+fulsomely
+fulsomeness
+fumigant
+fumigate
+fumigated
+fumigates
+fumigation
+fumigations
+functionalism
+functionalist
+functionalists
+functionary
+fundamentalism
+funereal
+funereally
+fungal
+fungi
+fungible
+fungicides
+fungoid
+funk
+furbish
+furbisher
+furbishes
+furbishing
+furl
+furled
+furlong
+furlongs
+furlough
+furloughed
+furor
+furor's
+furors
+furrier
+furriers
+furring
+furry
+furthermost
+furthest
+fuselage
+fuselages
+fusible
+fusiform
+fusillade
+fusillades
+fussier
+fussily
+fussiness
+fussy
+fustiness
+fusty
+fuzz
+fuzzed
+g's
+gab
+gabbing
+gadfly
+gadgetry
+gaffe
+gaffer
+gaffes
+gaggle
+gagwriter
+gagwriters
+gainful
+gainfully
+gainfulness
+gal
+gala
+galactic
+galen
+galena
+galenite
+gallium
+gallivant
+gallivanted
+gallivanting
+gallivants
+gallonage
+gallstone
+gallstones
+gals
+galvanic
+galvanism
+galvanometer
+galvanometer's
+galvanometers
+gambit
+gambits
+gambol
+gambols
+gamecock
+gamut
+gander
+gangland
+gangling
+ganglion
+gangplank
+gangway
+gangways
+gantries
+gantry
+gardenia
+gardenias
+gargantuan
+gargoyle
+gargoyled
+gargoyles
+garish
+garishly
+garishness
+garnet
+garret
+garrets
+garrulous
+garrulously
+garrulousness
+gasification
+gasifications
+gasified
+gasifier
+gasifiers
+gasifies
+gasify
+gasifying
+gasket
+gaskets
+gaslight
+gaslighted
+gaslights
+gassiness
+gassy
+gastronome
+gastronomes
+gastronomy
+gator
+gauche
+gauchely
+gaucheness
+gaugeable
+gauntlet
+gauntleted
+gauss
+gausses
+gavel
+gawk
+gawker
+gawkier
+gawks
+gawky
+gazelle
+gazelles
+gazette
+gazetted
+gazetteer
+gazetteers
+gazettes
+gazetting
+gee
+geek
+geek's
+geeks
+geest
+geisha
+geishas
+gelable
+gelatine
+gelatinous
+gelatinously
+gelatinousness
+geld
+gelding
+geldings
+gemlike
+genealogies
+genealogists
+genealogy
+genera
+generational
+genesis
+geneticist
+geneticist's
+geneticists
+genie
+genie's
+genies
+genitive
+genitive's
+genitives
+genotype
+genotype's
+genotypes
+gent
+gentian
+gentians
+gentile
+gentiles
+gentility
+gentlemen
+gentlewomen
+gentlewomen's
+gentrification
+gents
+geocentric
+geocentricism
+geochemical
+geochemically
+geochemistry
+geochronology
+geodesic
+geodesics
+geodetic
+geographer
+geographer's
+geographers
+geologic
+geology
+geometer
+geometer's
+geometers
+geometrical
+geometrically
+geometrician
+geomorphological
+geomorphology
+geophysical
+geophysically
+geophysicist
+geophysicists
+geophysics
+geopolitic
+geopolitical
+geopolitically
+geopolitics
+geosynchronous
+gerbil
+geriatric
+geriatrics
+germanium
+germicidal
+germicide
+germicides
+germinal
+germinally
+gerontologist
+gerontologists
+gerontology
+gerrymandering
+gerund
+gerundive
+gestapo
+gestate
+gestated
+gestates
+gestating
+gestation
+gestation's
+gestations
+gesticulate
+gesticulated
+gesticulates
+gesticulating
+gesticulation
+gesticulations
+gesticulative
+gesticulatively
+getaway
+getaways
+geyser
+geysered
+geysering
+geysers
+gherkin
+gherkins
+ghetto
+ghettos
+ghostlike
+ghoul
+ghoulish
+ghoulishly
+ghoulishness
+ghouls
+giantess
+gibber
+gibbered
+gibbering
+gibbers
+gibbet
+gibbeted
+gibbeting
+gibbets
+gibbon
+gibbons
+gibbous
+gibbously
+gibbousness
+gibe
+giber
+gibes
+gibing
+giblet
+giblets
+giddap
+giddily
+gigacycle
+gigacycles
+gigahertz
+gigavolt
+gigawatt
+gigging
+gila
+gilbert
+gimpy
+ginkgo
+ginmill
+ginning
+ginseng
+girlie
+girlish
+girlishly
+girlishness
+gist
+git
+giveaway
+giveaways
+glaciate
+glaciated
+glaciates
+glaciating
+glaciation
+gladden
+gladdened
+gladdening
+gladdens
+gladdy
+gladiator
+gladiators
+gladiolus
+glamorous
+glamorously
+glamorousness
+glandular
+glandularly
+glassless
+glassware
+glasswort
+glaucoma
+glaucous
+glaziers
+glib
+glibly
+glibness
+glim
+gloat
+gloated
+gloater
+gloats
+glob
+globetrotter
+globule
+globulin
+globulins
+glommed
+glottis
+gloveless
+gluey
+glum
+glumly
+glumness
+glut
+gluten
+glutinous
+glutinously
+glutinousness
+gluts
+glutted
+glutting
+glutton
+glutton's
+gluttons
+glyceride
+glycerin
+glycerinate
+glycerinated
+glycerine
+glycerol
+glycol
+glycols
+glyph
+gnarl
+gnarled
+gnarls
+gnash
+gnashes
+gnashing
+gneiss
+gnome
+gnomelike
+gnomes
+gnomonic
+gnostic
+gnu
+gnus
+gob
+gobbledygook
+goddamn
+goddamned
+godfather
+godhead
+godless
+godlessness
+godparent
+godsend
+godsends
+godson
+goggle
+goggled
+goggler
+gogglers
+goggles
+goggling
+goldenrod
+goldenseal
+goldfinch
+goldfish
+goldsmiths
+golly
+gondola
+gondolas
+goober
+goodwill
+gooey
+goof
+goofed
+goofier
+goofiness
+goofing
+goofs
+goofy
+gooseberry
+gopher
+gophers
+gorgon
+goshawk
+gosling
+gossamer
+gourd
+gourmand
+gourmand's
+gourmands
+gourmet
+gourmets
+gout
+governance
+grad
+gradate
+gradated
+gradates
+gradating
+grads
+gradualist
+gradualists
+graffiti
+grail
+grails
+grammarian
+grammarians
+grammatic
+grammaticality
+grandchild
+grandchildren
+granddaughter
+granddaughters
+grandiloquent
+grandiloquently
+grandnephew
+grandnephews
+grandniece
+grandnieces
+grandstand
+grandstanded
+grandstander
+grandstanding
+grandstands
+granola
+grantee
+grantor
+granular
+granularly
+granule
+granules
+granulocytic
+grapefruit
+grapheme
+grasshoppers
+grassland
+grasslands
+grassroots
+gratis
+graven
+gravestone
+gravestones
+graveyard
+graveyards
+gravid
+gravidly
+gravidness
+gravimetric
+gravitate
+gravitated
+gravitates
+gravitating
+gravitations
+gravitative
+graybeard
+graybeards
+greatcoat
+greatcoated
+greatcoats
+greenbelt
+greenery
+greengrocer
+greenwood
+gregarious
+gregariously
+gregariousness
+greyhound
+griddle
+gridiron
+griffin
+grillwork
+grimace
+grimaced
+grimacer
+grimaces
+grimacing
+grime
+grimes
+grimmer
+grinned
+grinning
+grinningly
+grisliness
+grisly
+grist
+gristlier
+gristliness
+gristly
+gristmill
+grittier
+grittiness
+gritty
+grizzle
+grizzled
+grizzles
+grizzling
+groat
+groats
+groggier
+grogginess
+groggy
+groin
+grok
+grokked
+grokking
+groks
+grommet
+groomsmen
+grosbeak
+grottoes
+grouchier
+grouchiness
+grouchy
+groundhog
+groundhog's
+groundhogs
+groundless
+groundlessly
+groundlessness
+groundskeepers
+grout
+grouted
+grouter
+grouting
+grouts
+grovelike
+grubbier
+grubbiness
+grubbing
+grubby
+guano
+guardhouse
+gubernatorial
+guerilla
+guernsey
+guernseys
+guesswork
+guffaw
+guffaws
+guidepost
+guideposts
+guildhall
+guileless
+guilelessly
+guilelessness
+guitarist
+guitarists
+gullet
+gullets
+gullible
+gumbo
+gummier
+gumminess
+gumming
+gummy
+gumption
+gumshoe
+gunboat
+gunfight
+gunfighter
+gunfights
+gunflint
+gunk
+gunky
+gunman
+gunmen
+gunnery
+gunny
+gunshot
+gunsling
+gunslinger
+gunslinging
+gusset
+gussets
+gustiness
+gusto
+gusty
+gutsier
+gutsiness
+gutsy
+gutted
+gutting
+guttural
+gutturalness
+guzzle
+guzzled
+guzzler
+guzzles
+guzzling
+gymnosperm
+gyp
+gypping
+gypsite
+gypsum
+gyrate
+gyrated
+gyrates
+gyrating
+gyro
+gyrocompass
+gyros
+gyroscopic
+h's
+habeas
+haberdasheries
+haberdashery
+habitant
+habitants
+habituate
+habituated
+habituates
+habituating
+habituation
+hacienda
+haciendas
+hackle
+hackled
+hackler
+hackles
+hackling
+hackney
+hackneyed
+hackneying
+hackneys
+hacksaw
+hacksaws
+hackwork
+haddock
+haddocks
+hadron
+hafnium
+haggle
+haggled
+haggler
+haggles
+haggling
+haiku
+hailstone
+hailstorm
+hairdo
+hairdos
+hairdressing
+hairline
+hairpin
+halcyon
+halfback
+halfbacks
+halfhearted
+halfheartedly
+halfheartedness
+halftime
+halibut
+halibuts
+halide
+halides
+halite
+hallelujah
+hallelujahs
+hallucinate
+hallucinated
+hallucinates
+hallucinating
+hallucination
+hallucinations
+hallucinative
+halo
+halocarbon
+halogen
+halogens
+halos
+hammerhead
+hammerless
+hamming
+hamster
+hamsters
+handclasp
+handgun
+handguns
+handhold
+handicapper
+handicapping
+handicraft
+handicrafter
+handicrafts
+handicraftsman
+handicraftsmen
+handleable
+handlebar
+handlebars
+handless
+handmade
+handmaiden
+handout
+handouts
+handrail
+handset
+handsets
+handspike
+handspikes
+handstand
+handstands
+handwrite
+handwrites
+handwritings
+handyman
+handymen
+hangable
+hangman
+hangman's
+hangmen
+hangout
+hangouts
+hank
+hanker
+hankered
+hankerer
+hankering
+hankers
+hansom
+happenstance
+harangue
+harangued
+haranguer
+harangues
+haranguing
+harbinger
+harbingers
+hardboard
+hardboiled
+hardhat
+hardscrabble
+hardshell
+hardtack
+hardtop
+hardtops
+hardwire
+hardwired
+hardwires
+hardwiring
+hardwood
+hardwoods
+hardworking
+harelip
+harelips
+harem
+harmonic
+harmonics
+harpies
+harpist
+harpoon
+harpoon's
+harpooned
+harpooner
+harpooning
+harpoons
+harpsichord
+harpsichordist
+harpsichords
+harpy
+harpy's
+harrumph
+harrumphed
+harrumphes
+harrumphing
+harvestman
+hashish
+hasp
+hasps
+hatchway
+hatless
+hatted
+hatters
+haulage
+haw
+hawing
+hawser
+hawthorn
+hayfield
+hayfields
+hayloft
+hayloft's
+haylofts
+haystack
+haystacks
+hazelnut
+hazelnuts
+headboard
+headboards
+headdress
+headier
+headiness
+headless
+headlessness
+headlight
+headlights
+headmaster
+headquarter
+headquartered
+headroom
+headset
+headsets
+headship
+headsman
+headsmen
+headstand
+headstands
+headstone
+headstones
+headwall
+headwalls
+headwater
+headwaters
+heady
+hearse
+heartbeat
+heartbeats
+heartbreak
+heartbreaking
+heartbreakingly
+heartburn
+heartburning
+heartfelt
+heartland
+heartland's
+heartthrob
+heartthrob's
+heartthrobs
+heathenish
+heathenishly
+heavenward
+heavenwards
+heavyweight
+hebephrenic
+hecatomb
+heck
+heckle
+heckled
+heckler
+hecklers
+heckles
+heckling
+hectares
+hectic
+hector
+hedonism
+hedonist
+hedonistic
+hedonists
+heedful
+heedfully
+heedfulness
+heft
+hefted
+heftier
+heftiness
+hefts
+hefty
+hegemonic
+hegemonies
+hegemony
+heist
+heist's
+heisted
+heister
+heisting
+heists
+helical
+helically
+helices
+helicon
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+helixes
+hellbender
+hellfire
+hellish
+hellishly
+hellishness
+helluva
+helmsman
+helmsmen
+helpmate
+hematite
+hemispheric
+hemispherical
+hemmed
+hemming
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhaged
+hemorrhages
+hemorrhaging
+hemorrhoids
+henning
+henpeck
+henpecked
+henry
+hepatitis
+heptane
+herbal
+herdsman
+hereof
+hereunto
+heritable
+heritor
+hermeneutics
+hermetic
+hermitian
+herpes
+herpetologist
+herpetologists
+herpetology
+herringbone
+hertz
+hertzes
+hesitance
+hesitancy
+heterodyne
+heterogamous
+heterogamy
+heterogeneity
+heterosexual
+heterosexually
+heterosexuals
+heterostructure
+heterozygous
+hewn
+hexachloride
+hexadecimal
+hexadecimally
+hexadecimals
+hexafluoride
+hexagon
+hexagons
+hexameter
+heyday
+hi
+hiatus
+hiatuses
+hibachi
+hibernate
+hibernated
+hibernates
+hibernating
+hibernation
+hick
+hicks
+hideaway
+hierarchal
+hierarchic
+hieratic
+hieroglyphic
+hieroglyphics
+hifalutin
+highball
+highboy
+highfalutin
+highhanded
+highroad
+highs
+hight
+hightail
+highwayman
+highwaymen
+hilarity
+hillbilly
+hillier
+hillman
+hillmen
+hilly
+hindmost
+hindquarters
+hinterland
+hinterlands
+hippies
+hipping
+hippo
+hippodrome
+hippopotamus
+hippos
+hippy
+hipster
+hipsters
+hireling
+hirelings
+histochemic
+histochemical
+histochemistry
+histology
+historicism
+historicity
+historiography
+histrionic
+histrionics
+hitless
+ho
+hoagie
+hoagies
+hoagy
+hoarfrost
+hob
+hobbing
+hobbyhorse
+hobo
+hobos
+hoc
+hock
+hocker
+hocking
+hocks
+hodge
+hodgepodge
+hodges
+hogan
+hogging
+hokey
+hokeyer
+hokeyest
+hokeyness
+holdover
+holdovers
+holdup
+holdups
+hollandaise
+holler
+hollered
+hollering
+hollers
+hollowware
+hollyhock
+hollyhocks
+holmium
+holography
+holster
+holstered
+holstering
+holsters
+holystone
+holystones
+homebound
+homebuilder
+homebuilders
+homebuilding
+homecoming
+homecomings
+homeland
+homemake
+homemaking
+homeowner
+homeowners
+homeownership
+homerists
+homicidal
+homicidally
+homicide
+homicides
+homily
+homo
+homogamy
+homogenate
+homogenates
+homologous
+homologue
+homology
+homonym
+homonym's
+homonyms
+homopolymers
+homos
+homosexual
+homosexually
+homosexuals
+homozygous
+homozygously
+hon
+honeybee
+honeybees
+honeydew
+hong
+honk
+honked
+honker
+honkers
+honkies
+honking
+honks
+honky
+honky's
+hooch
+hoodlum
+hoodlums
+hoofmark
+hoofmarks
+hookup
+hookups
+hookworm
+hooligan
+hooliganism
+hooligans
+hoopla
+hoosegow
+hoosegows
+hooves
+hoppled
+hopples
+hopscotch
+hornier
+horniness
+horny
+horoscope
+horoscopes
+hors
+horsedom
+horseflesh
+horseflies
+horsefly
+horsehair
+horselike
+horsemanship
+horsemen
+horsens
+horseplay
+horseplayer
+horsetail
+horsewoman
+horticulture
+hosiery
+hospice
+hospices
+hostelries
+hostelry
+hotbed
+hotbox
+hotdogs
+hotelman
+hothead
+hotheaded
+hotheadedly
+hotheadedness
+hothouse
+hotrod
+hough
+hourglass
+houseboat
+houseboats
+housebreak
+housebreaker
+housebreakers
+housebreaking
+housebroken
+housekeep
+housewares
+housewives
+hove
+howdy
+hoy
+hubba
+hubbies
+hubbub
+hubby
+huckleberry
+huckster
+huckstered
+huckstering
+hucksters
+hugged
+hugging
+huggings
+hulk
+hulked
+hulking
+hulks
+humanism
+humanist
+humanistic
+humanists
+humanitarian
+humanitarians
+humidistat
+hummingbird
+hummingbirds
+hummock
+hummocks
+humorist
+humorist's
+humorists
+humpback
+humpbacked
+humpbacks
+humus
+hundredfold
+huntress
+hurray
+hurrays
+hurtful
+hurtfully
+hurtfulness
+hurtle
+hurtled
+hurtles
+hurtling
+husbandman
+husbandmen
+huskily
+hutch
+huzzahs
+hyacinths
+hydrant
+hydrants
+hydrate
+hydrated
+hydrates
+hydrating
+hydration
+hydrations
+hydride
+hydrides
+hydro
+hydrocarbon
+hydrocarbons
+hydrochemistry
+hydrochloric
+hydrochloride
+hydroelectric
+hydrofluoric
+hydrogenate
+hydrogenation
+hydrological
+hydrologically
+hydrology
+hydrolysis
+hydrometer
+hydrometer's
+hydrometers
+hydrophilic
+hydrophobia
+hydrophobic
+hydros
+hydrosphere
+hydrostatic
+hydrostatics
+hydrothermal
+hydrothermally
+hydrous
+hydroxide
+hydroxides
+hydroxy
+hydroxyl
+hydroxyl's
+hydroxylate
+hydroxylation
+hydroxyls
+hydroxyzine
+hyena
+hygienic
+hygienics
+hygrometer
+hygrometer's
+hygrometers
+hygroscopic
+hying
+hymen
+hymens
+hymnal
+hyperbola
+hyperbole
+hyperbolically
+hyperboloid
+hyperboloidal
+hypercellularity
+hypercube
+hypercube's
+hypercubes
+hyperemia
+hyperemic
+hyperfine
+hypergamous
+hypergamously
+hypergamy
+hyperplasia
+hypertensive
+hypertrophied
+hypertrophy
+hypervelocity
+hyphenate
+hyphenated
+hyphenates
+hyphenating
+hyphenation
+hyphenations
+hypnosis
+hypnotic
+hypnotically
+hypnotics
+hypoactive
+hypocellularity
+hypocritical
+hypocritically
+hypophyseal
+hypotenuse
+hypotenuses
+hypothalamic
+hypothalamically
+hypothalamus
+hypothermia
+hypothetic
+hypothyroid
+hypothyroidism
+hysterectomy
+hysteria
+hysteric
+hysterics
+i's
+iambic
+ibid
+ibis
+ibises
+icebox
+icicle
+icicles
+iconic
+iconoclasm
+iconoclast
+icosahedral
+icosahedron
+idealist
+idealogical
+ideate
+ideates
+ideation
+idempotent
+idempotents
+identifiability
+ideologist
+ideologists
+idiolect
+idiom
+idiomatic
+idiomaticness
+idioms
+idiosyncratically
+idiotically
+idyll
+idyllic
+iffiness
+iffy
+igloo
+igloos
+igneous
+ignite
+ignited
+igniter
+ignites
+igniting
+ignitions
+ignominious
+ignominiously
+ignoramus
+ileum
+iliac
+ilk
+ilk's
+illegible
+illegitimacy
+illegitimate
+illegitimately
+illimitable
+illimitableness
+illiteracy
+illogic
+illume
+illumed
+illumine
+illumined
+illumines
+illuming
+illusionary
+illusoriness
+illusory
+imagery
+imbecile
+imbecilely
+imbibe
+imbibed
+imbiber
+imbibing
+imbroglio
+imbruing
+imbue
+imbued
+imbuing
+imitable
+imitators
+immanent
+immanently
+immeasurable
+immeasurableness
+immeasurably
+immensities
+immensity
+imminence
+immobile
+immobility
+immoderate
+immoderately
+immoderateness
+immoderation
+immodest
+immodestly
+immodesty
+immunological
+immunologically
+impairment
+impale
+impaled
+impales
+impaling
+impalpable
+impartation
+impartiality
+impassable
+impassableness
+impeccable
+impeccably
+impelled
+impeller
+impellers
+impelling
+impend
+imperceivable
+imperceptible
+imperceptibly
+imperfectability
+imperishable
+imperishableness
+impermeable
+impermeableness
+imperturbable
+impiety
+impish
+impishly
+impishness
+implacable
+implacableness
+implantation
+implausibly
+implementability
+impolite
+impolitely
+impoliteness
+impolitic
+impoliticly
+impoliticness
+imponderable
+imponderableness
+imponderables
+importunate
+importunately
+importunateness
+importune
+importunely
+importuner
+importuners
+importunities
+impost
+imposter
+imposts
+impotency
+impound
+impounded
+impounding
+impoundments
+impounds
+imprecate
+imprecated
+imprecates
+imprecating
+imprecation
+imprecations
+impregnate
+impregnated
+impregnates
+impregnating
+impregnation
+impregnations
+impresario
+impressible
+impressionism
+imprimatur
+improbably
+impropitious
+impropriety
+improvident
+improvidently
+imprudent
+imprudently
+impudence
+impugn
+impugned
+impugner
+impugning
+impugns
+imputation
+imputations
+inaction
+inactivate
+inadvertence
+inalienable
+inanity
+inappeasable
+inarticulate
+inarticulately
+inarticulateness
+inattention
+inaudibility
+inboard
+inbreed
+inbreeder
+inbreeding
+incalculability
+incalculable
+incalculableness
+incandescent
+incandescently
+incant
+incanted
+incapacitate
+incapacitated
+incapacitates
+incapacitation
+incapacity
+incarcerate
+incarcerated
+incarcerates
+incarcerating
+incarceration
+incarnate
+incept
+incepted
+incepting
+inceptive
+inceptively
+inceptor
+incepts
+incest
+incestuous
+incestuously
+incestuousness
+incinerate
+incinerated
+incinerates
+incinerating
+incineration
+incinerations
+incinerator
+incinerators
+incipience
+incipiency
+incise
+incised
+incises
+incising
+incisive
+incisively
+incisiveness
+incisor
+incisor's
+incisors
+incitement
+incitements
+inclemency
+inclement
+inclemently
+inclinometer
+inclinometer's
+inclinometers
+incoercible
+incombustible
+incommensurable
+incommodious
+incommodiously
+incommodiousness
+incommunicable
+incommunicado
+incommutable
+incompetency
+incompressibility
+incondensable
+incongruities
+incongruity
+incongruous
+incongruously
+incongruousness
+inconsistence
+inconsonance
+inconstant
+incontinence
+incontrovertible
+incorporable
+incorporeally
+incorrigible
+incorrigibleness
+incorruptibility
+incorruptible
+increasable
+incriminating
+incubi
+incubus
+inculcate
+inculcated
+inculcates
+inculcation
+inculpable
+incumbent
+incumbents
+incursion
+incursions
+indecipherable
+indecorous
+indecorously
+indecorousness
+indefatigable
+indefatigableness
+indefensible
+indelible
+indelibly
+indelicate
+indelicately
+indelicateness
+indemnification
+indemonstrably
+indenture
+indentured
+indentures
+indenturing
+indestructible
+indestructibleness
+indicant
+indicants
+indict
+indicted
+indicter
+indigent
+indiscoverable
+indiscretion
+indispose
+indisposing
+indisposition
+indisputable
+indisputableness
+indisputably
+indissociable
+indissoluble
+indissolubleness
+indium
+individualism
+individualist
+individualists
+individuate
+individuated
+individuates
+individuating
+individuation
+indolence
+indubitable
+indubitableness
+inducible
+inductee
+inductees
+inductile
+indulgent
+indulgently
+industrialism
+inebriate
+inebriated
+inebriates
+inebriating
+inebriation
+ineffable
+ineffableness
+ineffaceable
+ineffectual
+ineffectually
+ineffectualness
+inefficacious
+inefficaciously
+inefficaciousness
+inegalitarian
+inelastic
+ineligibility
+ineligible
+ineluctable
+inept
+ineptly
+ineptness
+inequitable
+inequivalent
+ineradicable
+inertial
+inertially
+inexpediency
+inexpert
+inexpertly
+inexpertness
+inexpiable
+inexplicit
+inextinguishable
+inextricable
+inextricably
+infamy
+infanticide
+infanticide's
+infantile
+infantryman
+infantrymen
+infatuation
+infauna
+infecund
+infelicitous
+infelicitously
+infelicity
+inferable
+infertile
+infestation
+infestations
+infield
+infield's
+infielder
+infielder's
+infielders
+infinitude
+infirm
+infirmary
+infirmed
+infirmly
+inflammation
+inflammatory
+inflect
+inflected
+inflecting
+inflection
+inflectional
+inflectionally
+inflections
+inflective
+inflects
+inflexed
+infliction
+inflow
+influx
+info
+infra
+infraction
+infrared
+infusible
+infusibleness
+ingenuous
+ingenuously
+ingenuousness
+ingest
+ingested
+ingestible
+ingestion
+ingestive
+ingrain
+ingrate
+ingratiate
+ingratiating
+ingratiatingly
+ingratiation
+inhabitation
+inhalant
+inhalation
+inhibitor
+inhibitory
+inhomogeneous
+inimical
+inimically
+inimitable
+inimitableness
+iniquitous
+iniquitously
+iniquitousness
+injectable
+injunctive
+inlay
+inlayer
+inlaying
+innovators
+innuendo
+innuendoes
+innuendos
+inoculate
+inoculated
+inoculates
+inoculating
+inoculation
+inoculations
+inoculative
+inoperative
+inoperativeness
+inorganically
+inputted
+inquest
+inquisitor
+insatiable
+insatiableness
+inscrutability
+inscrutable
+inscrutableness
+insecticide
+insecticides
+inseminate
+insemination
+insensate
+insensately
+insensateness
+insensibility
+inseparability
+inseparably
+inset
+insincere
+insincerely
+insipid
+insipidly
+insobriety
+insolvency
+insolvent
+insomnia
+insomniac
+insomniacs
+insouciance
+insouciant
+insouciantly
+inspirational
+inspirationally
+instable
+instep
+instill
+instillation
+instilled
+instiller
+instilling
+instinctual
+institutionalist
+instrumentalities
+insubordinate
+insubordinately
+insubordination
+insubstantial
+insufferable
+insular
+insularity
+insularly
+insulin
+insuperably
+insuppressible
+insurgence
+insusceptibility
+intake
+intaking
+integrable
+integrand
+integument
+intellectuality
+intelligentsia
+intendant
+intendants
+intensional
+intensionally
+inter
+interaxial
+intercalate
+intercalated
+intercalates
+intercalating
+intercalation
+intercalative
+intercase
+intercaste
+intercede
+interceder
+intercedes
+intercensal
+interception
+interceptor
+interclass
+intercohort
+intercollegiate
+intercom
+intercontinental
+intercorrelated
+interdenominational
+interdepartmental
+interdepartmentally
+interdict
+interdictive
+interfaith
+interferometer
+interferometer's
+interferometers
+interferometric
+interferometry
+interferon
+intergalactic
+intergeneration
+intergenerational
+interglacial
+intergovernmental
+intergroup
+interindex
+interindustry
+interject
+interjected
+interjecting
+interjects
+interlayer
+interlayering
+interlibrary
+interlingua
+interlining
+interlobular
+interlock
+interlocked
+interlocker
+interlocking
+interlocks
+interlocutor
+interlude
+interludes
+intermarriage
+interment
+intermeshed
+intermetrics
+interminableness
+interminably
+intermission
+intermissions
+intermolecular
+intermolecularly
+internationalist
+internationalists
+internetwork
+interpenetrates
+interplanetary
+interpol
+interposition
+interpretative
+interpretatively
+interpretor
+interpretors
+interprocessor
+interquartile
+interracial
+interred
+interregional
+interregnum
+interrogator
+interrogatories
+interrogators
+interrogatory
+interspecies
+interstellar
+interstice
+interstices
+interstitial
+interstitially
+intersurvey
+intervenor
+interventionist
+intervocalic
+interweaving
+intestate
+intimal
+intonate
+intone
+intoning
+intorsion
+intoxicant
+intra
+intracity
+intraclass
+intracohort
+intradepartmental
+intrafamily
+intragenerational
+intraindustry
+intraline
+intrametropolitan
+intramuscular
+intramuscularly
+intranasal
+intransigence
+intraoffice
+intrapulmonary
+intraregional
+intrasectoral
+intrastate
+intratissue
+intravenous
+intravenously
+intrepid
+intrepidly
+intrepidness
+intro
+introject
+introjected
+introjects
+introversion
+intuitable
+inunction
+inundate
+inundated
+inundates
+inundating
+inundation
+inundations
+inure
+inured
+inuring
+inutile
+invalidism
+invasive
+invasiveness
+invective
+invectively
+invectiveness
+inveigh
+inveigher
+inveigle
+inveigled
+inveigler
+inveigling
+investigatory
+inveterate
+inveterately
+invidious
+invidiously
+invidiousness
+invigorate
+invigorated
+invigorates
+invigorating
+invigoratingly
+invigoration
+inviolability
+inviolable
+inviolate
+inviolately
+inviolateness
+invitational
+invitee
+invitees
+invocable
+invocate
+involute
+involutely
+involution
+involutions
+involutorial
+invulnerability
+iodate
+iodated
+iodating
+iodation
+iodide
+iodinate
+iodinated
+iodinating
+iodination
+ionic
+ionosphere
+ionospheric
+iota
+ipecac
+ipso
+iridium
+ironic
+ironside
+ironsides
+ironstone
+ironwood
+irradiate
+irradiated
+irradiation
+irradiative
+irreconcilable
+irreconcilableness
+irredeemable
+irredeemably
+irredentism
+irredentist
+irrelevancies
+irrelevancy
+irremediable
+irremediableness
+irremovable
+irreparable
+irreparableness
+irreparably
+irreplaceable
+irreplaceableness
+irreproachable
+irreproachableness
+irreproducibility
+irreproducible
+irresistibility
+irresistibly
+irresolute
+irresolutely
+irresoluteness
+irresolution
+irresolvable
+irresponsibility
+irretrievable
+irreverence
+irreverent
+irreverently
+irreversibly
+irrevocable
+irrevocableness
+irrevocably
+irritability
+irritable
+irritableness
+irritably
+irritant
+irritants
+irruption
+irruptions
+isinglass
+isochronal
+isochronally
+isochronous
+isochronously
+isocline
+isocyanate
+isodine
+isolationism
+isolationistic
+isomer
+isomers
+isomorph
+isopleth
+isopleths
+isotherm
+isothermal
+isothermally
+isotherms
+isotonic
+isotopic
+isotropic
+isotropically
+isotropy
+issuant
+itinerant
+itinerantly
+j's
+jabberings
+jackass
+jackboot
+jackbooted
+jackboots
+jackdaw
+jackdaws
+jackknife
+jackpot
+jackpots
+jag
+jagged
+jaggedly
+jaggedness
+jaggers
+jagging
+jaguar
+jalopies
+jalopy
+jamboree
+jangle
+jangled
+jangler
+jangles
+jangling
+janissaries
+janissary
+janitorial
+jasper
+jaspers
+jaundice
+jaundiced
+jaundices
+jaundicing
+jawbone
+jazzier
+jazziness
+jazzmen
+jazzy
+jejune
+jejunely
+jejuneness
+jejunum
+jeopard
+jeopardies
+jeopardy
+jerry
+jess
+jetliner
+jetliners
+jettison
+jibe
+jibed
+jibes
+jibing
+jiffies
+jiffy
+jigger
+jiggered
+jigging
+jiggle
+jiggled
+jiggles
+jiggling
+jigsaw
+jilt
+jilted
+jilter
+jilts
+jimmied
+jimmies
+jimmy
+jimmying
+jinx
+jitter
+jitterbug
+jitters
+jittery
+jive
+jived
+jives
+jiving
+jobbery
+jobbing
+jobholder
+jobholders
+jobless
+joblessness
+jock
+jockey
+jockeyed
+jockeying
+jockeys
+jockstrap
+jockstraps
+jocose
+jocosely
+jocoseness
+jocular
+jocularly
+joey
+joggle
+joggled
+joggler
+joggles
+joggling
+jollities
+jollity
+jonquil
+jonquils
+josh
+joshed
+josher
+joshes
+joshing
+joss
+joule
+jounce
+jounced
+jounces
+jouncing
+journalese
+journaleses
+journeyman
+journeymen
+jovial
+joviality
+jovially
+jowl
+jowled
+jowls
+joyless
+joylessly
+joylessness
+joyride
+joyrider
+joyriding
+joystick
+joysticks
+jubilant
+jubilantly
+jubilate
+jubilated
+jubilates
+jubilating
+jubilation
+jubilations
+judgeship
+judicatory
+judicature
+judicatures
+judo
+jugate
+jugging
+juju
+jujube
+juke
+jukes
+juking
+julep
+juleps
+jumbo
+jumbos
+junkerdom
+junket
+junketed
+junketeer
+junketeering
+junketer
+junketing
+junkets
+junta
+juridical
+juridically
+jurisdictional
+jurisdictionally
+jurisprudence
+jurisprudent
+jurisprudential
+jurisprudentially
+jurist
+jurists
+justiciable
+jute
+jutes
+jutting
+juxtaposition
+k's
+kaboom
+kaleidescope
+kamikaze
+kangaroo
+kangaroos
+kaolin
+kaolinite
+kappa
+karat
+karate
+kazoo
+kazoos
+kcal
+kebob
+keg
+kegs
+kelp
+keno
+ketone
+ketosis
+keyhole
+keyholes
+keynote
+keynoter
+keynotes
+keypunch
+keypunched
+keypuncher
+keypunches
+keypunching
+keystone
+keystones
+khaki
+khan
+kibbutzim
+kibitz
+kibitzer
+kickback
+kickbacks
+kickoff
+kickoffs
+kidder
+kiddie
+kiddies
+kidless
+killable
+killjoy
+kilobaud
+kilobuck
+kilogauss
+kilohertz
+kilohm
+kilojoule
+kiloton
+kilotons
+kilovolt
+kilovolts
+kilowatt
+kilowatts
+kiloword
+kilts
+kimono
+kinematic
+kinematics
+kinesics
+kinetic
+kinetics
+kingbird
+kingfisher
+kinglet
+kingpin
+kink
+kinsmen
+kinsmen's
+kiosk
+kiosks
+kitchenette
+kitchenettes
+kittenish
+kittenishly
+kittenishness
+klaxon
+kleenex
+klystron
+klystrons
+km
+kneecap
+kneecaps
+kneepad
+kneepads
+knick
+knicker
+knickerbocker
+knickers
+knitted
+knitting
+knobby
+knockdown
+knockdowns
+knockout
+knockouts
+knockwurst
+knottier
+knottiness
+knotty
+knuckleball
+knuckleballer
+knurl
+koala
+kohlrabi
+kooks
+kosher
+koshered
+koshering
+kraft
+kraut
+krauts
+krill
+krypton
+kudzu
+kumquat
+kurtosis
+l's
+la
+labial
+labially
+labile
+labiodental
+lackadaisic
+lackey
+lackeyed
+lackeying
+lackeys
+lacrosse
+lacrosses
+lactate
+lactated
+lactates
+lactating
+lactation
+lactational
+lactationally
+lactose
+lacuna
+lacunae
+lacunas
+ladle
+ladled
+ladles
+ladling
+ladylike
+laggard
+laggardly
+laggardness
+laggards
+lagging
+laing
+laissez
+laity
+lakeside
+lamas
+lamentably
+laminate
+laminated
+laminates
+laminating
+lamination
+laminations
+lammed
+lamming
+lampblack
+lamplight
+lamplighter
+lampoon
+lampooned
+lampooner
+lampooning
+lampoons
+lamprey
+lampreys
+landau
+landfill
+landhold
+landholder
+landholders
+landholding
+landholdings
+landless
+landownership
+landslide
+landslides
+languor
+lank
+lankier
+lankiness
+lankly
+lankness
+lanky
+lanthanide
+lanthanum
+lapidary
+lapped
+lapping
+laptop
+laptop's
+laptops
+larceny
+larch
+largemouth
+largesse
+lariat
+larval
+laryngeal
+laryngeally
+larynx
+larynxes
+las
+lascivious
+lasciviously
+lasciviousness
+lasing
+lasso
+lassoed
+lassoer
+lathe
+latitudinal
+latitudinally
+latitudinary
+laud
+laudably
+laudanum
+laudatory
+lauder
+lauds
+laughingstock
+laughingstocks
+laundresses
+laundrymen
+laura
+laureate
+laureated
+laureates
+laureating
+laureation
+lawbreaker
+lawbreakers
+lawbreaking
+lawgiver
+lawgivers
+lawgiving
+lawmakers
+lawmaking
+lawman
+lawmen
+lawrencium
+lax
+laxative
+laxatively
+laxativeness
+laxatives
+laxity
+laxly
+laxness
+layoff
+layperson
+layup
+layup's
+layups
+lazybones
+lb
+lbs
+leach
+leachate
+leaches
+leaching
+leaderless
+leadsman
+leadsmen
+leafhopper
+leakier
+leakiness
+leaky
+leapfrog
+leasehold
+leaseholder
+leatherneck
+leathery
+lebensraum
+lecher
+lechery
+leek
+leery
+leeward
+leewards
+leeway
+lefties
+lefty
+legate
+legated
+legatee
+legates
+legating
+legation
+legations
+legato
+legerdemain
+leggier
+legging
+leggy
+leghorn
+legume
+legumes
+leguminous
+leitmotif
+leitmotiv
+lemming
+lemmings
+lengthily
+lenticular
+leonine
+leper
+lepers
+lesbian
+lesbians
+lesion
+lesions
+lessor
+lethal
+lethality
+lethally
+lethargies
+lethargy
+letterhead
+letterheads
+letterman
+lettermen
+levitate
+levitated
+levitates
+levitating
+levitation
+levities
+levity
+lewis
+lex
+libation
+libations
+libel
+libels
+liberalism
+liberality
+libertarian
+libertarians
+libertine
+libertines
+libidinous
+libidinously
+libidinousness
+librettist
+librettists
+libretto
+libretto's
+librettos
+lice
+licensor
+licentious
+licentiously
+licentiousness
+licit
+licitly
+licorice
+lidding
+lidless
+lieut
+lifeblood
+lifeboat
+lifeboats
+lifeguard
+lifeguards
+lifesaving
+lifespan
+lifespans
+ligament
+ligaments
+ligand
+ligands
+ligature
+ligatured
+ligatures
+ligaturing
+lighthearted
+lightheartedly
+lightheartedness
+lightproof
+lightships
+lignite
+lignum
+likeable
+lilt
+lilting
+liltingly
+liltingness
+limbic
+limbo
+limbos
+limelight
+limerick
+limerick's
+limericks
+limitless
+limitlessly
+limitlessness
+limousine
+limousines
+limpid
+limpidly
+limpidness
+lineage
+lineages
+lineal
+lineally
+linebacker
+linebackers
+lineman
+linemen
+lineup
+lineups
+lingerie
+lingo
+lingua
+lingual
+lingually
+liniment
+liniments
+lipid
+lipid's
+lipids
+liquefaction
+liqueur
+liquidate
+liquidated
+liquidates
+liquidating
+listless
+listlessly
+listlessness
+litanies
+litany
+literalism
+lithium
+lithograph
+lithographer
+lithographers
+lithographs
+lithography
+lithology
+lithosphere
+lithospheric
+litigant
+litigants
+litigious
+litigiously
+litigiousness
+litmus
+litterbug
+littleneck
+littoral
+liturgic
+liturgical
+liturgically
+liturgics
+liturgy
+livability
+liverwort
+livestock
+livid
+lividness
+loadable
+loam
+loamy
+lob
+lobotomy
+lobular
+lobularity
+lobularly
+lobule
+lobules
+locale
+locales
+localisms
+locational
+locationally
+locknut
+locksmith
+locksmithing
+locomotor
+locomotory
+locoweed
+lodestone
+lodgepole
+lodgment
+logarithmic
+loge
+loggerhead
+logion
+logions
+logistical
+logistically
+logjam
+loincloth
+loll
+loller
+lollies
+lolling
+lolly
+longevity
+longhand
+longhorn
+longhorns
+longish
+longitudinal
+longitudinally
+longshoremen
+longstanding
+longterm
+longtime
+looseleaf
+lop
+lope
+loped
+loper
+loping
+lopped
+lopping
+lops
+lopsided
+lopsidedly
+lopsidedness
+loquacious
+loquaciously
+loquaciousness
+loquacity
+lossage
+lossless
+lotion
+lotions
+loudspeaking
+louse
+loused
+louses
+lousewort
+lousing
+lovebird
+lovebirds
+loveless
+lovelessly
+lovelessness
+lovelorn
+lovelornness
+lowboy
+lowdown
+lowercase
+lowercased
+lowercases
+lowercasing
+lowlight
+lowlight's
+lowlights
+loyalist
+loyalists
+lozenge
+lozenged
+lozenges
+lubricate
+lubricated
+lubricates
+lubricating
+lubrications
+lubricative
+lubricious
+lubriciously
+lubricity
+lucent
+lucently
+lucid
+lucidity
+lucidly
+lucidness
+lucrative
+lucratively
+lucrativeness
+lucre
+lug
+luge
+luger
+lugged
+lugging
+lugs
+lulu
+lumbar
+lumberman
+lumbermen
+lumberyard
+lumen
+luminaries
+luminary
+luminescence
+luminescent
+luminosity
+lummox
+lumpier
+lumpiness
+lumpish
+lumpishly
+lumpishness
+lumpy
+lunacy
+lunary
+lunate
+lunated
+lunately
+lunation
+lunchroom
+lunchrooms
+lunchtime
+lunge
+lupine
+lurid
+luridly
+luridness
+lush
+lushes
+lushly
+lushness
+lustful
+lustfully
+lustfulness
+lutanist
+luxe
+luxes
+luxuriance
+luxuriate
+luxuriated
+luxuriating
+lycopodium
+lye
+lymphocyte
+lymphocytes
+lymphoma
+lyrical
+lyrically
+lyricalness
+lyricism
+lyricist
+lyricists
+m's
+ma
+macabre
+macabrely
+machinable
+machination
+machination's
+machinations
+machinelike
+machinist
+machinists
+machismo
+macho
+macintosh
+mack
+mackinaw
+mackintosh
+macrodynamic
+macromolecular
+macrophage
+macrophages
+macroscopically
+macrosimulation
+macrosocioeconomic
+madcap
+madding
+madhouse
+madmen
+madrigal
+madrigaling
+madrigals
+maestro
+magenta
+maggoty
+magi
+magisterial
+magisterially
+magnanimity
+magnanimous
+magnanimously
+magnanimousness
+magnate
+magnates
+magnesia
+magnesite
+magnetite
+magneto
+magnetos
+magnolia
+magnolias
+magnum
+magnums
+magpie
+magpies
+maidenhair
+maidservant
+maier
+mailman
+mailmen
+mainline
+mainlined
+mainliner
+mainliners
+mainlines
+mainlining
+mainstream
+majestically
+maladapt
+maladapted
+maladaptive
+maladjust
+maladjusted
+maladjustive
+maladjustment
+maladjustments
+maladroit
+maladroitly
+malaise
+malaprop
+malapropism
+malarial
+malarious
+malcontent
+malcontent's
+malcontented
+malcontentedly
+malcontentedness
+malcontents
+maledict
+malediction
+malevolence
+malevolencies
+malevolent
+malevolently
+malfeasant
+malformation
+malformations
+malformed
+malign
+malignancies
+malignancy
+maligned
+malignly
+malingering
+mallard
+mallards
+malleable
+malleableness
+malnourished
+malocclusion
+malposed
+malpractice
+maltreat
+mambo
+mambos
+mammalian
+manatee
+mandamus
+mandamused
+mandamuses
+mandamusing
+mandarin
+mandarins
+mandrake
+mandrakes
+manganese
+manhole
+manholes
+mania
+maniacal
+maniacally
+manic
+manicurists
+manikin
+manikins
+manna
+mannequin
+mannequins
+mannerism
+mannerisms
+manorial
+manservant
+manslaughter
+mantlepiece
+mantrap
+marathon
+marathons
+marauders
+margarine
+marginalia
+marginality
+maria
+marina
+marinade
+marinades
+marinas
+marionette
+marionettes
+marital
+maritally
+marksman
+marksmanship
+marlin
+marmalade
+marmalades
+maroon
+marooned
+marquee
+marquees
+marquess
+marquesses
+marred
+marriageable
+marring
+marrowbone
+marrowbones
+marshland
+marshlands
+marshmallow
+marshmallows
+martin
+martingale
+martini
+martinis
+mascara
+mascaras
+mascot
+mascot's
+mascots
+maser
+masque
+masquer
+masquers
+masques
+massless
+mastermind
+masterminded
+masterminding
+masterminds
+mastiff
+mastodon
+mastodons
+matchbook
+matchmake
+materialistic
+materiel
+maternity
+mathematic
+matinee
+matriarch
+matriarchal
+matriculate
+matriculated
+matriculates
+matriculating
+matrimonial
+matrimonially
+matting
+maturate
+maturated
+maturates
+maturating
+maturational
+maturations
+maturative
+maudlin
+maudlinly
+maul
+mauler
+maulers
+mauling
+mauls
+mausoleum
+mausoleums
+mauve
+maverick
+mavericks
+maw
+mawkish
+mawkishly
+mawkishness
+maxima
+maxwell
+mayorship
+meadowland
+meadowsweet
+mealier
+mealies
+mealtime
+mealy
+measle
+measled
+measlier
+measly
+meatier
+meatiest
+meatiness
+meaty
+mecca
+mechanist
+mechanistic
+mechanochemically
+mediator
+mediators
+medicate
+medicated
+medicates
+medicating
+medication
+medications
+medicative
+medico
+medicos
+medievalist
+medievalist's
+medievalists
+mediocre
+mediocrities
+mediocrity
+mediumistic
+medley
+medleys
+meetinghouse
+megahertz
+megalomania
+megalomaniac
+megalopolises
+megaton
+megatons
+megavolt
+megawatt
+megohm
+megohms
+melamine
+melange
+melanin
+melanoma
+melee
+meliorate
+meliorated
+meliorates
+meliorating
+melioration
+meliorations
+meliorative
+melodic
+melodically
+melodramatic
+melodramatics
+memento
+mementoes
+mementos
+memorabilia
+memoriam
+menarche
+menarches
+mendacious
+mendaciously
+mendaciousness
+mendacity
+mendelevium
+menfolk
+menfolks
+menopause
+menstrual
+menstruate
+menstruated
+menstruates
+menstruating
+menstruation
+menstruations
+mensurable
+mensurableness
+mensuration
+mensurations
+mercantile
+mercer
+mercers
+merchantability
+mercurial
+mercurially
+mercurialness
+mercuric
+meretricious
+meretriciously
+meretriciousness
+meringue
+meringues
+meritocracy
+meritocratic
+merlin
+mermaid
+mermaid's
+mermaids
+merman
+merman's
+mermen
+merrymaking
+mesa
+mescaline
+mesmeric
+meson
+mesquite
+metabolic
+metabolism
+metabolisms
+metabolite
+metabolites
+metalliferous
+metallography
+metalloid
+metallurgic
+metallurgical
+metallurgically
+metallurgists
+metalsmith
+metalsmithes
+metalwork
+metalworker
+metalworking
+metalworkings
+metamorphic
+metamorphism
+metamorphose
+metamorphosed
+metaphoric
+metaphosphate
+metaphysic
+meteorite
+meteorites
+meteoritic
+meteoritics
+meteoroid
+meteoroid's
+meteoroids
+meteorological
+methane
+methanol
+methodism
+methyl
+methylene
+meticulous
+meticulously
+meticulousness
+metro
+metronome
+metronomes
+metros
+mettle
+mettled
+mettles
+mettlesome
+mezzo
+mezzos
+miasma
+miasmal
+micro
+microamp
+microanalysis
+microanalytic
+microbial
+microchemistry
+microcosm
+microeconomic
+microfossils
+micrography
+microjoule
+microlevel
+micrometeorites
+micrometeoritic
+micrometer
+micrometer's
+micrometers
+micron
+microns
+microorganism
+microorganisms
+micros
+microscopical
+microscopically
+microscopy
+microsimulation
+microsimulations
+microsomal
+microvolt
+microvolts
+midair
+midas
+midband
+middleman
+middlemen
+middleweight
+middleweights
+midge
+midges
+midi
+midland
+midlander
+midlands
+midlife
+midmorn
+midmorning
+midrange
+midscale
+midsection
+midship
+midshipman
+midshipmen
+midships
+midspan
+midstream
+midterm
+midterm's
+midterms
+midweek
+midweekly
+midwife
+midwifed
+midwifing
+midwives
+midyear
+mignon
+migrant
+migrant's
+migrants
+migratories
+migratory
+mike
+mil
+milieu
+milieus
+militarist
+militate
+militated
+militates
+militating
+militiamen
+milkweed
+millenarian
+millenarianism
+millennia
+millennialism
+millennium
+milliamp
+milliampere
+milliamperes
+millidegree
+millidegrees
+millijoule
+millijoules
+milliners
+millinery
+millivolt
+millivoltmeter
+millivoltmeter's
+millivoltmeters
+millivolts
+milliwatt
+milliwatts
+millwright
+millwrights
+mime
+mimeograph
+mimeographed
+mimeographes
+mimeographing
+mimer
+mimesis
+mimetic
+mimetically
+miming
+mincemeat
+minefield
+mineralogical
+mineralogies
+mineralogist
+mineralogists
+mineralogy
+minesweeper
+minesweepers
+mini
+minidress
+minidresses
+minified
+minifies
+minify
+minifying
+minima
+minimalist
+minimalist's
+minimalists
+minimax
+minis
+miniscule
+miniskirt
+ministerial
+ministerially
+ministrations
+miniver
+minuend
+minuends
+minuet
+minuscule
+minuteman
+minutemen
+minutiae
+mirage
+miraged
+mirages
+miraging
+mirthless
+mirthlessly
+mirthlessness
+misalign
+misaligned
+misaligning
+misalignment
+misalignment's
+misalignments
+misaligns
+misanthrope
+misanthropic
+misbegotten
+misbehave
+misbehaved
+misbehaver
+misbehaves
+misbrand
+misbranded
+misbranding
+misbrands
+miscalculated
+miscarriage
+miscarriages
+miscarried
+miscarries
+miscarry
+miscarrying
+miscegenation
+miscegenations
+miscellanies
+miscellany
+misclassification
+misclassified
+misclassifying
+miscode
+miscoded
+miscodes
+miscoding
+misconstruction
+misconstructions
+miscount
+miscounted
+miscounting
+miscounts
+miscreant
+miscreants
+miscue
+miscue's
+miscues
+misdeed
+misdeeds
+misdemeanant
+misdemeanants
+misdirector
+misdirectors
+misfire
+misfired
+misfires
+misfiring
+misgauge
+misgauged
+misgauges
+misgauging
+misidentification
+misidentified
+misidentifies
+misidentify
+misidentifying
+misinterpretation
+misinterpretations
+misjudge
+misjudged
+misjudges
+misjudging
+misjudgingly
+mismanage
+mismanaged
+mismanages
+mismanaging
+misname
+misnamed
+misnames
+misnaming
+misogynist
+misogynist's
+misogynists
+misogyny
+misplacement
+misplacements
+mispronounce
+mispronounced
+mispronounces
+mispronouncing
+mispronunciation
+misquoted
+misrelated
+misreporting
+misrepresent
+misrepresented
+misrepresenter
+misrepresenting
+misrepresents
+misroute
+misrouted
+misroutes
+misshapen
+misshapenly
+misshapenness
+misshapennesses
+misspecification
+misspecified
+misstatement
+misstatements
+misstep
+mistletoe
+mistook
+mistrial
+miswritten
+mitzvahs
+mixup
+mm
+mobbed
+mobbing
+mobcap
+mobcaps
+mobile
+mobiles
+mobster
+mobsters
+mockingbird
+mockup
+mockups
+mod
+modernism
+modernistic
+modernists
+modicum
+modish
+modishly
+modishness
+mods
+moieties
+moiety
+moire
+molal
+molar
+molars
+moldboard
+molehill
+moll
+mollie
+mollification
+mollifications
+mollified
+mollifies
+mollify
+mollifying
+mollusk
+mollusks
+mollycoddle
+mollycoddled
+mollycoddler
+mollycoddles
+mollycoddling
+molybdenite
+molybdenum
+momenta
+momma
+mommy
+monad
+monadic
+monads
+monarchic
+monasticism
+monaural
+monaurally
+monetarism
+moneylenders
+moneymaking
+mongoose
+mongooses
+monies
+monkish
+monochromatic
+monochromator
+monocle
+monocled
+monocles
+monoclinic
+monocular
+monocularly
+monogamous
+monogamously
+monogamousness
+monogamy
+monolingual
+monolingualism
+monolinguals
+monolith
+monolithically
+monologist
+monologists
+monologue
+monologues
+monomer
+monomer's
+monomeric
+monomers
+monomial
+mononuclear
+monophonic
+monopolistic
+monopolists
+monosyllabic
+monosyllable
+monosyllables
+monotheistic
+monsieur
+monsoon
+monsoons
+monstrosities
+monstrosity
+montage
+montaged
+montages
+montaging
+monumentality
+moo
+moodily
+mooed
+moos
+mope
+mopes
+mopped
+mopping
+moraine
+moralist
+moralistic
+moratorium
+moratoriums
+morbidity
+mordant
+mordantly
+morgen
+morgue
+morgues
+moribund
+morocco
+moronic
+morose
+morosely
+moroseness
+morpheme
+morphemic
+morphine
+morphines
+morphism
+morphism's
+morphisms
+morphologic
+morphophonemic
+morphophonemics
+morris
+mortgagee
+mortgagees
+mortician
+morticians
+mosque
+mosques
+motherhood
+motherland
+moths
+motional
+motivator
+motorman
+motormen
+mottle
+mottled
+mottler
+mottles
+mottling
+mountable
+mountainside
+mountainsides
+mousier
+mousiness
+mousy
+mouthpiece
+mouthpieces
+mucilage
+mucky
+mucus
+mudding
+muddlehead
+muddleheaded
+muddleheadedness
+muddleheads
+mudguard
+mudsling
+mudslinger
+mudslingers
+mudslinging
+muggers
+muggier
+mugginess
+mugging
+muggings
+muggy
+mulatto
+mulattoes
+mulattos
+mulch
+mulched
+mulches
+mulching
+mulct
+mulish
+mulishly
+mulishness
+mull
+mullah
+mullen
+muller
+mulligan
+mulligatawny
+mulling
+multi
+multichannel
+multicollinearity
+multicolumn
+multicomputer
+multicomputer's
+multicomputers
+multidimensionality
+multidisciplinary
+multifaceted
+multifigure
+multifunctioned
+multilateral
+multilaterally
+multimedia
+multimegaton
+multimillionaire
+multinomial
+multiplet
+multiplets
+multipliable
+multipurpose
+multisyllabic
+multitudinous
+multitudinously
+multitudinousness
+multivalent
+multiversity
+mum
+mummification
+mummifications
+mummified
+mummify
+munge
+munged
+munger
+mungers
+munges
+munging
+mungings
+munificent
+munificently
+muon
+muriatic
+murk
+muscovite
+muscovites
+musculature
+mush
+musher
+musicality
+musicianship
+musicologists
+musicology
+muskellunge
+muskmelon
+muskox
+muskoxen
+muss
+mussed
+musses
+mussing
+must've
+mustachio
+mustachioed
+mustachios
+mustang
+mustangs
+mustn't
+mutant
+mutants
+mutational
+mutationally
+mutineer
+mutt
+mutuality
+mycology
+myers
+mylar
+mynah
+myocardial
+myocardium
+myopia
+myopic
+mystification
+mystified
+mystifier
+mystifies
+mystify
+mystifying
+mystifyingly
+mystique
+mythic
+mythographer
+mythographers
+mythography
+mythological
+mythologically
+myths
+n's
+nab
+nabbed
+nabbing
+nadir
+nagged
+nagging
+naggingly
+nameplate
+nameplates
+naphtha
+napped
+napping
+narcissist
+narcosis
+narrate
+narrated
+narrates
+narrating
+narration
+narrations
+narrator
+narrators
+nary
+nasality
+nascent
+nasturtium
+natal
+natalist
+natality
+natch
+nationalism
+nationalisms
+nationalistic
+nationhood
+nattier
+nattiness
+natty
+naturalistic
+nausea
+nauseas
+nauseate
+nauseated
+nauseates
+nauseating
+nauseatingly
+nautical
+nautically
+nautilus
+navel
+navels
+nd
+nearsighted
+nearsightedly
+nearsightedness
+nebulae
+nebular
+nebulous
+nebulously
+nebulousness
+neckline
+necromancer
+necromancers
+necromancy
+necromantic
+necropsy
+necrosis
+necrotic
+nectar
+nectaries
+nectarous
+nectary
+nee
+needlepoint
+negativism
+negativisms
+negativity
+negligee
+negligees
+negligent
+negligently
+negotiant
+negroid
+nelson
+nematic
+nematode
+nematodes
+nemesis
+neoclassic
+neoclassical
+neocortex
+neodymium
+neolithic
+neologism
+neologism's
+neologisms
+neomycin
+neon
+neonatal
+neonatally
+neoned
+neoplasms
+neoprene
+neptunium
+nerveless
+nervelessly
+nervelessness
+nervier
+nerviness
+nervy
+netherworld
+nettlesome
+neuralgia
+neurasthenic
+neuritis
+neuroanatomy
+neurologist
+neurology
+neuromuscular
+neuronal
+neuropathology
+neurophysiology
+neuropsychiatric
+neuroses
+neurosis
+neurotic
+neuter
+neutered
+neuterer
+neuterers
+neutering
+neuterings
+neuters
+neutralism
+neutralist
+neutralists
+neutron
+neutrons
+newel
+newfound
+newfoundland
+newlywed
+newlyweds
+newsboy
+newsboys
+newscast
+newscaster
+newscasters
+newscasting
+newscasts
+newspaperman
+newspapermen
+newsreel
+newsstand
+newsworthiness
+newsworthy
+newton
+nexus
+nexuses
+nichrome
+niggard
+niggardliness
+niggardly
+niggle
+niggled
+niggler
+niggles
+niggling
+nigglingly
+nightcap
+nightclub
+nightclubs
+nightdress
+nighthawk
+nightmarish
+nightmarishly
+nightshirt
+nighttime
+nihilism
+nihilisms
+nihilist
+nihilistic
+nilpotent
+nimbus
+nimbused
+nimbuses
+ninefold
+niobium
+nipped
+nipping
+nippingly
+nipple
+nipples
+nirvana
+nitpick
+nitrate
+nitrated
+nitrates
+nitrating
+nitration
+nitrations
+nitric
+nitride
+nitriding
+nitrite
+nitrogenous
+nitroglycerine
+nitrous
+nm
+nob
+nobelium
+noblemen
+noblesse
+nocturne
+nodal
+nodally
+nodular
+nodule
+nodules
+noisemake
+noisemaker
+noisemakers
+noisemaking
+nominee
+nominees
+nonacid
+nonadjacent
+nonagricultural
+nonbusiness
+noncarbohydrate
+nonchalant
+nonchalantly
+nonchalantness
+noncombatant
+noncommissioned
+noncommittal
+noncommittally
+noncompliance
+nonconformist
+nonconformists
+noncontiguous
+nondiscriminatory
+nondurable
+noneconomic
+nonemergency
+nonequivalence
+nonequivalent
+nonessential
+nonferrous
+nonfiction
+nonionic
+nonlinguistic
+nonliterary
+nonmagical
+nonmetallic
+nonogenarian
+nonpartisan
+nonpayment
+nonperturbing
+nonpoisonous
+nonpolitical
+nonprescription
+nonprofit
+nonracial
+nonrandom
+nonreducing
+nonresident
+nonresidential
+nonresistance
+nonrespondent
+nonrespondents
+nonresponse
+nonsingular
+nonstop
+nonsupervisory
+nonverbal
+nonverbally
+nonveteran
+nonveterans
+nonviolent
+nonviolently
+nonvolunteer
+nonvolunteers
+nonwhite
+noodle
+noodled
+noodles
+noodling
+noontime
+noose
+nooses
+noosing
+noradrenalin
+noradrenaline
+normative
+normatively
+normativeness
+northbound
+northernmost
+northland
+norths
+nosebleed
+nosebleed's
+nosebleeds
+nosier
+nosiness
+nostalgia
+nostalgic
+nostalgically
+nosy
+notary
+notate
+notated
+notates
+notating
+notative
+notoriety
+nouveau
+nouvelle
+nova
+nova's
+novas
+novitiate
+novitiates
+noxious
+noxiously
+noxiousness
+nozzle
+nozzles
+nth
+nuance
+nuanced
+nubile
+nucleate
+nucleated
+nucleation
+nuclei
+nucleic
+nucleoli
+nucleolus
+nuclide
+nude
+nudely
+nudeness
+nuder
+nudes
+nudest
+nudge
+nudged
+nudger
+nudges
+nudging
+nudism
+nudist
+nudists
+nudity
+nugatory
+nugget
+nuggets
+nullity
+numerable
+numerate
+numerated
+numerates
+numerating
+numeration
+numerations
+numerological
+numerology
+numinous
+numismatic
+numismatics
+numismatist
+nutate
+nutated
+nutates
+nutating
+nutation
+nutcrack
+nutcracker
+nutmeg
+nutrient
+nutrients
+nutritional
+nutritionally
+nutritionist
+nutritionists
+nutritious
+nutritiously
+nutritiousness
+nutritive
+nutritively
+nutshell
+nuttier
+nuttiness
+nutty
+nuzzle
+nuzzled
+nuzzles
+nuzzling
+nylon
+nylons
+nymphomania
+nymphomaniac
+nymphomaniacs
+o's
+oaf
+oafs
+oakwood
+oases
+obduracy
+obdurate
+obdurately
+obdurateness
+obeisant
+obeisantly
+obelisk
+obese
+obesity
+obfuscatory
+obit
+obiter
+obituaries
+obituary
+objectification
+objectifications
+objectified
+objectifies
+objectify
+objectifying
+objectivity
+obligational
+obnoxious
+obnoxiously
+obnoxiousness
+oboe
+oboes
+oboist
+obscenities
+obscenity
+obsequies
+obsequious
+obsequiously
+obsequiousness
+obsequy
+observably
+observational
+observationally
+obsess
+obsessed
+obsesses
+obsessive
+obsessively
+obsessiveness
+obsidian
+obsolescent
+obsolescently
+obtrude
+obtruded
+obtruder
+obtrudes
+obtruding
+obtrusive
+obtrusively
+obtrusiveness
+obtuse
+obtusely
+obtuseness
+obtuser
+obtusest
+obverse
+obversely
+ocarina
+occident
+occidental
+occidentally
+occipital
+occipitally
+occlusive
+occult
+occulter
+occultly
+oceanic
+oceanographic
+oceanography
+oceanside
+ocelot
+octagon
+octagonal
+octagonally
+octagons
+octahedron
+octane
+octennial
+octet
+octile
+octillion
+octogenarian
+octoroon
+ocular
+oculist
+odium
+odometer
+odometer's
+odometers
+odyssey
+offal
+offbeat
+offertories
+offertory
+offhand
+offhanded
+offhandedly
+offhandedness
+officeholder
+officeholders
+officemate
+officemates
+officialdom
+offload
+offloaded
+offloading
+offloads
+offramp
+offsetting
+offshoot
+offshore
+offstage
+ogive
+ogled
+ohm
+ohmic
+ohmmeter
+ohmmeter's
+ohmmeters
+ohms
+oilman
+oilmen
+oilseed
+oilseeds
+oldies
+oldster
+oldsters
+oldy
+oleander
+oleanders
+oleomargarine
+oligarchic
+oligarchy
+oligopolistic
+oligopoly
+omega
+omegas
+omelet
+omelets
+omicron
+omni
+omnibus
+omnipotence
+omnipotent
+omnipotently
+oncology
+oncoming
+onetime
+oneupmanship
+onlooker
+onlookers
+onrush
+onrushing
+onslaught
+onslaughts
+ontogeny
+ontological
+ontologically
+ontology
+onus
+onyx
+oodles
+opalescent
+opalescently
+operant
+operantly
+operants
+operatic
+operetta
+ophthalmic
+ophthalmologist
+opinionated
+opinionatedly
+opinionatedness
+opossum
+opposable
+opprobrium
+opthalmic
+opthalmologic
+opthalmology
+opticians
+optimist
+optimists
+optionality
+optometric
+optometrist
+optometrists
+optometry
+opulent
+opulently
+opus
+opuses
+orangutan
+orate
+orated
+orates
+orating
+oratorical
+oratorically
+oratorio
+oratorios
+orchestral
+orchestrally
+orchestrate
+orchestrated
+orchestrater
+orchestrates
+orchestrating
+orchestration
+orchestrations
+ordnance
+ordnances
+oregano
+organdy
+organically
+organismic
+organometallic
+orgasm
+orgasms
+orgiastic
+oriental
+orientally
+oriole
+orioles
+ornate
+ornately
+ornateness
+orneriness
+ornery
+orographic
+orography
+orphanage
+orphanages
+orphanhood
+orthodontic
+orthodontics
+orthodontist
+orthodontists
+orthodoxy
+orthographic
+orthographies
+orthography
+orthonormal
+orthophosphate
+orthophosphates
+osmium
+osmosis
+osmotic
+osprey
+ospreys
+osseous
+osseously
+ossification
+ossifications
+ossified
+ossify
+ostensible
+ostensibly
+ostentatious
+ostentatiously
+ostentatiousness
+osteology
+osteopath
+osteopathic
+osteopaths
+osteopathy
+osteoporosis
+ostracism
+otherworld
+otherworldliness
+otherworldly
+ouch
+oughtn't
+oust
+ousted
+ouster
+ousting
+outage
+outage's
+outages
+outback
+outboard
+outboards
+outclass
+outclassed
+outcrops
+outdated
+outdatedness
+outdistanced
+outdistancing
+outdo
+outdrew
+outface
+outfield
+outfielder
+outfielders
+outfitted
+outflow
+outflows
+outfought
+outfox
+outgeneraled
+outgrip
+outhouse
+outland
+outlander
+outlanders
+outlandish
+outlandishly
+outlandishness
+outlawry
+outliers
+outlying
+outmatched
+outmigration
+outmoded
+outnumber
+outnumbered
+outnumbering
+outnumbers
+outpatient
+outpatients
+outplayed
+outpour
+outpouring
+outpourings
+outreach
+outrigger
+outriggers
+outscoring
+outshone
+outsized
+outsmart
+outsmarted
+outsmarting
+outsmarts
+outspoken
+outspokenly
+outspokenness
+outspread
+outstate
+outstation
+outworn
+ouzo
+ova
+ovate
+ovates
+ovation
+ovationed
+ovationing
+ovations
+overabundance
+overactive
+overage
+overaggressive
+overarching
+overbearing
+overbearingly
+overbearingness
+overburden
+overburdened
+overburdening
+overburdeningly
+overburdens
+overcerebral
+overconfident
+overconfidently
+overconsumption
+overcooked
+overcooled
+overcorrection
+overcurious
+overdeveloped
+overdoing
+overdriving
+overeager
+overeagerly
+overeagerness
+overeat
+overeaten
+overeater
+overeating
+overeducated
+overexcited
+overexploitation
+overexploited
+overexpose
+overextend
+overextended
+overextending
+overextends
+overextension
+overfall
+overfeed
+overfill
+overfilled
+overfilling
+overfills
+overgenerous
+overgrazing
+overgrown
+overhand
+overhanded
+overheat
+overheated
+overheating
+overheats
+overindulged
+overlords
+overloud
+overpaid
+overpayment
+overplayed
+overplaying
+overpopulated
+overpopulation
+overpressure
+overprice
+overpriced
+overprotection
+overprotective
+overran
+overrated
+overreach
+overreached
+overreacher
+overreaches
+overrepresented
+oversample
+oversampled
+oversampling
+oversaturate
+overshoes
+oversize
+oversized
+oversizes
+oversoft
+oversoftness
+overspill
+overstay
+overstepping
+overstraining
+overstrike
+overstrikes
+overstriking
+oversubscribed
+oversupply
+overtaxed
+overwrap
+oviform
+ovulatory
+owlish
+owlishly
+owlishness
+owly
+oxalate
+oxalic
+oxaloacetic
+oxcart
+oxidant
+oxidate
+oxidations
+oxidative
+oxidatively
+oxygenate
+oxygenated
+oxygenates
+oxygenating
+oxygenation
+oxygenations
+oxyhydroxides
+ozone
+p's
+pH
+pacemaker
+pacesetting
+pacifism
+pacifist
+pacifistic
+paddock
+padlock
+padlocked
+padlocks
+padre
+paean
+paeans
+paganism
+pageantry
+pagoda
+pagodas
+paintbrush
+palatability
+palatable
+palatableness
+palatal
+palatally
+palefaces
+palette
+palindrome
+palindromes
+palindromic
+palisade
+palisades
+palladium
+pallet
+palmetto
+palmist
+palpable
+palpably
+palsied
+palsies
+palsy
+palsying
+paltrier
+paltriness
+paltry
+pamper
+pampered
+pamperer
+pampering
+pampers
+panama
+pancreatic
+pandemic
+panicked
+panicky
+panjandrum
+panoplied
+panoply
+panorama
+panoramas
+panoramic
+pantheism
+pantheist
+pantheon
+pantomime
+pantomimed
+pap
+papen
+paperboard
+paperhangers
+paperiness
+paperweight
+paperweights
+papery
+papillary
+papoose
+pappies
+pappy
+papyri
+papyrus
+papyruses
+parable
+parables
+parabola
+parabolic
+paraboloid
+paraboloidal
+paradigmatic
+paradoxic
+parakeet
+parakeets
+parallelepiped
+parallelepipeds
+paramagnet
+paramagnetic
+paramedical
+parametrically
+paranoiac
+paranoiacs
+paranormal
+paranormally
+paraphernalia
+paraplegic
+paraprofessional
+paraprofessionals
+parapsychology
+parasol
+parasols
+parasympathetic
+paratroop
+paratrooper
+paratroopers
+paratroops
+parboil
+parboiled
+parenthetic
+pariah
+parimutuel
+parimutuels
+parishioner
+parishioners
+parkish
+parkland
+parklike
+parkway
+parlance
+parlay
+parlayed
+parley
+parleys
+parliamentarian
+parliamentarians
+parochial
+parochialism
+parochialism's
+parochialisms
+parochially
+parodied
+parodies
+parody
+parolee
+parolees
+parquet
+parqueted
+parqueting
+parrotlike
+parsec
+parsecs
+parsimonious
+parsimoniously
+parsnip
+parsonage
+participial
+participially
+participle
+participles
+particularistic
+particularity
+particulate
+particulates
+partook
+parvenu
+passable
+passband
+passerby
+passersby
+pasta
+pasteboard
+pastel
+pastels
+pasteup
+pastiche
+pastier
+pasties
+pastiness
+pasty
+patchier
+patchiness
+patchy
+patentee
+patentees
+paternalism
+paternalistic
+paternity
+paternoster
+pathless
+pathlessness
+pathogen
+pathogenesis
+pathogenic
+pathogens
+pathologic
+patina
+patinas
+patio
+patios
+patriarchal
+patriarchies
+patriarchy
+patrimonial
+patrimony
+patristic
+patristics
+patrolled
+patrolling
+patrolman
+patrolmen
+patroness
+patted
+patting
+paunch
+paunchier
+paunchiness
+paunchy
+pauper
+pawnshop
+pawnshop's
+pawnshops
+payday
+payload
+payload's
+payloads
+paymaster
+paymasters
+peacemaking
+peacetime
+peacetimes
+peaky
+peasanthood
+pecan
+pecans
+peccadilloes
+peccary
+pectoral
+pectorals
+peculate
+peculated
+peculates
+peculating
+peculation
+pecuniary
+pedagogue
+pedagogy
+pedal
+pedals
+pedant
+pedantry
+peddle
+peddled
+peddles
+peddling
+pediatrician
+pedigree
+pedigreed
+pediment
+pedimented
+peephole
+peepy
+peerage
+peevish
+peevishly
+peevishness
+pegboard
+pegboards
+pegged
+pegging
+pejorative
+pejoratively
+pejoratives
+pelican
+pelicans
+pellagra
+pelvic
+pelvis
+pelvises
+pemmican
+penal
+penally
+penchant
+pendant
+penicillin
+penitential
+penitentially
+penknife
+penknife's
+penknives
+penman
+penmen
+pennant
+pennants
+pentagonal
+pentagonally
+pentecostal
+penultimate
+penultimately
+penurious
+penuriously
+penuriousness
+penury
+peonies
+peony
+peppergrass
+peppermint
+peppermints
+pepperoni
+peppery
+peppier
+peppiness
+pepping
+peppy
+peptidase
+peptidases
+peptide
+peptides
+percept
+percolator
+percolators
+percussion
+percussions
+percussive
+percussively
+percussiveness
+perdition
+perditions
+perfectibility
+perfectible
+perfectionism
+perfidious
+perfidiously
+perfidiousness
+perfidy
+perforate
+perforated
+perforates
+perforating
+perforation
+perforations
+perfumery
+perfunctorily
+perfunctoriness
+perfunctory
+perfusion
+perihelion
+perimeter
+periodicities
+periodicity
+periodontal
+periodontally
+peripatetic
+periphrastic
+periscope
+periscopes
+periwinkle
+periwinkles
+perjure
+perjured
+perjurer
+perjures
+perjuring
+perjury
+perk
+perked
+perkier
+perkiness
+perking
+perks
+perky
+permalloy
+permanency
+permeable
+permeableness
+pernicious
+perniciously
+perniciousness
+peroxide
+perpetuity
+perquisite
+perquisites
+persecutory
+persiflage
+persimmon
+persimmons
+persona
+personae
+perspicacious
+perspicaciously
+perspicaciousness
+perspicuity
+perspire
+perspired
+perspires
+perspiring
+pert
+pertinacious
+pertinaciously
+pertinaciousness
+pertinence
+pertly
+pertness
+pervasion
+perverse
+perversely
+perverseness
+perversion
+perversions
+perversive
+peskier
+pesky
+pessimism
+pessimist
+pessimists
+pesticide
+pesticides
+pestilent
+pestilential
+pestilentially
+pestilently
+pestle
+pestled
+pestles
+pestling
+petite
+petiteness
+petits
+petri
+petrification
+petrified
+petrify
+petrochemical
+petroglyph
+petrol
+petrology
+pettish
+pettishly
+pettishness
+petulance
+petulances
+petulant
+petulantly
+petunia
+peyote
+pfennig
+phagocyte
+phagocytes
+phalanger
+phalanx
+phalanxes
+phantasy
+pharmaceutic
+pharmaceutical
+pharmaceutically
+pharmaceuticals
+pharmaceutics
+pharmacies
+pharmacist
+pharmacists
+pharmacological
+pharmacologically
+pharmacology
+pharmacy
+pharyngeal
+pharynx
+pharynxes
+phenol
+phenolic
+phenotype
+phenyl
+phi
+philander
+philandered
+philanderer
+philanderer's
+philanderers
+philandering
+philanders
+philanthropic
+philanthropies
+philanthropist
+philanthropists
+philanthropy
+philharmonic
+philodendron
+philological
+philologically
+philologists
+philology
+phlegm
+phlox
+phobic
+phoebe
+phoenix
+phonetically
+phonic
+phonics
+phonier
+phonies
+phoniness
+phonologic
+phonological
+phonologically
+phonology
+phony
+phosphide
+phosphine
+phosphines
+phosphor
+phosphoresce
+phosphorescent
+phosphorescently
+phosphors
+phosphorus
+photochemical
+photochemically
+photoelectronic
+photoelectrons
+photoengravers
+photogenic
+photographically
+photoluminescence
+photolysis
+photolytic
+photometric
+photometry
+photomicrograph
+photomicrography
+photon
+photon's
+photons
+photorealism
+photosensitive
+phrasemaking
+phraseologies
+phraseology
+phraseology's
+phylogeny
+physiochemical
+physiognomy
+physiologic
+physiologist
+physiotherapist
+physiotherapy
+phytoplankton
+pianism
+pianissimo
+pianist
+pianistic
+pianists
+pica
+piccolo
+pickaxe
+pickerel
+pickerels
+pickier
+pickoff
+pickoffs
+picky
+picnicked
+picnicker
+picnickers
+picnicking
+picofarad
+picofarads
+picojoule
+piddle
+piddling
+pidgin
+piedmont
+piezoelectric
+piezoelectricity
+pigeonhole
+pigeonholed
+pigeonholes
+pigeonholing
+pigging
+piggish
+piggishly
+piggishness
+piggy
+pigmentation
+pigmentations
+pigpen
+pigpens
+pigroot
+pigskin
+pigsty
+pigtail
+pigtailed
+pilfer
+pilfered
+pilferer
+pilfering
+pilfers
+pilloried
+pillories
+pillory
+pillorying
+pimento
+pimp
+pimping
+pimple
+pimpled
+pimples
+pimplike
+pimply
+pimps
+pinafore
+pinafores
+pinball
+pincushion
+pinhead
+pinheaded
+pinheadedness
+pinheads
+pinhole
+pinholes
+pinkie
+pinkies
+pinkish
+pinkishness
+pinochle
+pintail
+pintails
+pinto
+pinwheel
+pion
+pip
+pipet
+pipette
+piquant
+piquantly
+piquantness
+piracy
+pirouette
+pirouetting
+pistachio
+pistole
+pistoleers
+pitchblende
+pitchfork
+pitchfork's
+pitchforks
+pitchstone
+pitman
+piton
+piton's
+pitons
+pittance
+pittance's
+pittances
+pitting
+pituitary
+pixies
+pixiness
+pixmap
+pixmap's
+pixmaps
+pixy
+pizza
+pizzicato
+placate
+placated
+placater
+placates
+placating
+placation
+placative
+placeable
+placeless
+placelessly
+placenta
+placental
+plagiarism
+plagiarist
+plainclothes
+planeload
+planetaria
+planetarium
+planetesimal
+planetoid
+planetoids
+plankton
+planoconcave
+planoconvex
+plantain
+plaque
+plaques
+plasm
+plastically
+platitude
+platitudes
+platitudinous
+platitudinously
+platonic
+platoon
+platoons
+platted
+plausibly
+playback
+playbacks
+playboy
+playboys
+playhouse
+playhouses
+playoff
+playroom
+playtime
+playwriting
+plaza
+plazas
+pleat
+pleated
+pleater
+pleats
+plenipotentiary
+plenitude
+plenum
+plethora
+pleura
+pleural
+pleuras
+pliable
+pliableness
+pliancy
+pliant
+pliantly
+pliantness
+plink
+plinked
+plinker
+plinking
+plinks
+plodded
+plodding
+ploddingly
+plop
+plopped
+plopping
+plosive
+plover
+plovers
+pluggable
+plummer
+plummet
+plummeted
+plummets
+plunk
+plunker
+plunkers
+plunking
+pluralism
+pluralist
+pluralistic
+pluralists
+plushier
+plushiness
+plushy
+plutonium
+plywood
+pneumatic
+pneumatics
+pock
+pocketful
+pocketknife
+pocketknife's
+pocketknives
+podge
+podger
+podgers
+podia
+podium
+poesies
+poesy
+pogo
+pogrom
+pogroms
+poignancy
+poignant
+poignantly
+poinsettia
+pokerface
+pokerfaced
+pol
+polarimeter
+polarimeter's
+polarimeters
+polarimetry
+polariscope
+polarogram
+polarogram's
+polarograms
+polarograph
+polarography
+polecat
+polemical
+polemically
+policymaker
+policymakers
+policymaking
+polio
+polis
+politburo
+politicking
+politico
+politicos
+polities
+polka
+polka's
+polkas
+pollock
+pollutant
+pollutants
+polonaise
+polonium
+polybutene
+polybutenes
+polychemicals
+polycrystalline
+polyelectrolytes
+polyester
+polyesters
+polyether
+polyethers
+polyethylene
+polygamous
+polygamously
+polygamy
+polygonal
+polygonally
+polygynous
+polyhedra
+polyhedral
+polyhedron
+polyisobutylene
+polyisocyanates
+polymerase
+polymeric
+polymorph
+polymorphic
+polymyositis
+polyphony
+polyphosphate
+polyphosphates
+polypropylene
+polystyrene
+polytechnic
+polytonal
+polytonally
+polyunsaturated
+pomegranate
+pompadour
+pompano
+pompons
+pomposity
+poncho
+pons
+pontiff
+pontifical
+pontificals
+pontificate
+pontificated
+pontificates
+pontificating
+pontification
+pooch
+pooched
+poodle
+pooh
+popcorn
+poplin
+popper
+poppyseed
+popularism
+porcine
+porgy
+pornographer
+pornography
+porosity
+porous
+porously
+porousness
+porpoise
+porpoises
+portage
+portaged
+portaging
+portent
+portentous
+portentously
+portentousness
+portents
+porterhouse
+portfolio
+portfolios
+portmanteau
+portmanteaus
+portraiture
+portrayal
+portrayals
+poseur
+poseurs
+posh
+poshest
+positivism
+positivist
+positivists
+positron
+posse
+posses
+postdate
+postdated
+postdates
+postdating
+postdoctoral
+posteriori
+postfix
+postfixed
+postfixes
+postfixing
+postgraduate
+posthumous
+posthumously
+posthumousness
+postlude
+postludes
+postmarital
+postmark
+postmarked
+postmarks
+postmen
+postmortem
+postoperative
+postoperatively
+postorder
+postpartum
+postponement
+postpositions
+postsecondary
+postvocalic
+postwar
+potable
+potableness
+potage
+potbellied
+potbelly
+potboil
+potboiler
+potboilers
+potency
+pothole
+potholed
+potholing
+potion
+potions
+potlatch
+potlatches
+potluck
+potpourri
+poultice
+poultices
+pow
+powderpuff
+powdery
+practicability
+pragmatism
+pragmatist
+pragmatists
+praiseworthiness
+praiseworthy
+pram
+prams
+praseodymium
+prattle
+prattled
+prattler
+prattles
+prattling
+prattlingly
+praxes
+praxis
+prayerful
+prayerfully
+prayerfulness
+preamble
+preambles
+prearranged
+precautionary
+precess
+precessed
+precesses
+precessing
+precession
+prechlorination
+precipitable
+precocity
+precode
+precoded
+precollege
+precolonial
+preconscious
+precooked
+precut
+predator
+predator's
+predators
+predatory
+predecline
+predestined
+predicator
+predigested
+predilect
+predilection
+predilections
+predispose
+predisposed
+predisposes
+predisposition
+predispositions
+predoctoral
+predominance
+preeminence
+preeminent
+preeminently
+preemployment
+preemptor
+preen
+preener
+preening
+preexistent
+preexisting
+prefab
+prefabricate
+prefabricated
+prefabrication
+prefatory
+prefect
+prefects
+prefecture
+prefectures
+preferment
+prefiguration
+preflight
+preflighted
+preflighting
+preflights
+pregnancies
+pregnancy
+preindustrial
+preinterview
+preisolated
+prejudicial
+prejudicially
+prejudicialness
+preliterate
+premarital
+premaritally
+premarket
+premeditate
+premeditation
+premeditative
+premix
+premixed
+premonition
+premonitions
+premonitory
+preordainment
+prep
+prepackaged
+prepayment
+preponderance
+preponderances
+preponderant
+preponderantly
+preponderate
+preponderately
+preponderating
+preponderation
+prepping
+preprepared
+preprocessing
+prepubescent
+prepublication
+preradiation
+presage
+presaged
+presager
+presages
+presaging
+preschool
+preschooler
+prescience
+prescience's
+prescript
+presentable
+presentableness
+presentational
+presentments
+presoaks
+pressman
+pressmen
+prestidigitate
+prestidigitation
+prestidigitator
+prestigious
+prestigiously
+prestigiousness
+presto
+prestos
+presumable
+presupposition
+presuppositions
+pretest
+pretested
+pretesting
+pretests
+pretrial
+pretzels
+prevision
+previsioned
+previsioning
+previsions
+prewar
+prickle
+prickled
+prickling
+priestess
+priestesses
+prig
+priggish
+priggishly
+priggishness
+prim
+primal
+primate
+primates
+primitivism
+primly
+primness
+primordial
+primordially
+primp
+primping
+printmake
+printmaker
+printmakers
+printmaking
+prismatic
+prissier
+prissiness
+prissy
+pristine
+pristinely
+privateer
+privateer's
+privateers
+probabilist
+probity
+procaine
+processional
+processionally
+procreate
+procreation
+procreative
+procreativity
+procrustean
+proctor
+proctor's
+proctored
+proctoring
+proctors
+prod
+prodded
+prodding
+prodigies
+prodigy
+prof
+profanity
+professorial
+professorially
+professorship
+profligate
+profligately
+profligates
+profoundity
+profundity
+profuse
+profusely
+profuseness
+profusion
+progenitor
+prognoses
+prognosis
+prognosticate
+prognostication
+prognosticative
+prognosticator
+progressivism
+prohibitory
+projectile
+projectiles
+projectionist
+projectionists
+prolate
+prolifically
+prolix
+prolixity
+prolixly
+prolongate
+prolongated
+prolongates
+prolongating
+prolongation
+promethium
+promptitude
+promulgators
+pronto
+proofreader
+proofreading
+proofreads
+propagandist
+propagandistic
+propagandists
+propane
+propellant
+propellants
+propelling
+prophetically
+propinquity
+propionate
+propitiate
+propitiation
+proportionality
+proportionate
+propped
+propping
+proprietorship
+proprietorships
+proprioception
+proprioceptive
+propylene
+prorate
+prorated
+prorating
+proration
+prosaic
+proscenium
+prosceniums
+proscribe
+proscribed
+proscriber
+proscribes
+proscribing
+proscription
+prosecutor
+prosecutors
+prosodies
+prosody
+prostate
+prosthetic
+prosthetics
+prostitute
+prostitutes
+protactinium
+protagonist
+protagonists
+protean
+protease
+proteases
+protectionist
+proteolysis
+proteolytic
+protestant
+protoplasmic
+prototypic
+protozoa
+protozoan
+protract
+protracted
+protractive
+protrusive
+protrusively
+protrusiveness
+protuberance
+protuberant
+provenance
+proverbial
+proverbially
+provident
+providential
+providentially
+providently
+provincialism
+proviso
+provocateur
+provocateurs
+provocative
+provocatively
+provocativeness
+provost
+proxies
+proxy
+prudential
+prudentially
+prurient
+pruriently
+psalmist
+pseudonym
+pseudonym's
+pseudonyms
+psi
+psych
+psychedelic
+psychiatric
+psychic
+psychic's
+psychical
+psychically
+psychics
+psycho
+psychoacoustic
+psychoacoustics
+psychoactive
+psychoanalysis
+psychoanalyst
+psychoanalytic
+psychobiology
+psychocultural
+psycholinguistic
+psycholinguistics
+psychometric
+psychometrics
+psychometry
+psychopath
+psychopathic
+psychophysic
+psychophysical
+psychophysically
+psychophysics
+psychophysiology
+psychos
+psychoses
+psychosis
+psychosomatic
+psychosomatics
+psychotherapeutic
+psychotherapeutics
+psychotherapists
+psychotherapy
+psychotic
+ptarmigan
+puberty
+pubescent
+publicists
+puck
+puckish
+puckishly
+puckishness
+puddly
+pudgier
+pudginess
+pudgy
+pueblo
+pueblos
+puerile
+puerilely
+puffball
+puffballs
+puffery
+puffin
+puffiness
+puffins
+puffy
+puissant
+puissantly
+puke
+puked
+pukes
+puking
+pullover
+pulmonary
+pulsar
+pulsar's
+pulsars
+pulsate
+pulsated
+pulsates
+pulsating
+pulsation
+pulsations
+pulverable
+puma
+puma's
+pumice
+pumiced
+pumicing
+pummel
+pummels
+punctuality
+punctuate
+punctuated
+punctuates
+punctuating
+pundit
+punditry
+pundits
+pungency
+pungent
+pungently
+punk
+punkier
+punkies
+punkiness
+punks
+punky
+punster
+punsters
+pupal
+pupate
+pupated
+pupates
+pupating
+pupation
+puppeteer
+puppeteers
+puppyish
+purgation
+purgative
+purgatory
+purism
+purist
+purists
+puritan
+puritanic
+puritanical
+puritanically
+puritans
+purloin
+purloined
+purloiner
+purloining
+purloins
+purposeless
+purposelessly
+purposelessness
+pursuant
+purvey
+purveyed
+purveying
+purveyor
+purveyors
+purveys
+pus
+pushier
+pushiness
+pushup
+pushy
+pussycat
+putative
+putatively
+putrefy
+putrid
+putridly
+putridness
+putt
+putted
+puttied
+putties
+putty
+puttying
+pyknotic
+pyramidal
+pyramidally
+pyre
+pyridine
+pyrolysis
+pyrometer
+pyrometer's
+pyrometers
+pyrometry
+pyrophosphate
+pyrotechnic
+pyrotechnics
+pyroxene
+pyroxenite
+python
+pythons
+q's
+quackery
+quad
+quadrangle
+quadrangles
+quadrangular
+quadrapole
+quadrennial
+quadrennially
+quadric
+quadriceps
+quadrilateral
+quadrilaterals
+quadrille
+quadrilles
+quadrillion
+quadrillionth
+quadripartite
+quadripartitely
+quadripartition
+quadriplegic
+quadrivium
+quadruplicate
+quadruplicated
+quadruplicates
+quadruplicating
+quadruplication
+quadruplications
+quaff
+quaffer
+quahog
+quantile
+quantiles
+quarryman
+quarrymen
+quarterback
+quarterbacks
+quartermaster
+quartermasters
+quartile
+quartiles
+quartzite
+quasar
+quasar's
+quasars
+quaternaries
+quaternary
+quatrain
+queasier
+queasiness
+queasy
+querulous
+querulously
+querulousness
+quibble
+quibbled
+quibbler
+quibbles
+quibbling
+quiche
+quiches
+quickie
+quickies
+quicklime
+quicksand
+quicksands
+quickstep
+quicksteps
+quiescent
+quiescently
+quiescentness
+quincy
+quinquennial
+quinquennially
+quint
+quintessential
+quintet
+quintets
+quintile
+quintiles
+quintillion
+quintillionth
+quip
+quipping
+quips
+quirk
+quirking
+quirks
+quirt
+quixotic
+quizzical
+quizzically
+quonset
+quorum
+r's
+rabbi
+rabbinical
+rabbinically
+rabid
+rabidly
+rabidness
+rabies
+racetrack
+racetracker
+raceway
+racier
+raciness
+racism
+racist
+racists
+rackety
+racquet
+racquets
+racy
+radian
+radians
+radicalism
+radices
+radii
+radioactive
+radioactively
+radioactivities
+radioactivity
+radioastronomy
+radiocarbon
+radiochemical
+radiochemically
+radiochemistry
+radiographic
+radiography
+radiologic
+radiological
+radiologically
+radioman
+radiomen
+radiometer
+radiometer's
+radiometers
+radiometric
+radiometry
+radionics
+radiophysics
+radiotherapy
+radium
+radon
+raffish
+raffishly
+raffishness
+raffle
+raffled
+raffles
+raffling
+ragging
+ragout
+ragweed
+ragweeds
+railbird
+railbirds
+railhead
+railheads
+raillery
+rainless
+rainstorm
+rainwater
+rajah
+rakish
+rakishly
+rakishness
+ramified
+ramifies
+ramify
+ramifying
+rammed
+ramming
+rampage
+rampaged
+rampages
+rampaging
+rampant
+rampantly
+ramrod
+ramrods
+rancho
+ranchos
+rancid
+rancidity
+rancidness
+rancorous
+rancorously
+randies
+randy
+rangeland
+rangelands
+rangier
+ranginess
+rangy
+rapacious
+rapaciously
+rapaciousness
+rapier
+rapists
+rapped
+rappel
+rapper
+rapper's
+rappers
+rapping
+rapport
+rapprochement
+rarefied
+rarefy
+ratable
+ratchet
+ratchet's
+ratcheted
+ratcheting
+ratchets
+rateable
+ratiocinate
+ratiocinated
+ratiocinates
+ratiocinating
+ratiocination
+ratiocinative
+rationalism
+rationalist
+rationalistic
+rationalists
+rattail
+rattier
+ratty
+raucous
+raucously
+raucousness
+ravish
+ravisher
+ravishes
+ravishing
+ravishingly
+rawboned
+rawhide
+rawhided
+rawhiding
+raze
+razed
+razer
+razes
+razing
+razorback
+rd
+reachability
+reactant
+reactants
+readably
+readership
+readership's
+readjust
+readjuster
+readjusting
+readjustment
+reaffirmation
+reafforest
+reagent
+realtor
+realtors
+realty
+reappearance
+reapplication
+reapportionment
+reappraise
+reappraising
+reassert
+reasserted
+reasserting
+reassurance
+recalcitrant
+recallable
+recant
+recanted
+recappable
+recency
+receptionist
+receptionists
+recertification
+recheck
+rechecking
+recherche
+recherches
+recipiency
+recitative
+recluse
+recluse's
+recluses
+reclusion
+reclusive
+recoilless
+recommence
+recommencing
+recommendable
+recommendatory
+recommittal
+recomposition
+reconciliatory
+recondite
+reconditely
+reconditeness
+recondition
+reconditioning
+reconditionings
+reconditions
+reconfigurability
+reconnaissance
+reconquer
+reconquered
+reconquering
+reconquers
+recontamination
+reconvene
+reconvening
+reconvention
+reconverting
+recopied
+recopies
+recopy
+recoup
+recouped
+recouping
+recoups
+recriminate
+recriminated
+recriminates
+recriminating
+recrimination
+recriminations
+recriminative
+recruitment
+rectification
+rectifications
+rectified
+rectifier
+rectifiers
+rectify
+rectilinear
+rectilinearly
+rectitude
+rectory
+recumbent
+recumbently
+recuperate
+recuperated
+recuperates
+recuperating
+recuperation
+recuperative
+recurred
+recusant
+recuse
+redact
+redactions
+redactor
+redbird
+redbirds
+redbud
+redcoat
+redcoats
+redding
+redecorating
+redecoration
+rededicate
+redemptive
+redeposition
+redhead
+redheaded
+redheader
+redheads
+rediscover
+rediscovering
+rediscovery
+redistricting
+redneck
+rednecked
+rednecks
+redo
+redound
+reduct
+reductionism
+reductive
+redwood
+redwoods
+reedier
+reedy
+reek
+reeked
+reeker
+reeking
+reeks
+reelection
+reemission
+reemission's
+reemissions
+reenact
+reentry
+reenumerate
+reenumeration
+reestimate
+reeve
+reexamination
+refactoring
+refashion
+refectories
+refectory
+referenda
+refinance
+refineries
+refinery
+reflectance
+reflux
+refluxed
+refluxes
+refluxing
+reforestation
+reformability
+reformatories
+reformatory
+reformism
+reformist
+reformists
+refract
+refracted
+refracting
+refraction
+refractive
+refractively
+refractiveness
+refractometer
+refractometer's
+refractometers
+refrigerate
+refrigerated
+refrigeration
+refurbish
+refurbished
+refurbisher
+refurbishing
+regale
+regalia
+regatta
+regattas
+regency
+regimentation
+regionalism
+registrable
+registrant
+registrants
+registrar
+registrars
+registries
+registry
+regressors
+reground
+regulatory
+rehabilitate
+rehabilitated
+rehabilitates
+rehabilitating
+rehabilitation
+rehabilitations
+rehabilitative
+rehearing
+reimbursable
+reimburse
+reimburses
+reimbursing
+reinstitution
+reinterpretation
+reinterview
+reinvest
+reinvestigation
+reinvigoration
+rejigger
+rejoinder
+relativist
+releasable
+relevancy
+reliant
+reliantly
+relict
+religionists
+religiosity
+relocatable
+remake
+remaking
+remand
+remanded
+remanding
+remarriage
+remarry
+remarrying
+rematch
+remediable
+remediableness
+remedial
+reminisce
+reminisced
+reminisces
+reminiscing
+remiss
+remission
+remissly
+remissness
+remit
+remits
+remitted
+remitting
+remorseful
+remorsefully
+remorsefulness
+remorseless
+remorselessly
+remorselessness
+remounting
+remunerate
+remunerated
+remunerates
+remunerating
+remuneration
+remunerations
+remunerative
+remuneratively
+remunerativeness
+renascent
+renaturation
+renature
+renaturing
+renegotiate
+renegotiation
+renewable
+renovate
+renovated
+renovates
+renovation
+renumeration
+renunciate
+renunciation
+renunciations
+renunciative
+reorient
+reorientation
+repacked
+repairable
+repairmen
+repartee
+repatriations
+repayment
+repeatability
+repelled
+repellent
+repellently
+repelling
+repentant
+repentantly
+repertory
+repetitious
+repetitiously
+repetitiousness
+replenishment
+replenishments
+reportage
+reportorial
+reportorially
+reprehensible
+reprehensibleness
+representativity
+reprimand
+reprimanded
+reprise
+reprised
+reprising
+reprobate
+reprobating
+reprobation
+reprobative
+reps
+reptilian
+republicanism
+repugnance
+repugnant
+repugnantly
+resale
+rescaling
+rescind
+rescinded
+rescinder
+researchable
+resemblant
+resettlement
+residency
+residual
+residually
+residuals
+residuary
+residuum
+resilience
+resilient
+resiliently
+resinlike
+resonate
+resonated
+resonates
+resonating
+resonator
+resonators
+respirator
+respirators
+respiratory
+respire
+respiring
+restaurateur
+restitution
+restock
+restorability
+restorative
+restoratively
+restorativeness
+restructurability
+restudy
+resupplied
+resupplies
+resupply
+resupply's
+resupplying
+resurgence
+resurgent
+resuscitate
+resuscitated
+resuscitates
+resuscitating
+resuscitation
+resuscitative
+resuspension
+retaliate
+retaliated
+retaliates
+retaliating
+retaliative
+retaliatory
+retardant
+retardation
+retch
+retching
+retell
+retelling
+retest
+rethink
+rethinker
+rethinking
+rethought
+reticulum
+retiree
+retorsion
+retouching
+retrenching
+retrenchment
+retributed
+retribution
+retroactive
+retrofit
+retrofitting
+retroflection
+retroflex
+retroflexed
+retroflexion
+retrogradations
+retrograde
+retrogradely
+retrograding
+retrogressive
+retrogressively
+retrorocket
+retrovision
+revaluation
+revelatory
+revengeful
+revengefully
+revengefulness
+reverberate
+reverberated
+reverberation
+reverberations
+reverberative
+reverent
+reverie
+reveries
+reversibility
+revet
+revetments
+revisable
+revisionary
+revisionist
+revisionists
+revivalism
+revivified
+revocable
+revolutionists
+revue
+revues
+revulsion
+revved
+revving
+rhapsodic
+rhapsody
+rhenium
+rheology
+rheostat
+rheostats
+rhetorical
+rhetorically
+rhetoricalness
+rhetorician
+rhetoricians
+rheum
+rheumatic
+rheumatics
+rhinestone
+rhinestones
+rhino
+rhinos
+rhinotracheitis
+rho
+rhodium
+rhododendron
+rhododendrons
+rhodolite
+rhodonite
+rhombic
+rhombus
+rhombuses
+ribald
+riboflavin
+ribonucleic
+ribosomal
+ribosome
+ribosomes
+rickets
+rickety
+ricochet
+ricocheted
+ricocheting
+ricochets
+ridable
+riddance
+ridding
+ridgepole
+riflemen
+rigamarole
+rigger
+riggers
+rightist
+rigmarole
+rigmaroles
+rimless
+rimmed
+rimming
+ringlet
+ringlets
+ringside
+ringsiders
+rink
+rinker
+riparian
+risible
+risibles
+riskier
+riskiness
+risky
+riverbank
+riverbanks
+riverboat
+riverfront
+riverine
+roach
+roaches
+roadbed
+roadbeds
+roadblock
+roadblocks
+roadhouse
+roadhouses
+robotism
+rockabye
+rockbound
+rodder
+rodding
+rodent
+rodents
+rodeo
+rodeos
+roebuck
+roebucks
+roentgen
+roguish
+roguishly
+roguishness
+roil
+roiling
+rollback
+rollicking
+rollickingly
+romanticism
+rondo
+rondos
+rood
+rooftop
+rooftops
+rookie
+rookies
+roomful
+roomier
+roominess
+roommate
+roommate's
+roommates
+roomy
+rootless
+rootlessness
+rosaries
+rosary
+roseate
+roseately
+rosebush
+rosemary
+rosette
+rosettes
+roster
+rostrum
+rotogravure
+rotogravures
+rotor
+rotors
+rototill
+rotting
+rotund
+rotunda
+rotundity
+rotundly
+rotundness
+roughish
+roughneck
+roughshod
+roulette
+rouletted
+roulettes
+rouletting
+roundhead
+roundheaded
+roundheadedness
+roundhouse
+roundtable
+roundworm
+roustabout
+rowboat
+rowboats
+rowdier
+rowdies
+rowdiness
+rowdy
+rowel
+rubbery
+rubdown
+rube
+rubella
+rubes
+rubicund
+rubidium
+rubric
+ruckus
+rudderless
+rueful
+ruefulness
+ruminant
+ruminantly
+ruminants
+rummage
+rummaged
+rummager
+rummaging
+rummier
+rummies
+rummy
+rumpus
+runabout
+runabouts
+rundown
+rune
+runes
+runic
+runoff
+runoffs
+runt
+runtiness
+runts
+runty
+runway
+runways
+rupee
+rupees
+rurality
+ruse
+rusk
+rustproof
+rutabaga
+rutabagas
+ruthenium
+rutted
+ruttier
+rutting
+rutty
+s's
+sabbath
+sabbatical
+sabras
+sacral
+sacrament
+sacraments
+sacrilege
+sacrilegious
+sacrilegiously
+sacrosanct
+saddlebag
+saddlebags
+safari
+safekeeping
+saffron
+saga
+sagebrush
+sagged
+sagging
+sailboat
+sailboater
+sailboaters
+sailboating
+sailboats
+sailfish
+sainthood
+salaam
+salacious
+salaciously
+salaciousness
+salamander
+salami
+salamis
+salesgirl
+saleslady
+salesmanship
+saleswomen
+salience
+saliency
+salinger
+salivary
+salivate
+salivated
+salivates
+salivating
+salivation
+saloonkeeper
+salsa
+salsa's
+salsas
+salsify
+saltwater
+salubrious
+salubriously
+salubriousness
+salvageable
+salvo
+salvos
+samovar
+sanatoria
+sanatorium
+sanctimonious
+sanctimoniously
+sanctimoniousness
+sandalwood
+sandbag
+sandbars
+sandblast
+sandblaster
+sandhill
+sandman
+sandpile
+sandpiper
+sanguinary
+sanguineous
+sanitate
+sanitations
+sapped
+sappier
+sappiness
+sapping
+sappy
+sapsucker
+sarcastically
+sarcoma
+sardine
+sardines
+sardonic
+sari
+sartorius
+sashay
+sashayed
+sassafras
+sassing
+satanic
+satiable
+satiate
+satiated
+satiates
+satiating
+satiation
+satiric
+satirical
+satirically
+saturnalia
+saturnine
+saturninely
+saucily
+sauerkraut
+sauna
+sauna's
+saunas
+saute
+sauterne
+sauternes
+savagery
+savoy
+savvied
+savvy
+savvying
+sawdust
+sawyer
+sax
+saxophone
+saxophone's
+saxophones
+saxophonist
+scab
+scabbed
+scabrous
+scabrously
+scabrousness
+scabs
+scalability
+scalpel
+scamp
+scandium
+scapegoat
+scapegoating
+scapegoats
+scapula
+scapular
+scapulars
+scarecrow
+scarface
+scarification
+scarifier
+scarify
+scarred
+scarves
+scat
+scathing
+scathingly
+scatterbrain
+scatterbrained
+scattergun
+scatting
+scavenge
+scavenged
+scavenges
+scavenging
+sceptic
+sceptical
+scepticism
+schism
+schist
+schizoid
+schizomycetes
+schizophrenic
+schmuck
+schnapps
+schoolbook
+schoolbooks
+schoolgirl
+schoolgirlish
+schoolgirls
+schoolmarm
+schoolmate
+schoolmates
+schoolteacher
+schoolwork
+sciatica
+scimitar
+scimitars
+scintillate
+scintillated
+scintillates
+scintillating
+scintillation
+scion
+scions
+sclerosis
+sclerotic
+scoot
+scooted
+scooter
+scooting
+scoots
+scops
+scoreboard
+scoreboards
+scorecard
+scoreless
+scotch
+scrabble
+scrabbled
+scrabbler
+scrabbles
+scrabbling
+scraggly
+scram
+scramming
+scrapbook
+scrapbooks
+scrapping
+scratchier
+scratchiness
+scratchy
+scrawnier
+scrawniness
+scrawny
+screechy
+screed
+screenplay
+screenwriter
+screenwriter's
+screenwriters
+screwball
+screwdriver
+screwdrivers
+screwup
+scrim
+scrimmage
+scrimmaged
+scrimmager
+scrimmages
+scrimmaging
+scrimp
+scrimped
+scrimping
+scrimps
+scriptural
+scripturally
+scriven
+scrivener
+scrollbar
+scrollbar's
+scrollbars
+scrounge
+scrounged
+scrounger
+scroungers
+scrounges
+scrounging
+scrubbed
+scrubber
+scrubbing
+scrumptious
+scrumptiously
+scrupulosity
+scrutable
+scuba
+scuff
+scuffed
+scuffing
+scuffs
+sculptural
+sculpturally
+scurrilous
+scurrilously
+scurrilousness
+scurviness
+scurvy
+seafare
+seafarer
+seafarers
+seafaring
+seafood
+seagull
+seagulls
+seahorse
+sealant
+sealants
+seamanship
+seamanships
+seamier
+seaminess
+seamless
+seamlessly
+seamlessness
+seamstress
+seamstresses
+seamy
+seance
+seaquake
+searchlight
+searchlights
+seaway
+secant
+secants
+secession
+secessionist
+seclude
+secludes
+secluding
+secretariat
+sectarian
+secularism
+secularist
+secularists
+secularity
+sedan
+sedans
+sedate
+sedated
+sedately
+sedateness
+sedates
+sedating
+sedation
+sedative
+sedentary
+sedimentary
+sedimentation
+sedition
+seditious
+seditiously
+seditiousness
+seduction
+seductions
+sedulously
+seedbed
+seedbeds
+seedier
+seediness
+seedless
+seedy
+seepage
+seersucker
+seesaw
+seesawed
+seesawing
+seesaws
+segmental
+segmentally
+segregant
+segregationist
+seismograph
+seismographer
+seismographs
+seismography
+seismological
+seismology
+selectable
+selectional
+selenate
+selenite
+selenium
+selfless
+selflessly
+selflessness
+sellout
+seltzer
+semen
+semi
+semiannual
+semiannually
+semiarid
+semiautomatic
+semicircular
+semidefinite
+semidrying
+semilogarithmic
+seminarian
+seminarians
+semiprofessional
+semiprofessionally
+semiprofessionals
+semipublic
+semiquantitative
+semiquantitatively
+semisecret
+semistructured
+semitic
+semitics
+semitrance
+semitropical
+senatorial
+senile
+senilely
+senor
+senorita
+sensate
+sensately
+sensationalism
+sensual
+sensuality
+sensually
+sensuous
+sensuously
+sensuousness
+sentient
+sentiently
+sentimentalists
+sentimentality
+separability
+sepia
+sept
+septate
+septation
+septennial
+septennially
+septic
+septillion
+septuagenarian
+septum
+sepulchral
+sepulchrally
+sequestration
+sequin
+sequined
+sequins
+sequoia
+serape
+seraph
+seraphim
+serenade
+serenaded
+serenader
+serenades
+serfdom
+serge
+serging
+serological
+serologically
+serology
+serviceability
+serviceman
+servicemen
+serviette
+serviettes
+servitor
+servitors
+servo
+servomechanism
+servomechanisms
+servos
+sesame
+setback
+setbacks
+setscrew
+setscrews
+sevenfold
+severalfold
+severalty
+sewage
+sewerage
+sewn
+sexier
+sexiness
+sextet
+sextillion
+sexton
+sextuple
+sextupled
+sextuplet
+sextupling
+sexy
+shabbily
+shag
+shagging
+shags
+shah
+shakeable
+shakedown
+shakily
+shalom
+shamble
+shambled
+shambling
+shamefacedly
+shampoo
+shampooer
+shampoos
+shamrock
+shank
+shanked
+shards
+sharecrop
+sharecropping
+sharpshoot
+sharpshooter
+sharpshooters
+sharpshooting
+shatterproof
+shaw
+sheathe
+sheave
+sheaving
+shedding
+sheepskin
+sheik
+shenanigan
+shenanigans
+sherbet
+sherlock
+sherries
+sherry
+shibboleth
+shibboleths
+shiftless
+shiftlessly
+shiftlessness
+shill
+shills
+shim
+shimmied
+shimmies
+shimming
+shimmy
+shimmying
+shims
+shinbone
+shindig
+shindig's
+shindigs
+shipbuild
+shipbuilder
+shipman
+shipmate
+shipmates
+shipmen
+shipshape
+shipyard
+shipyards
+shire
+shires
+shirtmake
+shirtmaker
+shirttail
+shivery
+shoddier
+shoddiness
+shoddy
+shoehorn
+shoelace
+shoelaces
+shoemake
+shoemakers
+shoestring
+shoestrings
+shoo
+shoofly
+shooing
+shootout
+shootout's
+shootouts
+shopkeep
+shopworn
+shoreline
+shorelines
+shortfall
+shortfalls
+shortish
+shortsighted
+shortsightedly
+shortsightedness
+shortstop
+showboat
+showcase
+showcase's
+showcased
+showcases
+showcasing
+showdown
+showier
+showiness
+showman
+showmanship
+showmen
+showpiece
+showplace
+showroom
+showy
+shrapnel
+shredded
+shredding
+shrewish
+shrewishly
+shrewishness
+shrift
+shrinkage
+shriver
+shrove
+shrugged
+shrugging
+shuck
+shucker
+shucks
+shuddery
+shuffleboard
+shunned
+shunning
+shunt
+shunted
+shunter
+shunting
+shunts
+shutoff
+shutout
+shuttlecock
+shuttlecocks
+sibilant
+sibilantly
+sic
+sickish
+sickishly
+sickishness
+sickroom
+sidearm
+sidearms
+sideband
+sidebands
+sidecar
+sidecars
+sideline
+sideliner
+sidelines
+sidelong
+sideman
+sidemen
+sidereal
+sidesaddle
+sideshow
+sideshows
+sidestep
+sidestepping
+sidesteps
+sidewall
+sideway
+sidewinder
+sidle
+sidled
+sidles
+sidling
+sienna
+siesta
+sightsee
+sightseeing
+sightseer
+sightseers
+sigma
+sigmas
+signboard
+signpost
+signposted
+signposting
+signposts
+silage
+silica
+silicate
+silicates
+silicide
+silkworm
+silkworms
+silo
+silos
+siltation
+silty
+silversmith
+silversmiths
+silverware
+simile
+simpleminded
+simplemindedly
+simplemindedness
+simpleton
+simulcast
+sinewy
+singe
+singlehanded
+singlehandedly
+singlet
+singsonged
+sinistral
+sinistrally
+sinless
+sinlessly
+sinlessness
+sinter
+sintered
+sinuous
+sinuousities
+sinuously
+sinuousness
+sinus
+sinuses
+sinusoid
+sipped
+sippers
+sipping
+sis
+sisal
+situ
+situs
+sixfold
+sixgun
+sizeable
+sizzle
+sizzled
+sizzler
+sizzling
+skat
+skeet
+skeeter
+skepticism
+sketchbook
+sketchpad
+skid
+skidded
+skidding
+skids
+skiff
+skiffs
+skillet
+skimpier
+skimpiness
+skimpy
+skindive
+skindiving
+skinless
+skinnier
+skinniness
+skinny
+skit
+skits
+skittle
+skullcap
+skullduggery
+skyhook
+skyjack
+skyjacked
+skyjacker
+skyjackers
+skyjacking
+skyline
+skyrocket
+skyscrape
+skyward
+skywave
+skyway
+slag
+slake
+slaked
+slaking
+slalom
+slaloms
+slanderous
+slanderously
+slanderousness
+slapstick
+slatted
+slatting
+slaughterhouse
+slaughterhouses
+slavish
+slavishly
+slavishness
+slaw
+sleazier
+sleaziness
+sleazy
+sledding
+sledgehammer
+sleepwalk
+sleepwalker
+sleety
+sleight
+sleuthing
+slimmer
+slimmers
+slingshot
+slink
+slinked
+slinking
+slinks
+slipstream
+slither
+slithered
+slithering
+slithers
+slitter
+slitters
+slitting
+sliver
+slivered
+slivering
+slivers
+slivery
+slob
+sloe
+slog
+sloganeer
+sloganeering
+slogging
+sloop
+sloops
+sloppily
+slosh
+sloshed
+slothful
+slothfully
+slothfulness
+slough
+sloughed
+sloughing
+sloven
+slovenliness
+slovenly
+slowdown
+sludge
+sludges
+slugged
+slugger
+sluggers
+slugging
+sluice
+sluiced
+sluices
+sluicing
+slumming
+slunk
+slurp
+slurped
+slurping
+slurps
+slurried
+slurries
+slurring
+slurry
+slurrying
+slush
+slyness
+smallish
+smalltime
+smattering
+smatterings
+smiley
+smiley's
+smilies
+smirk
+smirked
+smithereens
+smokehouse
+smokescreen
+smokestack
+smooch
+smooching
+smudge
+smudged
+smudginess
+smudging
+smudgy
+smut
+smuts
+smuttier
+smuttiness
+smutty
+snack
+snacks
+snafu
+snag
+snagged
+snagging
+snags
+snakebird
+snakelike
+snakeroot
+snapback
+snapdragon
+snapdragons
+snappish
+snappishly
+snappishness
+snazzier
+snazzy
+snicker
+snickered
+snickerer
+snickering
+snide
+snidely
+snideness
+snider
+snidest
+sniffle
+sniffled
+sniffler
+sniffles
+sniffling
+snifter
+snip
+snipe
+sniped
+sniper
+sniper's
+snipers
+snipes
+sniping
+snipped
+snipper
+snipper's
+snippers
+snippet
+snippier
+snipping
+snippy
+snips
+snivel
+snob
+snobbery
+snobbish
+snobbishly
+snobbishness
+snobs
+snook
+snooker
+snookers
+snooks
+snoopy
+snorkel
+snorkeled
+snorkeler
+snorkeling
+snotty
+snowball
+snowballed
+snowballing
+snowballs
+snowbank
+snowbank's
+snowbanks
+snowblower
+snowblowers
+snowfall
+snowflake
+snowflakes
+snowmobile
+snowmobiler
+snowmobiling
+snowstorm
+snub
+snubbed
+snubbing
+snubness
+snubs
+snuffboxes
+snuffle
+snuffled
+snuffler
+snuffling
+snugged
+snugging
+snuggly
+soapier
+soapiness
+soapstone
+soapstones
+soapsud
+soapsuds
+soapy
+sobbed
+sobbing
+sobbingly
+sobriety
+sobriquet
+socialistic
+sociality
+socio
+sociocultural
+socioculturally
+sociodemographic
+socioeconomic
+socioeconomically
+socioeconomics
+sociologist
+sociologists
+sociometric
+sociometry
+sodden
+soddened
+soddening
+soddenly
+soddenness
+sodding
+softball
+softwood
+soggier
+sogginess
+soggy
+soiree
+soirees
+soldiery
+solecism
+solenoid
+solenoids
+solicitation
+solicitous
+solicitously
+solicitousness
+solicitude
+solidarity
+soliloquy
+solipsism
+soloist
+soloists
+solstice
+solvating
+solvency
+soma
+somatic
+somebody'll
+someone'll
+somersault
+somersaulting
+somersaults
+sommelier
+sommeliers
+somnolence
+somnolent
+somnolently
+sonata
+sonatas
+songbag
+songbook
+songful
+songfully
+songfulness
+sonic
+sonny
+sonofabitch
+sonorities
+sonority
+sonorous
+sonorously
+sonorousness
+sonuvabitch
+soothsay
+soothsayer
+soothsayers
+soothsaying
+sop
+sophism
+sophist
+sophister
+sophisticate
+sophisticates
+sophistry
+sophomoric
+soporific
+soporific's
+soporifics
+sopping
+soprano
+sopranos
+sops
+sorghum
+sororities
+sorority
+sorrel
+sortie
+soubriquet
+souffle
+soulful
+soulfully
+soulfulness
+soundproof
+soundproofed
+soundproofing
+soundproofs
+sourdough
+southbound
+southeast
+southeaster
+southeasterly
+southeastern
+southernisms
+southernmost
+southland
+southpaw
+southpaws
+southward
+southwards
+southwest
+southwester
+southwesterly
+southwestern
+souvenir
+souvenirs
+sovereignty
+sow
+sowbelly
+sowens
+sower
+sowered
+sowing
+sown
+sox
+soy
+soya
+soybean
+soybeans
+spacecraft
+spacesuit
+spacesuits
+spacious
+spaciously
+spaciousness
+spandrels
+spangle
+spangled
+spangles
+spangling
+spaniel
+spar
+sparkier
+sparkle
+sparkled
+sparkler
+sparkles
+sparkling
+sparky
+sparling
+sparlings
+sparring
+spars
+spasm
+spasms
+spastic
+spatiality
+spatterdock
+spatula
+spavined
+spay
+spayed
+spaying
+speakership
+spearhead
+spearmint
+spec
+specie
+specifiability
+specious
+speciously
+speciousness
+specs
+spectral
+spectrally
+spectralness
+spectrograph
+spectrographically
+spectrography
+spectrometer
+spectrometer's
+spectrometers
+spectrometric
+spectrometry
+spectrophotometer
+spectrophotometer's
+spectrophotometers
+spectrophotometric
+spectrophotometry
+spectroscope
+spectroscopic
+spectroscopy
+specular
+specularity
+specularly
+speedboat
+speedboater
+speedboating
+speedometer
+speedometer's
+speedometers
+speer
+speleological
+speleologist
+speleology
+spellbound
+sperm
+spermatophyte
+sperms
+spew
+spewer
+spewing
+spewings
+spheric
+spherics
+spheroid
+spheroidal
+spheroidally
+spherule
+spherules
+sphinx
+sphinxes
+spic
+spicebush
+spiderwort
+spidery
+spigot
+spigots
+spikier
+spiky
+spillover
+spillover's
+spillovers
+spilt
+spineless
+spinelessly
+spinelessness
+spinier
+spininess
+spinnability
+spinnaker
+spinster
+spiny
+spirituality
+spitfire
+spittle
+splashier
+splashiness
+splashy
+splat
+splattered
+splay
+splayed
+splenetic
+splint
+splinted
+splintery
+splinting
+splints
+splotch
+splotched
+splotches
+splotchy
+splurge
+splurges
+splurging
+splutter
+splutterer
+spoilables
+spoilage
+spokespersons
+spongier
+sponginess
+spongy
+spontaneity
+spoof
+spoonerism
+spoonful
+spoonfuls
+sporadic
+sporadically
+sporadicly
+sportier
+sportiest
+sportiness
+sportsmanship
+sportsmen
+sportswear
+sportswriter
+sporty
+spottier
+spottiness
+spotty
+spousal
+sprain
+sprained
+sprains
+springboard
+sprocket
+sprocketed
+sprocketing
+sprockets
+sprue
+spud
+spume
+spuming
+spumoni
+spunk
+spurge
+spurred
+spurring
+sputnik
+sputniks
+spyglass
+sqrt
+squalid
+squalidly
+squalidness
+squalor
+squamous
+squamously
+squander
+squandered
+squanderer
+squandering
+squanders
+squashier
+squashiness
+squashy
+squatted
+squatter
+squatters
+squatting
+squaw
+squeaky
+squeamish
+squeamishly
+squeamishness
+squeegee
+squeegeed
+squeegees
+squelch
+squelched
+squelcher
+squelches
+squelching
+squirehood
+squirmy
+squirt
+squirted
+squirter
+squirting
+squirts
+squish
+squished
+squishes
+squishier
+squishiest
+squishiness
+squishing
+squishy
+st
+stableman
+stablemen
+staccato
+staccatos
+stackable
+stadium
+stadium's
+stadiums
+stagier
+staginess
+stagnate
+stagnated
+stagnates
+stagnating
+stagnation
+stagy
+stairwell
+stairwells
+stalactite
+stalactite's
+stalactites
+stalag
+stalemate
+stallion
+staminate
+stanchion
+stanchioned
+stanchioning
+stanchions
+standoff
+stank
+stannic
+stannous
+staphylococcus
+starchier
+starchiness
+starchy
+stardom
+stargaze
+stargazer
+stargazes
+stargazing
+starling
+starlings
+starship
+stash
+stashed
+stashes
+stashing
+stasis
+statehood
+stateless
+statelessness
+stateroom
+statesmanlike
+statesmanship
+statesmen
+statewide
+stationarity
+stationeries
+stationery
+stationmaster
+statuary
+statuette
+steamier
+steamily
+steaminess
+steamy
+steelier
+steelies
+steeliness
+steelmaker
+steely
+steeplebush
+steeves
+stein
+steiner
+steiners
+stenography
+stenotype
+stepbrother
+stepchild
+stepchildren
+stepdaughter
+stepfather
+stepladders
+steppe
+steppes
+stepsister
+stepson
+stereography
+stereophonic
+stereoscopy
+stereotypic
+sterility
+sternal
+sternum
+steroid
+steroids
+stethoscope
+stevedore
+stevedores
+stewardess
+stewardesses
+stewardship
+stickle
+stickleback
+stickled
+stickler
+stickling
+stickpin
+stigmata
+stiletto
+stillbirth
+stillbirths
+stillborn
+stilt
+stilted
+stiltedly
+stiltedness
+stilts
+stimulatory
+stingier
+stinginess
+stingy
+stinkpot
+stinky
+stochasticity
+stockbroker
+stockier
+stockiness
+stockpile
+stockpiler
+stockpiling
+stockroom
+stocky
+stodgier
+stodginess
+stodgy
+stoic
+stoichiometric
+stoichiometry
+stoicism
+stoics
+stoke
+stoked
+stoker
+stokes
+stoking
+stolid
+stolidly
+stomachs
+stomp
+stomped
+stomping
+stomps
+stonecutter
+stonecutters
+stonemason
+stonemasons
+stonewall
+stoneware
+stonewort
+stonily
+stooge
+stooges
+stooging
+stopover
+stopovers
+stopwatch
+stopwatches
+storekeep
+storekeeper
+storekeepers
+storeroom
+stormbound
+storyboard
+storyboards
+storyteller
+storytellers
+stowage
+stowages
+straddle
+straddled
+straddler
+straddlers
+straddles
+straddling
+strafe
+strafer
+strafes
+strafing
+straightaway
+strangulate
+strangulated
+strapped
+strapping
+strata
+strategically
+strategist
+strategists
+stratigraphic
+stratigraphy
+stratosphere
+stratospheric
+strawflower
+strawflowers
+streptococcus
+streptomycin
+stressful
+stressfully
+stretchable
+striate
+striated
+striates
+striating
+striation
+stricture
+strictures
+stridency
+strident
+stridently
+strikebreak
+strikebreaker
+strikebreakers
+strikebreaking
+striptease
+stripteaser
+striven
+strongroom
+strongrooms
+strontium
+strop
+strophe
+strophes
+stropped
+stropping
+strops
+structuralist
+structuralists
+strum
+strumming
+strychnine
+stubby
+stucco
+studded
+stultification
+stultify
+stultifying
+stumpage
+stumpy
+stunk
+stunned
+sturgeon
+stutter
+stuttered
+stutterer
+stuttering
+stutters
+styli
+stylist
+stylites
+stylus
+styluses
+stymie
+stymied
+stymies
+styrene
+styrenes
+suable
+suave
+suavely
+suaveness
+suavity
+subaltern
+subareas
+subassembly
+subbing
+subcaste
+subchain
+subclassifications
+subcommand
+subcommands
+subconcept
+subconstituent
+subcontinent
+subcontract
+subcontracting
+subdirectories
+subdirectory
+subdistrict
+subindex
+subjectivist
+subjectivists
+subjugate
+subjugated
+subjugates
+subjugating
+subjugation
+sublease
+sublimate
+sublimated
+sublimates
+sublimating
+subliminal
+subliminally
+subliterary
+sublunary
+submachine
+submersible
+submissive
+submissively
+submissiveness
+submittal
+subnational
+subnet
+subnets
+subnormal
+subnormally
+suboptimal
+subordinator
+subpage
+subparagraph
+subpart
+subparts
+subpoena
+subpoenaed
+subpoenas
+subpopulation
+subpopulations
+subquestion
+subquestion's
+subquestions
+subregion
+subregional
+subregionally
+subregions
+subrogation
+subsample
+subsamples
+subsentence
+subservience
+subservient
+subserviently
+subsistent
+subsocietal
+subsoil
+subsoiler
+subspecies
+substitutionary
+substratum
+subsurface
+subtable
+subtables
+subtended
+subtends
+subterfuge
+subterfuges
+subtest
+subtotals
+subtype
+subtypes
+suburbanite
+suburbanites
+suburbia
+subversive
+subversively
+subversiveness
+subversives
+successorship
+succubus
+suffragette
+suffragettes
+suffuse
+suffused
+suffuses
+suffusing
+suffusion
+suffusive
+suggestibility
+sulfaquinoxaline
+sulfate
+sulfated
+sulfating
+sulfide
+sulfite
+sulfonamide
+sulfonamides
+sulfur
+sulfured
+sulfuric
+sulfuring
+sulfurous
+sulfurously
+sulfurousness
+sulkily
+sullied
+sullies
+sully
+sullying
+sultana
+sumac
+summarily
+summertime
+summitry
+sunbaked
+sunbonnet
+sunburnt
+sunder
+sundered
+sundering
+sunders
+sundial
+sundials
+sunfish
+sunflower
+sunlit
+sunshade
+sunshades
+sunshiny
+sunspot
+suntan
+suntanned
+supercilious
+superciliously
+superciliousness
+superconcept
+supercritical
+superficiality
+superhighways
+superlunary
+supermachine
+supernatant
+supernatural
+supernaturalism
+supernaturally
+supernaturalness
+supernormal
+supernormally
+supernova
+supernova's
+supernovas
+superposable
+superposition
+superpositions
+superpredicate
+supersensitive
+supersensitiveness
+supersonic
+supersonics
+superstructural
+superstructure
+superstructures
+supervene
+supervened
+supine
+supinely
+supineness
+supping
+supplementation
+supplicate
+supplicating
+supposable
+suppressible
+suppressor
+suppressors
+supra
+supranational
+supranationalism
+suprasegmental
+supremacist
+surcease
+surceased
+surceasing
+surcharge
+surcharged
+surcharges
+surcharging
+surfactant
+surfactants
+surfeit
+surfeited
+surfeiter
+surfeits
+surreal
+surrealism
+surrealist
+surrealists
+surreptitious
+surreptitiously
+surreptitiousness
+surrey
+surreys
+surtax
+surveillance
+surveillances
+surveillant
+survivability
+survivalist
+survivalists
+survivorship
+susceptibility
+sushi
+suspensor
+sustainable
+sustainment
+sustenance
+svelte
+sveltely
+svelteness
+swab
+swabbed
+swabbies
+swabbing
+swabby
+swabs
+swaddle
+swaddled
+swaddling
+swag
+swaging
+swami
+swampland
+swampland's
+swamplands
+swank
+swanker
+swankier
+swankiness
+swanky
+swanlike
+swappable
+swart
+swartness
+swash
+swasher
+swastika
+swat
+swatch
+swatches
+swath
+swath's
+swathe
+swathed
+swather
+swathes
+swathing
+swathings
+swats
+swatter
+swatting
+sweatband
+sweatier
+sweatiness
+sweatshirt
+sweatshops
+sweaty
+sweepstake
+sweepstakes
+sweetish
+sweetishly
+sweltering
+swelteringly
+swig
+swigging
+swindle
+swindled
+swindler
+swindles
+swindling
+swingable
+swingier
+swingy
+swinish
+swinishly
+swinishness
+swirlier
+swirly
+swishier
+swishy
+swiss
+switchblade
+switchgear
+switchman
+switchmen
+switchmen's
+swivel
+swivels
+swizzle
+swizzled
+swizzler
+swizzling
+swordfish
+swordplay
+swordplayer
+swordtail
+sycophant
+sycophantic
+sycophantically
+sycophantly
+sycophants
+syllabic
+syllabicity
+syllabification
+syllabify
+syllogistic
+sylvan
+symbiont
+symbolical
+symbolists
+sympathetically
+symphonic
+symposia
+symptomatology
+synagogue
+synagogues
+synaptic
+synchronism
+synchrotron
+syncopate
+syncopated
+syncopation
+syncopative
+syndic
+syndics
+synergy
+synod
+synods
+synonymy
+synoptic
+syphilitic
+syrupy
+sys
+systemic
+tabbies
+tabbing
+tabby
+tableland
+tabletop
+tabletop's
+tabletops
+tabloids
+tabula
+tackiness
+taco
+tacos
+tactful
+tactfully
+tactfulness
+tactic
+tactical
+tactically
+tactlessness
+tactual
+tactually
+tadpoles
+taffeta
+taffies
+taffy
+tailback
+tailgate
+tailgated
+tailgater
+tailgating
+takeoff
+takeoffs
+takeover
+takeovers
+talismanic
+talky
+tallied
+tallies
+tally
+tallyho
+tallying
+talon
+taloned
+talons
+tamable
+tamale
+tamarack
+tamarind
+tambourine
+tamp
+tamping
+tampon
+tangency
+tangerine
+tango
+tangos
+tankard
+tanned
+tannery
+tannin
+tanning
+tantalum
+tao
+taoism
+taoist
+taoists
+taos
+tapeworm
+tapir
+tapirs
+tappet
+tappets
+tarantula
+tarantulas
+tardily
+tarnish
+tarnished
+tarnishes
+tarnishing
+tarp
+tarpapered
+tarpaulin
+tarpaulins
+tarpon
+tarpons
+tarred
+tarring
+tartar
+taskmaster
+tastier
+tastiness
+tasty
+tater
+tattier
+tatting
+tattle
+tattled
+tattler
+tattles
+tattletale
+tattling
+tatty
+tawdrier
+tawdriness
+tawdry
+taxably
+taxiway
+taxiway's
+taxiways
+taxpaying
+teacart
+teacup
+teahouse
+teahouses
+teakettle
+teakwood
+teal
+teals
+teammate
+teammates
+teamster
+teamsters
+teamwork
+teapot
+teapots
+teardrop
+teardrops
+teasel
+teat
+teated
+teats
+tech
+teched
+technetium
+tectonic
+tectonics
+tee
+teeing
+teensier
+teensy
+tees
+teetering
+tektite
+tektites
+telecommunicate
+telegraphy
+telekinesis
+telemeter
+telemeter's
+telemeters
+telemetric
+telemetry
+telepathic
+telepathically
+telepathy
+telephotography
+teleprinter
+teleprocessing
+teleprompter
+telescopic
+telltale
+telltale's
+telltales
+tellurium
+telnet
+telnets
+telomeric
+temerity
+temp
+tempo
+tempos
+temptress
+tenable
+tenableness
+tenacity
+tenancies
+tenancy
+tenderfoot
+tenderloin
+tendon
+tendons
+tenebrous
+tenet
+tenets
+tenfold
+tenon
+tensile
+tensional
+tensionless
+tensorial
+tenspot
+tenths
+tenuous
+tenuously
+tenuousness
+tepees
+tepid
+tepidly
+tepidness
+teratogenic
+teratologies
+teratology
+terbium
+tercel
+terminable
+terminableness
+termini
+terminological
+terminologically
+termite
+termites
+tern
+terpsichorean
+terramycin
+terrapin
+terrapins
+terries
+terry
+terse
+tersely
+terseness
+terser
+tersest
+tertian
+tessellate
+tessellated
+tessellates
+tessellation
+testamentary
+testate
+testator
+testator's
+testators
+testes
+testicular
+testier
+testily
+testimonial
+testimonials
+testiness
+testy
+tetanus
+tether
+tethered
+tethering
+tethers
+tetrachloride
+tetracycline
+tetrafluoride
+tetragonal
+tetragonally
+tetrahalides
+tetrahedra
+tetrahedral
+tetrahedrally
+tetrahedron
+tetrameron
+tetrasodium
+tetravalent
+textural
+texturally
+th
+thallium
+thallophyte
+that'd
+that'll
+theatric
+theatrics
+theism
+theistic
+theocracy
+theoretician
+there'd
+there'll
+therefor
+therefrom
+theretofore
+thereunder
+thermal
+thermally
+thermals
+thermionic
+thermionics
+thermistor
+thermistors
+thermo
+thermocouple
+thermocouples
+thermodynamically
+thermoelastic
+thermoelectric
+thermoformed
+thermoforming
+thermogravimetric
+thermometric
+thermometry
+thermonuclear
+thermopile
+thermoplastic
+thermopower
+thermos
+thermosetting
+thermostable
+thermostatic
+thermostatics
+thesaurus
+thespian
+thespians
+theta
+thetas
+thiamin
+thickish
+thine
+thinned
+thinning
+thinnish
+thiocyanate
+thiouracil
+this'll
+thistledown
+thither
+thoriate
+thoriated
+thorium
+thoroughbred
+thoroughgoing
+thou
+thous
+thousandths
+thrall
+threadbare
+threadbareness
+threefold
+threesome
+thresh
+threshed
+thresher
+threshing
+throatier
+throatiness
+throaty
+throes
+thrombi
+thromboses
+thrombosis
+thrombus
+throwback
+thrum
+thrumming
+thudding
+thuggee
+thulium
+thumbnail
+thumbtack
+thumbtack's
+thumbtacked
+thumbtacking
+thumbtacks
+thunderclap
+thunderclaps
+thunderous
+thunderously
+thunk
+thwack
+thy
+thyratron
+thyroglobulin
+thyroid
+thyroidal
+thyroids
+thyronine
+thyrotoxic
+thyrotrophic
+thyrotrophin
+thyrotropic
+thyrotropin
+thyroxine
+tibia
+tic
+tidbit
+tidbits
+tideland
+tidelands
+tidewater
+tidily
+tiff
+tiffany
+tigress
+tillage
+tilth
+timberland
+timberlands
+timbre
+timepiece
+timeworn
+timothy
+tincture
+tinctured
+tincturing
+tinder
+tine
+tines
+tinfoil
+tinner
+tinplate
+tinsel
+tinselly
+tinsmith
+tinsmiths
+tintable
+tintype
+tinware
+tipoff
+tippier
+tipple
+tippled
+tippler
+tipples
+tippling
+tippy
+tipsier
+tipsiness
+tipsy
+tiptoeing
+tirade
+tirades
+titan
+titanate
+titanic
+titanium
+titans
+titian
+titillate
+titillating
+titillatingly
+titillation
+titillative
+titmouse
+titmouse's
+titrate
+titrated
+titrates
+titrating
+titration
+titular
+titularly
+toadied
+toadies
+toady
+toadying
+toadyism
+tobaggon
+tobaggon's
+tobaggons
+toccata
+today'll
+toddle
+toddled
+toddler
+toddlers
+toddles
+toddling
+toenail
+toenails
+toffee
+tofu
+tog
+togging
+togs
+toilsome
+toilsomely
+toilsomeness
+tokamak
+tollgate
+tollhouse
+toluene
+tomblike
+tombstone
+tombstones
+tome
+tomes
+tomfool
+tommy
+tonal
+tonalities
+tonally
+toneless
+tonelessly
+tonelessness
+tong
+tonger
+tonier
+tonk
+tonks
+tonsillitis
+tony
+toodle
+toolmake
+toolmaker
+toolmakers
+toolmaking
+toolsmith
+toot
+tooted
+tooter
+toothier
+toothily
+toothpaste
+toothy
+tooting
+tootle
+tootled
+tootler
+tootling
+toots
+tootsie
+tootsies
+tootsy
+topaz
+topcoat
+topcoats
+topgallant
+topnotch
+topnotcher
+topocentric
+topographic
+topographical
+topographically
+topographies
+topography
+topped
+toppers
+topping
+toppings
+topside
+topsides
+topsoil
+tori
+tories
+toroid
+toroidal
+toroidally
+toroids
+torpid
+torpidly
+torpor
+torrence
+torsion
+torsional
+torsionally
+torso
+torsos
+tort
+torten
+tortoiseshell
+tortuous
+tortuously
+tory
+tot
+totalistic
+totalitarian
+totalitarianism
+tote
+toted
+totem
+totemic
+toter
+totes
+toting
+tots
+totted
+touchdown
+touchdowns
+touchstone
+touchstones
+toughs
+tourism
+tousle
+tousled
+tousles
+tousling
+tout
+touted
+touter
+touting
+touts
+towboat
+towboats
+towhead
+towheaded
+townhouse
+townsman
+townsmen
+toxic
+traceback
+traceback's
+tracebacks
+tracepoint
+tracepoint's
+tracepoints
+traceried
+tracery
+trachea
+trackage
+trackless
+traction
+tradesmen
+traditionalism
+traditionalistic
+traditionalists
+tragedian
+tragedians
+tragicomic
+trailside
+traineeships
+trainman
+trainman's
+trainmen
+traipse
+traipsing
+traitorous
+traitorously
+tram
+trammel
+trammels
+tramway
+transalpine
+transaminase
+transatlantic
+transcendence
+transcendental
+transcendentalism
+transcendentalists
+transcendentally
+transconductance
+transcultural
+transducer
+transducers
+transduction
+transect
+transected
+transecting
+transects
+transept
+transepts
+transferee
+transferor
+transferors
+transfix
+transfixed
+transfixes
+transfixing
+transfusable
+transfuse
+transfused
+transfusing
+transfusion
+transfusions
+transgressor
+transgressors
+transliterate
+transliteration
+translucence
+translucency
+transmissible
+transmittable
+transmittance
+transmutation
+transmute
+transmuted
+transmutes
+transmuting
+transoceanic
+transom
+transoms
+transpacific
+transpiration
+transpirations
+transplantable
+transplantation
+transportable
+transposable
+transship
+transshipment
+transshipping
+transships
+transversal
+transversally
+transverse
+transversely
+transverses
+transvestite
+transvestitism
+trapdoor
+trapdoors
+trapezium
+trashier
+trashiness
+trashy
+trauma
+traumas
+traversable
+travertine
+trawl
+trawler
+treadle
+treadled
+treadling
+treadmill
+treasonable
+treasonous
+treelike
+trefoil
+trekked
+trekking
+trellis
+trellised
+trellises
+trembly
+tremulous
+tremulously
+tremulousness
+trenchant
+trenchantly
+trencherman
+trenchermen
+trendier
+trendiness
+trendy
+trepidation
+trestle
+trestles
+triable
+triableness
+triad
+triadic
+triamcinolone
+triangulate
+triangulated
+triangulately
+triangulation
+triatomic
+tribesman
+tribesmen
+tribulate
+tribulation
+tribulation's
+tribulations
+trichloroacetic
+trichloroethane
+trichromatic
+trickeries
+trickery
+trickster
+trident
+tridents
+tridiagonal
+triennial
+triennially
+trifluoride
+trig
+trigonal
+trigonally
+trigram
+trigrams
+trilobite
+trilogy
+trimester
+trinitarian
+trinitarians
+trinity
+trio
+triode
+triodes
+trios
+trioxide
+tripartite
+tripartition
+tripe
+triphenylarsine
+triphenylphosphine
+triphenylstibine
+triphosphopyridine
+triplex
+triplicate
+tripod
+tripods
+tripoli
+tripolyphosphate
+tripped
+tripping
+trippingly
+triptych
+trisodium
+tristate
+trisyllable
+trite
+tritely
+triteness
+triter
+tritest
+tritium
+tritium's
+triton
+triumphant
+triune
+trivalent
+trivium
+trodden
+troglodyte
+troika
+trollop
+trombone
+trombone's
+trombones
+trombonist
+troopship
+troopships
+trophic
+tropism
+tropisms
+tropocollagen
+tropospheric
+trotted
+trotter
+trotting
+troughs
+trounce
+trounced
+trounces
+trouncing
+troupe
+trouper
+troupes
+trouping
+troy
+truancy
+truculence
+truculent
+truculently
+trumpery
+trundle
+trundled
+trundler
+trundles
+trundling
+truss
+trusser
+trusses
+trussing
+trusteeship
+trypsin
+tsar
+tsarevich
+tsarina
+tsarism
+tsarist
+tsunami
+tuba
+tubular
+tubularly
+tubule
+tubules
+tugged
+tugging
+tularemia
+tulle
+tum
+tumbrels
+tumid
+tumidly
+tummies
+tummy
+tummy's
+tun
+tuna
+tunas
+tundra
+tuneful
+tunefully
+tunefulness
+tunelessly
+tung
+tungstate
+tungsten
+tupelo
+turbinate
+turbinated
+turbinates
+turbine
+turbines
+turbofan
+turbojet
+turgid
+turgidly
+turgidness
+turk
+turks
+turnabout
+turnaround
+turnarounds
+turnoff
+turnout
+turnouts
+turnpike
+turnpikes
+turnstone
+turntable
+turpitude
+turtleback
+turtlebacks
+turtleneck
+turvy
+tusk
+tusker
+tuskers
+tusks
+tussle
+tussled
+tussles
+tussling
+tut
+tutelage
+tutu
+tuxedo
+tuxedo's
+tuxedoed
+tuxedos
+twaddle
+twaddled
+twaddler
+twaddles
+twaddling
+tweedier
+tweediness
+tweedy
+tweeze
+tweezed
+tweezing
+twelfths
+twiddle
+twiddled
+twiddles
+twiddling
+twigged
+twigging
+twinge
+twinges
+twinging
+twinning
+twirly
+twisty
+twit
+twitchy
+twitting
+twosome
+tycoon
+typeahead
+typeface
+typescript
+typeset
+typesets
+typesetter
+typesetters
+typesetting
+typewrite
+typewriting
+typewritten
+typhoon
+typhus
+typicality
+typo
+typographer
+typological
+typologically
+typologies
+typology
+tyrannic
+tyrannical
+tyrannically
+tyrannicalness
+tyrannicide
+tyrosine
+ulcerate
+ulcerated
+ulcerates
+ulceration
+ulcerations
+ulcerative
+ulster
+ulterior
+ulteriorly
+ultimatum
+ultra
+ultracentrifugally
+ultracentrifugation
+ultracentrifuge
+ultraconservative
+ultrafast
+ultramarine
+ultramodern
+ultrashort
+ultrasonic
+ultrasonically
+ultrasonics
+ultrasound
+ultrastructure
+ultraviolet
+umber
+umbered
+umbering
+umbilical
+umbilici
+umbilicus
+umbilicuses
+umbra
+umbrage
+unaccountable
+unadventurous
+unaggressive
+unallocable
+unambiguity
+unamused
+unanimity
+unappeasable
+unappeasably
+unasterisked
+unbalance
+unbeknownst
+unbend
+unbending
+unbent
+unbind
+unblest
+unbutton
+unbuttoning
+uncap
+unceremonious
+unceremoniously
+unceremoniousness
+uncharacteristic
+uncharitably
+unchastity
+unchristian
+uncircumcised
+unclasping
+uncodable
+uncoiling
+uncombable
+uncomment
+uncommenting
+uncomments
+uncommunicable
+uncommunicative
+unconcern
+uncongeniality
+unconscionable
+unconscionableness
+unconventionality
+uncourageous
+uncousinly
+uncritical
+unction
+undedicated
+undeflected
+undeliverability
+undeliverable
+undependable
+underachievers
+underadjusting
+underarm
+underbedding
+underbelly
+underbracing
+underclassman
+underclassmen
+underclothes
+underclothing
+underconsumption
+undercooked
+undercount
+undercounts
+undercover
+undercurrent
+undercut
+underdeveloped
+underdevelopment
+underdog
+undereducated
+underemployed
+underemployment
+underenumerated
+underenumeration
+undergarments
+undergirding
+undergrowth
+underhanded
+underhandedly
+underhandedness
+underheat
+underlay
+underpaid
+underpins
+underpopulated
+underprivileged
+underrate
+underrated
+underregistration
+underreported
+underreporting
+underrepresentation
+underrepresented
+undersea
+underseas
+undersecretaries
+undersecretary
+undersecretary's
+undershirt
+undershirt's
+undershirts
+undershoot
+undershooting
+undershoots
+undershot
+underside
+underside's
+undersides
+undersize
+undersized
+undersizes
+undersizing
+understate
+understatement
+understatements
+understates
+understating
+understructure
+understructure's
+understructures
+understudies
+understudy
+understudy's
+undertow
+undertow's
+undertows
+undervalued
+underwater
+underwhelm
+underwhelmed
+underwhelming
+underwhelms
+underwood
+undeserved
+undogmatically
+undreamt
+undulate
+undulated
+undulates
+undulating
+undulation
+undulations
+unearth
+unearthed
+unearthing
+unease
+uneconomic
+uneducated
+unemployability
+unencroachable
+unenforceable
+unenforcible
+unenunciated
+unenviable
+unfaded
+unfailing
+unfailingly
+unfailingness
+unfathomable
+unfederated
+unfelt
+unfertile
+unfindable
+unfitting
+unfoldment
+unfrocking
+unfrozen
+unfurl
+unfurled
+ungallant
+unglamorous
+ungodliness
+ungodly
+ungracious
+ungrammaticality
+unhand
+unharmonious
+unheated
+unhelpful
+unhesitant
+unhinge
+unholiness
+unholy
+unhook
+unhooked
+unhooking
+unhurried
+unhurt
+unideal
+unidimensional
+unifilar
+unilateral
+unilaterally
+unimaginative
+unimodal
+unimpeachable
+unimpeachably
+unimposing
+unimpressive
+uninitiate
+uninjectable
+uninominal
+uninterested
+uninvolved
+unipolar
+uniprocessor
+uniprocessor's
+uniprocessors
+unitarian
+unitarianism
+unitarians
+unitary
+univalent
+univariate
+universalism
+universalistic
+unkempt
+unkink
+unlacing
+unlearn
+unlearned
+unliterary
+unloveliness
+unlovely
+unmake
+unmalicious
+unmanliness
+unmanly
+unmarred
+unmask
+unmeasured
+unmeritorious
+unmet
+unmethodical
+unmindful
+unmoving
+unobtrusive
+unobtrusively
+unobtrusiveness
+unorthodox
+unorthodoxy
+unpaintable
+unpalatability
+unpartisan
+unperforated
+unphysical
+unpicturesque
+unpreemphasized
+unpremeditated
+unprepared
+unprocurable
+unproductive
+unprofessional
+unprovocative
+unquestionable
+unquestioning
+unquiet
+unquietly
+unquietness
+unreadiness
+unready
+unreality
+unreason
+unreasoning
+unreasoningly
+unreceptive
+unredeemable
+unreeling
+unreflective
+unrelieved
+unremarkable
+unremitting
+unremittingly
+unremunerated
+unrepentant
+unrepresentative
+unrewarding
+unripe
+unripeness
+unromantic
+unscathed
+unscrew
+unscrewed
+unscrewing
+unseat
+unsee
+unselfconscious
+unselfconsciousness
+unservile
+unshakeable
+unsheathe
+unshed
+unsightly
+unsinkable
+unslaked
+unsold
+unsolder
+unspeaking
+unspecific
+unspectacular
+unsprocketed
+unstilted
+unstriated
+unstuffy
+unsubtle
+unsurmountable
+unsystematic
+unteach
+untellable
+untenable
+untenanted
+unthinking
+untidily
+untraditional
+untrodden
+unutterably
+unvacuolated
+unwaivering
+unwariness
+unwarrantable
+unwary
+unwed
+unweighted
+unwire
+unwomanly
+unworkable
+uparrow
+upbeat
+upbring
+upcome
+upcoming
+upend
+upheaval
+upheavals
+upholstery
+upped
+uppercase
+uppercased
+uppercases
+uppercasing
+upperclassman
+upperclassmen
+uppercut
+upraise
+upraised
+uprise
+upriser
+upriver
+uproarious
+uproariously
+uproariousness
+upsilon
+upslope
+upstanding
+upstandingness
+upstate
+upstater
+upsurge
+upswing
+upswings
+uptake
+uptime
+uptown
+uptrend
+upwind
+uranium
+uranyl
+urbane
+urbanely
+urbanism
+urbanite
+urbanites
+urea
+uremia
+urethane
+urethanes
+urethra
+urgencies
+urgency
+urinal
+urinals
+urinary
+usurer
+usurious
+usuriously
+usuriousness
+usurpation
+usury
+uterine
+utile
+utilitarian
+utopia
+utopianism
+utopias
+vacationland
+vaccinating
+vaccination
+vaccinations
+vaccine
+vaccines
+vaccinia
+vaccinial
+vacuity
+vacuolate
+vacuolated
+vacuolates
+vacuolating
+vacuolation
+vacuole
+vacuoles
+vaginal
+vaginally
+vain
+vainglorious
+vaingloriously
+vaingloriousness
+vainness
+valance
+valanced
+valances
+valedictory
+valuate
+valuated
+valuates
+valuating
+valueless
+valuelessness
+vamp
+vamper
+vampire
+vampires
+vanadium
+vandal
+vandalism
+vandals
+vanguard
+variate
+variated
+variates
+variating
+variegate
+variegated
+variegation
+varistor
+varmint
+vascular
+vasectomies
+vasectomy
+vectorial
+velar
+veldt
+veldt's
+veldts
+vellum
+velour
+velours
+velum
+velvety
+venal
+venally
+vendetta
+vendible
+veneer
+veneerer
+veneering
+venerate
+venerated
+venerates
+venerating
+veneration
+venerations
+venereal
+vengeful
+vengefully
+vengefulness
+venial
+venially
+venialness
+venous
+venously
+ventilator
+venturesome
+venturesomely
+venturesomeness
+venturi
+venturis
+venue
+venue's
+venues
+veracious
+veraciously
+veraciousness
+verandah
+verandahed
+verbatim
+verbiage
+verbosity
+verdant
+verdantly
+veridical
+veridically
+verisimilitude
+verity
+vermiculite
+vermilion
+vermouth
+vernacular
+vernacularly
+vernal
+vernally
+vernier
+vertebra
+vertebrae
+vertebral
+vertebrally
+vertigo
+verve
+vesicle
+vesicles
+vesicular
+vesicularly
+vesper
+vespers
+vestal
+vestally
+vestibule
+vestibuled
+vestments
+vestries
+vestry
+vesture
+vestured
+vestures
+vesturing
+vet
+vetch
+vexatious
+vexatiously
+vexatiousness
+viaduct
+viaducts
+vibes
+vibrancy
+vibrant
+vibrantly
+vibrato
+vibrio
+vibrionic
+vicar
+vicarious
+vicariously
+vicariousness
+viewgraph
+viewgraph's
+viewgraphes
+viewless
+viewlessly
+vigil
+vigilantism
+vindicate
+vindicated
+vindicates
+vindicating
+vindication
+vindicative
+vintner
+vinyl
+viola
+virginal
+virginally
+virgule
+virile
+virility
+virtuosi
+virtuosity
+virulence
+virulent
+virulently
+viscera
+visceral
+viscerally
+viscid
+viscidly
+viscoelastic
+viscoelasticity
+viscometer
+viscometer's
+viscometers
+vise
+vised
+viselike
+vising
+visive
+vitiate
+vitiated
+vitiates
+vitiating
+vitiation
+vitreous
+vitreously
+vitreousness
+vitrification
+vitrify
+vitriol
+vitriolic
+vitro
+vituperative
+vituperatively
+viva
+vivace
+vivacious
+vivaciously
+vivaciousness
+vivacity
+vive
+vivers
+vivification
+vivified
+vivifier
+vivify
+vivo
+vixen
+viz
+vocable
+vocabularian
+vocabularianism
+vocalic
+vocalism
+vocalist
+vocalists
+vocative
+vocatively
+vociferous
+vociferously
+vociferousness
+vocoded
+vocoder
+vodka
+vodka's
+voiceband
+voiceless
+voicelessly
+voicelessness
+voila
+volar
+volcanism
+volition
+volitional
+volitionality
+volitionally
+voltaic
+voltmeter
+voltmeter's
+voltmeters
+voluble
+volubleness
+volumetric
+volumetrically
+voluminous
+voluminously
+voluminousness
+voluptuous
+voluptuously
+voodoo
+voodoos
+voracious
+voraciously
+voraciousness
+voracity
+vortices
+vorticity
+votary
+vouchsafe
+vouchsafed
+vouchsafes
+vouchsafing
+vulpine
+vulturelike
+vying
+wackier
+wackiness
+wacko
+wacko's
+wackos
+wacky
+wad
+wadded
+waddle
+waddled
+waddler
+waddles
+waddling
+wads
+wagged
+wagging
+waggish
+waggishly
+waggishness
+waggle
+waggled
+waggles
+waggling
+wainscot
+wainscoted
+wainscoting
+wainscots
+waistline
+wakeful
+wakefully
+wakefulness
+wakeup
+wale
+waler
+wales
+waling
+walkie
+walkover
+wallaby
+wallboard
+wallies
+wallop
+walloped
+walloper
+walloping
+wallops
+wallpaper
+wallpapers
+wally
+wangle
+wangled
+wangler
+wangles
+wangling
+wapiti
+wapitis
+wardroom
+wardrooms
+warehouseman
+warhead
+warheads
+warless
+warmhearted
+warmheartedly
+warmheartedness
+warmish
+warmonger
+warmongering
+warmongers
+warmup
+warren
+warrener
+warreners
+warrens
+wartime
+wartimes
+warty
+washbasin
+washboard
+washbowl
+washcloths
+washier
+washout
+washy
+waspish
+waspishly
+waspishness
+wastebasket
+wastebaskets
+wasteland
+wastelands
+wastewater
+wastrel
+wastrels
+watchband
+watchdog
+watchmake
+watchmaker
+watchmakers
+watchmaking
+watchmen
+watchpoints
+watercourse
+waterfront
+waterline
+waterlines
+waterloo
+waterman
+watermelon
+watershed
+watersheds
+waterside
+watersider
+watertight
+watertightness
+watt
+wattage
+wattages
+wattle
+wattled
+wattles
+wattling
+watts
+waveguide
+waveguides
+wavenumber
+wavier
+waviness
+wavy
+waxwork
+waxworks
+waylaid
+weaponless
+weaponry
+weatherbeaten
+weatherproof
+weatherproofness
+weatherstrip
+webbing
+wedlock
+weediness
+weedy
+weightier
+weightiness
+weightlessness
+weighty
+weirdo
+weirdos
+weirs
+wellbeing
+welsh
+welsher
+welt
+welter
+weltered
+weltering
+welts
+werewolf
+werewolf's
+werewolves
+westbound
+wetland
+wetlands
+wham
+whamming
+what'd
+what're
+whatnot
+whee
+wheedle
+wheedled
+wheedles
+wheedling
+wheelbarrows
+wheelbase
+wheelchair
+wheelchair's
+wheelhouse
+wheelie
+wheeze
+wheezed
+wheezes
+wheezier
+wheeziness
+wheezing
+wheezy
+whelk
+where'd
+where're
+whereabout
+wherefore
+wherefores
+whereof
+whereon
+wheresoever
+wherewith
+whet
+whets
+whetted
+whetting
+whiff
+whiffle
+whiffled
+whiffler
+whiffles
+whiffling
+whig
+whigs
+whimsey
+whimseys
+whinnied
+whinnies
+whinny
+whinnying
+whiplash
+whiplashes
+whippet
+whipsaw
+whipsawed
+whir
+whirlies
+whirligig
+whirly
+whiskies
+whistleable
+whiteface
+whitehead
+whitetail
+whitey
+whither
+who'd
+who'll
+whoa
+whodunit
+whodunit's
+whodunits
+whomsoever
+whoosh
+whop
+whoppers
+whopping
+whosoever
+wicket
+wickets
+widowhood
+widthwise
+wiener
+wieners
+wigging
+wiggle
+wiggled
+wiggler
+wiggles
+wiggling
+wiggly
+wigmaker
+wildcatter
+wildfire
+wildlife
+wilful
+wilfully
+wilily
+willowy
+wimp
+wimp's
+wimpier
+wimpiest
+wimps
+wimpy
+winch
+winched
+wincher
+winches
+winchester
+winching
+windbag
+windbags
+windbreak
+windbreaks
+windfall
+windless
+windlessly
+windlessness
+windowless
+windowpane
+windowpanes
+windowsill
+windshield
+windstorm
+windup
+windward
+windwardly
+winemake
+winemaster
+winery
+wineskin
+wingback
+wingman
+wingmen
+wingspan
+wingtip
+winkle
+winkled
+winkles
+winkling
+winless
+winnow
+winnower
+wino
+winos
+winsome
+winsomely
+winsomeness
+wintertime
+winy
+wireman
+wiremen
+wiseacre
+wisecrack
+wisecracked
+wisecracker
+wisenheimer
+wishbone
+wishy
+wispy
+witter
+witting
+wittingly
+wive
+wiving
+wizen
+wizened
+wobble
+wobbled
+wobbler
+wobbles
+wobbliness
+wobbling
+wobbly
+woebegone
+woebegoneness
+wok
+woken
+wold
+wolfish
+wolfishly
+wolfishness
+won
+woodcarver
+woodchopper
+woodchoppers
+woodcut
+woodcutters
+woodgrain
+woodgraining
+woodhen
+woodlot
+woodruff
+woodshed
+woodside
+woodwind
+woodyard
+woolgather
+woolgatherer
+woolgathering
+wop
+wops
+wordlessly
+workday
+workhouses
+workingmen
+workmanlike
+workout
+workouts
+workpiece
+workpieces
+workplace
+workplace's
+workplaces
+worksheet
+worksheets
+workspace
+workspaces
+worktable
+wormier
+wormy
+worsen
+worsened
+worsening
+worsens
+would've
+wow
+wracking
+wraith
+wraparound
+wrathful
+wrathfully
+wrathfulness
+wreathe
+wreaths
+wrier
+wriest
+wright
+wrinkly
+wristband
+wrongdoer
+wrongdoing
+wrongful
+wrongfully
+wrongfulness
+wry
+wryly
+xenon
+xenophobia
+xerography
+xterm
+xterm's
+xylem
+xylene
+xylophone
+xylophones
+yacht
+yachters
+yachting
+yachts
+yachtsman
+yachtsmen
+yaks
+yang
+yap
+yapping
+yardage
+yarmulke
+yarrow
+yaw
+yawed
+yawing
+yawl
+yaws
+yearbook
+yeastier
+yeastiness
+yeasty
+yen
+yeomanry
+yeshiva
+yesteryear
+yin
+yip
+yipping
+yodel
+yodels
+yoga
+yogi
+yogurt
+yogurt's
+yokel
+yokels
+yolk
+yolks
+yore
+youngish
+youths
+yow
+yowl
+yr
+ytterbium
+yttrium
+yucca
+yule
+yup
+zag
+zagging
+zags
+zealot
+zeitgeist
+zestful
+zestfully
+zestfulness
+zestier
+zesty
+zeta
+zetas
+zig
+zigged
+zigging
+zigzagged
+zigzagging
+zilch
+zing
+zinger
+zings
+zip
+zipped
+zipper
+zippered
+zippers
+zipping
+zips
+zircon
+zirconium
+zloty
+zlotys
+zodiacal
+zombie
+zombies
+zoologist
+zoologists
+zoology
+zounds
+zymurgy
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.2 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.2
new file mode 100644
index 00000000000..d3ec471e801
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.2
@@ -0,0 +1,37616 @@
+AAA
+AAAS
+AC
+ACS
+AK
+AL
+AR
+ASTM
+AZ
+Aarhus
+Abbott
+Abbott's
+Abel
+Abelian
+Abelson
+Abelson's
+Aberdeen
+Aberdeen's
+Abernathy
+Abernathy's
+Abidjan
+Abos
+Abram
+Abram's
+Abyssinia
+Abyssinians
+Acadia
+Accra
+Achaean
+Ackley
+Actaeon
+Acton
+Acton's
+Adair
+Adair's
+Addis
+Adelaide
+Adelaide's
+Adele
+Adele's
+Adelia
+Adelia's
+Aden
+Aden's
+Adkins
+Adler
+Adler's
+Adlerian
+Adolph
+Adolph's
+Adolphus
+Adrian
+Adrian's
+Adrienne
+Adrienne's
+Aeneas
+Aeolus
+Aerobacter
+Aeschylus
+Aesop
+Afrikaner
+Agamemnon
+Agee
+Agee's
+Agnew
+Agnew's
+Agricola
+Agway
+Ahmedabad
+Aida
+Aida's
+Aiken
+Aiken's
+Ainu
+Aitken
+Aitken's
+Akers
+Aladdin
+Alastair
+Alberich
+Albrecht
+Albrecht's
+Albright
+Albright's
+Alcestis
+Alcmena
+Alcott
+Alcott's
+Aldebaran
+Aldrich
+Aldrich's
+Aleutian
+Alexei
+Alexei's
+Alexis
+Alfonso
+Alfonso's
+Alfred
+Alfred's
+Alfredo
+Alfredo's
+Algenib
+Alger
+Alger's
+Algonquian
+Algonquin
+Algonquin's
+Ali
+Alison
+Alison's
+Allegra
+Allis
+Allyn
+Allyn's
+Almaden
+Almaden's
+Alpert
+Alpert's
+Alpheratz
+Alphonse
+Alphonse's
+Alsop
+Alsop's
+Altair
+Altair's
+Alton
+Alton's
+Alva
+Alva's
+Amerada
+Amharic
+Amman
+Ammerman
+Ammerman's
+Amontillado
+Anabel
+Anabel's
+Anacreon
+Analects
+Anatole
+Anatole's
+Anatolian
+Andalusia
+Andrea
+Andrea's
+Andrei
+Andrei's
+Andromache
+Angelica
+Angelica's
+Anglophile
+Anglophiliac
+Anglophilic
+Anglophilism
+Anglophily
+Anglophobe
+Anglophobic
+Annale
+Annalen
+Annalist
+Annalistic
+Annette
+Anselm
+Anselm's
+Anselmo
+Anselmo's
+Antaeus
+Antilles
+Anton
+Anton's
+Antonio
+Antonio's
+Antwerp
+Apetalous
+Appleby
+Appleby's
+Apr
+Aquila
+Aquila's
+Arachne
+Arachne's
+Arapaho
+Arcadian
+Arden
+Arden's
+Arequipa
+Argentinian
+Argive
+Arlen
+Armata
+Armco
+Armenia
+Arragon
+Arrhenius
+Artemia
+Artie
+Artie's
+Arturo
+Arturo's
+Ashmolean
+Asilomar
+Asilomar's
+Assam
+Astarte
+Aston
+Aston's
+Asuncion
+Atchison
+Atchison's
+Athabascan
+Atlantica
+Atropos
+Attlee
+Atwater
+Atwater's
+Atwood
+Atwood's
+Auberge
+Auberge's
+Aubrey
+Aubrey's
+Audrey
+Audrey's
+Auerbach
+Auerbach's
+Aug
+Auriga
+Avernus
+Avery
+Avery's
+Avignon
+Aylesbury
+Azerbaijan
+Azerbaijan's
+Azores
+BEMA
+BIS
+BITNET
+BMW
+BP
+Baden
+Baden's
+Baffin
+Bahrein
+Bahrein's
+Baird
+Baird's
+Baja
+Bakhtiari
+Baku
+Balboa
+Balfour
+Baltimorean
+Bamako
+Banach
+Banbury
+Banbury's
+Bangui
+Barbour
+Barbour's
+Barhop
+Barlow
+Barlow's
+Barnes
+Barnet
+Barnett
+Barnett's
+Barnhard
+Barnhard's
+Barnum
+Barr
+Barr's
+Barrett
+Barrett's
+Barrington
+Barrington's
+Barton
+Barton's
+Basel
+Basque
+Basque's
+Batchelder
+Batchelder's
+Bateman
+Bateman's
+Bathurst
+Bathurst's
+Bator
+Battelle
+Battelle's
+Bausch
+Bayda
+Bayport
+Bayport's
+Bayreuth
+Beardsley
+Beardsley's
+Beckman
+Beckman's
+Beebe
+Beebe's
+Beecham
+Beecham's
+Beijing
+Bela
+Bela's
+Belize
+Bellamy
+Bellamy's
+Bellingham
+Bellingham's
+Bellini
+Bellini's
+Belshazzar
+Belshazzar's
+Benares
+Benelux
+Benelux's
+Benton
+Benton's
+Beograd
+Berea
+Berea's
+Berenices
+Beresford
+Beresford's
+Bergen
+Bergen's
+Bergland
+Bergland's
+Berglund
+Berglund's
+Bergman
+Bergman's
+Bergstrom
+Bergstrom's
+Berman
+Berman's
+Bernardino
+Bernardino's
+Bernardo
+Bernardo's
+Bernet
+Bernet's
+Bernhard
+Berniece
+Bernini
+Bertie
+Bertram
+Bertram's
+Berwick
+Berwick's
+Betsey
+Betsey's
+Bette
+Bette's
+Bhagavadgita
+Bialystok
+Biggs
+Bilbao
+Billiken
+Billikens
+Biltmore
+Biltmore's
+Bini
+Biochimica
+Biometrika
+Biophysica
+Birgit
+Birmingham
+Bismark
+Bismark's
+Bissau
+Bizet
+Bizet's
+Blackfoot
+Blackfoot's
+Blackfoots
+Blaine
+Blaine's
+Blanchard
+Blanchard's
+Bleeker
+Blenheim
+Blinn
+Blinn's
+Bloch
+Bloch's
+Blomberg
+Blomberg's
+Blomquist
+Blomquist's
+Blum
+Blumenthal
+Blumenthal's
+Blythe
+Blythe's
+Boarsh
+Boca
+Boca's
+Bodleian
+Boeotia
+Boeotian
+Bohemianism
+Bois
+Boonton
+Bootes
+Boris
+Bosch
+Bosporus
+Boucher
+Bourbaki
+Bowditch
+Bowditch's
+Bowdoin
+Bowen
+Bowen's
+Boxford
+Boyd
+Boyd's
+Boyle
+Boyle's
+Boylston
+Boylston's
+Bragg
+Brahmaputra
+Brahmsian
+Brandt
+Brandt's
+Brasstown
+Brazzaville
+Bremen
+Bremen's
+Brendan
+Brendan's
+Brennan
+Brennan's
+Brenner
+Brenner's
+Brent
+Brest
+Brest's
+Breton
+Brett
+Brett's
+Brewster
+Brewster's
+Brice
+Bridget
+Bridget's
+Brie
+Briggs
+Briggs's
+Brighton
+Brighton's
+Brillouin
+Brindisi
+Brisbane
+Brisbane's
+Broglie
+Broglie's
+Bromfield
+Bromfield's
+Bromley
+Bromley's
+Brookline
+Brookline's
+Bruckner
+Bruckner's
+Bruegel
+Bruegel's
+Brumidi
+Brumidi's
+Brunswick
+Brunswick's
+Buchenwald
+Buchenwald's
+Buckley
+Buckley's
+Bucknell
+Bucknell's
+Buena
+Buenos
+Bujumbura
+Burke
+Burkes
+Burlington
+Burlington's
+Burnham
+Burtt
+Burtt's
+Buttrick
+Buxtehude
+Buxtehude's
+Buxton
+Byrd
+CA
+CBS
+CDR
+CERN
+CSNET
+CT
+CUNY
+CURVET
+CZ
+Cabot
+Cabot's
+Cady
+Caesarian
+Caesarian's
+Cahill
+Cajun
+Cajun's
+Cajuns
+Calais
+Caldwell
+Caldwell's
+Caleb
+Caleb's
+Calhoun
+Calhoun's
+Calkins
+Callaghan
+Callaghan's
+Callahan
+Callahan's
+Callan
+Callan's
+Calvert
+Calvert's
+Calvin
+Calvin's
+Cambrian
+Camden
+Camden's
+Camembert
+Cameron
+Cameron's
+Cameroon
+Cameroun
+Cameroun's
+Camilla
+Campbell
+Canaan
+Canaan's
+Canfield
+Canfield's
+Canopus
+Cantabrigian
+Capitoline
+Caputo
+Carboloy
+Carbone
+Cardiff
+Cardiff's
+Carey
+Carey's
+Cargill
+Cargill's
+Carib
+Carlin
+Carlin's
+Carlisle
+Carlisle's
+Carlo
+Carlsbad's
+Carlsbads
+Carmela
+Carmen
+Carmen's
+Carolingian
+Carpathia
+Carpathians
+Carr
+Carr's
+Carrara
+Carroll
+Carroll's
+Carruthers
+Casanova
+Casanova's
+Castillo
+Castillo's
+Castroism
+Catalonia
+Catherwood
+Catherwood's
+Caviness
+Cayley
+Cayley's
+Cayuga
+Cayuga's
+Cecropia
+Cedric
+Celebes
+Celia
+Celia's
+Celt
+Centrex
+Cepheus
+Cesare
+Cesare's
+Chadwick
+Chadwick's
+Chandigarh
+Chao
+Chao's
+Charlemagne
+Charlemagne's
+Charlemagnes
+Charon
+Charon's
+Charta
+Chartres
+Chatham
+Chatham's
+Chatsworth
+Chatsworth's
+Chauncey
+Chauncey's
+Chelsea
+Chelsea's
+Cheney
+Cheney's
+Cheryl
+Chiang
+Chiang's
+Chimique
+Chinatown
+Chinatown's
+Chloe
+Chou
+Chou's
+Christensen
+Christensen's
+Christiana
+Christiana's
+Christianson
+Christianson's
+Christina
+Christina's
+Christmastime
+Christoffel
+Christoph
+Christoph's
+Chungking
+Cindy
+Cindy's
+Clapeyron
+Clarendon
+Clarendon's
+Clausius
+Clayton
+Clayton's
+Clifton
+Clifton's
+Clotho
+Co
+Cobb
+Cobb's
+Cochran
+Cochran's
+Cochrane
+Cochrane's
+Coddington
+Coddington's
+Cody
+Cody's
+Coffey
+Coffey's
+Cole
+Cole's
+Colette
+Colette's
+Collins
+Colombo
+Colombo's
+Cominform
+Compagnie
+Compton
+Compton's
+Conakry
+Conant
+Conant's
+Congolese
+Conklin
+Conklin's
+Conley
+Conley's
+Connally
+Connally's
+Connors
+Constantine
+Constantine's
+Convair
+Convair's
+Conway
+Conway's
+Cooke
+Cooke's
+Cooley
+Cooley's
+Copernican
+Corbett
+Corbett's
+Corcoran
+Corcoran's
+Corey
+Corey's
+Corinth
+Coriolanus
+Cornelia
+Cornelia's
+Cornelian
+Cornelius
+Coronado
+Corsica's
+Cortez
+Corvus
+Corydoras
+Cosgrove
+Cosgrove's
+Cottrell
+Cottrell's
+Coulter
+Coulter's
+Courtney
+Courtney's
+Cowan
+Cowan's
+Crispin
+Crispin's
+Croatia
+Croydon
+Croydon's
+Cruickshank
+Cruickshank's
+Cruz
+Culbertson
+Culbertson's
+Cummings
+Cummins
+Curran
+Curran's
+Curtis
+Cushing
+Cushing's
+Custer
+Custer's
+Cuvier
+Cuzco
+Cyclades
+Cyrillic
+Czerniak
+Czerniak's
+DA's
+DC
+DFL
+DMA
+DOD
+Dacca
+Dacca's
+Dada
+Dadaistic
+Dahl
+Dahl's
+Dahomey
+Dahomey's
+Dailey
+Dailey's
+Dairylea
+Daley
+Daley's
+Dalhousie
+Dalzell
+Dalzell's
+Damocles
+Damon
+Damon's
+Dana
+Dana's
+Danubian
+Darcy
+Darcy's
+Darius
+Darwinistic
+Daryl
+Daryl's
+Datamation
+Daugherty
+Daugherty's
+Davison
+Davison's
+Daytona
+Daytona's
+DeKastere
+Deane
+Deane's
+Deanna
+Deanna's
+Decatur
+Decatur's
+Dee
+Dee's
+Deimos
+Deirdre
+Deirdre's
+Deirdres
+Del
+Delaney
+Delaney's
+Delano
+Delano's
+Delia
+Delia's
+Della
+Della's
+Delmarva
+Delphically
+Delphinus
+Demeter
+Deneb
+Deneb's
+Denebola
+Denton
+Denton's
+Dependance
+Derek
+Derek's
+Detroit
+Dhabi
+Dickerson
+Dickerson's
+Dido
+Dido's
+Diebold
+Diebold's
+Dietz
+Diocletian
+Dirichlet
+Dixon
+Dixon's
+Dnieper
+Dnieper's
+Dobbs
+Dodd
+Dodd's
+Dodson
+Dodson's
+Doherty
+Doherty's
+Dolan
+Dolan's
+Domenico
+Domenico's
+Dominick
+Dominick's
+Dominique
+Dominique's
+Doneck
+Doneck's
+Dooley
+Dooley's
+Dorcas
+Doreen
+Doreen's
+Doria
+Doria's
+Doric
+Doric's
+Dorothea
+Dorothea's
+Dorset
+Dorset's
+Dortmund
+Dortmund's
+Dowling
+Dowling's
+Draco
+Draco's
+Draconian
+Dravidian
+Driscoll
+Driscoll's
+Drummond
+Drummond's
+Dubhe
+Dubhe's
+Dudley
+Dudley's
+Dugan
+Dugan's
+Duma
+Duma's
+Dunbar
+Dunbar's
+Dundee
+Dundee's
+Dunedin
+Dunedin's
+Dunlop
+Dunlop's
+Dunn
+Dunn's
+Duquesne
+Durango
+Durango's
+Durer
+Durkin
+Durkin's
+Durrell
+Durrell's
+Durward
+Durward's
+Dusenbury
+Dusenbury's
+Dutton
+Dutton's
+Dwyer
+Dwyer's
+ECG
+EDT
+EEOC
+ERDA
+ESC
+EST
+Eagan
+Eagan's
+Earthman
+Earthman's
+Earthmen
+Earthmen's
+Eaton
+Eaton's
+Eben
+Eben's
+Eccles
+Ecole
+Edmonds
+Edmondson
+Edmondson's
+Edmonton
+Edmonton's
+Eduardo
+Eduardo's
+Effie
+Effie's
+Egan
+Egan's
+Egyptology
+Ehrlich
+Ehrlich's
+Eire
+Eire's
+Eisner
+Eisner's
+Ekstrom
+Ekstrom's
+Eldon
+Eldon's
+Eleazar
+Eleazar's
+Elena
+Elena's
+Elgin
+Elgin's
+Elinor
+Elinor's
+Elisha
+Elisha's
+Ellwood
+Ellwood's
+Elsevier
+Elsevier's
+Elton
+Elton's
+Elwood
+Elwood's
+Ely
+Ely's
+Elysee
+Elysee's
+Emil
+Emil's
+Emile
+Emile's
+Emilio
+Emilio's
+Emmett
+Emmett's
+Engels
+Engle
+Engle's
+Enid
+Enid's
+Ephesus
+Erastus
+Erato
+Erato's
+Erika
+Erika's
+Erlenmeyer
+Erlenmeyer's
+Erskine
+Erskine's
+Esmark
+Esmark's
+Esposito
+Esposito's
+Essen
+Essen's
+Estella
+Estella's
+Estes
+Estonia
+Estonia's
+Etruria
+Eumenides
+Euridyce
+Euridyce's
+Euterpe
+Euterpe's
+Evensen
+Everglade
+Everhart
+Everhart's
+FAA
+FAQ
+FAQ'S
+FL
+FM
+FMC
+FPC
+FSF
+FSF'S
+FTC
+Faber
+Faber's
+Fabian
+Fabian's
+Fafnir
+Fafnir's
+Fahey
+Fahey's
+Falkland
+Falklands
+Fallopian
+Falmouth
+Falmouth's
+Farkas
+Farnsworth
+Farnsworth's
+Fayette
+Fayette's
+Feeney
+Feeney's
+Fenton
+Fenton's
+Ferber
+Ferber's
+Ferguson
+Ferguson's
+Fermat
+Fermat's
+Ferreira
+Ferrer
+Ferrer's
+Fiji
+Fiji's
+Fijian
+Fijian's
+Fijians
+Finley
+Finley's
+Fischbein
+Fischbein's
+Fiske
+Fiske's
+Fizeau
+Fizeau's
+Flagler
+Flagler's
+Flo
+Flo's
+Fogarty
+Foley
+Foley's
+Fomalhaut
+Fomalhaut's
+Fontaine
+Fontaine's
+Forsythe
+Forsythe's
+Fortescue
+Fortescue's
+Foss
+Francine
+Francine's
+Francoise
+Francoise's
+Frankel
+Frankel's
+Fraser
+Fraser's
+Fredericksburg
+Fredericksburg's
+Fredericton
+Fredericton's
+Fredholm
+Fredholm's
+Freemason
+Freetown
+Freetown's
+Freya
+Freya's
+Friedrich
+Friedrich's
+Friesland
+Friesland's
+Frisian
+Fruehauf
+Fruehauf's
+Frye
+Frye's
+Fujitsu
+Fujitsu's
+Fulbright's
+Fulbrights
+Fulton
+Fulton's
+Furman
+Furman's
+GA
+GAO
+GCD
+GE
+GMT
+GOP
+GPO
+GU
+Gaberones
+Gabon
+Gabon's
+Gaines
+Galatia
+Galatia's
+Galen
+Galen's
+Galilean
+Galileo
+Galileo's
+Gallagher
+Gallagher's
+Galt
+Galt's
+Galway
+Galway's
+Gambia
+Gambia's
+Gandhi
+Gandhi's
+Gandhian
+Gannett
+Gannett's
+Garrisonian
+Garth's
+Gaspee
+Gaspee's
+Gaulle
+Gaulle's
+Gautama
+Gegenschein
+Geigy
+Geigy's
+Geminid
+Gemma
+Genesco
+Genoa
+Genoa's
+Ghanian
+Gil
+Gil's
+Gilchrist
+Gilchrist's
+Gilead
+Gilead's
+Gilmore
+Gilmore's
+Gina
+Gina's
+Gino
+Gino's
+Ginsberg
+Ginsberg's
+Ginsburg
+Ginsburg's
+Giuliano
+Giuliano's
+Giuseppe
+Giuseppe's
+Glaswegian
+Glidden
+Glidden's
+Gloriana
+Gloriana's
+Gobi
+Gobi's
+Goddard
+Goddard's
+Godfrey
+Godfrey's
+Godwin
+Godwin's
+Goff
+Goff's
+Goldfield
+Goldstine
+Goldstine's
+Goleta
+Goleta's
+Gonzalez
+Goode
+Goode's
+Goren
+Goren's
+Gorton
+Gorton's
+Gothically
+Gottfried
+Gottfried's
+Gouda's
+Gould
+Gould's
+Graff
+Graff's
+Greene
+Greene's
+Greenpeace
+Greenpeace's
+Greer
+Greer's
+Gresham
+Gresham's
+Grimaldi
+Grimaldi's
+Grinch
+Grinch's
+Griswold
+Griswold's
+Gruyere
+Guardia
+Guelph
+Guenther
+Guenther's
+Guerin
+Guilford
+Guilford's
+Guinevere
+Guinevere's
+Gujarat
+Gujarati
+Gullah
+Gunther
+Gunther's
+Gurkha
+Gurkha's
+Gustafson
+Gustafson's
+Gustav
+Gustav's
+Gustave
+Gustave's
+Gustavus
+Gwyn
+Gwyn's
+HDL
+Haag
+Haag's
+Haas
+Haberman
+Haberman's
+Habib
+Habib's
+Hadamard
+Haddad
+Haddad's
+Hadley
+Hadley's
+Hadrian
+Hagen
+Hagen's
+Hager
+Hager's
+Hagstrom
+Hagstrom's
+Hahn
+Hahn's
+Haines
+Haley
+Haley's
+Halley
+Halley's
+Halsey
+Halsey's
+Halstead
+Halstead's
+Halverson
+Halverson's
+Hamal
+Hamal's
+Hamburg
+Hamlin
+Hamlin's
+Handel
+Handel's
+Haney
+Haney's
+Hanford
+Hanford's
+Hankel
+Hankel's
+Hanley
+Hanley's
+Hanlon
+Hanlon's
+Hanna
+Hanna's
+Hapsburg
+Hapsburg's
+Harbin
+Harbin's
+Harlan
+Harlan's
+Harley
+Harley's
+Harmon
+Harmon's
+Harmonist
+Harmonistic
+Harmonistically
+Harriman
+Harriman's
+Harrington
+Harrington's
+Hathaway
+Hathaway's
+Hatteras
+Hattiesburg
+Hattiesburg's
+Haugen
+Haugen's
+Hausa
+Hausa's
+Hausdorff
+Hausdorff's
+Havilland
+Havilland's
+Hayden
+Hayden's
+Healey
+Healey's
+Healy
+Healy's
+Hebe
+Hebrides
+Hebrides's
+Hecate
+Hecate's
+Heckman
+Heckman's
+Heidegger's
+Heine
+Heine's
+Heinrich
+Heinrich's
+Helga
+Helga's
+Hellespont
+Helvetica
+Hempstead
+Hempstead's
+Henley
+Henley's
+Hennessy
+Henri
+Henri's
+Hermann
+Hermann's
+Hernandez's
+Hertzog
+Hertzog's
+Hesse
+Hesse's
+Hester
+Hester's
+Hetman
+Hetman's
+Hettie
+Hettie's
+Hetty
+Hetty's
+Heusen
+Heusen's
+Heuser
+Heuser's
+Hewett
+Hewett's
+Hewitt
+Hewitt's
+Hiatt
+Hiatt's
+Hibbard
+Hibbard's
+Hickman
+Hickman's
+Higgins
+Hildebrand
+Hildebrand's
+Himalaya
+Himalaya's
+Hindustan
+Hindustan's
+Hines
+Hinman
+Hinman's
+Hippocrates
+Hippocratic
+Hiroshi
+Hiroshi's
+Hirsch
+Hitlerian
+Hitlerism
+Hitlerite
+Hitlerites
+Hoagland
+Hoagland's
+Hobart
+Hobart's
+Hodge
+Hodge's
+Hodgkin
+Hodgkin's
+Hoff
+Hoff's
+Hogan
+Hogan's
+Holcomb
+Holcomb's
+Hollingsworth
+Hollingsworth's
+Holloway
+Holloway's
+Holm
+Holm's
+Holman
+Holman's
+Holmdel
+Holmdel's
+Honshu
+Honshu's
+Hopi's
+Horus
+Hottentot
+Hottentot's
+Houdaille
+Houdaille's
+Houghton
+Houghton's
+Hoyt
+Hoyt's
+Hrothgar
+Hrothgar's
+Hubbard
+Hubbard's
+Hubbell
+Hubbell's
+Huber
+Huber's
+Huffman
+Huffman's
+Huggins
+Hummel
+Hummel's
+Hun
+Huntington
+Huntington's
+Huntley
+Huntley's
+Hurd
+Hurd's
+Hurdies
+Hurwitz
+Huston
+Huston's
+Huxtable
+Huxtable's
+Hyades
+Hyde
+Hyde's
+Hyman
+IA
+ICL
+IEE
+IGN
+IL
+INTERAMA
+IOT
+IQ
+IR
+IRAF
+IRS
+Ian
+Ian's
+Ibn
+Ida
+Ida's
+Ifni
+Igor's
+Ike
+Ike's
+Ilona
+Ilyushin
+Imagen
+Imagen's
+Indo
+Indochinese
+Indoeuropean
+Indus
+Informatica
+Inman
+Inman's
+Ira
+Iranian
+Iranian's
+Iranians
+Iraqi's
+Iraqis
+Irrawaddy
+Irvin
+Irvin's
+Irwin
+Isaacson
+Isaacson's
+Isabella
+Isabella's
+Isadore
+Isadore's
+Isaiah
+Isaiah's
+Isis
+Islamabad
+Islamabad's
+Isolde
+Isolde's
+Istvan
+Istvan's
+Ito
+Ito's
+Iverson
+Iverson's
+JACM
+Jablonsky
+Jablonsky's
+Jacobi
+Jacobi's
+Jacobson
+Jacobson's
+Jacobus
+Jaeger
+Jaeger's
+Jaime
+Jaime's
+Jamie
+Jamie's
+Janos
+Jansenist
+Jansenist's
+Jarvin
+Jarvin's
+Jed
+Jed's
+Jensen
+Jensen's
+Jeres
+Jesuitism
+Jewell
+Jewell's
+Jewett
+Jewett's
+Jimenez
+Jo
+Jo's
+Johanna
+Johanna's
+Johnston
+Johnston's
+Jolla
+Jolla's
+Judaica
+Judd
+Judd's
+Judder
+Juddered
+Juddering
+Judders
+Judson
+Judson's
+Jugoslavia
+Jul
+Jun
+Jung
+Jung's
+Jura
+Jura's
+Juras
+Jutland
+Jutland's
+KS
+KY
+Kahn
+Kahn's
+Kajar
+Kajar's
+Kalmuk
+Kalmuk's
+Kamchatka
+Kamikaze
+Kamikaze's
+Kampala
+Kampala's
+Kampuchea
+Kampuchea's
+Kane
+Kane's
+Kannada
+Kaplan
+Kaplan's
+Karachi
+Karachi's
+Karamazov
+Karamazov's
+Karp
+Karp's
+Kashmir
+Kaskaskia
+Katharine
+Katharine's
+Katowice
+Katowice's
+Katrina
+Katrina's
+Katz
+Kauffman
+Kauffman's
+Kaufman
+Kaufman's
+Keck
+Keck's
+Kelsey
+Kelsey's
+Kemp
+Ken
+Ken's
+Kendall
+Kendall's
+Kennan
+Kennan's
+Kenney
+Kenney's
+Kenton
+Kenton's
+Kenyon
+Kenyon's
+Kernighan
+Kernighan's
+Kerouac
+Kerouac's
+Kerr
+Kerr's
+Kessler
+Kessler's
+Keyes
+Khartoum
+Khartoum's
+Kidde
+Kidde's
+Kieffer
+Kieffer's
+Kiewit
+Kiewit's
+Kigali
+Kigali's
+Kikuyu
+Kikuyu's
+Kilgore
+Kilgore's
+Kilimanjaro
+Kilimanjaro's
+Kimball
+Kimball's
+Kimberly
+Kimberly's
+Kinney
+Kinney's
+Kinshasha
+Kinshasha's
+Kiowa
+Kirchner
+Kirchner's
+Kirov
+Kirov's
+Kitakyushu
+Kitakyushu's
+Klux
+Knapp
+Knapp's
+Knauer
+Knauer's
+Knightsbridge
+Knightsbridge's
+Knossos
+Knott
+Knott's
+Knowlton
+Knowlton's
+Kobayashi
+Kochab
+Kochab's
+Konrad's
+Koppers
+Koran
+Koran's
+Kovacs
+Kovic
+Kovic's
+Kowalewski
+Kowalewski's
+Kowalski
+Kowalski's
+Kowloon
+Krebs
+Krieger
+Krieger's
+Kristin
+Kristin's
+Kronecker
+Kronecker's
+Kruse
+Kruse's
+Kuhn
+Kuhn's
+Kumar
+L'vov
+LDL
+LSI
+LTV
+Laban
+Laban's
+Lacerta
+Lacerta's
+Lachesis
+Lagos
+Laguerre
+Lahore
+Lahore's
+Laidlaw
+Laidlaw's
+Lamar
+Lamar's
+Lamarck
+Lamborghini
+Lamborghini's
+Lamborghinis
+Lana
+Lana's
+Lancelot
+Lancelot's
+Lang
+Lang's
+Langmuir
+Langmuir's
+Lanka
+Lanka's
+Lao
+Larkin
+Larkin's
+Laszlo
+Laszlo's
+Lateran
+Lateran's
+Latinity
+Latrobe
+Latrobe's
+Latvia
+Latvia's
+Laue
+Laue's
+Laughlin
+Laughlin's
+Laurent
+Laurent's
+Lausanne
+Lausanne's
+Lavoisier
+Lavoisier's
+Layton
+Layton's
+Leander
+Leander's
+Lear
+Leeuwenhoek
+Leeuwenhoek's
+Legendre
+Legendre's
+Lehman
+Lehman's
+Leibniz
+Leipzig
+Leipzig's
+Leland
+Leland's
+Lemuel
+Len
+Len's
+Lena
+Lena's
+Lennon
+Lennon's
+Lennox
+Lennox's
+Lenore
+Lenore's
+Leonid
+Leonid's
+Lesotho
+Lesotho's
+Lethe
+Lethe's
+Letitia
+Letitia's
+Leviable
+Levin
+Levin's
+Levitt
+Levitt's
+Lew
+Lew's
+Libby
+Libby's
+Libreville
+Libreville's
+Lieberman's
+Ligget
+Ligget's
+Liggett
+Liggett's
+Lila
+Lila's
+Lilian
+Lilian's
+Lillian
+Lillian's
+Lilly
+Liman
+Lin
+Lin's
+Lind
+Lind's
+Lindbergh
+Lindbergh's
+Lindholm
+Lindholm's
+Lindquist
+Lindquist's
+Lindsay
+Lindsay's
+Lindsey
+Lindsey's
+Lindstrom
+Lindstrom's
+Linnaeus
+Linton
+Lippincott
+Lippincott's
+Lipschitz
+Lipscomb
+Lipscomb's
+Lise
+Lise's
+Lissajous
+Lithuania
+Liverpudlian
+Lodowick
+Lodowick's
+Loeb
+Loeb's
+Loire
+Loki
+Loki's
+Lomb
+Lomb's
+Lombardy
+Lombardy's
+Lome
+Loomis
+Loren
+Loren's
+Lori
+Lori's
+Lorinda
+Lorinda's
+Lotte
+Lotte's
+Lou
+Lou's
+Lounsbury
+Lounsbury's
+Lourdes
+Louvre
+Lowe
+Lowe's
+Lowry
+Lowry's
+Lubell
+Lubell's
+Ludlow
+Ludlow's
+Luis
+Lumpur
+Lund
+Lund's
+Lundberg
+Lundberg's
+Lundquist
+Lundquist's
+Lura
+Lusaka
+Lusaka's
+Lutz
+Luzon
+Luzon's
+Lykes
+Lyman
+Lyman's
+Lyra
+Lyra's
+Lysenko
+Lysenko's
+MDs
+MIPS
+MN
+MO
+MRI
+Mabel
+Mabel's
+MacDougall
+MacDougall's
+MacMahon
+MacMahon's
+Macadamia
+Macassar
+Macaulayan
+Macaulayism
+Macaulayisms
+Macdougall
+Macdougall's
+Machiavellian
+Mackey
+Mackey's
+Maddox
+Madeira
+Madhya
+Madsen
+Madsen's
+Mae
+Mae's
+Mafiosi
+Magellanic
+Magnuson
+Magnuson's
+Magog
+Magog's
+Maharashtra
+Mahayana
+Mahayanist
+Mahoney
+Mahoney's
+Majorca
+Majorca's
+Malabar
+Malabar's
+Malagasy
+Malagasy's
+Malawi
+Malawi's
+Malden
+Malden's
+Maldive
+Maldive's
+Maldives
+Mali
+Mali's
+Maloney
+Maloney's
+Malraux
+Malthus
+Malton
+Malton's
+Manchuria
+Manley
+Manley's
+Mann
+Mann's
+Manuel
+Manuel's
+Mar
+Marc
+Marc's
+Marceau
+Marceau's
+Marcel
+Marcello
+Marcello's
+Marcia
+Marcia's
+Marcie
+Marcie's
+Marco
+Marco's
+Margaret
+Margaret's
+Margery
+Margery's
+Margo
+Margo's
+Marissa
+Marissa's
+Marjory
+Marjory's
+Markham
+Markham's
+Markism
+Markism's
+Marxian
+Maserati
+Maserati's
+Maseratis
+Mateo
+Mateo's
+Matson
+Matson's
+Matsumoto
+Matsumoto's
+Mattson
+Mattson's
+Maurine
+Maurine's
+Mavis
+May
+Mayer
+Mayer's
+Mayo
+Mayo's
+McCallum
+McCallum's
+McCann
+McCann's
+McCarty
+McCarty's
+McConnel
+McConnel's
+McCormick
+McCormick's
+McCullough
+McCullough's
+McDowell
+McDowell's
+McElroy
+McElroy's
+McGee
+McGee's
+McGillicuddy
+McGillicuddy's
+McGinnis
+McGinty
+McGinty's
+McGowan
+McGowan's
+McHugh
+McHugh's
+McKenna
+McKenna's
+McKeon
+McKeon's
+McMahon
+McMahon's
+McMullen
+McMullen's
+McNally
+McNally's
+McNulty
+McNulty's
+Mcadams
+Mcallister
+Mcallister's
+Mcbride
+Mcbride's
+Mccabe
+Mccabe's
+Mccall
+Mccall's
+Mccallum
+Mccallum's
+Mccann
+Mccann's
+Mccarthy
+Mccarthy's
+Mccarty
+Mccarty's
+Mccauley
+Mccauley's
+Mcclain
+Mcclain's
+Mcclellan
+Mcclellan's
+Mcclure
+Mcclure's
+Mccluskey
+Mccluskey's
+Mcconnel
+Mcconnel's
+Mcconnell
+Mcconnell's
+Mccormick
+Mccormick's
+Mccoy
+Mccoy's
+Mccracken
+Mccracken's
+Mccullough
+Mccullough's
+Mcdaniel
+Mcdaniel's
+Mcdermott
+Mcdermott's
+Mcdonald
+Mcdonald's
+Mcdonnell
+Mcdonnell's
+Mcdougall
+Mcdougall's
+Mcdowell
+Mcdowell's
+Mcelroy
+Mcelroy's
+Mcfadden
+Mcfadden's
+Mcfarland
+Mcfarland's
+Mcgee
+Mcgee's
+Mcgill
+Mcgill's
+Mcginnis
+Mcgovern
+Mcgovern's
+Mcgowan
+Mcgowan's
+Mcgrath
+Mcgrath's
+Mcgraw
+Mcgraw's
+Mcgregor
+Mcgregor's
+Mcguire
+Mcguire's
+Mchugh
+Mchugh's
+Mcintosh
+Mcintosh's
+Mcintyre
+Mcintyre's
+Mckay
+Mckay's
+Mckee
+Mckee's
+Mckenna
+Mckenna's
+Mckenzie
+Mckenzie's
+Mckeon
+Mckeon's
+Mckesson
+Mckesson's
+Mckinley
+Mckinley's
+Mckinney
+Mckinney's
+Mcknight
+Mcknight's
+Mclaughlin
+Mclaughlin's
+Mclean
+Mclean's
+Mcleod
+Mcleod's
+Mcmahon
+Mcmahon's
+Mcmillan
+Mcmillan's
+Mcmullen
+Mcmullen's
+Mcnally
+Mcnally's
+Mcnaughton
+Mcnaughton's
+Mcneil
+Mcneil's
+Mcnulty
+Mcnulty's
+Mcpherson
+Mcpherson's
+Medford
+Medford's
+Medusan
+Meg
+Meg's
+Meier
+Meier's
+Meiji
+Melcher
+Melcher's
+Melpomene
+Melpomene's
+Mendel
+Mendel's
+Mendelian
+Menorca
+Menzies
+Merck
+Merck's
+Merritt
+Merritt's
+Mervin
+Mervin's
+Mesopotamia
+Metcalf
+Metcalf's
+Methuen
+Methuen's
+Metrecal
+Metzler
+Metzler's
+Michel
+Michel's
+Michele
+Michele's
+Michelle
+Michelle's
+Millikan
+Millington
+Milne
+Miltonian
+Miltonism
+Miltonist
+Mindanao
+Mindanao's
+Minos
+Minot's
+Minotaur
+Minotaur's
+Minsk
+Minsk's
+Minsky
+Minsky's
+Mirfak
+Mirfak's
+Mizar
+Mizar's
+Moe
+Moe's
+Moen
+Moen's
+Mogadiscio
+Moghul
+Mohammedanism
+Mohr
+Moiseyev
+Moiseyev's
+Moldavia
+Moloch
+Moluccas
+Mona
+Mona's
+Monash
+Mongolianism
+Monmouth
+Monmouth's
+Monoceros
+Monongahela
+Monongahela's
+Montenegrin
+Montenegrin's
+Monteverdi
+Monteverdi's
+Montmartre
+Montmartre's
+Montrachet
+Montrachet's
+Moran
+Moran's
+Moresby
+Moresby's
+Morley
+Morley's
+Morrill
+Morrill's
+Morris
+Morrissey
+Morrissey's
+Moser
+Moser's
+Moulton
+Moulton's
+Mouton
+Moyer
+Moyer's
+Mpc
+Mt
+Mudd
+Mudd's
+Mueller
+Mueller's
+Muenster
+Mukden
+Mukden's
+Muong
+Muong's
+Muzo
+Muzo's
+Mynheer
+Myra
+Myra's
+Mysore
+NC
+NCO
+NE
+NH
+NIH
+NIMH
+NJ
+NM
+NMR
+NNE
+NNW
+NRC
+NTIS
+NV
+NW
+NY
+NYC
+NYT
+NYU
+Nadine
+Nadine's
+Nagoya
+Nagoya's
+Nagy
+Nagy's
+Nair
+Nair's
+Nakayama
+Narbonne
+Narbonne's
+Narragansett
+Narragansett's
+Nate's
+Neal
+Nebuchadnezzar
+Nebuchadnezzar's
+Ned
+Ned's
+Neff
+Neff's
+Nehru
+Nehru's
+Neil
+Neil's
+Nell
+Nell's
+Nellie
+Nellie's
+Nelsen
+Nelsen's
+Ness
+Neva
+Neva's
+Nevins
+Newbold
+Newbold's
+Newton
+Newton's
+Nguyen
+Nguyen's
+Niamey
+Niamey's
+Nibelung
+Nicholls
+Nicosia
+Nicosia's
+Niger
+Niger's
+Nikko
+Nikko's
+Nikolai
+Nikolai's
+Nineveh
+Noetherian
+Nolan
+Nolan's
+Noll
+Noll's
+Nora
+Nora's
+Nordhoff
+Nordhoff's
+Nordic
+Nordstrom
+Nordstrom's
+Noreen
+Noreen's
+Northrop
+Northrop's
+Northrup
+Northrup's
+Nostrand
+Nostrand's
+Nov
+Novak
+Novak's
+Novosibirsk
+Novosibirsk's
+Nubia
+Nubia's
+Nyquist
+Nyquist's
+O'Neill
+O'Neill's
+OSF
+OSF'S
+Oceania
+Oct
+Odin
+Ojibwa
+Olav
+Olav's
+Olduvai
+Oligocene
+Olin
+Olin's
+Olivier
+Olivier's
+Onondaga
+Onondaga's
+Ophiucus
+Oresteia
+Oresteia's
+Orestes
+Orin
+Orinoco
+Orion
+Orion's
+Orkney
+Orkney's
+Orly
+Orono
+Orono's
+Orphically
+Orr
+Orr's
+Orville
+Orville's
+Osgood
+Osgood's
+Osiris
+Otis
+Ott
+Ott's
+Ouagadougou
+PR
+PVC
+Palladian
+Palo
+Panamanian
+Pandanus
+Pangaea
+Paoli
+Paoli's
+Papua
+Papua's
+Paraguayan
+Paraguayan's
+Paraguayans
+Paramus
+Pareto
+Pareto's
+Parke
+Parke's
+Parkinsonian
+Parmesan
+Parr
+Parr's
+Parrs
+Parsi
+Parsifal
+Parsifal's
+Parthia
+Paso
+Paterson
+Paterson's
+Patti
+Patti's
+Paulo
+Paulo's
+Paulus
+Pavlovian
+Paz
+Peale
+Peale's
+Pease
+Peiping
+Peloponnese
+Pembroke
+Pembroke's
+Penelope
+Penelope's
+Penh
+Penrose
+Pentateuch
+Percival
+Percival's
+Periclean
+Perilla
+Perle
+Perle's
+Permian
+Perseid
+Persephone
+Persephone's
+Peter
+Peters
+Phelps
+Phillip
+Phillip's
+Phipps
+Phobos
+Phoenicia
+Phoenicia's
+Pickett
+Pickett's
+Pict
+Piedfort
+Piedmont
+Pilate
+Pinsky
+Pinsky's
+Piotr
+Piotr's
+Piraeus
+Piscataway
+Piscataway's
+Pizarro
+Pl
+Pollard
+Pollard's
+Poly
+Polyhymnia
+Polynesia
+Polynesia's
+Polys
+Ponce
+Ponchartrain
+Ponchartrain's
+Poole
+Poole's
+Porte
+Porte's
+Portia
+Porto
+Posner
+Posner's
+Poynting
+Poynting's
+Pradesh
+Prado
+Pretorian
+Priam
+Pritchard
+Pritchard's
+Procter
+Procter's
+Proserpine
+Proserpine's
+Protista
+Provence
+Pugh
+Punic
+Punjab
+Punjab's
+Punjabi
+Pusan
+Pusan's
+Pusey
+Pusey's
+Putnam
+Putnam's
+Pyle
+Pyle's
+Pyongyang
+Pyongyang's
+Pyotr
+Pyotr's
+QED
+QM
+Qatar
+Qatar's
+Queensland
+Queensland's
+Quezon
+Quezon's
+Quichua
+Quirinal
+Quito
+Quito's
+Quixotism
+RFI
+RNA
+Rabat
+Rabat's
+Rabin
+Rabin's
+Rae
+Rae's
+Rafferty
+Rafferty's
+Ragusan
+Raman
+Raman's
+Ramo
+Ramo's
+Ranier
+Ranier's
+Rankin
+Rankin's
+Rankine
+Raritan
+Raritan's
+Rastus
+Ratfor
+Raul
+Raul's
+Recife
+Recife's
+Redmond
+Redmond's
+Redondo's
+Regis
+Reid
+Reid's
+Remy
+Rena
+Rena's
+Renault
+Renault's
+Rene
+Rene's
+Rensselaer
+Rensselaer's
+Reub
+Reub's
+Reykjavik
+Reykjavik's
+Rhineland
+Rhoda
+Rhoda's
+Rhode
+Rica
+Ricanism
+Rico
+Riemannian
+Riga
+Rigel
+Rigel's
+Riordan
+Riordan's
+Rocco
+Rochford
+Romanesque
+Romeldale
+Roquemore
+Rosenblum
+Rosenblum's
+Rosenthal
+Rosenthal's
+Rosenzweig
+Rosenzweig's
+Rothschild
+Rothschild's
+Rourke
+Rowe
+Rowe's
+Roxbury
+Roxbury's
+Royce
+Rubaiyat
+Ruben
+Ruben's
+Rubin
+Rubin's
+Rudolf
+Rudolf's
+Rudyard
+Rudyard's
+Runge
+Russo
+Russo's
+Ruthful
+Ruthfully
+Ruthfulness
+Rwanda
+Rwanda's
+Rydberg
+Rydberg's
+SC
+SCM
+SD
+SE
+SIAM
+SIDS
+SIGABRT
+SIGALRM
+SIGBUS
+SIGCHLD
+SIGCLD
+SIGCONT
+SIGEMT
+SIGFPE
+SIGHUP
+SIGILL
+SIGINT
+SIGIO
+SIGIOT
+SIGKILL
+SIGPIPE
+SIGPROF
+SIGQUIT
+SIGSEGV
+SIGSTOP
+SIGSYS
+SIGTERM
+SIGTRAP
+SIGTSTP
+SIGTTIN
+SIGTTOU
+SIGURG
+SIGUSR
+SIGVTALRM
+SIGWINCH
+SIGXCPU
+SIGXFSZ
+SOS
+SSE
+SST
+SSW
+SUNY
+SW
+Sabina
+Sabina's
+Sachs
+Sachsen
+Sadler
+Sadler's
+Sagittarius
+Sal
+Salesian
+Salina
+Salina's
+Salish
+Salle
+Sally
+Salton
+Samaritan
+San
+Sana
+Sanborn
+Sanborn's
+Sanderling
+Santo
+Santos
+Sappho
+Sappho's
+Saracen
+Saracen's
+Saracens
+Saran
+Sardinia
+Sardinia's
+Sarge's
+Satanism
+Satanist
+Saturnism
+Saul
+Saul's
+Sault
+Savoy
+Savoyard
+Savoyards
+Scala
+Scala's
+Scarborough
+Scarlatti
+Scarlatti's
+Scarsdale
+Scarsdale's
+Schantz
+Scheherazade
+Scheherazade's
+Schiller
+Schiller's
+Schlesinger
+Schlesinger's
+Schloss
+Schnabel
+Schnabel's
+Schoenberg
+Schoenberg's
+Schofield
+Schofield's
+Schottky
+Schottky's
+Schuyler
+Schuyler's
+Schuylkill
+Schwab
+Schweitzer
+Schweitzer's
+Seagram
+Seagram's
+Sean
+Sean's
+Sebring
+Sebring's
+Segovia
+Seidel
+Selena
+Selena's
+Selkirk
+Selkirk's
+Selwyn
+Selwyn's
+Sep
+Sepoy
+Serbia
+Serbia's
+Sergei
+Sergei's
+Serpens
+Seth
+Seth's
+Seton
+Severn
+Severn's
+Sextans
+Seychelles
+Shafer
+Shafer's
+Shaffer
+Shaffer's
+Shannon
+Shantung
+Shari
+Shari's
+Sharpe
+Shattuck
+Shattuck's
+Shea
+Shedir
+Sheehan
+Sheehan's
+Shepard
+Sheppard
+Sheppard's
+Sheri
+Sheri's
+Sherrill
+Sherrill's
+Shipley
+Shiva
+Shiva's
+Shmuel
+Shockley
+Shockley's
+Shoshone
+Shoshone's
+Shu
+Shu's
+Shulman
+Shulman's
+Sian
+Sian's
+Sibley
+Siegel
+Siegel's
+Sieglinda
+Sieglinda's
+Siegmund
+Siegmund's
+Siemens
+Siena
+Sifford
+Siggraph
+Sigil
+Simla
+Simonson
+Simonson's
+Sims
+Sinbad
+Sinbad's
+Singborg
+Sino
+Sitar
+Sitarist
+Skopje
+Slavonic
+Slocum
+Slocum's
+Slovakia
+Slovakia's
+Slovenia
+Slovenia's
+Smalley
+Smalley's
+Smithson
+Smithson's
+Smyrna
+Smyrna's
+Smythe
+Soc
+Societe
+Soddy
+Solon
+Soloviev
+Somalia
+Sommerfeld
+Sommerfeld's
+Sonenberg
+Sony
+Sony's
+Southernwood
+Southey
+Spacewar
+Spaulding
+Spaulding's
+Speakerphone
+Spector's
+Spica
+Spicas
+Spiro
+Spiro's
+Spitz
+Sposato
+Sprague
+Sprague's
+Sproul
+Sproul's
+Sri
+Sri's
+Stahl
+Stahl's
+Stanhope
+Stanhope's
+Stargate
+Stargate's
+Staunton
+Steele
+Steele's
+Steen
+Steen's
+Stefan
+Stefan's
+Stendhal
+Stendler
+Sternberg
+Sternberg's
+Stone
+Stone's
+Storey
+Storeyed
+Storeys
+Stratton
+Stratton's
+Strickland
+Strickland's
+Strindberg
+Strom
+Strom's
+Sturbridge
+Sturbridge's
+Sturm
+Sturm's
+Stylar
+Subapically
+Sumeria
+Sumner
+Sumner's
+Sus
+Svetlana
+Svetlana's
+Swansea
+Swansea's
+Swarthout
+Swarthout's
+Swink
+Sykes
+Sylow
+Sylvie's
+Synge
+Szilard
+TA
+TN
+TOEFL
+TTY
+TWX
+TX
+Talmudism
+Tamil
+Tanaka
+Tanaka's
+Tananarive
+Tarbell
+Tarbell's
+Tartary
+Tass
+Taurus
+Tegucigalpa
+Tegucigalpa's
+Terpsichore
+Terpsichore's
+Terre
+Terre's
+Tesseract
+Thalia
+Thalia's
+Thayer
+Thayer's
+Thea
+Thea's
+Thermofax
+Thessalonian
+Thessalonians
+Thessaly
+Thetis
+Thomistic
+Thomistic's
+Thorstein
+Thrace
+Thrace's
+Thracian
+Thuban
+Thuban's
+Tientsin
+Tientsin's
+Tina
+Tina's
+Tirana
+Tirana's
+Tito's
+Toby
+Toby's
+Tom
+Tom's
+Tomlinson
+Tomlinson's
+Tompkins
+Tories
+Torrance
+Torrance's
+Tory
+Transite
+Transite's
+Transputer
+Transvaal
+Transvaal's
+Transylvania's
+Trevelyan
+Trevor
+Triangulum
+Triassic
+Trichinella
+Trichinella's
+Triplett
+Triplett's
+Trobriand
+Troy
+Truk
+Tutankhamen
+Tutenkhamon
+Twombly
+Twombly's
+Tyburn
+Tyburn's
+Tyrannosaurus's
+Tzeltal
+UK
+USGS
+USIA
+USN
+UT
+UV
+Ukraine
+Ukraine's
+Ulan
+UniPlus
+UniPlus's
+UniSoft
+UniSoft's
+Urania
+Urdu
+Uri
+Uris
+Urquhart
+Utrecht
+Utrecht's
+VA
+VAX
+VT
+Vaduz
+Valery
+Valery's
+Valletta
+Valletta's
+Valois
+Valparaiso
+Vancement
+Vanderpoel
+Vanderpoel's
+Varitype
+Varitype's
+Vasquez
+Vasquez's
+Vassar
+Vassar's
+Vaughan
+Vaughan's
+Veda
+Veda's
+Veganism
+Vella
+Vella's
+Veneto
+Veneto's
+Verde
+Verde's
+Verderer
+Verdi
+Verdi's
+Verna
+Verna's
+Versatec
+Versatec's
+Vesuvius
+Vida
+Vida's
+Vientiane
+Vientiane's
+Vikram
+Vinci
+Vinci's
+Virgil
+Virgil's
+Vito
+Vito's
+Volterra
+Volterra's
+Voss
+Vought
+Vought's
+Vreeland
+Vreeland's
+Vulcanism
+WA
+WAC
+WI
+WV
+WY
+Waals
+Wadsworth
+Wadsworth's
+Wagnerian
+Wahl
+Wahl's
+Waite
+Waite's
+Waldron
+Waldron's
+Wallis
+Waltham
+Waltham's
+Wappinger
+Wappinger's
+Warburton
+Watanabe
+Watanabe's
+Webb
+Webb's
+Wehr
+Wehr's
+Wei
+Wei's
+Weierstrass
+Weisenheimer
+Weller
+Welles
+Welton
+Werther
+Werther's
+Whalen
+Whalen's
+Whatley
+Whatley's
+Whitaker
+Whitaker's
+Whitehorse
+Whitehorse's
+Wightman
+Wightman's
+Wilkie
+Wilkie's
+Wilkins
+Willa
+Willa's
+Willis
+Wiltshire
+Wiltshire's
+Winchester
+Wisenheimer
+Witt
+Witt's
+Wittgenstein
+Wittgenstein's
+Wolfe
+Wolfe's
+Wolff
+Wolff's
+Wong
+Wong's
+Woodstock
+Woodstock's
+Woody
+Woody's
+Wotan
+Wotan's
+Wu
+Wu's
+Wyatt
+Wyatt's
+Wyeth
+Wyeth's
+Wylie
+Wylie's
+Wynn
+Wynn's
+Xenakis
+Xhosa
+Yankton
+Yankton's
+Yaounde
+Yaounde's
+Yarmouth
+Yarmouth's
+Yellowknife
+Yellowknife's
+Yellowstone
+Yellowstone's
+Yorkshire
+Yorkshire's
+Yost
+Yost's
+Zagreb
+Zagreb's
+Zambia
+Zambia's
+Zan
+Zan's
+Zoe
+Zoe's
+Zorn
+ab
+abacterial
+abacus
+abacuses
+abandonee
+abashment
+abatis
+abatises
+abattoir
+abaxial
+abbacy
+abbas
+abberations
+abbreviator
+abdicable
+abdicator
+abduce
+abduced
+abducens
+abducent
+abducentes
+abducing
+abeam
+abecedarian
+aberrance
+aberrancy
+aberrated
+aberrational
+abetment
+abhorrence
+abidance
+abiogenesis
+abiogenetic
+abiogenetical
+abiogenetically
+abiogenist
+abiological
+abiologically
+abiotic
+abiotically
+abjuration
+ablaut
+abloom
+abluted
+ablutionary
+abnegate
+abnegates
+abnegation
+abnegator
+aboil
+abolishable
+abolitionary
+abolitionism
+abomasal
+abominably
+abominator
+abominators
+aboral
+aborally
+abortifacient
+abortionist
+abortionists
+abovementioned
+abracadabra
+abradable
+abradant
+abreact
+abridgement
+abrin
+abroach
+abruption
+abscise
+abscised
+abscisin
+abscising
+abscission
+absinth
+absolutism
+absolutist
+absolutistic
+absorbability
+absorbable
+absorbance
+absorbancy
+absorbant
+absorbtions
+absorptance
+absorptional
+abstemious
+abstentious
+abstractable
+abstractional
+abstrict
+abstriction
+abstrictions
+abstrusity
+absurdism
+absurdist
+absurdum
+abubble
+abuilding
+abutilon
+abuttals
+abuzz
+abyssal
+academe
+academical
+academicism
+academism
+acanthocephalan
+acanthopterygian
+acanthus
+acanthuses
+acarpellous
+acarpelous
+acatalectic
+acaulescence
+acaulescent
+accelerando
+accentless
+acceptation
+accessary
+accessibleness
+accessional
+accessorial
+acciaccatura
+accidence
+accidentalism
+accidentalist
+accipiter
+acclivity
+accommodational
+accommodator
+accommodators
+accompanyist
+accompanyists
+accomplishable
+accordionist
+accordionists
+accostable
+accountantship
+accreditable
+accrete
+accreted
+accreting
+accretionary
+accretive
+accruable
+accruement
+acculturational
+acculturationist
+accumbency
+accumbent
+accumulable
+accurses
+accursing
+accurst
+accusatory
+accusor
+accustomation
+acedia
+acellular
+acentric
+acephalous
+acerb
+acerbate
+acerbic
+acerbically
+acerbity
+acervate
+acervately
+acervation
+acetal
+acetaldehyde
+acetamide
+acetaminophen
+acetification
+acetifier
+acetify
+acetonic
+acetous
+acetyl
+acetylate
+acetylation
+acetylative
+acetylenic
+achier
+achiest
+achiness
+achromat
+achromatically
+achromaticity
+achromatism
+achy
+acidhead
+acidiferous
+acidifiable
+acidification
+acidifier
+acidify
+acidimeter
+acidimeter's
+acidimeters
+acidimetric
+acidimetry
+acidulant
+acidulate
+acidulation
+acidulent
+acinus
+acock
+acold
+acquaintanceship
+acquirement
+acquisitional
+acquisitionist
+acquisititious
+acquitment
+acquittance
+acridity
+acrobacy
+acrobatically
+acrocentric
+acrodont
+acronymic
+acronymically
+acropetal
+acropetally
+acrophobia
+acrophobic
+acrostic
+acrostical
+acrostically
+actability
+actable
+actinolite
+actionable
+actionably
+actionless
+activistic
+actorish
+actuary
+aculeate
+acuminate
+acumination
+acupuncture
+acyl
+acylate
+acylated
+acylates
+adamance
+adamancy
+adamantine
+adaptaplex
+adaptational
+adaptationally
+adaptitude
+adaptivity
+adaxial
+addable
+addible
+addlepated
+addressor
+adducible
+adenine
+adenoid
+adenoidal
+adenoids
+adenoma
+adenomatous
+adenosine
+adherend
+adhesional
+adiabaticlly
+adieux
+adipic
+adipose
+adiposity
+adject
+adjudicator
+adjudicatory
+adjunction
+adjuration
+adjuratory
+adjustability
+adjustmental
+adjutancy
+adjuvant
+adle
+adman
+admeasure
+admeasurement
+administrant
+administrational
+administrationist
+admirability
+admissive
+admitter
+admitters
+admonitorily
+admonitory
+adoptability
+adoptable
+adoptee
+adoptees
+adoptianism
+adoptianist
+adoptionism
+adoptionist
+adorability
+adorably
+adoze
+adposition
+adrenalin
+adrenergic
+adrenocortical
+adscititious
+adsorbability
+adsorbable
+adsorbent
+adulator
+adulatory
+adulterant
+adulterator
+adulteress
+adulteresses
+adulterine
+adultlike
+adust
+advection
+advections
+advective
+adventuresome
+adventuresomeness
+adventuress
+adventuresses
+adventurism
+adventurist
+adventuristic
+adventurists
+adversative
+adversatively
+advertence
+advertency
+advertent
+advertently
+advocator
+adynamic
+adz
+adze
+aeolotropic
+aeolotropy
+aeonian
+aeonic
+aerialist
+aerie
+aerier
+aerily
+aero
+aeroballistic
+aeroballistics
+aerobatic
+aerobatics
+aerobe
+aerobically
+aerobiological
+aerobiologically
+aerobiology
+aerobiosis
+aerobiotic
+aerobiotically
+aerodynamical
+aerodynamically
+aerodynamicist
+aerodyne
+aeroembolism
+aerogene
+aerogenes
+aerogram
+aerogram's
+aerograms
+aerographer
+aerography
+aerolite
+aerolith
+aerolitic
+aerological
+aerologist
+aerology
+aeromagnetic
+aeromechanics
+aeromedical
+aeromedicine
+aerometeorograph
+aerometer
+aerometer's
+aerometers
+aeronaut
+aeroneurosis
+aeronomer
+aeronomic
+aeronomical
+aeronomics
+aeronomist
+aeropause
+aerosphere
+aerostat
+aerostatics
+aerothermodynamics
+aery
+aesthesiometer
+aesthesiometer's
+aesthesiometers
+afeard
+afeared
+affability
+affably
+affaire
+affaires
+affectability
+affectable
+affectate
+affectional
+affectionally
+affectionless
+affectivity
+affectless
+affectlessness
+affiance
+affiant
+afficionado
+affine
+affined
+affinely
+affirmable
+affirmance
+affixable
+affixal
+affixation
+affixial
+affixment
+affluency
+afflux
+affray
+affusion
+afghani
+aficionada
+aflatoxin
+aflutter
+afreet
+afrika
+afrikaans
+afterburner
+afterburners
+aftercare
+afterclap
+afterdamp
+afterdeck
+afterimage
+afterpiece
+aftertaste
+aftertax
+aftertime
+afterword
+afterworld
+agamete
+agamic
+agamically
+agapeic
+agapeically
+agave
+agaze
+ageing
+agelong
+agendaless
+agendum
+agene
+agenesis
+agentry
+aggie
+aggies
+agglutinability
+agglutinogen
+agglutinogenic
+aggradation
+aggrade
+aggregational
+aggress
+aggressivity
+agio
+agios
+agitational
+agitato
+agitprop
+aglare
+aglitter
+agnate
+agnatic
+agnatically
+agnation
+agnomen
+agnosticism
+agon
+agone
+agonic
+agonist
+agonistic
+agonistical
+agonistically
+agonists
+agoraphobia
+agoraphobic
+agouti
+agrarianism
+agreeability
+agriculturalist
+agriculturist
+agrimony
+agriology
+agrobiological
+agrobiologically
+agrobiology
+agrologic
+agrological
+agrologically
+agrologist
+agrology
+agronomic
+agronomical
+agronomically
+agronomics
+agronomist
+agronomy
+aground
+aguish
+aguishly
+ahistoric
+ahistorical
+ahold
+aidman
+aigrette
+ailanthus
+aile
+airbrush
+airburst
+airbus
+aircrew
+airdrome
+airfreight
+airglow
+airmanship
+airmobile
+airpost
+airscrew
+airsick
+airsickness
+airstream
+airwave
+airwaves
+airworthiness
+airworthy
+aitch
+alabastrine
+alack
+alacritous
+alai
+alamogordo
+alarmism
+alary
+alate
+alated
+alation
+alb
+albedo
+albinic
+albinism
+albino
+albinotic
+albuminoid
+albuminous
+alcaic
+alcazar
+alchemic
+alchemical
+alchemically
+alchemist
+alchemistic
+alchemistical
+alcoholically
+alcoholometer
+alcoholometer's
+alcoholometers
+alcoholometry
+aldermanic
+aldrin
+aleatoric
+aleatory
+alehouse
+alembic
+alexandrine
+alexandrite
+alexia
+alfa
+algal
+algebraist
+algicidal
+algicide
+algid
+algidity
+algin
+algophobia
+alia
+alicyclic
+alidade
+alienability
+alienable
+alienage
+alienator
+alienee
+alienism
+alienist
+alienor
+aliform
+alightment
+alimentary
+alimentation
+alimentative
+aline
+alinement
+aliphatic
+aliquot
+aliquot's
+aliquots
+alizarin
+alk
+alkahest
+alkahestic
+alkalescence
+alkalescent
+alkalify
+alkalimeter
+alkalimeter's
+alkalimeters
+alkalimetry
+alkalinity
+alkaloidal
+alkalosis
+alla
+allan
+allegate
+allegorist
+allelic
+allelism
+allelomorph
+alleluia
+allemand
+allergen
+allergenic
+allergist
+allery
+alleviatory
+allheal
+alliaceous
+allium
+allocatable
+allocution
+allogamous
+allogamy
+allogeneic
+allograft
+allograph
+allographic
+allomerism
+allomerous
+allometric
+allometry
+allomorph
+allomorphic
+allomorphism
+allonge
+allons
+allopath
+allopathic
+allopathically
+allopathy
+allopatric
+allopatrically
+allopatry
+allophane
+allopurinol
+allosteric
+allosterically
+allotee
+allotransplant
+allotransplantation
+allotrope
+allotropically
+allotropy
+allottee
+allottees
+allotype
+allotypic
+allotypically
+allotypy
+allover
+allseed
+alluvion
+allyl
+allylic
+almandine
+almandite
+almsgiver
+almsgiving
+almshouse
+alogical
+alogically
+aloin
+alongshore
+alpaca
+alpenglow
+alpenstock
+alpestrine
+alphameric
+alphamerical
+alphamerics
+alphanumerical
+alphanumerically
+alpinism
+alpinist
+alright
+altarpiece
+altazimuth
+alterability
+alterably
+alterate
+alterative
+alterman
+altern
+althea
+altimetry
+altitudinal
+altitudinous
+altocumulus
+altricial
+alumina
+aluminate
+aluminosilicate
+aluminous
+alunite
+alveolate
+alveolation
+alyssum
+alytical
+amah
+amalgamator
+amanita
+amanuenses
+amaranth
+amassment
+amative
+amatively
+amativeness
+amaurosis
+amaurotic
+amazonite
+ambage
+ambages
+ambagious
+ambassadorial
+ambassadorship
+ambassadress
+ambergris
+ambidexterity
+ambience
+ambiences
+ambit
+ambitionless
+ambiversion
+ambiversive
+ambivert
+ambrotype
+ambsace
+ambulacral
+ambulacrum
+ambulate
+ambulation
+ambulatorily
+ambushment
+ameliorator
+amelioratory
+amenabilities
+amenability
+amenably
+amendable
+amendatory
+amende
+ament
+amentia
+amerce
+amercement
+amerciable
+amercing
+ametropia
+ametropic
+ami
+amiability
+amiably
+amicability
+amidships
+amiens
+amine
+amis
+amitosis
+amitotic
+amitotically
+amitrole
+ammino
+ammoniacal
+ammoniate
+ammoniation
+ammonification
+ammonifier
+ammonify
+ammonite
+ammonites
+ammonitic
+ammonoid
+amnesia
+amnesiac
+amnesic
+amnestic
+amnia
+amniocentesis
+amnion
+amniote
+amniotic
+amoeban
+amoebiasis
+amoebic
+amoebocyte
+amoeboid
+amoralism
+amoretto
+amorphism
+amort
+amphibia
+amphibole
+amphibolite
+amphibolitic
+amphioxis
+amphioxus
+amphipathic
+amphiploid
+amphipod
+amphitheatric
+amphitheatrical
+amphitheatrically
+amphitropous
+amplexicaul
+amplexus
+amplidyne
+ampul
+ampule
+amputator
+amputee
+amra
+amuck
+amygdaloid
+amylolytic
+ana
+anabaptism
+anabasis
+anabatic
+anabiosis
+anabiotic
+anabolic
+anabolism
+anachronic
+anachronous
+anachronously
+anaclitic
+anacoluthic
+anacoluthically
+anaculture
+anadiplosis
+anaerobe
+anaerobically
+anaerobiosis
+anaglyphic
+anagrammatic
+anagrammatical
+anagrammatically
+analemma
+analemma's
+analemmas
+analeptic
+analgesia
+analgetic
+analogic
+analogist
+analphabet
+analphabetic
+analphabetism
+analysand
+anaphase
+anaphasic
+anaphylaxis
+anaplasia
+anaplastic
+anarch
+anarchism
+anarchistic
+anarcho
+anastasia
+anastigmat
+anastrophe
+anatomist
+anatoxin
+anatropous
+ancestress
+anchoress
+anchoret
+anchoritic
+anchoritically
+anchorless
+anchorman
+ancientry
+andalusite
+andante
+andantino
+andesine
+andesite
+andesitic
+andiron
+andradite
+androgen
+androgenic
+androgyny
+android
+anecdotage
+anecdotalist
+anecdotalists
+anecdotic
+anecdotical
+anecdotically
+anecdotist
+anemograph
+anemographic
+anemometric
+anemometrical
+anent
+aneroid
+aneurism
+aneurysm
+aneurysmal
+anfractuosity
+anfractuous
+angary
+angelical
+angelically
+angerless
+angina
+anginal
+anginose
+angiocardiographic
+angiocardiography
+anglesite
+angleworm
+anglia
+anglice
+anglicism
+angularity
+angulation
+ani
+anile
+animalcular
+animalcule
+animalculum
+animalism
+animalist
+animalistic
+animality
+animallike
+animist
+animistic
+animus
+aniseed
+aniseikonia
+anisette
+anisotropically
+anisotropism
+ankerite
+ankh
+anklebone
+anklebones
+anklet
+annelid
+annexational
+annexationist
+annexe
+annihilator
+annihilatory
+annotator
+annotators
+annuary
+annuitant
+annularity
+annulate
+annulated
+annulately
+annulation
+annulet
+annuli
+annunciatory
+annunicates
+anodal
+anodally
+anodically
+anodyne
+anodynic
+anointment
+anomalistic
+anomalistical
+anomer
+anomeric
+anonym
+anorectic
+anoretic
+anorexigenic
+anorthic
+anorthite
+anorthitic
+anorthosite
+anosmia
+anosmic
+anovulant
+anovulatory
+anoxemia
+anoxemic
+anoxia
+anoxic
+anserine
+antecede
+antecedence
+antecessor
+antechamber
+antechambers
+antechoir
+antediluvian
+antefix
+antefixal
+anteing
+antemortem
+antenatal
+antennal
+antennule
+anteroom
+anterooms
+anthelion
+anthesis
+anthill
+anthologist
+anthracitic
+anthracnose
+anthrax
+anthrop
+anthropic
+anthropical
+anthropocentric
+anthropocentrically
+anthropocentricity
+anthropogenesis
+anthropogenetic
+anthropography
+anthropoid
+anthropometrical
+anthropometrically
+anthropomorphism
+anthropomorphist
+anthropopathism
+anthropophagous
+anthropophagus
+anthropophagy
+anthroposophy
+antiaircraft
+antianxiety
+antibiosis
+antibiotically
+antiblack
+antiblackism
+antically
+anticancer
+anticancerous
+anticatalyst
+anticholinergic
+anticipant
+anticipants
+anticipatable
+anticipator
+anticlerical
+anticlericalism
+anticlimactical
+anticlimactically
+anticlimax
+anticlimaxes
+anticlinal
+anticline
+anticlockwise
+anticoagulant
+anticoagulate
+anticodon
+anticonvulsant
+anticonvulsive
+antidepressant
+antiderivative
+antidiuretic
+antidotal
+antidotally
+antienzyme
+antiestablishment
+antifertility
+antiform
+antifouling
+antifriction
+antifungal
+antigenic
+antigenically
+antigenicity
+antiglobulin
+antigorite
+antigravity
+antihemophilic
+antihistamine
+antihistaminic
+antihypertensive
+antiknock
+antileukemic
+antilitter
+antilog
+antilogarithm
+antilogarithms
+antimacassar
+antimacassars
+antimagnetic
+antimalarial
+antimalarials
+antimedieval
+antimedieval's
+antimedievals
+antimetabolite
+antimitotic
+antimonial
+antimonic
+antimonious
+antineoplastic
+antineutrino
+antineutron
+antinodal
+antinode
+antinovel
+antinovelist
+antinucleon
+antioxidant
+antiparasitic
+antiparticle
+antipathetic
+antipathetically
+antiperiodic
+antiperiplanar
+antipersonnel
+antiphlogistic
+antiphon
+antiphonary
+antiphony
+antiphrasis
+antipodal
+antipodean
+antipoetic
+antipollution
+antipope
+antiproton
+antipyretic
+antipyrine
+antiquarianism
+antirheumatic
+antirrhinum
+antisemite
+antisemite's
+antisemites
+antisepsis
+antiseptically
+antispasmodic
+antistrophe
+antistrophic
+antistrophically
+antitank
+antitoxic
+antitrades
+antitubercular
+antituberculous
+antitumor
+antitumoral
+antitussive
+antivenin
+antiviral
+antivitamin
+antonym
+antonymic
+antonymous
+antonyms
+antonymy
+antrorse
+antrorsely
+anywise
+aortal
+aortic
+aortographic
+aortography
+apalachicola
+apartmental
+apathetically
+apatite
+apeak
+apelike
+aperient
+aperiodically
+aperitif
+aphaeresis
+aphaeretic
+aphanite
+aphanitic
+aphasiac
+aphelion
+aphetic
+aphetically
+aphides
+aphorist
+aphoristic
+aphoristically
+aphotic
+aphrodisiac
+aphrodisiacal
+aphyllous
+aphylly
+apian
+apiarian
+apiarist
+apices
+apiculate
+apicultural
+apiculture
+apiculturist
+aplacental
+aplanatic
+aplasia
+aplastic
+apocalyptical
+apocalyptically
+apocalypticism
+apocalyptism
+apocalyptist
+apocarpous
+apocarpy
+apochromatic
+apocope
+apocrine
+apodal
+apodeictic
+apodictic
+apodictically
+apodosis
+apodous
+apogamic
+apogamous
+apogean
+apolitical
+apolitically
+apollinaire
+apologie
+apologue
+apolune
+apomixis
+apomorphine
+aponeurosis
+aponeurotic
+apoplectic
+apoplectically
+apoplexy
+aport
+aposematic
+aposematically
+apostasy
+apostleship
+apostolate
+apostolicity
+apostrophic
+apothecial
+apothecium
+apothegm
+apothegmatic
+apothegmatical
+apothegmatically
+apothem
+apotropaic
+apotropaically
+appaloosas
+apparitional
+appealability
+appealable
+appeasable
+appellee
+appendant
+appendectomy
+appendicular
+apperceive
+apperception
+apperceptive
+appestat
+appetence
+appetency
+appetent
+applaudable
+applaudably
+applicatory
+appointe
+appomattox
+apport
+appose
+apposed
+apposing
+appositional
+appositionally
+appraisement
+appreciator
+appreciatory
+apprehensibly
+appressed
+approbatory
+approvable
+approvably
+approx
+approximable
+approximant
+appurtenant
+apractic
+apraxia
+apraxic
+apriority
+apsidal
+apsides
+apterous
+apteryx
+aptitudinal
+aptitudinally
+apyrase
+aquacade
+aquaculture
+aquafortis
+aqualunger
+aquamarine
+aquanaut
+aquaplane
+aquaplaner
+aquarelle
+aquarellist
+aquarist
+aquatically
+aquatint
+aquatinter
+aquatintist
+aquavit
+aquicultural
+aquiculture
+aquidneck
+aquiferous
+aquilegia
+aquiline
+aquilinity
+aquiver
+arability
+arachnoid
+arbitrable
+arbitrageur
+arbitral
+arbitrament
+arbitrational
+arboreous
+arborescence
+arborescent
+arborescently
+arboriculture
+arboriculturist
+arborist
+arborist's
+arborists
+arborvitae
+arbovirus
+arbritrary
+arbutus
+arcanum
+arccos
+arccosine
+archae
+archaist
+archaistic
+archangelic
+archbishopric
+archdeacon
+archdeaconate
+archdeaconry
+archdiocesan
+archducal
+archduchess
+archduchy
+archduke
+archdukedom
+archegonial
+archetypal
+archetypally
+archfiend
+archipelagic
+architectonically
+architrave
+archivolt
+archon
+archpriest
+archway
+arclength
+arco
+arcsin
+arctan
+arctically
+arcuate
+arcuately
+arcuation
+areal
+areally
+areaway
+areola
+areolar
+areolate
+areolation
+areole
+argent
+argentic
+argentiferous
+argentine
+argentite
+argentous
+arger
+argillaceous
+arginine
+argos
+argosy
+argufier
+argufy
+argumentum
+argyle
+argyll
+arhat
+aria
+arianist
+arianists
+arithmetician
+armamentarium
+armentieres
+armillaria
+armless
+armlet
+armlike
+armoire
+armorial
+armorially
+armorist
+armorist's
+armorists
+armorless
+armrest
+armsful
+aromatically
+aromaticity
+arpanet
+arras
+arrearage
+arrestant
+arrestment
+arrhythmia
+arrhythmic
+arrhythmical
+arrhythmically
+arris
+arrises
+arriviste
+arrondissement
+arrowwood
+arrowworm
+arrowy
+arsenical
+arsenious
+arsenite
+arsis
+arsonist
+arsonous
+arte
+artefact
+artefacts
+artemisia
+arteriogram
+arteriogram's
+arteriograms
+arteriographic
+arteriography
+arteriolosclerosis
+arteritis
+arthritic
+arthritically
+arthropathy
+arthrosis
+arthrospore
+arthrosporic
+articular
+artilleryman
+artily
+artiodactyl
+artiste
+artmobile
+arum
+aryl
+asap
+asbestosis
+asbestus
+ascendable
+ascendance
+ascendence
+ascendible
+ascensional
+ascensive
+ascertainment
+ascesis
+ascetical
+ascetically
+ascidian
+ascidium
+ascites
+ascitic
+ascomycetes
+ascorbate
+ascospore
+ascosporic
+ascosporous
+ascus
+asdic
+asepsis
+aseptically
+asexual
+asexually
+ashcan
+ashcans
+ashless
+ashmen
+ashram
+asininity
+askant
+askesis
+aslant
+aslope
+asparagine
+aspartate
+aspartic
+aspartokinase
+aspectual
+aspencade
+aspencades
+asperges
+asperse
+aspersed
+aspersing
+asphaltic
+asphaltite
+asphaltum
+aspheric
+aspherical
+asphodel
+asphyxiator
+aspiate
+aspidistra
+assagai
+assai
+assailable
+assassinator
+assegai
+assemblagist
+assemblyman
+assemblywoman
+assentation
+assentor
+assessable
+asseverate
+asseveration
+asseverative
+assignability
+assignat
+assignational
+assignor
+assimilability
+assimilable
+assimilationism
+assimilator
+assimilatory
+assize
+assizer
+assizers
+assizes
+associateship
+assoil
+assoilment
+assortative
+assuagement
+assuasive
+assumable
+assumably
+assumpsit
+assumptive
+assurgent
+assuror
+astaires
+astarboard
+astatic
+astatically
+astaticism
+asteriated
+asteriskless
+asterism
+asterisms
+astern
+asthenia
+asthenic
+asthenosphere
+asthmatic
+asthmatically
+astigmat
+astigmatically
+astir
+astonied
+astrachan
+astragal
+astragalus
+astrakhan
+astrobiological
+astrobiologist
+astrobiology
+astrocyte
+astrocytic
+astrocytoma
+astrodome
+astrol
+astrolabe
+astrologer
+astrologer's
+astrologers
+astrological
+astrologically
+astrology
+astron
+astronautical
+astronautically
+astronavigation
+astrophotography
+astrosphere
+aswarm
+aswirl
+aswoon
+asymptomatic
+asynapsis
+async
+asyndetic
+asyndetically
+asyndeton
+ataractic
+ataraxic
+atari
+atavism
+atavist
+atavistically
+ataxia
+ataxic
+atelectasis
+atelier
+atheistical
+atheistically
+athenaeum
+atheneum
+athirst
+athletically
+athwartship
+athwartships
+atilt
+atinate
+atingle
+atlantes
+atman
+atment
+atmometer
+atmometer's
+atmometers
+atmospherically
+atmospherium
+atomicity
+atomism
+atomist
+atomistic
+atomistically
+atomistics
+atonalism
+atonalist
+atonalistic
+atonality
+atonic
+atonicity
+atony
+atopic
+atopy
+atremble
+atresia
+atrial
+atrioventricular
+atrip
+atrium
+atriums
+atropine
+attachable
+attackman
+attainability
+attainder
+attaint
+attar
+attemptable
+atticism
+attis
+attorn
+attorneyship
+attornment
+attractable
+attractant
+attractivity
+attrited
+attritional
+attunement
+atune
+atwitter
+atypic
+atypicality
+auctorial
+aud
+auden
+audient
+audile
+auding
+audiofrequencies
+audiofrequency
+audiogenic
+audiophile
+auditable
+audivi
+augend
+augite
+augitic
+augmentable
+augmentative
+augmentor
+augury
+auk
+auld
+aunthood
+auntlike
+aurar
+aureate
+aureola
+auricle
+auricula
+auricular
+auriculate
+aurochs
+aurorae
+auroral
+aurorean
+aurous
+auscultatory
+auslander
+auspicate
+austenite
+austral
+australite
+australopithecine
+authoress
+authorial
+autoantibody
+autobahn
+autobiographer
+autobus
+autocade
+autocatalysis
+autocatalytic
+autocephalous
+autochthonous
+autoclave
+autoclaved
+autocoder
+autocratical
+autocross
+autocueing
+autodidact
+autodidactic
+autodyne
+autoecious
+autoeciously
+autoecism
+autoerotic
+autoerotically
+autoeroticism
+autoerotism
+autogamous
+autogamy
+autogenesis
+autogenetic
+autogenetically
+autogenic
+autogenous
+autogenously
+autogiro
+autograft
+autographic
+autographically
+autography
+autogyro
+autohypnosis
+autohypnotic
+autoimmune
+autoimmunity
+autoinfection
+autoinoculation
+autointoxication
+autoloading
+autologous
+autolysate
+autolysin
+autolysis
+autolytic
+automaker
+automanipulation
+automanipulative
+automat
+automatable
+automaticity
+automatism
+automatist
+automobil
+automobilist
+automorphism
+autonomically
+autonomist
+autoparagraph
+autophyte
+autophytic
+autophytically
+autoplastic
+autoplastically
+autoplasty
+autoradiogram
+autoradiogram's
+autoradiograms
+autoradiograph
+autoradiographic
+autoradiography
+autorotate
+autorotation
+autorotational
+autosexing
+autosomal
+autosomally
+autosome
+autosuggest
+autosuggestible
+autosuggestion
+autotable
+autotelic
+autotetraploid
+autotetraploidy
+autotomic
+autotomous
+autotomy
+autotransplant
+autotransplantation
+autotroph
+autotrophic
+autotrophically
+autotrophy
+autunite
+aux
+auxesis
+auxetic
+auxetically
+auxil
+auxin
+auxinic
+auxinically
+auxotroph
+auxotrophic
+auxotrophy
+avaliable
+avast
+avatar
+avaunt
+avec
+avellan
+avellane
+aventail
+aventine
+aventino
+aventurine
+averment
+avesta
+aviarist
+aviatress
+aviculture
+aviculturist
+avidin
+avifauna
+avifaunal
+avifaunally
+avifaunistic
+avigation
+avirulent
+avitaminosis
+avitaminotic
+avocate
+avocational
+avocationally
+avocet
+avoirdupois
+avouchment
+avowal
+avulse
+avulsing
+avulsion
+avuncular
+awardable
+awardee
+aweary
+aweather
+aweigh
+aweless
+awestricken
+awestruck
+awhirl
+awless
+awn
+awnless
+awoken
+axal
+axel
+axenic
+axenically
+axiality
+axil
+axile
+axilla
+axillar
+axillary
+axisymmetric
+axisymmetrical
+axisymmetrically
+axisymmetry
+axletree
+axman
+ayin
+azathioprine
+azeotropic
+azide
+azido
+azine
+azonal
+azote
+azurite
+azusa
+babblement
+baboonish
+babushka
+babysat
+baccate
+bacchanal
+bacchanalia
+bacchanalian
+bacchant
+bacchante
+bacchantes
+bacchantic
+bacchic
+bacciferous
+baci
+bacillar
+bacillary
+bacitracin
+backbite
+backbiter
+backcountry
+backcourt
+backcourtman
+backcross
+backfield
+backfire
+backfired
+backfires
+backfiring
+backgammon
+backgammon's
+backhoe
+backhouse
+backless
+backpedal
+backrest
+backsaw
+backseat
+backset
+backslap
+backslapper
+backslide
+backslider
+backspin
+backstay
+backstretch
+backstroke
+backswept
+backswing
+backsword
+backwash
+backwoodsman
+bactericidal
+bactericidally
+bactericide
+bacterin
+badinage
+bafflement
+bagful
+baggily
+bagley
+bagman
+baguette
+bailable
+bailee
+baileefe
+bailie
+bailiffship
+bailiwick
+bailment
+bailor
+bailsman
+bainite
+bairn
+baize
+bakeshop
+balderdash
+baldhead
+baldheaded
+baldish
+baldpate
+balefire
+balenciaga
+balkline
+ballade
+balladeer
+balladic
+balladist
+balladry
+ballcarrier
+balletic
+balletomane
+balletomania
+ballfield
+ballfield's
+ballgown
+ballgown's
+ballista
+ballistically
+balloonist
+ballottement
+ballyhooey
+balmily
+baloney
+balsamic
+baluster
+bam
+bambino
+bamboozle
+bamboozled
+bamboozlement
+bamboozles
+bamboozling
+banality
+banausic
+bancroft
+bandana
+bandanna
+bandbox
+bandeau
+bandeaux
+bandgap
+banditry
+banditti
+bandleader
+bandmaster
+bandoleer
+bandolier
+bandsman
+baneberry
+bangish
+bangtail
+banjoes
+banjoist
+bankable
+bankbook
+bankbooks
+bankroll
+bankroller
+bankside
+banneret
+bannerette
+bannister
+bannisters
+bannock
+banns
+banquette
+bantamweight
+bantling
+banyan
+banzai
+baobab
+barbarianism
+barbarically
+barbarism
+barbate
+barbe
+barberry
+barbershop
+barbitone
+barbudo
+barbudos
+barbwire
+bareback
+barebacked
+bareheaded
+bareheadedness
+bareknuckle
+bareknuckled
+bargeboard
+bargeman
+bariatrician
+bariatrics
+baric
+baritonal
+barkier
+barkless
+barky
+barleycorn
+barmaid
+barman
+barmier
+barmy
+barny
+barogram
+barogram's
+barograms
+barograph
+barographic
+barometrical
+barometrically
+barometry
+baronage
+baronetage
+baronetcy
+barramunda
+barramundi
+barranca
+barranco
+barrater
+barrator
+barratry
+barre
+barrelful
+barrelhouse
+barrelsful
+barrio
+barrister
+barristers
+barron
+barroom
+barrooms
+barware
+barycentric
+baryon
+baryon's
+baryonic
+baryons
+basaltic
+bascom
+bascule
+baseborn
+baselevel
+basementless
+basepoint
+baserunning
+bashaw
+basicity
+basidial
+basidiomycete
+basidiomycetes
+basidiomycetous
+basidiospore
+basidiosporous
+basidium
+basie
+basification
+basify
+basilary
+basileis
+basilica
+basilican
+basinal
+basinet
+basipetal
+basipetally
+basketful
+basketlike
+basketry
+basketwork
+basler
+baslot
+basophil
+basophile
+basophilia
+bassi
+bassis
+bassist
+bassoon
+bassoon's
+bassoonist
+bassoonist's
+bassoonists
+bassoons
+bast
+bastardy
+bastile
+bastille
+batboy
+bate
+bateau
+batfish
+batfowl
+bathhouse
+bathhouses
+bathometer
+bathometer's
+bathometers
+bathtubful
+bathwater
+batista
+batiste
+batman
+batrachian
+batrachotoxin
+batsman
+batt
+battailous
+battalia
+batteau
+battement
+battier
+battiness
+battlewagon
+battu
+battue
+batty
+batwing
+baubee
+baudrons
+baulk
+baulked
+baulking
+baulks
+baum
+bauxitic
+bawcock
+bawd
+bawden
+bawdily
+bawdry
+bayadere
+bayaderka
+bayanihan
+bazon
+bazooka
+bazookas
+bea
+beachboy
+beachboys
+beachcomb
+beachcomber
+beachcombers
+beachfront
+beachside
+beachwear
+beachy
+beadroll
+beadwork
+beale
+beall
+beame
+beamish
+beamishly
+beamy
+beanball
+beanie
+bearability
+bearbaiting
+bearberry
+beardown
+bearskin
+beastie
+beatie
+beatifically
+beatless
+beauchamps
+beauclerk
+beaverboard
+beaverton
+bebopper
+bechance
+becket
+beckett
+becloud
+bedabble
+bedaub
+bedaubing
+bedchamber
+bedclothes
+bede
+bedeck
+bedevilment
+bedew
+bedfellow
+bedim
+bedimmed
+bedimming
+bedlamite
+bedouin
+bedplate
+bedrid
+bedroll
+bedsore
+beduin
+beduins
+beebread
+beefcake
+beefeater
+beefwood
+beekeeper
+beekeeping
+beelike
+beeline
+beerier
+beery
+beestings
+beeswax
+beeves
+befoh
+befool
+beforehandedness
+beforetime
+begat
+begetter
+begone
+begrime
+begrimed
+begriming
+beguilement
+beguine
+behaviorist
+behaviorist's
+behavioristically
+behaviorists
+behemoth
+behemothic
+behindhand
+behoof
+beigy
+bel
+belaud
+beldam
+beldame
+beleaguer
+belge
+belike
+belittlement
+belive
+bellbird
+belligerency
+bellpull
+bellum
+bellwood
+bellwort
+bellyband
+belowground
+beltless
+belton
+beltway
+beluga
+beluga's
+bemadden
+bemaddening
+bemire
+bemock
+bemusement
+benchmar
+benday
+benedictory
+benefaction
+benefactress
+benefic
+beneficiate
+beneficiation
+benefitted
+benefitting
+benight
+benignancy
+benignant
+benignantly
+benignity
+benthal
+benthic
+benthonic
+benthos
+bentonite
+bentonitic
+benumb
+bepaint
+beplaster
+bequeathal
+berberine
+berceuse
+berceuses
+bergamot
+beringer
+bernardine
+berne
+berrylike
+berteros
+berto
+beseem
+besetment
+beshrew
+besmear
+besom
+besot
+besotter
+bespatter
+bespoken
+besprent
+besprinkle
+bestead
+besteaded
+besteading
+bestiality
+bestiary
+bestrew
+bestride
+bestrides
+bestriding
+bestsellerdom
+betaine
+betake
+betel
+bethink
+betimes
+betony
+betted
+betweenbrain
+betweentimes
+betweenwhiles
+bewigged
+bewitchery
+bewitchment
+bewray
+bey
+biassed
+biassin
+biassing
+biathlon
+bibb
+bibber
+bibbery
+bibcock
+bibelot
+bibelots
+bibless
+biblicism
+biblicist
+bibliographer
+bibliolater
+bibliolatrous
+bibliolatry
+bibliology
+bibliomania
+bibliomaniac
+bibliomaniacal
+bibliopegic
+bibliopegically
+bibliopegist
+bibliopegistic
+bibliopegy
+bibliophilic
+bibliophilism
+bibliophilist
+bibliophily
+bibliopole
+bibliopolic
+bibliopolist
+bibliotheca
+bibliothecal
+bibliotic
+bibliotics
+bibliotist
+bibulous
+bibulously
+bibulousness
+bicameralism
+bicapsular
+bicentenary
+bicentric
+bicentricity
+bichloride
+bichrome
+bicipital
+biconcavity
+biconditional
+biconvexity
+bicorne
+bicornuate
+bicultural
+biculturalism
+bicuspid
+bicuspidate
+bicyclic
+bicyclist
+biddability
+biddably
+bidet
+bidialectal
+bidialectalism
+bierce
+bietnar
+bifacial
+biff
+bifid
+bifidity
+bifidly
+bifilar
+bifilarly
+biflagellate
+biform
+bigamist
+bigamous
+bigamously
+bigamy
+bigeminal
+bigeminy
+bigeneric
+bigeye
+biggety
+biggin
+bigging
+biggish
+biggity
+bighead
+bigheaded
+bighearted
+bigheartedly
+bigheartedness
+bighorn
+bighorn's
+bighorns
+bigmouthed
+bignonia
+bigwig
+bijou
+bijouterie
+bikeway
+bilabiate
+bilateralism
+bilbo
+bilboa
+bilgier
+bilgy
+bilharziasis
+biliary
+bilious
+biliously
+biliousness
+billable
+billfold
+billfold's
+billfolds
+billhead
+billhook
+billionaire
+billon
+billowy
+billposter
+billposting
+billycock
+bilobal
+bilobed
+bilocular
+biloculate
+bimanual
+bimanually
+bimester
+bimestrial
+bimetal
+bimillenary
+bimillenial
+bimodality
+bimorphemic
+binational
+bindweed
+bine
+bingle
+binnacle
+binned
+binning
+binocularity
+bint
+binucleate
+binucleated
+bio
+bioactive
+bioassay
+bioastronautical
+bioastronautics
+biocatalyst
+biocatalytic
+biocenology
+biocenosis
+biocenotic
+biochemic
+biocidal
+biocide
+bioclean
+bioclimatic
+biocoenosis
+biocoenotic
+biodegradability
+biodegradable
+biodegradation
+biodegrade
+bioecological
+bioecologist
+bioecology
+bioelectric
+bioelectrical
+bioelectricity
+bioengineering
+bioenvironmental
+bioflavonoid
+biog
+biogen
+biogenesis
+biogenetic
+biogenetically
+biogenic
+biogeochemical
+biogeochemistry
+biogeographic
+biogeographical
+biogeography
+biographee
+bioinstrumentation
+biologism
+biologistic
+bioluminescence
+bioluminescent
+biomacromolecule
+biomacromolecules
+biomaterial
+biome
+biometrical
+biometrically
+biomolecular
+bionic
+bionics
+bionomic
+bionomical
+bionomically
+bionomics
+biopolymer
+biopolymers
+biosatellite
+bioscientific
+bioscientist
+biosynthesis
+biosynthetic
+biosynthetically
+biosystematic
+biosystematist
+biosystematy
+biota
+biotechnological
+biotechnology
+biotelemetric
+biotelemetry
+biotin
+biotite
+biotitic
+biotope
+biotransformation
+biotron
+biotype
+biotypic
+biovular
+bipack
+biparental
+biparentally
+bipartisanism
+bipartisanship
+bipedal
+biphenyl
+bipinnate
+bipinnately
+bipod
+bipolarity
+bipropellant
+biquadratic
+biracialism
+biradial
+biramous
+birchbark
+birdbrain
+birdbrained
+birdcage
+birdcage's
+birdcages
+birdcall
+birdhouse
+birdieback
+birdieing
+birdlime
+birdman
+birdyback
+bireme
+biretta
+birgitta
+birk
+birkhead
+birkie
+birl
+birler
+birr
+birse
+birthmark
+birthroot
+birthstone
+birthwort
+biscayne
+bisectional
+bisectionally
+bisexuality
+bistort
+bistro
+bistroic
+bistros
+bisulfate
+bisulfide
+bisulfite
+bitartrate
+bitchery
+bitchier
+bitchily
+bitchiness
+bitchy
+bitstock
+bitsy
+bitt
+bitted
+bitterish
+bitterweed
+bitting
+bittock
+bitty
+bituminoid
+bivalent
+biyearly
+biz
+blabber
+blabbered
+blabbering
+blabby
+blackamoor
+blackamoors
+blackcap
+blackcock
+blackdamp
+blackface
+blackfin
+blackfish
+blackfly
+blackguard
+blackguard's
+blackguardism
+blackguardly
+blackguards
+blackhander
+blackhead
+blackheart
+blackish
+blackland
+blackleg
+blackmer
+blackpoll
+blacksnake
+blacktail
+blackthorn
+blacktop
+blacktop's
+blacktops
+blackwash
+blackwater
+bladderlike
+blakey
+blamably
+blameful
+blamefully
+blancmange
+blandish
+blandisher
+blandishment
+blandishments
+blanketflower
+blanketlike
+blanton
+blarney
+blasingame
+blastema
+blastematic
+blastemic
+blastie
+blastment
+blastula
+blastula's
+blastular
+blastulas
+blastulation
+blat
+blate
+blatted
+blatter
+blazonry
+bleachable
+bleakish
+blearily
+blench
+blende
+blether
+blevins
+blimpishly
+blimpishness
+blindfish
+blindworm
+blintz
+blintze
+blipping
+blique
+blistery
+blithesome
+blithesomely
+blizzardy
+blobbing
+blockbuster
+blockbusters
+blockbusting
+blockhead
+blockheads
+blockish
+blockishly
+blondish
+bloodcurdling
+bloodcurdlingly
+bloodfin
+bloodguilt
+bloodguiltiness
+bloodguilty
+bloodily
+bloodletting
+bloodline
+bloodline's
+bloodlines
+bloodmobile
+bloodred
+bloodstock
+bloodstone
+bloodsucker
+bloodsucking
+bloodthirstily
+bloodthirstiness
+bloodthirsty
+bloodworm
+bloodwort
+bloomy
+bloop
+blooper
+bloops
+blossomy
+blotchily
+blotchy
+blotter
+blotty
+blouson
+blowfly
+blowgun
+blowhard
+blowhole
+blowout
+blowpipe
+blowsy
+blowtube
+blowy
+blowzy
+blubbery
+blucher
+bluebeard
+bluebell
+bluebottle
+bluecoat
+bluefin
+blueing
+bluejack
+bluenose
+bluepoint
+bluesman
+bluestem
+bluestone
+bluesy
+bluet
+bluetongue
+blueweed
+bluey
+blume
+blunderbuss
+blurrily
+blushful
+blusterous
+blutwurst
+blyth
+boardlike
+boardman
+boardmanship
+boardroom
+boardsmanship
+boardwalk
+boart
+boatel
+boatels
+boatmanship
+boatsmanship
+boaz
+bobber
+bobbery
+bobbinet
+bobbsey
+bobeche
+bobrow
+bobsledder
+bobstay
+bobtail
+bobtailed
+bocaccio
+bocci
+boccie
+bod
+bodacious
+bodaciously
+bodega
+bodement
+bodenheim
+bodiless
+bodkin
+bodysurf
+bodysurfer
+bodywork
+boehmer
+boehmite
+boer
+boff
+boffin
+boffo
+boffola
+boffos
+bogartian
+bogeyman
+bogeyman's
+boggs
+bogie
+bogle
+boheme
+bohlen
+boies
+boite
+boites
+bola
+boland
+bolas
+bolases
+bole
+bolero
+bolet
+boletus
+boliou
+bollard
+bollix
+bollworm
+bolometric
+bolometrically
+boloney
+boltrope
+bolus
+bombardier
+bombardiers
+bombardon
+bombastically
+bombazine
+bombe
+bombinate
+bombination
+bombshell
+bombsight
+bombus
+bon
+bonbon
+bondable
+bondholder
+bondmaid
+bondman
+bondstone
+bondwoman
+bonefish
+bonehead
+boneheaded
+boneless
+boneset
+bonesetter
+boney
+boneyard
+bonfiglio
+bongoes
+bongoist
+bonham
+bonheur
+bonhomie
+bonkers
+bonne
+bonner
+bonnily
+bonnor
+bonsai
+bonspiel
+bontempo
+bonze
+bonzer
+boobify
+boodle
+booger
+boogerman
+boogeyman
+bookbindery
+bookful
+booklist
+bookmaker
+bookmakers
+bookmaking
+bookman
+bookmark
+bookmark's
+bookmarker
+bookmarkers
+bookmarks
+bookmobile
+bookmobiles
+bookselling
+bookstall
+bookworm
+bookworm's
+bookworms
+booky
+boomier
+boomlet
+boomy
+boondocks
+boondoggle
+boondoggler
+boondoggling
+boonies
+bootee
+bootie
+bootjack
+bootlace
+bootle
+bootless
+bootlessly
+bootlessness
+bootlick
+bootlicker
+bootprint
+boozily
+boozy
+bopper
+bora
+borage
+borak
+borane
+borazon
+bordel
+bordereau
+boreal
+boresight
+boresights
+borglum
+boride
+borland
+borneol
+boronic
+bort
+bosomy
+bosonic
+bosphorus
+bosque
+bosquet
+bossdom
+bossism
+bostitch
+bot
+botan
+botchwork
+botchy
+botel
+botheration
+bots
+bottlecap
+bottlecap's
+bottlecaps
+bottleful
+bottomland
+bottomry
+botulinal
+botulinum
+boucle
+boudoir
+bouffe
+bougainvillaea
+bougainvillea
+bougie
+bouillabaisse
+bouldery
+boule
+boulevardier
+bouleversement
+boulez
+boulle
+bouncily
+bounderish
+bounderishly
+bountiful
+bountifully
+bountifulness
+bourbonism
+bourdon
+bourg
+bourgeoise
+bourgeoisify
+bourgeon
+bourguiba
+bourn
+bourse
+bouse
+bousing
+boustrophedon
+bouton
+boutonniere
+bouvardier
+bouvier
+bouzouki
+bovinity
+bowan
+bowelless
+bowerbird
+bowerbird's
+bowerbirds
+bowery
+bowes
+bowfin
+bowfront
+bowhead
+bowknot
+bowlder
+bowleg
+bowlegged
+bowlful
+bowmen
+bowse
+bowsprit
+bowwow
+bowyer
+boxful
+boxhaul
+boxlike
+boxthorn
+boyar
+boyard
+boyars
+bozo
+bozos
+brabble
+brabbled
+brabbling
+brachial
+brachiate
+bract
+bradded
+bradding
+braggart
+braggest
+braggy
+brahma
+brail
+braillewriter
+braincase
+brainish
+brainless
+brainlessly
+brainlessness
+brainpan
+brainpower
+brainsick
+brainsickly
+brainstem
+brainstem's
+brainstems
+brainteaser
+braise
+braised
+braiser
+braises
+braising
+brakeless
+braky
+branchia
+branchial
+branchiate
+branchless
+branchlet
+branchy
+brandel
+brandin
+brandling
+brank
+branks
+brannon
+brant
+brants
+branum
+braque
+braques
+brassard
+brassbound
+brasserie
+brassica
+brassily
+brattice
+brattiness
+brattish
+brattishing
+brattle
+brattled
+brattling
+bratty
+brava
+bravoes
+braw
+braweling
+brawle
+brawlier
+brawly
+brawnier
+brawnily
+brawniness
+brawny
+brazos
+breadbasket
+breadbaskets
+breadroot
+breadstuff
+breadthways
+breadthwise
+breadwinning
+breakfront
+breakneck
+breakoff
+breakout
+bream
+breams
+breastbone
+breaststroke
+breaststroker
+breathability
+breccia
+breccias
+brecciate
+brecciation
+breechblock
+breechcloth
+breechclout
+breechloader
+breeks
+breezeless
+breezeway
+bregma
+bregmatic
+breviaries
+breviary
+brewage
+briard
+bribable
+bricating
+brickbat
+brickle
+bricktop
+brickwork
+bridewell
+bridgeboard
+bridgeless
+briefless
+brien
+briery
+brigadoon
+brigand
+brigand's
+brigandage
+brigandine
+brigandism
+brigands
+brightwork
+brill
+brilliantine
+brimless
+brimmer
+brinded
+bringdown
+brinkley
+brinksmanship
+brio
+brioche
+briolette
+briquet
+briquette
+brisance
+brisant
+brisket
+brisling
+brist
+bristlecone
+bristlecone's
+bristlecones
+bristlelike
+bristletail
+brit
+broadax
+broadcloth
+broadleaf
+broadminded
+broadsheet
+broadsword
+broadtail
+broadwife
+brocatelle
+brochette
+brockage
+brocket
+brockle
+brocoli
+brogue
+broider
+broidery
+brokenhearted
+brollies
+brolly
+bromate
+bromated
+bromating
+bromegrass
+bromeliad
+bromelin
+bromic
+bromidic
+brominate
+bromination
+bromism
+bromo
+bromos
+bronchialy
+broncobuster
+brontosaur
+brontosaurus
+bronzy
+broomball
+broomballer
+broomcorn
+broome
+broomrape
+broths
+brougham
+broughams
+broun
+brownnose
+brownnoser
+brownout
+brownshirt
+brownstone
+brownstones
+browny
+browsability
+broxodent
+bruit
+brunet
+brushability
+brushback
+brushcut
+brushland
+brushstroke
+brushstroke's
+brushstrokes
+brushup
+brushwood
+brusk
+brusquerie
+brut
+bruxelles
+bruxism
+bryophyta
+bryophyte
+bryozoa
+bs
+bubby
+buccal
+buccaneer
+buccaneer's
+buccaneerish
+buccaneers
+bucer
+buckbean
+buckeroo
+bucketsful
+buckhead
+buckman
+bucko
+buckoes
+bucksaw
+buckshee
+bucktail
+buckthorn
+bucktooth
+bucky
+bucolically
+budder
+buddle
+budgeteer
+budgie
+budlong
+bufferred
+buffi
+buffo
+buffoonery
+buffoonish
+buffos
+bugatti
+bugbear
+bugeye
+buggery
+bughouse
+bugleweed
+bugloss
+bugseed
+builtin
+bulba
+bulbaceous
+bulbar
+bulbil
+bulbous
+bulbously
+bulbul
+bulginess
+bulgur
+bulgy
+bulkily
+bulla
+bullace
+bullae
+bullbaiting
+bullbat
+bulldogger
+bullfight
+bullfighter
+bullfighting
+bullhorn
+bullnecked
+bulloch
+bullock
+bullocky
+bullous
+bullpout
+bullring
+bullrush
+bullrush's
+bullrushes
+bullterrier
+bullwhack
+bullwhip
+bullyrag
+bumbershoot
+bumboat
+bumbry
+bumkin
+bumpier
+bumpily
+bumpiness
+bumpkin
+bumpkin's
+bumpkinish
+bumpkinly
+bumpkins
+bumpy
+bunchily
+bunchy
+bunco
+bund
+bundist
+bundoora
+bundy
+bung
+bunger
+bunghole
+bunglesome
+bunko
+bunkos
+bunkum
+buntline
+buoyance
+burbank
+burbly
+burdock
+bureaucratically
+bureaux
+buret
+burette
+burettes
+burgage
+burgee
+burglarious
+burglariously
+burgonet
+burgoo
+burgoos
+burin
+burking
+burladero
+burle
+burlily
+burlingame
+burnable
+burne
+burnes
+burnoose
+burnous
+burnout
+burrier
+burrstone
+burry
+bursae
+bursal
+bursar
+bursary
+burse
+burseed
+bursty
+burthen
+burweed
+busbies
+busby
+bushbuck
+bushbucks
+bushelage
+bushelman
+bushfire
+bushily
+bushland
+bushland's
+bushman
+businesswoman
+businesswoman's
+businesswomen
+busk
+busker
+buskin
+busload
+busload's
+busloads
+busty
+busybody
+busywork
+butadiene
+butanol
+buteo
+butterfingered
+butterfingers
+butterfish
+butterflyer
+butterless
+butterscotch
+butterweed
+butterwort
+butties
+buttinski
+buttinsky
+buttonball
+buttonbush
+buttonhook
+buttonless
+buttonwood
+buttony
+buttstock
+butty
+butut
+butylate
+butylation
+butylene
+butyraceous
+butyral
+butyraldehyde
+butyric
+bwana
+byelaw
+byelaws
+byinge
+bylot
+byname
+bypast
+byplay
+byre
+bystreet
+cabala
+cabalism
+cabalist
+cabalistic
+caballed
+caballero
+caballing
+cabbala
+cabbie
+cabbies
+cabby
+cabinetmaking
+cabinetwork
+cablegram
+cablegram's
+cablegrams
+cablet
+cableway
+cabman
+caboodle
+caboose
+cabotage
+cabriole
+cabriolet
+cabstand
+cachalot
+cachectic
+cachepot
+cachet
+cachou
+cacodemon
+cacodemonic
+cacogenesis
+cacogenic
+cacogenics
+cacographical
+cacography
+cacophonous
+cacophonously
+cacuminal
+cadastral
+cadastrally
+cadastre
+cadaveric
+cadaverine
+caddie
+caddis
+caddish
+caddishly
+caddishness
+cade
+cadency
+cadential
+cadetship
+caducean
+caduceus
+caducity
+caducous
+caffeinic
+caftan
+cageling
+cagier
+cagily
+caginess
+cagy
+cahier
+caiman
+caisson
+caitiff
+cajolement
+cajolery
+cakewalk
+cakewalker
+calabash
+calaboose
+calamine
+calamint
+calamite
+calamus
+calash
+calcaneal
+calcaneum
+calcaneus
+calcic
+calcific
+calcifuge
+calcifugous
+calcimine
+calcination
+calcine
+calcined
+calcining
+calcinosis
+calcitic
+calcomp
+calculably
+calculatingly
+calculous
+caldera
+caldron
+caleche
+calender
+calenderer
+calendric
+calendrical
+calends
+calendula
+calenture
+calflike
+calif
+caliginous
+caliphal
+calk
+calker
+calla
+callant
+callback
+callboy
+calligraphic
+calligraphically
+calligraphist
+callose
+callosity
+callus
+calluses
+calmative
+calomel
+calorically
+calorific
+calorimetrically
+calory
+calotte
+calque
+caltech
+calthrop
+caltrop
+caltrops
+calumniator
+calumnious
+calumniously
+calypsonian
+calyx
+camarilla
+cambial
+cambium
+cambric
+camelback
+cameleer
+camelia
+camellia
+camelopard
+cameralism
+cameralist
+camise
+camisole
+caml
+camlet
+camomile
+camorra
+camorrista
+camouflageable
+camouflagic
+campanile
+campanologist
+campanology
+campanula
+campanulate
+campcraft
+campership
+camphene
+camphine
+camphor
+camphoraceous
+camphorate
+camphorated
+camphoric
+campily
+campiness
+campion
+campobello
+camporee
+campos
+campstool
+campy
+camshaft
+camshafts
+canalboat
+canaliculate
+canard
+canasta
+cancan
+cancroid
+candela
+candelabra
+candelabrum
+candent
+candescence
+candescent
+candida
+candidature
+candleholder
+candlepin
+candlepins
+candlepower
+candlepowers
+candlesnuffer
+candlewick
+canebrake
+canescent
+caneware
+canful
+canicular
+cankerous
+cankerworm
+canna
+cannel
+cannibalic
+cannily
+cannonade
+cannoneer
+cannonry
+canoeing
+canoeist
+canoeist's
+canoeists
+canoness
+canonicity
+canorous
+canorously
+canorousness
+canst
+cantabile
+cantata
+cantatas
+canterelle
+canthi
+canthus
+cantillate
+cantillation
+cantina
+cantle
+cantles
+cantonal
+cantonment
+cantus
+canty
+canute
+canvaslike
+capelet
+capella
+capeskin
+capet
+capework
+capful
+capias
+capillarity
+capitalistically
+capitan
+capitate
+capitates
+capitation
+capitular
+capitulary
+capitulum
+capo
+capon
+caporal
+capper
+cappers
+cappy
+capriccio
+caprification
+caprine
+capriole
+capsular
+capsulate
+capsulated
+capt
+captainship
+captan
+captionless
+captivator
+capuchin
+capybara
+carabao
+carabid
+carabineer
+carabiner
+carabinero
+carabinier
+carabiniere
+caracole
+carafe
+carapace
+carapace's
+carapaces
+carat
+caravanner
+caravansary
+caravel
+carbarn
+carbaryl
+carbazole
+carbolated
+carboline
+carboniferous
+carbonium
+carbonless
+carbonous
+carbonylic
+carboxy
+carboxyl
+carboxylate
+carboxylation
+carboxylic
+carbuncular
+carburet
+carburetion
+carburetor
+carburetors
+carcase
+carcinogenesis
+carcinogenicity
+carcinoid
+cardamom
+cardialgia
+cardigan
+cardigan's
+cardigans
+cardinalship
+cardiogram
+cardiogram's
+cardiograms
+cardiograph
+cardiographer
+cardiographic
+cardiographs
+cardiography
+cardioid
+cardioid's
+cardioids
+cardiological
+cardiologist
+cardiopathy
+cardiopulmonary
+cardiorespiratory
+cardiotonic
+cardiovasculatory
+cardplayer
+cardsharp
+cardsharper
+careerist
+careerists
+carefuller
+carefullest
+carfare
+carful
+carhop
+caribe
+caricatural
+carioca
+cariole
+carious
+carle
+carling
+carlsbad
+carmaker
+carnallite
+carne
+carnelian
+carney
+carnivore
+caroche
+carom
+carotene
+carousal
+carousel
+carousel's
+carousels
+carpal
+carpellary
+carpetbag
+carpetbag's
+carpetbagged
+carpetbagger
+carpetbagger's
+carpetbaggers
+carpetbaggery
+carpetbagging
+carpetbags
+carpi
+carpospore
+carposporic
+carpus
+carrefour
+carriageway
+carriageways
+carriole
+carronade
+carroty
+carrousel
+carryall
+carryon
+carryout
+carsick
+cartage
+cartel
+cartilaginous
+cartload
+cartloads
+cartogram
+cartogram's
+cartograms
+cartographical
+cartomancy
+cartop
+carty
+caruncular
+carunculate
+carunculated
+casa
+casaba
+casaba's
+casabas
+cascara
+caseate
+caseation
+casebearer
+casemate
+caseous
+casern
+caserne
+cashable
+cashbook
+cashless
+casque
+cassaba
+cassava
+cassino
+cassite
+castaway
+casteism
+castigator
+castigators
+castoff
+castoffs
+castrate
+castrated
+castrater
+castraters
+castrates
+castrating
+castration
+castrato
+castrator
+castrators
+castratory
+casuistic
+casuistical
+casuistry
+catabolic
+catabolically
+catabolism
+catabolite
+catachresis
+catachresti
+catachrestic
+catachrestical
+cataclysm
+cataclysmal
+catacomb
+catacombic
+catadromous
+catafalque
+catalatic
+catalectic
+catalepsy
+cataleptic
+cataleptically
+catalpa
+catamaran
+catamount
+cataplasm
+cataplastic
+cataplexy
+cataractal
+catarrh
+catarrhal
+catarrhally
+catastasis
+catatonic
+catawba
+catboat
+catcall
+catchall
+catchee
+catchment
+catchpenny
+catchpole
+catchpoll
+catchup
+cate
+catechesis
+catechetical
+catechin
+catechismal
+catechist
+catechistic
+catena
+catenary
+catenulate
+cateran
+catercorner
+cateress
+caterwaul
+cates
+catface
+catfacing
+catgut
+catharses
+cathartic
+cathead
+cathect
+cathectic
+cathedra
+cathexes
+cathexis
+cathodically
+catholically
+catholicate
+catholicity
+cathouse
+cation
+cationic
+cationically
+cations
+catkin
+catnap
+catnaps
+catoptric
+catoptrically
+catoptrics
+catted
+cattily
+catting
+caudal
+caudally
+caudate
+caudated
+caudation
+caudillo
+caudle
+caul
+cauldron
+cauldrons
+caulescent
+caulicle
+caulicles
+cauline
+causeless
+causerie
+causey
+causeys
+caustically
+causticity
+cautery
+cavalierism
+cavalryman
+cavernicolous
+caviare
+cavies
+cavitary
+cavitate
+cavitation
+cay
+cayman
+cc
+ceasefire
+ceasefire's
+cedarn
+cedarwood
+ceil
+ceilometer
+ceilometer's
+ceilometers
+ceinture
+celandine
+celebrator
+celebrators
+celeriac
+celiac
+celibacy
+cellarage
+cellarages
+cellaret
+cellarets
+cellarette
+cellarettes
+cellularity
+cellule
+celluloid
+celluloid's
+cellulosic
+cementation
+cementite
+cementitious
+cenobite
+cenobitic
+cenobitical
+cenogenetic
+cenogenetically
+cenospecies
+cenotaph
+cense
+censer
+censing
+censorious
+censoriously
+censoriousness
+censurable
+cental
+centare
+centaurea
+centaury
+centavo
+centenarian
+centesimal
+centesimo
+centiare
+centillion
+centime
+centimo
+centner
+cento
+centones
+centra
+centrale
+centralism
+centralist
+centralistic
+centralists
+centric
+centrically
+centricity
+centriole
+centrism
+centroidal
+centromere
+centromeric
+centrosome
+centrosomic
+centrosphere
+centrosymmetric
+centrum
+centum
+centurion
+cephalad
+cephalic
+cephalically
+cephalometric
+cephalometry
+cepstrum
+ceraceous
+ceramicist
+ceramist
+ceramium
+cere
+cerebellar
+cerebroside
+cerebrosides
+cerebrovascular
+cerebrum
+cerement
+ceremonialism
+ceremonialist
+ceremonialists
+ceres
+cereus
+cering
+cernuous
+certes
+certifiably
+certificatory
+cerumen
+ceruminous
+ceruse
+cervices
+cervine
+cervix
+cervixes
+cesarean
+cesarian
+cesspit
+cesspool
+cesta
+cesti
+cetacean
+cetacean's
+cetaceans
+cf
+chaffey
+chaffy
+chainomatic
+chalcedonic
+chalcedony
+chalcid
+chalcocite
+chaldron
+chalet
+chalkboard
+chalone
+chambray
+chambrays
+chameleon
+chameleonic
+chameleons
+chamfron
+chamfrons
+chammy
+chamoix
+chamomile
+champak
+champertous
+champerty
+champlainian
+chanceful
+chancel
+chancellery
+chancellorship
+chancellorships
+chancellory
+chancels
+chancre
+chancres
+chancroid
+chancroidal
+chancrous
+chandelle
+chandler
+chandlery
+changeful
+changefully
+changefulness
+changeless
+changelessly
+changelessness
+changeling
+channing
+chanson
+chanteuse
+chanteuses
+chantier
+chanties
+chanty
+chaotically
+chapati
+chapbook
+chape
+chapeau
+chapeaus
+chapeaux
+chapelles
+chaperonage
+chapfallen
+chapiter
+chaplaincies
+chaplaincy
+chaplet
+chapleted
+chaplets
+chaplinesque
+charabanc
+characin
+characterful
+characterless
+characterological
+characterologically
+charactery
+charade
+charades
+charcuterie
+chard
+chare
+charier
+charily
+chariness
+charioteer
+charioteers
+charism
+charismata
+charisms
+charlatan
+charlatanism
+charlatanry
+charmless
+charnel
+charnock
+charring
+chartularies
+chartulary
+charwoman
+chary
+chassepot
+chasseur
+chasten
+chastened
+chastener
+chastening
+chateaubriand
+chatelain
+chatelaine
+chatelaines
+chatelains
+chatoyance
+chatoyancy
+chatoyant
+chattahoochee
+chatterbox
+chatterboxes
+chattily
+chauffers
+chaussure
+chaussures
+chauvinistically
+cheapie
+cheapish
+cheapishly
+cheapskate
+cheapskates
+checkerberry
+checkless
+checkmark
+checkmarks
+checkmate
+checkmated
+checkmates
+checkmating
+checkoff
+checkrein
+checkroom
+checkrooms
+checkrow
+cheddar
+cheekful
+cheekily
+cheep
+cheeps
+cheerio
+cheeseburger
+cheeseburgers
+cheesecake
+cheesecake's
+cheesecakes
+cheesecloths
+cheesemaker
+cheesemakers
+cheesemaking
+cheeseparer
+cheeseparing
+cheeseparings
+cheetahs
+chefdom
+chekhov
+chelatable
+chelonian
+chemiluminescence
+chemiluminescent
+chemische
+chemism
+chemisorb
+chemisorption
+chemoautotrophic
+chemoautotrophically
+chemoautotrophy
+chemoprophylaxis
+chemoreception
+chemoreceptive
+chemoreceptivity
+chemoreceptor
+chemoreceptors
+cheng
+chenille
+cherishable
+cheroot
+cherrylike
+cherrystone
+chert
+cherubic
+cherubically
+cherublike
+chervil
+chervils
+chessboard
+chessboards
+chessman
+chessmen
+chestful
+chestier
+chesty
+cheveron
+cheviot
+chevrotain
+chewable
+chewy
+chi
+chiaroscurist
+chiaroscuro
+chiasma
+chiasmatic
+chiasmus
+chiaus
+chicalote
+chicaning
+chichi
+chickasaws
+chickenhearted
+chickpea
+chickpea's
+chickpeas
+chickweed
+chickweeds
+chicle
+chicos
+chidden
+chieftaincies
+chieftaincy
+chieftainship
+chiffonier
+chignon
+childbed
+childbirths
+chilies
+chillily
+chimaera
+chimere
+chimerical
+chimerically
+chimerism
+chimneypiece
+chimp
+chimps
+chinaware
+chinbone
+chinch
+chine
+chines
+chinoiserie
+chinos
+chinquapin
+chintzier
+chintzy
+chirographer
+chirographic
+chirographical
+chirography
+chiromancer
+chiromancy
+chiropodist
+chiropodists
+chiropody
+chiropractic
+chiropter
+chiropteran
+chirpily
+chirpy
+chirrup
+chirruped
+chirruping
+chirrups
+chit
+chitchat
+chitin
+chitinous
+chitlings
+chiton
+chits
+chitter
+chittered
+chittering
+chitterlings
+chitters
+chivalric
+chivied
+chivvied
+chivvy
+chivvying
+chivy
+chloral
+chlordane
+chloric
+chlorinity
+chlorite
+chloritic
+chlorobenzene
+chlorohydrin
+chlorophyllose
+chlorophyllous
+chloroplatinate
+chockablock
+chocolaty
+choirboy
+choky
+choler
+choleraic
+choleric
+choline
+cholinergic
+chondrite
+choosey
+chopfallen
+chophouse
+choppily
+chopstick
+chopsticks
+choreman
+choreographically
+choric
+chorically
+chorine
+chorister
+chorizo
+chorographic
+chorography
+choryza
+chowderhead
+chowderheaded
+chowhound
+chowtime
+chrestomathy
+christsake
+chromatically
+chromaticism
+chromaticity
+chromatid
+chromatin
+chromatographically
+chromatolytic
+chromide
+chrominance
+chromo
+chromosomal
+chromosome
+chromosome's
+chromosomes
+chromosomic
+chromospheric
+chronical
+chronicity
+chronogram
+chronogram's
+chronogrammatic
+chronogrammatical
+chronograms
+chronographic
+chronographs
+chronologer
+chronologers
+chronologic
+chronologist
+chronologists
+chronometer
+chronometer's
+chronometers
+chronometric
+chronometrical
+chronometrically
+chronometry
+chronoscope
+chronoscopes
+chrysolite
+chubbily
+chuckhole
+chucklehead
+chuckleheaded
+chuckleheads
+chucklesome
+chuckwalla
+chuff
+chuffed
+chuffier
+chuffing
+chuffy
+chugalug
+chugger
+chummily
+chumship
+chunkily
+churchgoer
+churchianity
+churchless
+churchmanship
+churchy
+churlish
+churlishly
+churlishness
+chutist
+chutists
+chutzpa
+chutzpah
+cigarillo
+cigarillos
+ciliary
+cincture
+cindery
+cinemagoer
+cinemagoers
+cinematically
+cinematograph
+cinematographer
+cinematographic
+cinematographical
+cinematographically
+cinematography
+cinquefoil
+ciphertext
+ciphony
+circadian
+circinate
+circinately
+circuital
+circuity
+circulatable
+circulator
+circulators
+circumambient
+circumambiently
+circumambulate
+circumambulates
+circumcircle
+circumfluent
+circumfluous
+circumfuse
+circumfused
+circumfuses
+circumfusing
+circumfusion
+circumfusions
+circumjacent
+circumlocutory
+circumlunar
+circumnavigate
+circumnavigated
+circumnavigates
+circumnavigating
+circumnavigation
+circumnavigations
+circumnavigator
+circumnavigators
+circumscissile
+circumscription
+circumstantiality
+circumstantiate
+circumstantiated
+circumstantiates
+circumstantiating
+circumvallate
+circumvallated
+circumvallates
+circumvallating
+circumvallation
+circumvallations
+circumvolution
+circumvolutions
+circusy
+cirque
+cirques
+cirrhoses
+cirrhosis
+cirrhotic
+cirrous
+cirrus
+cislunar
+cist
+cit
+citable
+citational
+citified
+citify
+citizeness
+citral
+citronella
+civically
+civie
+civies
+civilists
+civvy
+clabber
+clack
+clacker
+clackers
+clacks
+cladophora
+clamant
+clamantly
+clambake
+clambakes
+clammily
+clamorist
+clamorist's
+clamorists
+clampdown
+clangorous
+clangorously
+clansman
+clansmen
+clapper
+clappers
+claptrap
+claque
+claques
+clarinetist
+clarinettist
+clarridge
+classicalism
+classicalist
+classicality
+classicism
+classicistic
+classificatorily
+clausal
+claustral
+clavichord
+clavichordist
+clavicular
+clavier
+clavierist
+clavieristic
+claybank
+clayey
+clayish
+clayware
+cleanable
+cleanhanded
+clearable
+clef
+clef's
+clefs
+clemens
+clemente
+clepe
+cleped
+clepes
+cleping
+clericalism
+clericalist
+clerkship
+cleverish
+clevis
+clientage
+cliental
+cliffhanger
+cliffy
+climacteric
+climactically
+climatologist
+climatologists
+climbable
+cline
+clines
+clingy
+clinometric
+clinometry
+clipsheet
+cliquey
+cliquish
+cliquishly
+cliquishness
+clitoral
+clitoric
+clitoris
+cloaca
+cloacal
+cloche
+clocklike
+cloddy
+clodhopping
+cloistral
+cloistress
+clonal
+clonally
+clonic
+clonicity
+clonk
+clonked
+clonking
+clonks
+clop
+clopped
+clopping
+clops
+closable
+closeable
+closefisted
+closemouthed
+closeout
+closetful
+clotheshorse
+clothespin
+clothespress
+cloths
+cloudily
+cloudland
+cloudlet
+cloudlets
+cloven
+cloverleaf
+cloverleaves
+clownery
+clownish
+clownishly
+clownishness
+clubable
+clubbable
+clubber
+clubbier
+clubbiness
+clubby
+clubfoot
+clubfooted
+clueing
+clumpy
+clunk
+clunked
+clunker
+clunking
+clunks
+clustery
+clutchy
+coact
+coaction
+coactive
+coadapted
+coadjutrices
+coadjutrix
+coadunate
+coadunated
+coadunates
+coadunating
+coadunation
+coagulability
+coagulant
+coagulants
+coagulase
+coalification
+coalify
+coalitionist
+coapt
+coaptation
+coaptation's
+coapted
+coapting
+coapts
+coarctate
+coarctation
+coarticulation
+coarticulatory
+coastguard
+coastguardman
+coastguardsman
+coastland
+coastward
+coastwards
+coastwise
+coatrack
+coatroom
+cob
+cob's
+cobaltic
+cobby
+cobelligerent
+cobia
+cobs
+cobwebbed
+cobwebby
+coca
+cocainism
+cocci
+coccidiosis
+cochairman
+cochairmen
+cochise
+cockade
+cockaded
+cockamamie
+cockatrice
+cockerel
+cockfight
+cockfight's
+cockfighting
+cockfights
+cockhorse
+cockily
+cockney
+cockneyish
+cockneyism
+cockneys
+cockshy
+coco
+coconscious
+coconsciousness
+coconspirator
+coconspirators
+cocos
+cocurricular
+codable
+codeclination
+codefendant
+codeine
+codeless
+codeposit
+codetermination
+codex
+codger
+codices
+codicillary
+codifiability
+codling
+codomain
+codominant
+codon
+codpiece
+codpieces
+coeducational
+coeducationally
+coenzyme
+coequality
+coercivity
+coeternal
+coeternally
+coeternity
+coeval
+coevality
+coevolution
+cofeature
+coffeehouse
+coffle
+coffles
+cofunction
+cogency
+cogged
+cogging
+cogitable
+cogito
+cognitional
+cognitivity
+cognomen
+cognoscenti
+cogwheel
+cogwheels
+cohabitant
+cohabitants
+coheir
+coheiress
+cohesionless
+coho
+cohomology
+cohosh
+coidentity
+coif
+coiffeur
+coiffeuse
+coiffing
+coign
+coilability
+coinsurance
+coinsure
+coinsurer
+coition
+coitional
+col
+colasanto
+coldblood
+coldhearted
+coldheartedly
+coldheartedness
+coldish
+coleslaw
+coli
+colic
+colitis
+coll
+collaborationism
+collaborationist
+collaborationists
+collage
+collages
+collagist
+collagists
+collarless
+collaterality
+colleagueship
+colleaguesmanship
+collectable
+collectivism
+collectivist
+collectivistic
+collectivistically
+collectivists
+collectivity
+collectorate
+collectorates
+collectorship
+collegial
+collegiality
+collegially
+collegium
+collet
+collieries
+colliery
+colligate
+colligation
+colligative
+collimator
+collisional
+collisionally
+collocate
+collocates
+collocational
+collodion
+collogue
+collogued
+colloguing
+colloq
+colloquiality
+colloquist
+colloquoy
+colloquy
+collusive
+collusively
+colluvial
+colly
+colog
+cologarithm
+colonelcy
+colonialistic
+colonic
+colophon
+colophony
+colossi
+colossus
+colossuses
+colostomy
+colostral
+colostrum
+coltsfoot
+columbine
+columniation
+columnistic
+colza
+com
+comae
+comaker
+combinability
+combinate
+combinative
+combinatory
+comblike
+combust
+combuster
+combustibility
+combustibly
+combusting
+combustive
+combustor
+combustors
+comedie
+comedienne
+comediennes
+comedown
+cometic
+comfier
+comfit
+comfits
+comfortless
+comfy
+comicality
+comique
+comity
+commandable
+commandership
+commandery
+commemorator
+commemorators
+commendably
+commensal
+commensalism
+commensally
+commensurability
+commensurably
+commentate
+commentates
+commercialist
+commercialistic
+commie
+commination
+comminatory
+comminute
+comminuted
+comminution
+commissar
+commissariat
+commissionaire
+commissionership
+commissural
+commissure
+commix
+commixture
+commode
+commodes
+commonage
+commonalty
+commonsense
+commonsensible
+commonsensibly
+commonsensical
+commonweal
+commove
+commoved
+commoves
+commoving
+communalism
+communalist
+communalists
+communalities
+communality
+communard
+communards
+communese
+communicability
+communicableness
+communicably
+communicatee
+communicatory
+communistically
+communitarian
+communitarianism
+commutator
+commutators
+comoving
+compactible
+compactify
+companionably
+companionate
+companionway
+companionways
+comparatist
+comparativist
+compart
+compartmental
+compartmentation
+compartmentations
+compassable
+compassionless
+compatability
+compatriotic
+compeer
+compellation
+compeller
+compend
+compendious
+compendiously
+compendiousness
+compensability
+compensational
+compensator
+compensators
+compere
+compered
+compering
+competitory
+complacence
+compleat
+complected
+complemental
+complementarily
+comples
+complexation
+complexional
+complexometric
+complexometry
+compliancy
+complicacy
+complice
+complimentarily
+compline
+complot
+compo
+componential
+componentry
+compos
+compoundable
+comprehendible
+comprehensibly
+compressional
+comprisable
+comprisal
+comprisals
+comptrollership
+compulsorily
+compunctious
+compurgation
+compurgations
+compurgator
+computerite
+computerlike
+computernik
+comradery
+comsat
+comsummatively
+concavity
+concealable
+conceivability
+conceivableness
+concentrically
+concentricity
+conceptacle
+conceptional
+conceptualism
+conceptualist
+conceptualistic
+conceptualistically
+conceptus
+concernment
+concertante
+concertgoer
+concerti
+concertmeister
+concessional
+concessionary
+concessive
+concessively
+conciliar
+conciliarly
+concinnity
+concoction
+concomitance
+concordat
+concorde
+concrescence
+concrescences
+concrescent
+concretionary
+concretism
+concretist
+concretistic
+concubinage
+concupiscence
+concupiscent
+concupiscible
+concuss
+concussed
+concusses
+concussing
+concussive
+concussively
+condemnable
+condemnor
+condensable
+condensational
+condescendence
+condign
+condignly
+condimental
+conditionable
+conditionality
+condolatory
+condole
+condoled
+condoling
+condom
+condominial
+condonable
+condonation
+condor
+conductibility
+conductible
+conductimetric
+conductometric
+conductorial
+conductress
+conduplicate
+conduplication
+confab
+confabbed
+confabbing
+confabulator
+confabulatory
+confection
+confectionary
+confectioner
+confectioners
+confections
+confederal
+confederalist
+confederalists
+conferential
+conferment
+conferments
+conferral
+conferrals
+confessable
+confessionalism
+confessionalist
+confetti
+confidante
+confidantes
+configural
+configurate
+configurated
+configurates
+configurating
+configurational
+configurationally
+configurative
+confirmability
+confirmable
+confirmational
+confiscable
+confiscatable
+confiscator
+confiscators
+conflagrant
+conflagrate
+conflagrated
+conflagrates
+conflagrator
+conflagrators
+conflagratory
+conflate
+conflated
+conflates
+conflating
+conflation
+conflations
+conflatrate
+conflatrating
+conflictful
+confliction
+conflictions
+conflictless
+conflictual
+confluence
+confluences
+conflux
+confluxes
+confocal
+conformable
+conformably
+conformism
+confraternities
+confraternity
+confrere
+confreres
+confrontal
+confrontationism
+confrontationist
+confusional
+confutation
+confutations
+confutative
+confutator
+confutators
+cong
+conga
+congealment
+congelation
+congelations
+congener
+conger
+congeries
+conglomeratic
+conglomerator
+conglutinate
+conglutinated
+conglutinates
+conglutinating
+conglutination
+congratulator
+congregant
+congregational
+congregator
+congretants
+congruency
+conicity
+conjugacy
+conjugality
+conjugant
+conjugants
+conjugational
+conjugationally
+conjunctional
+conjunctionally
+conjunctiva
+conjunctival
+conjunctivitis
+conjuration
+conjurations
+conjuror
+connate
+connately
+connatural
+connaturality
+connaturally
+connectable
+connectible
+connectional
+connelly
+conniption
+connivent
+connivery
+connoisseurship
+connotational
+connubialism
+connubiality
+conscienceless
+conscribe
+conscribed
+conscribes
+conscribing
+consecrator
+consecratory
+consecution
+consentaneous
+consentaneously
+conservancy
+conservational
+conservatorial
+consignable
+consignation
+consignee
+consignment
+consignor
+consistorial
+consistory
+consociate
+consociation
+consociational
+consol
+consolatory
+consolette
+consolidator
+consolidators
+consols
+consonancy
+conspecific
+conspectus
+conspectuses
+conspicuity
+conspiration
+conspirational
+conspirations
+constabulary
+constellate
+constellatory
+constipate
+constipated
+constipates
+constipating
+constipation
+constitutionalism
+constitutionalist
+constitutionless
+constringe
+constringed
+constringent
+constringes
+constringing
+construable
+construal
+constructionist
+constructivism
+constructivist
+consubstantial
+consubstantiate
+consubstantiation
+consuetude
+consuetudinary
+consulship
+consultancies
+consultancy
+consultantship
+consultor
+consumerism
+consumerist
+consumership
+consummator
+consummatory
+contagium
+containerboard
+contaminator
+contemplator
+contemporaneity
+contemporarily
+contemptibly
+contendere
+conterminous
+conterminously
+contestation
+contexture
+contingence
+continua
+continuate
+continuated
+continuates
+continuating
+continuative
+continuatively
+continuator
+continuo
+contortionist
+contortionistic
+contortionists
+contrabandist
+contrabassist
+contrabassoon
+contractibility
+contractible
+contractile
+contractility
+contractional
+contracture
+contradictable
+contradictious
+contradictor
+contradistinct
+contradistinctive
+contradistinctively
+contradistinguish
+contrail
+contralateral
+contralto
+contraoctave
+contraposition
+contrapuntal
+contrapuntally
+contrapuntist
+contrarieties
+contrariety
+contrarious
+contrariwise
+contrastable
+contrasty
+contravariant
+contretemps
+controllership
+controllerships
+controlment
+controlments
+controversialism
+controversialist
+controvert
+controverted
+controverter
+controverting
+controverts
+contumacious
+contumaciously
+contumelious
+contumeliously
+contuse
+contused
+contuses
+contusing
+conurbation
+conurbations
+convect
+convected
+convecting
+convectional
+convective
+convector
+convectors
+convects
+conveniency
+conventicle
+conventicler
+conventionalism
+conventionalist
+conventioneer
+conventual
+conventually
+convergency
+conversable
+conversance
+conversancy
+conversional
+convertibly
+convertiplane
+convertor
+conviviality
+convocate
+convocational
+convolutional
+convulsant
+convulsionary
+cony
+cooch
+cookout
+cookouts
+cookshack
+cookshop
+cookware
+coolish
+coomb
+coombs
+coonskin
+cooperage
+cooperationist
+coot
+cootie
+copacetic
+coparcenary
+coparcener
+copartner
+copartnership
+copeck
+copemate
+copesetic
+copesmate
+copestone
+copilot
+coplanarity
+copliots
+copperas
+copperplate
+coppice
+copping
+copra
+coprinus
+coprocessor
+coprocessor's
+coprocessors
+coproduct
+coproduct's
+coproducts
+coprolite
+coprolitic
+copula
+copulas
+copulate
+copulated
+copulates
+copulating
+copulation
+copulative
+copulatively
+copulatory
+copyboy
+copycat
+copycats
+copycatted
+copycatting
+copydesk
+copyhold
+copyholder
+copyreader
+coquet
+coquetry
+coquettish
+coquettishly
+coquettishness
+coquina
+coralberry
+coralline
+corbel
+cordate
+cordately
+cordiality
+cordiform
+cordless
+cordwain
+cordwainer
+cordwainery
+cordwood
+corecipient
+corelate
+corelation
+coreligionist
+corequisite
+corespondent
+corkboard
+corkboards
+corkier
+corky
+cornball
+corncob
+corncrib
+corneal
+corneous
+cornerman
+cornerways
+cornerwise
+cornetist
+cornettist
+cornhusking
+cornice
+corniced
+cornices
+corniche
+cornicing
+cornification
+cornily
+cornstalk
+cornucopian
+cornwallis
+corolla
+corollate
+coronagraph
+coronograph
+corpocracies
+corpocracy
+corpora
+corporality
+corporatism
+corporatist
+corporativism
+corporator
+corporeity
+corporis
+corposant
+corpulencies
+corpulency
+corpuscle
+corpuscle's
+corpuscles
+corpusculated
+corpuscule
+corpuscules
+corrade
+corraded
+corrading
+corrasion
+corrasions
+corrasive
+correctional
+correctitude
+correlatable
+correlational
+correspondency
+corresponsive
+corrigenda
+corrigibility
+corrigibly
+corroborant
+corroborator
+corroborators
+corroboratory
+corroboree
+corruptibility
+corruptibly
+corruptionist
+corsair
+corse
+corsica
+corsican
+cortege
+corteges
+corticate
+corticated
+cortices
+corticoid
+corvallis
+cos
+cosec
+coset
+cosh
+cosher
+cosigner
+cosmetician
+cosmeticians
+cosmetologist
+cosmetologists
+cosmetology
+cosmo
+cosmochemical
+cosmochemistry
+cosmogenic
+cosmogonic
+cosmogonical
+cosmogonist
+cosmogony
+cosmographer
+cosmographic
+cosmographical
+cosmographically
+cosmography
+cosmologic
+cosmonaut
+cosmopolite
+cosmopolitism
+cosponsorship
+cosset
+cosseted
+cosseting
+cossets
+costa
+costal
+costless
+costlessly
+costmary
+costumery
+costumey
+costumier
+cote
+coterie
+coteries
+cotillon
+cotman
+cotoneaster
+cotta
+cottagey
+cottontail
+cottontail's
+cottontails
+cotty
+couldst
+councilmanic
+countability
+countdown
+countdown's
+countdowns
+counteraction
+counterblow
+counterchallenge
+counterchange
+countercheck
+countercurrent
+countercurrently
+counterespionage
+counterfoil
+counterintelligence
+counterirritant
+countermarch
+countermove
+countermovement
+counteroffensive
+counteroffer
+counterpane
+counterplan
+counterplea
+counterplot
+counterpose
+counterposed
+counterposes
+counterposing
+counterpunch
+counterpuncher
+counterreformation
+counterrevolutionaries
+counterrevolutionary
+counterrevolutionary's
+counterrevolutionist
+countershaft
+countershafts
+countersign
+countersignature
+counterspy
+counterstatement
+countertenor
+countertenors
+counterterrorism
+counterterrorist
+counterthreat
+counterthreat's
+counterthreats
+countertrend
+counterview
+countryfied
+countryish
+countryseat
+countrywoman
+countywide
+coupal
+couplement
+courtmartial
+couscous
+cousinage
+cousinhood
+cousinship
+couth
+couture
+couturier
+couturiere
+covalence
+covalency
+covenantal
+covenantee
+covenantor
+covent
+coventry
+coverless
+coverture
+covertures
+covetable
+covey
+coveys
+cowage
+cowbane
+cowcatcher
+cowman
+cowmen
+cowpea
+cowry
+cox
+coypu
+cozily
+cpr
+crabber
+crabbier
+crabby
+crabwise
+crackajack
+crackdown
+crackerjack
+craftily
+craftsmanlike
+craftsperson
+craftswoman
+craftswomen
+cragged
+craggily
+cragsman
+crammer
+crampon
+crampon's
+crampons
+craneman
+cranemen
+cranial
+cranially
+craniate
+crape
+crapper
+crapping
+crappy
+crapshooter
+crapulous
+crashworthiness
+crashworthy
+crassitude
+craterlet
+crayonist
+creakily
+creamily
+creaseless
+creatural
+creaturehood
+creche
+creches
+creditability
+cree
+creepage
+creese
+creighton
+crematorium
+crenate
+crenated
+crenately
+crenation
+crenelle
+crenulate
+crenulated
+crenulation
+creosol
+creosote
+crepey
+crepitant
+crepitate
+crepitation
+crepuscle
+crepuscular
+crepuscule
+crepy
+crescentic
+crescive
+crescively
+cresol
+cresset
+crestal
+crestless
+cretinism
+cretonne
+crevasse
+crewelwork
+crewless
+crewmember
+crewmembers
+cribbage
+cribbage's
+cribber
+cribriform
+crick
+criminate
+criminating
+crimination
+criminological
+criminologically
+criminologist
+criminology
+criminous
+crimpier
+crimpy
+crinoid
+crinoline
+crispier
+crispiness
+crispy
+criticaster
+croaky
+croatian
+crocket
+crocketed
+crocodilian
+croissant
+croissants
+cronyism
+crookback
+crookbacked
+cropland
+cropland's
+croplands
+croquet
+croquette
+crore
+crossability
+crossbearer
+crossbill
+crossbones
+crossbow
+crossbowman
+crossbred
+crossbreed
+crosscurrent
+crosscurrents
+crosscut
+crosslet
+crosslink
+crosslink's
+crosslinks
+crosspatch
+crosspiece
+crosstown
+crosstree
+crosswind
+crotchet
+crotcheted
+crotcheting
+crotchets
+croton
+croup
+croupous
+croupy
+crouse
+crouton
+crowberry
+crowfeet
+crowkeeper
+crownet
+cruciate
+cruciately
+crucifer
+cruciferous
+cruciform
+cruciformly
+crudded
+crudding
+crueller
+cruellest
+cruet
+cruller
+crumbier
+crumby
+crumpet
+crupper
+crustacea
+crustaceous
+crustal
+crustier
+crustification
+crustily
+crustiness
+crustose
+crusty
+crybaby
+crymotherapy
+cryobiological
+cryobiologically
+cryobiologist
+cryobiologists
+cryobiology
+cryogen
+cryogenically
+cryogeny
+cryolite
+cryonic
+cryonics
+cryophilic
+cryoscope
+cryoscopic
+cryoscopy
+cryosurgery
+cryotherapy
+cryotron
+cryptal
+cryptical
+cryptically
+crypto
+cryptogenic
+cryptogrammic
+cryptograph
+cryptographically
+cryptos
+cryst
+cubage
+cubature
+cubbies
+cubby
+cubical
+cubically
+cubicle
+cubiform
+cubistic
+cubit
+cuboid
+cuboidal
+cuckold
+cuckoldry
+cucullate
+cucullated
+cucullates
+cucurbit
+cuddleback
+cuddlesome
+cuddy
+cueing
+cuffless
+cuke
+culation
+cullender
+culminant
+culotte
+culottes
+culpably
+cultch
+cultic
+cultigen
+cultism
+cultivability
+cultivar
+cultivars
+cultivatable
+cumbrous
+cumbrously
+cumbrousness
+cumulous
+cunctation
+cunctative
+cuneate
+cuneately
+cuneiform
+cunner
+cunnilinctus
+cunnilingus
+cunt
+cupbearer
+cupcake
+cuplike
+cupola
+cuppier
+cuppy
+cupreous
+cupriferous
+cuprite
+cupsful
+cupular
+cupulate
+cupule
+curability
+curatorial
+curatorship
+curbstone
+cureless
+curet
+curettage
+curette
+curetted
+curettement
+curetting
+curite
+curium
+curlew
+curmudgeon
+curmudgeonly
+curricle
+currie
+curriery
+currish
+currishly
+cursorial
+curst
+curtailment
+curtal
+curtesy
+curtilage
+curule
+curvacious
+curveball
+curvilineal
+curvy
+cushily
+cushionless
+cushiony
+cuspate
+cuspated
+cuspid
+cuspidate
+cuspidated
+cuspidation
+cuspidor
+cussword
+cusswords
+custodianship
+custodianships
+customshouse
+cutability
+cutaround
+cutaway
+cutch
+cutesy
+cutey
+cuteys
+cuticle
+cuticles
+cuticular
+cutie
+cutler
+cutlery
+cutline
+cutover
+cutpurse
+cutset
+cuttable
+cutup
+cutups
+cutwater
+cutwork
+cybernated
+cybernation
+cybernetical
+cybernetically
+cybernetician
+cyberneticist
+cyborg
+cycad
+cyclamate
+cyclitol
+cyclo
+cycloaddition
+cyclometer
+cyclometer's
+cyclometers
+cyclonic
+cyclonically
+cyclorama
+cyclos
+cyclotomic
+cyclotron
+cygnet
+cygnet's
+cygnets
+cymbalist
+cymbalists
+cynosure
+cypher
+cyphers
+cystamine
+cysteine
+cystic
+cytaster
+cytokinin
+cytologic
+cytological
+cytologically
+cytologist
+cytolysin
+cytolytic
+cytopathogenicity
+cytophilic
+cytoplasmic
+cytoplasmically
+cytosine
+cytostatic
+cytostatically
+cytotoxicity
+cytotoxin
+cytotropic
+dabber
+dabbers
+dachshunde
+dactylus
+daedal
+daff
+daft
+dafter
+daftest
+daftly
+daftness
+daggerman
+daguerreotype
+daguerreotype's
+daguerreotypes
+daguerreotypic
+daguerreotypy
+dahlia
+dahlias
+daimon
+daimones
+daimonic
+daimons
+daiquiri
+daiquiris
+dairymaid
+daishiki
+dali
+dalliance
+dalloway
+dallyes
+dalmatian
+dalmatians
+dalmatic
+damnable
+damnableness
+damnably
+damnatory
+damndest
+damnify
+dampish
+damselflies
+damselfly
+danceability
+danceable
+dander
+dandiacal
+dandiacally
+dandification
+dandify
+dandle
+dandled
+dandling
+dandruff
+dandruffy
+dandyish
+dandyishly
+dandyism
+dandys
+danseur
+daphnia
+daredevil
+daredevilry
+daredevils
+daredeviltry
+dareful
+daresay
+darkish
+darkle
+darkroom
+darkrooms
+darksome
+darlington
+darrow
+darry
+datable
+datamedia
+dataswitch
+dataswitches
+datcap
+dateable
+dateless
+datetime
+datura
+daughterless
+dauphin
+dauphine
+davit
+daybook
+daydreamlike
+daylong
+daymare
+dayroom
+dayrooms
+daystar
+db
+de
+deacidification
+deacidify
+deactivator
+deadbeat
+deadeye
+deadfall
+deadlight
+deadpan
+deadpanner
+deaerate
+deaerates
+deaeration
+dealate
+dealated
+dealates
+dealation
+dealership
+deaminate
+deamination
+deanery
+deanship
+deathblow
+deathless
+deathlessly
+deathlessness
+deathsman
+deathwatch
+debark
+debarkation
+debarks
+debarment
+debasement
+debatement
+debator
+debators
+debauchee
+debone
+deboner
+debones
+deboning
+debouch
+debouchment
+debouchure
+debtless
+debutant
+decadency
+decagon
+decagram
+decahedron
+decalcification
+decalcify
+decalcomania
+decalescence
+decalogue
+decalogues
+decametric
+decamp
+decampment
+decamps
+decanol
+decantation
+decapitate
+decapitates
+decapitating
+decapitation
+decapitator
+decapod
+decapod's
+decapods
+decarbonate
+decarbonated
+decarbonates
+decarbonating
+decarbonation
+decarbonator
+decasyllabic
+decasyllable
+deceivable
+deceivableness
+decelerator
+decennium
+deceptional
+decerebrate
+decerebrated
+decerebrates
+decerebrating
+decerebration
+deciare
+decidua
+decidual
+deciduate
+decillion
+decipherable
+decipherment
+decistere
+deckhand
+deckhouse
+deckle
+declarable
+declarant
+declass
+declasse
+declensional
+declensionally
+declinable
+declinate
+declinational
+declivitous
+decoct
+decocted
+decocting
+decoction
+decoctions
+decocts
+decollate
+decollated
+decollates
+decollating
+decollation
+decollations
+decolonise
+decommission
+decompensate
+decompensation
+decompensatory
+deconcentrate
+deconcentrator
+decondition
+decongest
+decongestant
+decongestion
+decongestive
+deconsecrate
+deconsecration
+decontaminate
+decontaminates
+decontaminating
+decontamination
+decontaminations
+deconvolution
+deconvolve
+decorticator
+decorticators
+decoupage
+decoupages
+decremental
+decrepid
+decrepit
+decrepitate
+decrepitation
+decrepitly
+decrepitude
+decrescendo
+decrescent
+decretal
+decretals
+decretive
+decretory
+decrial
+decrials
+decryptograph
+decsystem
+dectape
+decumbent
+decuple
+decurved
+decussate
+decussately
+decussation
+decwriter
+dedicator
+dedicatory
+dedifferentiate
+dedifferentiated
+dedifferentiation
+deedless
+deejay
+defalcate
+defalcation
+defalcator
+defamation
+defamatory
+defat
+defeasance
+defeasibility
+defeasible
+defeature
+defeatured
+defeatures
+defeaturing
+defector
+defector's
+defectors
+defendable
+defensibility
+defensibly
+deferential
+deferentially
+deferral
+defervescence
+defervescences
+defervescent
+defial
+defibrillation
+defibrillator
+defilement
+definably
+definement
+definitude
+deflagrate
+deflagrated
+deflagrates
+deflagrating
+deflagration
+deflationary
+deflator
+deflexed
+defloration
+deflorations
+deflower
+defoamer
+defoamers
+defoe
+defoliant
+defoliate
+defoliated
+defoliates
+defoliating
+defoliation
+defoliator
+deforce
+deforcement
+deforciant
+deforest
+deforester
+deformative
+defraudation
+defrayable
+defrayal
+defrayals
+defrock
+defuse
+defused
+defusing
+defyed
+defys
+degas
+degassing
+degauss
+degaussed
+degausses
+degaussing
+degeneracy
+degranulation
+degressive
+degressively
+dehydrase
+dehydrator
+deism
+deist
+deistic
+deistical
+deistically
+dejeuner
+dejeuners
+delaminate
+delamination
+delate
+delated
+delates
+delating
+delation
+delator
+delectability
+delectably
+delectate
+delegacy
+delft
+delict
+delightsome
+delightsomely
+delimitate
+delimitative
+delineament
+delineaments
+delineator
+deliquesce
+deliquescent
+delist
+deliverability
+dellwood
+delphine
+delphinium
+deltaic
+delusional
+delusionary
+delusory
+demagog
+demagogic
+demagogical
+demagogically
+demagogism
+demagoguery
+demagogy
+demandable
+demandant
+demantoid
+demark
+demarkation
+dementia
+demential
+demi
+demigoddess
+demijohn
+demission
+demitasse
+demiurge
+democratique
+demographiques
+demolishment
+demolitionist
+demoniacal
+demoniacally
+demonian
+demonical
+demonically
+demonology
+demonstrability
+demonstrational
+demonstrationist
+demotic
+demount
+demounted
+demounting
+demounts
+demulcent
+demure
+demurely
+demureness
+demurrage
+demurral
+demystified
+demystifies
+demystify
+demystifying
+denaturant
+denaturation
+denaturational
+denazification
+denazify
+dendriform
+dendrite
+dendrite's
+dendrites
+dendritic
+dendroid
+dendrologic
+dendrological
+dendrologist
+dendrology
+deneen
+denegation
+denervate
+denervated
+denervates
+denervating
+denervation
+denigrator
+denigratory
+denitrification
+denitrify
+denominational
+denominationalism
+denominationalist
+denotement
+denouncement
+densification
+densify
+densimeter
+densimeter's
+densimeters
+densimetric
+dentate
+dentated
+dentately
+dentation
+denticle
+denticulate
+denticulated
+denticulately
+denticulation
+dentiform
+dentifrice
+dentigerous
+dentil
+dentin
+dentinal
+dentine
+dentition
+dentulous
+denudation
+denudational
+denudement
+denumerably
+denunciatory
+denys
+deontological
+deontologist
+deontology
+deoxidation
+deoxycholate
+deoxygenation
+deoxyribose
+depigmentation
+depilate
+depilated
+depilates
+depilating
+depilation
+depilatory
+deplane
+deplaned
+deplanes
+deplaning
+depletable
+depone
+deponed
+deponent
+depones
+deponing
+depopulate
+depopulation
+depopulator
+deportable
+depositional
+depravation
+depravations
+depravement
+deprecatorily
+depreciator
+depreciators
+depreciatory
+depredate
+depredated
+depredates
+depredating
+depredation
+depredator
+depredators
+depredatory
+depressily
+depressor
+depthless
+derailment
+derate
+derating
+deration
+derisory
+derivational
+derma
+dermal
+dermatoid
+dermatologic
+dermatological
+dermatologist
+dermatology
+dermatosis
+derogatorily
+derrickman
+derrickmen
+desalination
+desalting
+descendible
+descension
+descrating
+desecrator
+desertic
+desex
+deshabille
+desiccant
+desiccate
+desiccated
+desiccates
+desiccation
+desiccative
+desiccator
+desiderate
+desideration
+desiderative
+designatory
+designee
+designment
+desistance
+deskman
+desolator
+desorb
+desorbable
+desorbed
+despicable
+despicableness
+despisement
+despiteful
+despitefully
+despitefulness
+despiteous
+despiteously
+despoilment
+despondence
+despondences
+despotically
+destructibility
+destructible
+destructionist
+destructivity
+desultorily
+detab
+detachability
+detachably
+detainee
+detainment
+detectability
+detectaphone
+detent
+determent
+determents
+determinably
+determinantal
+determinator
+determinist
+deterrer
+detestably
+dethrone
+dethronement
+detinue
+detonabilities
+detonability
+detonatable
+detonational
+detoxicant
+detoxicants
+detoxicate
+detoxicated
+detoxicates
+detoxicating
+detoxication
+detoxicator
+detoxification
+detoxified
+detoxifies
+detoxify
+detoxifying
+detraction
+detractions
+detrain
+detrained
+detraining
+detrainment
+detrains
+detritus
+detumescence
+detumescences
+detumescent
+deuterate
+deuterated
+deuterates
+deuterating
+deuteration
+deuterations
+deuteron
+deuteron's
+devaluate
+devaluations
+devastator
+devastators
+developable
+deverbative
+devest
+deviancies
+deviancy
+deviationism
+deviationist
+deviator
+deviators
+devilkin
+devilment
+devilments
+devilry
+deviltry
+devisability
+devisable
+devisal
+devisee
+devisor
+devitrification
+devitrify
+devoir
+devoirs
+devolution
+devolutionary
+devolutionist
+devotement
+dewater
+dewatered
+dewaterer
+dewatering
+dewaters
+dewily
+deworm
+dexedrine
+dexterous
+dexterously
+dexterousness
+dextral
+dextrality
+dextrally
+dextrine
+dextro
+dextrose
+dextrose's
+dey
+dharma
+diabolism
+diabolist
+diachronically
+diachrony
+diaconal
+diaconate
+diacritic
+diacritic's
+diacritics
+diadromous
+diagnoseable
+diagnostical
+diagnostically
+diagrammatical
+diakinesis
+diakinetic
+dialectician
+dialecticians
+dialectological
+dialectologically
+dialectologist
+dialectology
+dialogic
+dialogical
+dialogically
+dialogist
+dialogistic
+dialup
+dialup's
+dialups
+dialytic
+diamagnet
+diamagnetism
+diamagnets
+diametral
+diametrical
+dianne
+diapason
+diapause
+diapausing
+diaphaneity
+diaphone
+diaphragmatic
+diaphragmatically
+diaphragmic
+diapositive
+diarchy
+diarist
+diaspora
+diaspore
+diastole
+diastolic
+diastrophic
+diastrophically
+diastrophism
+diathermic
+diathetic
+diation
+diatomaceous
+diatomite
+diatonically
+diatropic
+diatropism
+diatropisms
+dibble
+dibs
+dicarboxylic
+dicey
+dichondra
+dichotic
+dichotically
+dichotomist
+dichroic
+dichroism
+dichroitic
+dichromat
+dichromate
+dichromatic
+dichromatism
+dichromats
+dicier
+dickcissel
+dicta
+dictionally
+dicyclic
+didact
+didactical
+didactically
+didacticism
+dieing
+diel
+dieldrin
+dieresis
+dietarily
+dietetically
+diety
+dieu
+dieux
+diffeomorphic
+diffeomorphism
+differentia
+diffusional
+difluoride
+digamma
+digenesis
+digenetic
+digestibility
+digitalin
+digitate
+digitated
+digitately
+digitation
+digitigrade
+digitonin
+digressional
+digressionary
+dihybrid
+dihydroxy
+dijon
+dilapidator
+dilatability
+dilatable
+dilatational
+dilatometer
+dilatometer's
+dilatometers
+dilatometric
+dilatometry
+dilatorily
+dildo
+dildos
+dilemmatic
+dilemmatical
+dilettanti
+dilettantish
+dilettantism
+dilettantist
+dillydally
+diluent
+dilutor
+diluvial
+dimaggio
+dimeric
+dimerism
+dimerous
+dimeter
+dimeter's
+dimeters
+dimethoxymethane
+diminishable
+diminishment
+diminuendo
+diminuendo's
+diminuendos
+diminutional
+dimmable
+dimorphic
+dimorphism
+dimorphous
+dimout
+dimply
+dimwit
+dimwits
+dimyristoyl
+dinette
+dingbat
+dingbats
+dingdong
+dingily
+dingle
+dinkey
+dinnerless
+dinning
+dinosaurian
+dinosauric
+diogenes
+dion
+dioptometer
+dioptometer's
+dioptometers
+dioptometry
+dioptric
+dioptrics
+dioramic
+diorite
+diphase
+diphasic
+diphenyl
+diphtherial
+diphtherian
+diphtheritic
+diphtheroid
+diphthongal
+diplex
+diploid
+diploid's
+diploids
+diploidy
+diplomate
+diplomatically
+diplomatist
+dipod
+dipolar
+dipperful
+dipropellant
+dipsomania
+dipsomaniac
+dipsomaniacal
+dipstick
+diptych
+directionless
+directorial
+dirigible
+dirigibles
+disaccharide
+disaccharides
+disaccord
+disaccustom
+disadvantageous
+disadvantageously
+disadvantageousness
+disaffect
+disaffirm
+disaffirmance
+disaffirmation
+disagreeability
+disagreeably
+disallowance
+disannul
+disapprovative
+disarrange
+disarrangement
+disarranges
+disarticulate
+disarticulation
+disassociate
+disassociated
+disassociates
+disassociating
+disassociation
+disavowable
+disbandment
+disbarment
+disburden
+disburdenment
+discardable
+discernable
+dischargeable
+dischargee
+disciform
+disciplinable
+disciplinal
+disciplinarian
+disciplinarily
+disciplinarity
+disclamation
+disco
+disco's
+discographer
+discographic
+discographical
+discographically
+discography
+discoid
+discoidal
+discoidin
+discombobulate
+discomfiture
+discomfitures
+discomfortable
+discomfortably
+discommend
+discommendable
+discommendation
+discommode
+discommodes
+discommoding
+discompose
+discomposed
+discomposedly
+discomposure
+disconfirm
+disconfirmation
+disconform
+disconformable
+disconformity
+disconsolate
+disconsolately
+disconsolateness
+disconsolation
+discontentment
+discophile
+discordance
+discordances
+discordancy
+discos
+discountenance
+discourageable
+discourtesy
+discoverable
+discreditable
+discreditably
+discriminability
+discriminably
+discriminational
+discriminator
+discriminatorily
+discriminators
+discussable
+discussible
+disembark
+disembarkation
+disembarrass
+disembodiment
+disembody
+disembowelment
+disenchant
+disenchanter
+disenchanting
+disenchantingly
+disencumber
+disencumbrance
+disendow
+disendower
+disendowment
+disentanglement
+disenthralled
+disenthralling
+disequilibrate
+disequilibration
+disestablish
+disestablished
+disestablishment
+disestablishmentarian
+disesteem
+disestimation
+disfeature
+disfeaturement
+disfigurement
+disfigurements
+disfranchise
+disfranchised
+disfranchisement
+disfranchises
+disfranchising
+disfrock
+disfunction
+disfurnish
+disfurnishment
+disgorgement
+disgruntlement
+disguisement
+dishabille
+disharmonic
+disharmonious
+dishcloth
+disheartenment
+disheartenments
+dishrack
+dishracks
+dishy
+disincentive
+disincline
+disinclined
+disinclines
+disinclining
+disinfect
+disinfectant
+disinfectants
+disinfected
+disinfecting
+disinfection
+disinfects
+disinfest
+disinfestant
+disinfestation
+disinfested
+disinfesting
+disinfests
+disinflation
+disinflationary
+disingenuous
+disingenuously
+disingenuousness
+disinhibition
+disinhibitory
+disinsectization
+disintegrator
+disintegrators
+disinter
+disintered
+disintering
+disinterment
+disinters
+disintoxication
+disinvest
+disinvestment
+disjuncture
+disklike
+dislicense
+dislicensed
+dislicenser
+dislicenses
+dislicensing
+dislikable
+dislikably
+dislikeable
+dislimn
+dismantlement
+dismast
+dismember
+dismembering
+dismission
+disoblige
+disobliger
+disoblingingly
+disorient
+disorientation
+disownment
+dispart
+dispassion
+dispensability
+dispensable
+dispensational
+dispensatory
+dispeople
+dispersant
+dispirit
+dispirited
+dispiritedly
+dispiritedness
+dispiriting
+dispirits
+dispiteous
+displaceable
+displant
+displode
+disploded
+displodes
+disploding
+displosion
+disport
+disportment
+disporves
+disposability
+dispositive
+dispossess
+dispossesses
+dispossessing
+dispossessor
+disposure
+disposures
+dispraise
+dispraiser
+dispraisingly
+dispread
+disprize
+disproof
+disprovable
+disputation
+disputatious
+disputatiously
+disputatiousness
+disquantity
+disraeli
+disrate
+disregardful
+disrelate
+disrelated
+disrelation
+disrelish
+disremember
+disremembrance
+disreputability
+disreputably
+disrespectability
+disrespectable
+disrespectful
+disrespectfully
+disrespectfulness
+dissatisfactory
+dissatisfies
+dissatisfy
+dissatisfying
+dissector
+disseminator
+disseminators
+dissentient
+dissention
+dissert
+dissertate
+dissertator
+disserve
+dissever
+disseverance
+disseverment
+dissidence
+dissimilate
+dissimilated
+dissimilates
+dissimilating
+dissimilation
+dissimilative
+dissimilatory
+dissimilitude
+dissimulate
+dissimulator
+dissociability
+dissocial
+dissociant
+dissolubility
+dissoluble
+dissolute
+dissolutely
+dissoluteness
+dissolvable
+dissolvent
+dissuasion
+dissuasive
+dissuasively
+dissuasiveness
+dissyllable
+dissymmetric
+dissymmetry
+distemperate
+distemperature
+distensibility
+distensible
+distent
+distention
+distinguishability
+distinguishably
+distortional
+distractibility
+distractible
+distrain
+distrainable
+distrainer
+distrainor
+distraint
+distrait
+distressful
+distressfully
+distressfulness
+distributary
+distributee
+distrustful
+distrustfully
+distrustfulness
+disubstituted
+disunionist
+disunite
+disutility
+disvalue
+disyllabic
+dithery
+divagate
+divagation
+divaricate
+divarication
+divergencies
+divergency
+diversionist
+divertissement
+divertissements
+divestment
+dividable
+divinatory
+divisibility
+divisionism
+divisionist
+divorcement
+divot
+divulgence
+divulsion
+divvy
+dixiecrats
+dobbin
+doberman
+dobson
+doc
+docent
+docetic
+docility
+dockage
+dockhand
+dockworker
+doctorless
+doctorship
+doctrinairism
+documental
+documentale
+documentalist
+documentarian
+documentarily
+documentarist
+documentational
+dodder
+doddered
+dodderer
+doddering
+dodders
+doddery
+dodecyl
+dodgery
+dodgy
+dodington
+dodo
+dodo's
+dodos
+dogbane
+dogberry
+dogcart
+dogcatcher
+doge
+dogface
+dogfight
+dogfights
+dogfish
+doggerel
+doggery
+doggie
+doggier
+doggies
+doggish
+doggishly
+doggishness
+doggy
+doglike
+dogmatical
+dogmaticalness
+dogmatist
+dogmatist's
+dogmatists
+dogwatch
+doilies
+doily
+doit
+doited
+dolce
+dolesome
+dollhouse
+dollish
+dollishly
+dollishness
+dollop
+dollop's
+dolloped
+dolloping
+dollops
+dolorous
+dolorously
+dolorousness
+domical
+domicil
+domiciliary
+domiciliate
+domiciliation
+dominical
+dona
+donator
+donee
+doneness
+dong
+donner
+donut
+doodad
+doodlebug
+doohickey
+doomful
+doomfully
+doomsayer
+doomster
+doorjamb
+doorless
+doormat
+doornail
+doorplate
+doorpost
+doorsill
+doorstop
+dooryard
+dopester
+dopey
+dopier
+dopiness
+doppelganger
+dopy
+dormancy
+dormice
+dormie
+dormouse
+dormouse's
+dormy
+dosimetric
+doss
+dossal
+dosser
+dotal
+dotter
+dotterel
+dottier
+dottily
+dottiness
+dotty
+doublespeak
+doublethink
+doubletree
+douce
+douche
+doughboy
+doughface
+doughier
+doughlike
+doughnuttery
+doughtier
+doughtily
+doughtiness
+doughty
+doughy
+dovecot
+dovecote
+dovekie
+dovish
+dovishness
+dowdily
+dowdyish
+dowitcher
+downcourt
+downhaul
+downhearted
+downheartedly
+downheartedness
+download
+downloaded
+downloading
+downloads
+downrange
+downriver
+downshift
+downstage
+downstate
+downstater
+downstroke
+downswing
+downtime
+dozier
+doziness
+dozy
+drabber
+drabbest
+drabbing
+drabble
+drabbled
+drabbling
+draftable
+draggier
+draggle
+draggled
+draggling
+draggy
+dragline
+dragonet
+dragonish
+dragster
+drainpipe
+drainpipes
+dramalogue
+dramamine
+dramaturge
+dramaturgic
+dramaturgical
+dramaturgically
+dramshop
+drapability
+drapable
+drapeability
+drapeable
+drat
+dratted
+dratting
+drawable
+drawbar
+drawdown
+drawee
+drawerful
+drawknife
+drawnwork
+drawplate
+drawstring
+drawstring's
+drawstrings
+drawtube
+dray
+drayage
+drayman
+drayman's
+draymen
+draymen's
+dreamful
+dreamfully
+dreamfulness
+dreamland
+dreamworld
+drear
+drearily
+dreck
+dressage
+dressmake
+driblet
+driftage
+driftier
+driftweed
+driftwood
+driftwood's
+drifty
+drillability
+drillable
+drillmaster
+drinkability
+dripless
+dripper
+drivable
+driveable
+drivel
+driveline
+driverless
+drolleries
+drollery
+drolly
+dropkick
+dropkicker
+droplight
+droppage
+dropperful
+dropshot
+dropsy
+drossy
+droughtiness
+droughty
+drouth
+drownd
+drownded
+drownding
+drubber
+drugget
+drugmaker
+druidess
+druidic
+druidical
+druidism
+drumbeat
+drumbeater
+drumbeating
+drumfire
+drumlike
+drumlin
+drumroll
+drumstick
+drumsticks
+drunkometer
+drunkometer's
+drunkometers
+drupe
+dryable
+dryad
+dryasdust
+drylot
+drypoint
+drys
+drysalter
+drysaltery
+du
+dualist
+dualistic
+dualistically
+dubber
+dubbing
+dubiety
+dubiosity
+dubitable
+dubitation
+dubuque
+ducal
+ducally
+duckbill
+duckbilled
+duckboard
+duckfooted
+duckier
+duckpin
+duckweed
+duckweed's
+duckweeds
+ducky
+duclos
+ductility
+ductless
+ductule
+dudgeon
+dudish
+dudishly
+duende
+duenna
+duennaship
+duetted
+duetting
+duffle
+dugong
+dulcimer
+dulcimore
+dulgence
+dulles
+dullish
+dullishly
+dullsville
+dulness
+dulse
+dumbstruck
+dumbwaiter
+dumbwaiters
+dumdum
+dumka
+dumpily
+dumpish
+dumpling
+dumpling's
+dumplings
+dumpo
+dumpster
+dumpster's
+dumpsters
+dunderhead
+dunderheaded
+duneland
+dunelike
+dungaree
+dunghill
+dungy
+dunkel
+dunne
+duo
+duodecimal
+duodecimo
+duodenal
+duodenum
+duologue
+duomo
+duomos
+duopolistic
+duos
+dupery
+duple
+duplicitous
+duplicitously
+dupont
+duponts
+durance
+durometer
+durometer's
+durometers
+duros
+duskily
+dustcover
+dustheap
+dustily
+dustin
+dustless
+dustlike
+dustman
+dustpan
+dustpans
+dustup
+dutchess
+duteous
+duverger
+dwarfishly
+dwarfishness
+dwarfism
+dwarflike
+dyadically
+dyarchy
+dyeability
+dyeable
+dyerear
+dyestuff
+dyewood
+dynamist
+dynamistic
+dynamitic
+dynamometer
+dynamometer's
+dynamometers
+dynamometric
+dynamometry
+dynamotor
+dynapolis
+dynast
+dynastically
+dynasts
+dynatron
+dyne
+dynode
+dynodes
+dysenteric
+dysfunction
+dysfunctional
+dysgenesis
+dysgenic
+dysgenics
+dyslexia
+dyslexic
+dyslogistic
+dyslogistically
+dyspepsia
+dyspeptically
+dysphagia
+dysphagic
+dysphasia
+dysphasic
+dysphonia
+dysphonic
+dysphoria
+dysphoric
+dysplasia
+dysplastic
+dystrophic
+eV
+eaglet
+eagre
+earache
+eardrop
+eardrops
+earflap
+earful
+earldom
+earlobe
+earlock
+earmuff
+earmuffs
+earp
+earpiece
+earplug
+earthborn
+earthbound
+earthily
+earthlike
+earthling
+earthshaker
+earthshaking
+earthshakingly
+earthshine
+earthstar
+earthward
+earthwards
+earthwork
+earthworks
+earwax
+earwig
+earwigged
+earwigging
+earwitness
+easeful
+easefully
+easthampton
+eastwick
+easure
+eatery
+ebullience
+ebulliency
+ebullition
+eccentrically
+ecclesial
+ecclesiasticism
+ecclesiological
+ecclesiology
+ecdysiast
+ecdysis
+ecesis
+ech
+echidna
+echinulate
+echinulation
+echoey
+echoic
+echolocation
+eclat
+eclecticism
+eclogue
+eclosion
+ecol
+ecologic
+ecologist
+econometrically
+econometrician
+econometrist
+ecophysiological
+ecophysiology
+ecospecies
+ecospecific
+ecosphere
+ecotone
+ecotype
+ecotypic
+ecotypically
+ecru
+ecstatically
+ectoblast
+ectoblastic
+ectoderm
+ectodermal
+ectodermic
+ectogenic
+ectogenous
+ectomere
+ectomeric
+ectomorph
+ectomorphic
+ectoparasite
+ectoparasitic
+ectopic
+ectoplasm
+ectoplasmic
+ectotherm
+ectothermic
+ectotrophic
+ectotropic
+ecumenicalism
+ecumenicism
+ecumenicity
+ecumenism
+eczema
+eczematous
+edacious
+edacity
+edaphic
+edaphically
+edentate
+edentulous
+edgeless
+edgewater
+edgeways
+edgewood
+edgily
+edibility
+edictal
+edificatory
+editable
+editress
+eduard
+educability
+educable
+educationalist
+educationalists
+educationist
+educible
+eduction
+eductor
+eductors
+edulcorate
+edwardine
+eeg
+eellike
+eely
+eeriness
+eery
+effacement
+effectivity
+effectuality
+effeminacy
+effervesce
+effervescence
+effervescent
+effervescently
+efficacity
+efflorescence
+efflrescent
+effluence
+effortful
+effortfully
+effrontery
+effulgence
+effulgent
+eft
+egad
+egads
+egerton
+egestion
+egestive
+eggbeater
+eggcup
+eggnog
+eglantine
+egocentrically
+egocentricity
+egocentrism
+egoism
+egoist
+egoistic
+egoistical
+egoistically
+egoists
+egomania
+egomaniac
+egomaniacal
+egomaniacally
+egomaniacs
+egression
+eichmann
+eiderdown
+eidetically
+eidolon
+eigenfunction
+eigenfunctions
+eigenspace
+eighths
+eightyfold
+ein
+eine
+ejaculatory
+ejecta
+ejectable
+ejectment
+ekistic
+ekistics
+elapid
+elastase
+elastin
+elastomeric
+elaterite
+elbowroom
+elderberry
+eldership
+elecroencephalographic
+electability
+electable
+electioneer
+electioneerer
+electret
+electriques
+electroacoustic
+electroacoustically
+electroacoustics
+electroanalysis
+electroanalytic
+electroanalytical
+electrocardiographic
+electrocardiographically
+electrocardiography
+electrochemical
+electrochemically
+electrochemistry
+electroconvulsive
+electrocorticogram
+electrocorticogram's
+electrocorticograms
+electrodeposit
+electrodeposition
+electrodialysis
+electrodialytic
+electrodynamometer
+electrodynamometer's
+electrodynamometers
+electroencephalograph
+electroencephalography
+electroform
+electrogenesis
+electrogenic
+electrogram
+electrogram's
+electrograms
+electrohydraulic
+electrohydraulically
+electrojet
+electrokinetic
+electrokinetics
+electroless
+electrologist
+electroluminescence
+electroluminescent
+electrolytically
+electromagnetic
+electromagnetically
+electromechanical
+electromechanically
+electrometallurgy
+electrometer
+electrometer's
+electrometers
+electromotive
+electromyogram
+electromyogram's
+electromyograms
+electromyographical
+electronegative
+electronegativity
+electronography
+electrooculogram
+electrooculogram's
+electrooculograms
+electrophilic
+electrophoretic
+electrophoretically
+electrophoretogram
+electrophoretogram's
+electrophoretograms
+electrophotographic
+electrophotography
+electrophysiologic
+electrophysiological
+electrophysiologically
+electrophysiologist
+electrophysiology
+electroplate
+electroplater
+electropositive
+electroretinogram
+electroretinogram's
+electroretinograms
+electroretinograph
+electroretinographic
+electroretinography
+electroscope
+electrostatically
+electrosurgery
+electrosurgical
+electrothermal
+electrothermally
+electrothermic
+electrotonic
+electrotonically
+electrotype
+electrotyper
+electrovalence
+electrovalent
+electrowinning
+electrum
+electuary
+elegancy
+elegiacal
+elegiacally
+elegit
+elementarily
+elephantiasis
+elevenfold
+elfish
+elfishly
+elicitation
+elicitor
+elide
+elided
+elides
+eliding
+eligibly
+eliminable
+elisp
+elitism
+elitist
+elitists
+elixir
+ell
+elle
+ellie
+elliot
+elocutionary
+elocutionist
+elocutionists
+elopement
+elroy
+eluant
+elucidator
+elucubrate
+elucubrated
+elucubrates
+elucubrating
+elucubration
+eluent
+elutriate
+elutriator
+eluvial
+eluviate
+eluviation
+eluvium
+elver
+elvis
+elvish
+elysium
+elytron
+elytrum
+em
+emanational
+emancipationist
+emancipator
+emarginate
+emarginated
+emargination
+emasculator
+embalmment
+embarkation
+embarkment
+embarrassable
+embassage
+embattlement
+embay
+embayment
+embeddable
+embedment
+embitter
+embitterment
+embitters
+emblaze
+emblazed
+emblazes
+emblazing
+emblazon
+emblazoned
+emblazoner
+emblazoning
+emblazonment
+emblazonry
+emblazons
+emblematical
+emblematically
+emblements
+embolic
+embolism
+embolismic
+embosom
+embossable
+embossment
+embouchure
+embowed
+embowel
+embracement
+embraceor
+embracery
+embranchment
+embrangle
+embranglement
+embrasure
+embrittlement
+embrocate
+embrocated
+embrocates
+embrocating
+embrocation
+embroglio
+embroilment
+embrown
+embrue
+embryogenesis
+embryogenetic
+embryogenic
+embryogeny
+embryol
+embryologic
+embryological
+embryologically
+embryologist
+embryonal
+embryonally
+embryonated
+embryonically
+embryotic
+emceeing
+emendate
+emendation
+emendator
+emendatory
+emeriti
+emersed
+emerses
+emersion
+emetic
+emetically
+emigre
+emigre's
+emigree
+eminency
+emir
+emissive
+emollient
+emollients
+emote
+emoted
+emotes
+emoting
+emotionalist
+emotionalistic
+emotionless
+emotionlessness
+emotive
+emotively
+emotivity
+empanel
+empanels
+empathetic
+empennage
+emperies
+emperorship
+empery
+emphasization
+emphasization's
+emplacement
+emplane
+empoison
+empoisonment
+empowerment
+empressement
+emprise
+emptyhanded
+empurple
+empurpled
+empurpling
+ems
+emu
+emulous
+emulously
+emulousness
+emulsible
+emulsifiable
+emulsive
+emunctory
+en
+enactor
+enamelware
+enamine
+encage
+encapsule
+encapsules
+encasement
+encash
+encashment
+encaustic
+enceinte
+encephalic
+encephalitic
+encephalitogenic
+encephalogram
+encephalogram's
+encephalograms
+encephalon
+enchainment
+enchase
+enchased
+enchasing
+enchilada
+encipherment
+encirclement
+enclasp
+enclitic
+encomia
+encompassment
+encrimson
+encrustation
+encyst
+encystation
+encystment
+endamage
+endangerment
+endarch
+endarchy
+endbrain
+endemically
+endergonic
+endermic
+endermically
+endexine
+endite
+endleaf
+endlong
+endmost
+endobiotic
+endoblast
+endoblastic
+endocardial
+endochondral
+endocrine
+endocrinologic
+endocrinological
+endocrinologist
+endocrinology
+endocytic
+endocytosis
+endocytotic
+endoderm
+endodermal
+endodermis
+endodontia
+endodontic
+endodontically
+endodontics
+endodontist
+endoenzyme
+endoergic
+endoerythrocytic
+endogamic
+endogen
+endogenic
+endogeny
+endolymph
+endolymphatic
+endometrial
+endometriosis
+endometrium
+endomitosis
+endomorph
+endomorphic
+endomorphism
+endomorphy
+endonuclease
+endoparasite
+endoparasitism
+endophyte
+endophytic
+endoplasm
+endoplasmic
+endorsable
+endorsee
+endoscope
+endoscopic
+endoscopically
+endoscopy
+endoskeletal
+endoskeleton
+endosmosis
+endosmotic
+endosmotically
+endospermic
+endospermous
+endospore
+endosporic
+endosporous
+endosteal
+endosteally
+endosternite
+endosteum
+endostyle
+endosymbiosis
+endotherm
+endothermal
+endotoxic
+endotoxin
+endotracheal
+endotrophic
+endotropic
+endozoic
+endpaper
+endue
+endued
+enduing
+endways
+endwise
+enemata
+enfant
+enfants
+enfeeblement
+enfetter
+enfever
+enflame
+enflamed
+enflames
+enflaming
+enfold
+engild
+engineroom
+enginerooms
+enginery
+engird
+engirdle
+englacial
+englut
+englutted
+engluttin
+engorgement
+engr
+engraft
+engrailed
+engrain
+engrammic
+engrossment
+engulf
+engulfment
+enhalo
+enharmonic
+enharmonically
+enigmatical
+enigmatically
+enisle
+enjambement
+enjambment
+enkindle
+enlace
+enlacement
+enlistee
+enmeshment
+ennoblement
+enol
+enolase
+enolic
+enologist
+enology
+enplane
+enrapt
+enregister
+enrobe
+enroot
+ens
+ensample
+ensanguine
+ensconce
+ensconces
+ensconcing
+enscroll
+enserf
+enserfment
+ensheathe
+enshrine
+enshrined
+enshrinement
+enshrines
+ensiform
+ensilage
+ensile
+ensiled
+ensiling
+ensional
+ensnarl
+ensolite
+ensoul
+ensphere
+enswathe
+entablature
+entablement
+entablements
+ente
+entendre
+entente
+enterable
+enteral
+enterally
+enteric
+enthronement
+enticement
+entoderm
+entodermal
+entodermic
+entoil
+entoiled
+entombment
+entomological
+entomophagous
+entomophilous
+entomophily
+entrail
+entrails
+entrainment
+entrancement
+entrappingly
+entreatment
+entrustment
+entryway
+entwinement
+entwist
+enucleate
+enucleated
+enucleating
+enucleation
+enunciator
+enunciators
+envelopment
+envelopments
+environmentalism
+environmentalist
+environmentalists
+envisionin
+envoi
+envois
+enwheel
+enwind
+enwinding
+enwrap
+enwreathe
+enzymic
+enzymically
+enzymologist
+eon
+eon's
+eons
+eosine
+epaulette
+ephemerality
+epical
+epically
+epicardial
+epicardium
+epicarp
+epicene
+epicenism
+epicentral
+epicureanism
+epicurism
+epicurus
+epidemical
+epidemically
+epidemicity
+epidemiologic
+epidemiologist
+epidermal
+epigrammatical
+epigrammatically
+epigrammatism
+epigrammatist
+epigraphic
+epigraphical
+epigraphically
+epigraphist
+epigraphy
+epileptically
+epimorphism
+epiphanous
+epiphenomenal
+epiphenomenally
+epiphyseal
+epiphysis
+epiphyte
+epiphytic
+episcope
+episiotomy
+episodical
+episodically
+episomal
+episomally
+episome
+epistasy
+epistatic
+epistemic
+epistemically
+epistemologist
+epistolary
+epistoler
+epistrophe
+epitaphial
+epitaphic
+epithetic
+epithetical
+epode
+epodes
+eponymous
+equability
+equably
+equalitarian
+equalitarianism
+equational
+equationally
+equatorward
+equerries
+equerry
+equestrienne
+equiangular
+equiangularity
+equicaloric
+equilibrator
+equilibrators
+equilibratory
+equilibrist
+equilibristic
+equimolal
+equimolar
+equinoctial
+equipage
+equipoise
+equipollence
+equipollent
+equipollently
+equiponderant
+equiponderate
+equipotential
+equiprobable
+equitability
+equitant
+equitation
+equivalency
+equivocality
+equivocate
+equivocated
+equivocates
+equivocating
+equivocator
+equivoke
+equivoque
+eradicably
+eradicator
+eradicators
+eradictions
+erasabilities
+erasability
+erectable
+erectile
+erectility
+erelong
+erenow
+erewhile
+erewhiles
+erg
+ergative
+ergograph
+ergometer
+ergometer's
+ergometers
+ergometric
+ergonomic
+ergonomics
+ergonomist
+ergonovine
+ergosterol
+ergot
+ergotamine
+ergotic
+ergotism
+ergotropic
+erodibility
+erogenic
+erogenous
+erose
+erosely
+erosional
+erosionally
+erosivity
+erotical
+eroticism
+eroticist
+erotism
+erotogenic
+erratical
+erraticism
+errorless
+eruptible
+escalade
+escalader
+escalades
+escalator
+escalators
+escalatory
+escallop
+escallops
+escapement
+escapements
+escapism
+escapologist
+escapology
+escargot
+escarp
+escheat
+escherichia
+eschewal
+escot
+esculent
+esemplastic
+esker
+esophageal
+esoterica
+esoterically
+esotericism
+esp
+espadrille
+espagnol
+espanol
+esperance
+espial
+espresso
+espressos
+essayist
+essayistic
+essentialism
+essentialist
+essentiality
+establishable
+establishmentarian
+establishmentarianism
+esteemable
+ester
+estop
+estopped
+estopping
+estral
+estray
+estrogen
+estrogenic
+estrogenically
+estrone
+estrous
+estrum
+estrus
+estuarial
+esurience
+esuriency
+esurient
+esuriently
+etagere
+etatism
+etatist
+etch
+etcher
+etches
+etching
+ether
+ether's
+ethereality
+etheric
+etherish
+etherlike
+ethers
+ethicality
+ethician
+ethicians
+ethnical
+ethnobiological
+ethnobiology
+ethnocentric
+ethnocentrically
+ethnocentricity
+ethnocentrism
+ethnographer
+ethnographical
+ethnographically
+ethnol
+ethnologic
+ethnological
+ethnologically
+ethnologist
+ethnomusicology
+ethological
+ethologist
+ethoxy
+ethylate
+ethylation
+ethylenic
+ethylenically
+ethylic
+ethynyl
+etude
+etudes
+etui
+etymologist
+etymologists
+eucaryotic
+eucharistic
+euchre
+euclidian
+eucre
+eugenically
+eugenicist
+euglena
+euhemerism
+euhemerist
+euhemeristic
+euhemeristically
+eukaryote
+eukaryotic
+eulogist
+eulogistic
+eulogistically
+eulogium
+eumorphic
+eunuchism
+euphemistic
+euphemistically
+euphonically
+euphonious
+euphoniously
+euphoniousness
+euphonium
+euphorbia
+euphorically
+euphotic
+euphuism
+euphuist
+euphuistic
+euphuistically
+euplastic
+eurhythmic
+eurhythmics
+europeanish
+eurythmic
+eurythmics
+eurythmy
+eurytopic
+eurytopicity
+eustatic
+eutectic
+euthanasic
+euthenics
+euthenist
+eutherian
+euthyroid
+eutrophic
+eutrophication
+eutrophy
+eux
+evacuator
+evacuee
+evacuees
+evadable
+evagination
+evaluable
+evanesce
+evanesced
+evanescence
+evanesces
+evanescing
+evangel
+evangeline
+evangelistically
+evanishment
+evaporativity
+evaporator
+evaporators
+evaporite
+evaporitic
+evapotranspiration
+evection
+evenfall
+eventless
+everblooming
+eversible
+eversion
+eversions
+evert
+everyplace
+evictee
+evictees
+evictor
+evictors
+evidentiary
+evildoing
+evincible
+eviscerate
+eviscerated
+eviscerates
+eviscerating
+evisceration
+evitable
+evocator
+evocators
+evolutionarily
+evolutionism
+evolutionist
+evolvable
+evolvement
+evulsion
+evulsions
+evzone
+ewen
+exacta
+exactable
+exactor
+exactors
+exaggerator
+exaggerators
+exagitates
+examinant
+examinants
+examinational
+examinatorial
+examinee
+examinees
+exanimate
+exanimated
+exanimates
+exanimating
+excavational
+excavator
+excavators
+exceptionability
+exceptionable
+exceptionably
+exceptionality
+excerption
+excerptions
+excerptor
+excerptors
+exchangeability
+exchangee
+exchangees
+excide
+excided
+excides
+exciding
+excipient
+exciseman
+excitant
+excitants
+excitative
+exciton
+excitor
+exclave
+exclaves
+exclosure
+exclosures
+excludability
+excludable
+excludible
+exclusionist
+exclusionists
+excogitate
+excogitation
+excogitative
+excommunicator
+excrement
+excrement's
+excremental
+excrementitious
+excrements
+excrescency
+excrescent
+excrescently
+excreta
+excretal
+exculpate
+exculpated
+exculpates
+exculpating
+exculpation
+exculpations
+excurrent
+excursionist
+excursionists
+excursive
+excursively
+excursiveness
+excusatory
+execrably
+execrator
+execrators
+executant
+executorial
+executory
+executrices
+exegetic
+exegetical
+exegetically
+exegetics
+exegetist
+exemplarily
+exemplarity
+exenterate
+exenterated
+exenterates
+exenterating
+exenteration
+exenterations
+exercitation
+exergonic
+exeunt
+exfoliate
+exfoliated
+exfoliates
+exfoliating
+exfoliation
+exfoliative
+exhalant
+exhalants
+exhalation
+exhalations
+exhalent
+exhalents
+exhaustibility
+exhaustivity
+exhaustless
+exhaustlessly
+exhaustlessness
+exhibitionism
+exhibitionist
+exhibitionistic
+exhibitory
+exhilarant
+exhortative
+exhortatory
+exigence
+exiguity
+exiguous
+exiguously
+exiguousness
+exilic
+existentialistic
+existentialistically
+exobiological
+exobiologist
+exobiology
+exocrine
+exocyclic
+exodermis
+exodontia
+exodontist
+exoergic
+exogamic
+exonuclease
+exorbitance
+exorbitances
+exorcistic
+exorcistical
+exordial
+exordium
+exoskeleta
+exoskeletal
+exosmosis
+exosmotic
+exosphere
+exospheric
+exospore
+exostosis
+exoteric
+exotericaly
+exothermal
+exothermically
+exotically
+exoticism
+exotism
+expansibility
+expansile
+expansional
+expansionary
+expansionistic
+expansivity
+expatiate
+expatiated
+expatiates
+expatiating
+expatiation
+expatriate
+expatriated
+expatriates
+expatriating
+expatriation
+expecially
+expectably
+expectance
+expectative
+expedience
+expediential
+expeditionary
+expeditor
+expellee
+expeller
+expellers
+expendability
+expertism
+expiator
+expiatory
+expiratory
+expiry
+explanative
+explanatively
+explanatorily
+explant
+explantation
+explants
+expletory
+explicably
+explicator
+explicatory
+explodent
+exploitative
+exploitatively
+explorational
+explorative
+exploratively
+explosibility
+explosible
+expo
+exportability
+exportable
+expos
+expositional
+expositor
+expostulate
+expostulation
+expostulatory
+expressage
+expressional
+expressionistically
+expropriator
+expropriators
+expulsive
+expunction
+expurgator
+expurgatorial
+expurgatory
+exsanguinate
+exsanguination
+exscind
+exsert
+exserted
+exsertile
+exsertion
+exsertions
+exsiccate
+exsiccation
+exstipulate
+ext
+extemporal
+extemporally
+extemporaneity
+extemporarily
+extemporary
+extendable
+extensile
+extensionality
+extensity
+extensometer
+extensometer's
+extensometers
+extenuator
+extenuatory
+exteriority
+exterminatory
+extermine
+externalism
+externality
+externship
+exteroceptive
+exteroceptor
+exterritorial
+exterritoriality
+extinguishable
+extinguishment
+extoll
+extolment
+extortionary
+extortionate
+extortionately
+extrachromosomal
+extracorporeal
+extracorporeally
+extracranial
+extractability
+extractable
+extractible
+extradite
+extradites
+extradition
+extradoses
+extragalactic
+extrajudicial
+extrajudicially
+extralimital
+extralinguistic
+extralinguistically
+extrality
+extramundane
+extramural
+extramurally
+extranuclear
+extrapolator
+extrasensory
+extrasystole
+extrasystolic
+extraterritorial
+extraterritoriality
+extrauterine
+extravagancy
+extravagate
+extravasate
+extravasation
+extravascular
+extravehicular
+extraversion
+extraversive
+extravert
+extraverted
+extremis
+extremum
+extrinsically
+extrorse
+extrorsely
+extrudability
+extrudable
+exuberate
+exudate
+exudative
+exultance
+exultancy
+exurban
+exurbanite
+exurbia
+exuviation
+eyebolt
+eyebright
+eyecup
+eyedropper
+eyedropperful
+eyehole
+eyelike
+eyeliner
+eyepatch
+eyepoint
+eyepopper
+eyeshade
+eyeshot
+eyespot
+eyestalk
+eyestrain
+eyestrings
+eyetooth
+eyewash
+eyewink
+eyre
+eyrie
+fabricant
+fabricator
+fabricators
+fabular
+fabulist
+facedown
+facement
+facepiece
+facepieces
+facetted
+faceup
+facies
+facilitator
+facticity
+factional
+factionalism
+factionally
+factitious
+factitiously
+factitiousness
+factitive
+factitively
+factorable
+factorage
+factorship
+factotum
+factualism
+factualist
+factualists
+facture
+factures
+facula
+facultative
+facultatively
+faddish
+faddishness
+faddism
+faddist
+faddists
+fadeaway
+fadeless
+fadelessly
+fagging
+faggot
+faggoting
+faggots
+faience
+failsoft
+fainthearted
+faintheartedly
+faintheartedness
+faintish
+faintishness
+fairground
+fairish
+fairishly
+fairlead
+fairleader
+fairview
+fairylike
+faitour
+fakery
+fakir
+falcate
+falcated
+falciform
+falconet
+falderal
+falk
+fallback
+fallibly
+falsetto
+falsettos
+familism
+famishment
+fancywork
+fandango
+fane
+fanion
+fanlight
+fanlike
+fanner
+fantastical
+fantasticality
+fantasticalness
+fantasticate
+fantasticated
+fantasticates
+fantasticating
+fantastication
+fantod
+fanwise
+farad
+farceur
+farcicality
+farmhand
+farmhands
+farmstead
+farmsteading
+faro
+farrow
+farseeing
+farthermost
+fasces
+fascia
+fascial
+fasciated
+fasciation
+fascicular
+fascicularly
+fascicule
+fasciculus
+fascinator
+fascinators
+fascistic
+fascistically
+fashionabilities
+fashionability
+fashionmonger
+fastball
+fastball's
+fastballs
+fastuous
+fastuously
+fatalism
+fatalist
+fatalistically
+fatback
+fathead
+fatheaded
+fatheadedness
+fatherlike
+fathomable
+fathomless
+fathomlessly
+fathomlessness
+fatigability
+fatigable
+fatling
+fatted
+fatting
+fattish
+faulknerian
+faultfinder
+faultfinding
+faultily
+faunal
+faunally
+faunistic
+faunistically
+fauntleroy
+fauvism
+fauvist
+faux
+favonian
+fawkes
+fawny
+fay
+featherhead
+featherheaded
+featherless
+featherman
+febrific
+fecal
+feckless
+fecklessly
+fecklessness
+feckly
+feculence
+feculent
+fecundate
+fecundated
+fecundates
+fecundating
+fecundation
+fecundations
+feebleminded
+feeblemindedly
+feeblemindedness
+feedlot
+feedstock
+feedstuff
+feeing
+feetfirst
+feist
+feistier
+feisty
+feldspathic
+felicific
+felicitate
+felicitated
+felicitates
+felicitating
+felicitation
+felicitator
+felinity
+fellable
+fellah
+fellatio
+fellation
+fellations
+fellini
+fellowman
+felones
+felonry
+felsite
+felsitic
+felspar
+feministic
+feminity
+femoral
+fenceless
+fencelessness
+fenestral
+fenestrate
+fenestrated
+fenestrates
+fenestration
+fennec
+fenny
+fenugreek
+feral
+ferdinando
+ferial
+ferine
+fering
+ferity
+fermentable
+fermentative
+fernlike
+ferny
+ferrate
+ferrety
+ferriage
+ferriferous
+ferrimagnet
+ferrimagnetic
+ferrimagnetically
+ferrimagnetism
+ferritic
+ferromagnetism
+ferrotype
+ferruginous
+ferrule
+ferryboat
+ferryman
+fervency
+fescue
+fess
+festinate
+festinately
+festination
+festoon
+festoonery
+festoons
+feta
+fetation
+feterita
+fetishism
+fetishist
+fetishistic
+fetlock
+fetlocks
+fetologist
+fetology
+fetor
+fettuccine
+feudalist
+feudality
+feudist
+feverous
+feverously
+fey
+feyness
+fez
+fezes
+fezzes
+fibber
+fibration
+fibriallating
+fibril
+fibrillar
+fibrillate
+fibrillated
+fibrillates
+fibrillation
+fibrilliform
+fibrillose
+fibrils
+fibronectin
+fibrovascular
+fibula
+fibular
+fichu
+fictile
+fictioneer
+fictioneering
+fictionist
+ficus
+fiddleback
+fiddlehead
+fideism
+fideist
+fideistic
+fidel
+fidgetiness
+fidgety
+fidging
+fie
+fieldfare
+fieldstrip
+fiftyfold
+figaro
+figurable
+figurate
+figuration
+figurations
+figurehead
+filamentous
+filar
+filaria
+filarial
+filature
+filiation
+filiform
+filigreeing
+filippo
+fille
+filles
+fillip
+fillips
+fillment
+filmcard
+filmic
+filmically
+filmily
+filmmake
+filmmaker
+filmmakers
+filmmaking
+filmography
+fils
+filterability
+filterable
+filthily
+filtrable
+filum
+fimbria
+fimbrial
+fimbriate
+fimbriated
+fimbriates
+fimbriation
+finagle
+finagled
+finagler
+finagles
+finagling
+finback
+finery
+finespun
+fingerboard
+fingerlike
+fingerling
+fingerpost
+finical
+finically
+finicalness
+finicking
+finis
+finitude
+finlike
+finning
+fiord
+fiori
+firebird
+firebox
+firebrand
+firebrick
+fireclay
+firedamp
+fireguard
+fireless
+firelock
+fireplug
+fireplugs
+fireroom
+firetrap
+firma
+firmamental
+firstborn
+firstfruits
+firstling
+firstlings
+fisc
+fishability
+fishable
+fishbowl
+fishhook
+fishkill
+fishnet
+fishplate
+fishplates
+fishtail
+fishway
+fishwife
+fishyback
+fissility
+fissionability
+fissionable
+fissional
+fissiparous
+fissiparously
+fissiparousness
+fistfight
+fistful
+fistic
+fistnote
+fitment
+fixable
+fixity
+fixups
+fizzy
+flabbily
+flabellate
+flaccid
+flaccidity
+flaccidly
+flack
+flacon
+flagellant
+flagellantism
+flagellants
+flagellar
+flageolet
+flagger
+flagitious
+flagitiously
+flagitiousness
+flagon
+flagrance
+flagrancies
+flagrancy
+flamb
+flamboyance
+flamboyancy
+flamenco
+flameout
+flameproof
+flamingo
+flammability
+flan
+flan's
+flapdoodle
+flapjack
+flappy
+flareback
+flashboard
+flashgun
+flashguns
+flashily
+flashover
+flashovers
+flashtube
+flatboat
+flatcap
+flatcar
+flatfeet
+flatfoot
+flatfooted
+flatfoots
+flatted
+flatting
+flattish
+flattop
+flatulency
+flatus
+flatware
+flatwise
+flatwork
+flaunty
+flaxier
+flaxy
+flay
+fleabag
+fleabane
+flection
+flective
+fledermaus
+fleeringly
+fleischman
+fleisher
+fleshment
+fleshpot
+fleshpots
+flexile
+flexion
+flexographic
+flexographically
+flexography
+flexor
+flexuous
+flexuously
+flibbertigibbet
+flibbertigibbety
+flickery
+flightier
+flightily
+flightiness
+flightless
+flighty
+flimflam
+flimflammed
+flimflammer
+flimflamming
+flimsily
+flintily
+flintlike
+flippancy
+flipper
+flirty
+flitted
+flitter
+flivver
+floatage
+floatation
+floatplane
+floaty
+floc
+flogger
+floodlit
+floodplain
+floodwall
+floodwater
+floodwater's
+floodwaters
+floodway
+flooey
+floorage
+floorwalker
+floozie
+floozies
+floozy
+flophouse
+flopover
+flopovers
+flopper
+floppers
+florescence
+florescent
+floret
+floriate
+floriated
+floriation
+floriations
+florican
+floricultural
+floriculturally
+floriculture
+floriculturist
+floridity
+floriferous
+floriferously
+floriferousness
+florigen
+florigenic
+floristic
+floristically
+floristics
+floristry
+floruit
+flossier
+flossy
+flotage
+flotsam
+flouncy
+flowage
+flowerage
+floweret
+flowerlike
+fluctuant
+fluegelhorn
+fluidal
+fluidally
+fluidextract
+fluidic
+fluidics
+fluidounce
+fluidram
+flukey
+flukier
+fluky
+flume
+flumed
+flumes
+fluming
+flummery
+flummox
+flump
+flumped
+flumping
+flumps
+flunkeys
+flunky
+fluor
+fluorescein
+fluorimeter
+fluorimeter's
+fluorimeters
+fluorimetry
+fluorinate
+fluorinates
+fluorinating
+fluorination
+fluorinations
+fluoroscopic
+fluorspar
+flutelike
+flutterboard
+fluttery
+fluvial
+fluviatile
+fluxion
+fluxional
+flyblown
+flyboat
+flyboats
+flyby
+flybys
+flyleaf
+flyman
+flyover
+flyovers
+flypaper
+flypast
+flypasts
+flyspeck
+flyswatter
+flytier
+flyting
+flyway
+flyweight
+foamflower
+foamless
+fobbing
+focusless
+fodgel
+foeman
+fogbound
+fogey
+fogeys
+fogger
+foggest
+foghorn
+foghorns
+fogies
+fogless
+fogy
+fogyish
+fogyism
+foilsman
+foldable
+foldaway
+foldboat
+foldboater
+foldboating
+folderol
+folia
+foliaceous
+folic
+folkish
+folkishness
+folkloric
+folklorish
+folklorist
+folkloristic
+folksily
+folksinger
+folksinger's
+folksingers
+folksinging
+folktale
+folktale's
+folktales
+folkway
+folkways
+folliculate
+folliculated
+followership
+followeth
+fomentation
+fomentations
+fondue
+fondues
+fontal
+fontana
+foodless
+foodlessness
+foolery
+foolhardily
+foolscap
+foolscap's
+footboard
+footboards
+footboy
+footboys
+footcandle
+footcloth
+footgear
+footle
+footled
+footler
+footles
+footless
+footlessly
+footlessness
+footlight
+footlights
+footlike
+footling
+footlocker
+footmark
+footpace
+footrace
+footrest
+footrests
+footrope
+footropes
+footslog
+footslogger
+footslogs
+footsore
+footsoreness
+footstall
+footwall
+footway
+footways
+footy
+foozle
+foozled
+fopping
+fora
+foraminifera
+forbiddance
+forbidder
+forbode
+forborne
+forbye
+forceless
+forceps
+forcepslike
+fordable
+fordo
+forebear
+forebode
+foreboded
+foreboder
+forebodes
+forebrain
+foreclose
+forecloses
+foreclosure
+foredeck
+forefeel
+forefoot
+foregather
+forehand
+forehanded
+forehandedly
+forehandedness
+foreignism
+forejudge
+foreknow
+forelady
+foreland
+forelimb
+forelock
+foremanship
+foremast
+foremasts
+foremother
+forename
+forenamed
+forenames
+forensical
+forensically
+foreordain
+foreordained
+foreordaining
+foreordains
+foreordination
+forepassed
+forepast
+forepaw
+forepeak
+foreplay
+forequarter
+forequarters
+forereach
+forerun
+foresaid
+foresail
+foreshadow
+foreshadowed
+foreshadower
+foreshadowing
+foreshadows
+foreshank
+foresheet
+foreshore
+foreshorten
+foreshortens
+foreshow
+foreside
+foresightful
+foreskin
+forespeak
+forestage
+forestal
+forestation
+forestay
+forestial
+foreswear
+foresworn
+foretaste
+foretellable
+forethoughtfully
+forethoughtfulness
+forethougtful
+foretime
+foretoken
+forevermore
+forewoman
+foreworn
+foreyard
+forfeitable
+forgather
+forgeability
+forgeable
+forgetter
+forgiveable
+forgiveably
+forgoes
+forgone
+forjudge
+forkful
+forkier
+forklike
+forky
+forma
+formable
+formalin
+formalist
+formalistic
+formalistically
+formational
+formfitting
+formful
+formidability
+formless
+formlessly
+formlessness
+formulaically
+formulary
+formyl
+fornicate
+fornicated
+fornicates
+fornicating
+fornications
+fornicator
+fornicators
+forrader
+forrarder
+forsooth
+forspent
+forswore
+forsworn
+fortalice
+fortin
+fortman
+fortuity
+fortyfold
+forwent
+forworn
+fossate
+fossorial
+fosterage
+fosterite
+fosterling
+fosterlings
+fou
+foudroyant
+foundational
+foundationally
+foundationless
+founderous
+foundress
+foundrous
+fourdrinier
+foxily
+foxtrot
+foxtrot's
+foxtrots
+fracas
+fracted
+fractionate
+fractionates
+fractionating
+fractionations
+fractionator
+fractionators
+frag
+fragged
+fragging
+fragility
+fragmental
+fragmentally
+fragmentate
+fragmentated
+fragmentates
+fragmentating
+fragmentations
+fragrancy
+frags
+framable
+frambesia
+frameable
+franca
+francaise
+francesca
+francesco
+franchisee
+franchisor
+francie
+francois
+frangibility
+frangible
+frangipani
+frankincense
+frankpledge
+franny
+frap
+frappe
+frapping
+frat
+frater
+fraternalism
+fratricidal
+fratricide
+fraudulence
+frayne
+freakier
+freaky
+freckly
+fredrick
+freeboard
+freedwoman
+freehearted
+freeheartedly
+freeload
+freeloader
+freemasonry
+freestanding
+freestyle
+freethink
+freethinker
+freethinking
+freewill
+freida
+freightage
+frenchification
+frenchify
+frenetically
+frequence
+frequentation
+frequentations
+frequentative
+frequentatives
+freshet
+fretwork
+friability
+friary
+fribble
+fribbled
+fribbles
+fribbling
+fricassee
+fridge
+fridge's
+fridges
+frig
+frigging
+frigidity
+frigorific
+frillery
+fringier
+fringy
+frippery
+friskily
+frisson
+frissons
+frit
+fritillary
+frito
+fritted
+fritting
+frivol
+frizz
+frizzier
+frizzily
+frizziness
+frizzlier
+frizzly
+frizzy
+frogman
+frogmen
+frolick
+frolicked
+frolicks
+frolicsome
+frolicsomely
+frolicsomeness
+frond
+frond's
+fronded
+frondeur
+frondose
+frondosely
+fronds
+frontality
+frontispiece
+frontispieces
+frontless
+fronton
+frostily
+frostwork
+frothily
+froths
+frottage
+froufrou
+froward
+frowardly
+frowardness
+frowsier
+frowstier
+frowsty
+frowsy
+fructification
+fructifications
+fructify
+fructose
+fructose's
+fructoses
+fructuous
+fructuously
+fruitage
+fruitcake
+fruitier
+fruitlet
+fruity
+frump
+frumpier
+frumpish
+frumps
+frumpy
+fryer
+ft
+ftp
+ftper
+ftpers
+ftping
+ftpings
+ftps
+fucose
+fucus
+fuddle
+fuddled
+fuddles
+fuddling
+fugacity
+fugal
+fugally
+fuguist
+fulbright
+fulcra
+fulgent
+fulgently
+fulgurant
+fulgurate
+fulgurated
+fulgurates
+fulgurating
+fulguration
+fulgurations
+fulgurous
+fuliginous
+fuliginously
+fullmouthed
+fulminant
+fulminator
+fulminators
+fulness
+fum
+fumarate
+fumarole
+fumigator
+fumigators
+fumy
+funambulist
+functionalistic
+functionless
+functorial
+fundament
+fundamentalistic
+fundraiser
+fundraiser's
+fundraisers
+fundraising
+funerary
+fungibility
+fungicidal
+fungicidally
+fungicide
+fungiform
+fungo
+fungoes
+fungous
+funicular
+funiculus
+funigating
+funkier
+funkiness
+funky
+funnelform
+funning
+funnyman
+furbearer
+furbelow
+furcate
+furcated
+furcately
+furcates
+furcating
+furcation
+furcations
+furcula
+furcular
+furfural
+furless
+furloughs
+furmity
+furriery
+furtherance
+furuncle
+furuncular
+furunculosis
+furunculous
+furze
+fusee
+fusee's
+fusees
+fusibility
+fusil
+fusile
+fusileer
+fusilier
+fusionist
+fussbudget
+fussbudgety
+fusspot
+fustian
+fustians
+fustigate
+fustigated
+fustigates
+fustigating
+fustigation
+fustigations
+fustily
+futilitarian
+futilitarianism
+futureless
+futurism
+futuristic
+futuristically
+futurity
+gabber
+gabbier
+gabble
+gabbled
+gabbler
+gabbles
+gabbling
+gabbro
+gabby
+gaberdine
+gabfest
+gabfests
+gadabout
+gadabouts
+gadded
+gadder
+gadding
+gadgeteer
+gadgeteers
+gadgety
+gadolinium
+gadwall
+gadzooks
+gaff
+gaffs
+gaga
+gage
+gages
+gagger
+gagman
+gagmen
+gagster
+gagsters
+gaillardia
+gaingiving
+gainless
+gainlessness
+gainsay
+gainsayer
+galactopyranose
+galactopyranoside
+galactopyranosides
+galactopyranosyl
+galactose
+galahad
+galavant
+gallberry
+gallbladder
+galleon
+galleons
+gallet
+gallied
+gallinule
+gallopade
+gallow
+gallus
+galluses
+galore
+galosh
+galoshed
+galoshes
+galoshing
+galumph
+galvanically
+galvanometric
+gam
+gamekeeper
+gamekeepers
+gamesmanship
+gamesome
+gamesomely
+gamesomeness
+gamester
+gamete
+gamete's
+gametes
+gametic
+gametically
+gamey
+gamic
+gamier
+gamily
+gamin
+gamine
+gaminess
+gamming
+gammon
+gamy
+ganglioside
+gangliosides
+gangplow
+gangrenous
+gangsterism
+gannet
+gantlet
+gapping
+gappy
+gar
+garageman
+garagemen
+garde
+gardenful
+garlicky
+garnett
+garnishable
+garnishee
+garnishees
+garnishment
+garnishments
+garniture
+garnitures
+garotte
+garrote
+garroted
+garroter
+garrotes
+garroting
+garrots
+garrulity
+garth
+gasbag
+gasholder
+gashouse
+gaslit
+gasogene
+gasolene
+gasolier
+gasolinic
+gasometer
+gasometer's
+gasometers
+gasses
+gasset
+gast
+gastight
+gastightness
+gastness
+gastral
+gastrectomy
+gastrin
+gastritis
+gastrogenic
+gastrogenous
+gastronomic
+gastronomical
+gastronomically
+gastronomist
+gastrulate
+gastrulation
+gasworker
+gasworks
+gat
+gatefold
+gatekeeper
+gatekeeper's
+gatekeepers
+gatepost
+gatsby
+gaucherie
+gaucheries
+gaud
+gauded
+gaudery
+gaudily
+gauding
+gauds
+gaugeably
+gaum
+gaums
+gauntley
+gaur
+gauzelike
+gauzily
+gauziness
+gauzy
+gavotte
+gavottes
+gawkily
+gawkish
+gawkishly
+gawkishness
+gayety
+gazebo
+gazebo's
+gazebos
+gazpacho
+gazpacho's
+gearbox
+gearless
+gearshift
+geary
+gecko
+geegaw
+geezer
+gehrig
+gelant
+gelate
+gelated
+gelates
+gelating
+gelation
+gelid
+gelidity
+gelidly
+gelin
+geminal
+geminally
+geminate
+geminately
+gemination
+gemmate
+gemmated
+gemmates
+gemmating
+gemmation
+gemming
+gemsbok
+gemstone
+gemstone's
+gemstones
+gendarme
+gendarmerie
+genealogical
+genealogically
+genealogist
+generable
+generale
+generalship
+generalships
+generatrix
+genetical
+geniality
+genic
+genically
+geniculate
+geniculated
+geniculately
+genii
+genital
+genital's
+genitalia
+genitalic
+genitally
+genitals
+genocidal
+genocide
+genocides
+genome
+genome's
+genomes
+genotypic
+genotypical
+genotypically
+genotypicity
+genteelism
+gentilesse
+gentlefolk
+gentlefolks
+gentlemanlike
+gentlemanlikeness
+gentrice
+genuflect
+genuflected
+genuflecting
+genuflection
+genuflectory
+genuflects
+geocentrically
+geochemist
+geochronologic
+geochronological
+geochronologically
+geochronologist
+geochronometric
+geochronometry
+geode
+geode's
+geodes
+geodesist
+geodesy
+geodetical
+geodetically
+geoduck
+geohydrologic
+geohydrology
+geomagnetic
+geomagnetically
+geomagnetism
+geomancy
+geomantic
+geomorphic
+geophyte
+geopolitician
+geoponic
+geoponics
+georgic
+geoscience
+geostrategic
+geostrategist
+geostrategy
+geostrophic
+geostrophically
+geothermal
+geothermally
+geothermic
+geotropic
+geotropically
+geotropism
+geriatrician
+geriatricians
+geriatrist
+germania
+germfree
+germier
+germinability
+germproof
+germy
+gerome
+gerontic
+gerontocracy
+gerrymander
+gerrymandered
+gerundial
+gestational
+gesticulator
+gesticulators
+gesticulatory
+gestural
+getatable
+getup
+getups
+gewgaw
+ghastful
+ghastfully
+ghazal
+ghazals
+ghee
+ghostwrite
+ghostwriter
+ghosty
+gianthood
+gianthoods
+giantism
+giantisms
+giantlike
+gib
+gibberellin
+gibbing
+gibbosity
+gibby
+giddings
+gigantesque
+gigantically
+gigantism
+gigantisms
+giggly
+gigolo
+gigot
+gigots
+gildas
+gimbal
+gimbals
+gimcrackery
+gimlet
+gimlet's
+gimlets
+gimmal
+gimmickry
+gimmicky
+gimp
+gingersnap
+gingery
+gingko
+gioconda
+giraffish
+girlhood
+girlhoods
+girly
+girn
+giro
+gismo
+gismos
+givable
+gizzard
+gizzard's
+gizzards
+glaciologic
+glaciological
+glaciologist
+glaciology
+glacis
+gladded
+gladding
+gladiatorial
+gladiola
+gladsome
+gladsomely
+gladsomeness
+glady
+glandered
+glandless
+glans
+glarier
+glary
+glassblower
+glassblowing
+glassful
+glasshouse
+glassily
+glassine
+glassmaker
+glassmaking
+glasswork
+glassworker
+glassworks
+glazier
+glaziery
+gleamy
+gleanable
+gleesome
+glibber
+glibbest
+glioma
+glissade
+glittery
+gloam
+gloamed
+gloaming
+gloams
+globalism
+globalist
+globalists
+glom
+glomerular
+glomerulate
+glomming
+gloms
+glossarial
+glossarist
+glossily
+glossographer
+glossolalia
+gluconyl
+glucopyranosyl
+glucosamine
+glueing
+gluily
+glumaceous
+glummer
+glummest
+glutamate
+glutamic
+glutamine
+gluteal
+gluttonous
+gluttonously
+gluttonousness
+gluttony
+glyceryl
+glycine
+glycocholate
+glycocholates
+glycoconjugate
+glycoconjugates
+glycodeoxycholate
+glycodeoxycholates
+glycogen
+glycolipid
+glycolipids
+glycopeptide
+glycopeptides
+glycoprotein
+glycoproteins
+glycosidase
+glycosidases
+glycosidic
+glycosphingolipid
+glycosphingolipids
+glycosyl
+glycosylate
+glycosylated
+glycosylates
+glycosylation
+glynn
+gnarly
+gnatty
+gneissic
+gnomic
+gnomish
+gnomon
+gnosticism
+goalie
+goalkeeper
+goalpost
+goaltender
+goaltending
+goatish
+goatlike
+gobbledegook
+godchild
+goddaughter
+godded
+godding
+godforsaken
+godhood
+godkin
+godling
+godot
+godwit
+goethite
+gog
+goggly
+gogo
+goitrogen
+goitrogenic
+golda
+goldbeater
+goldbeating
+goldbrick
+goldbug
+goldeneye
+golem
+gomez
+gonad
+gonad's
+gonadal
+gonadotropic
+gonads
+gondolier
+gondoliers
+goo
+goodish
+goodnight
+goodwife
+goofball
+goofily
+googol
+googolplex
+goon
+gooseflesh
+gooseneck
+goosenecked
+goosey
+gorget
+gorgonian
+gorgously
+gorier
+gorse
+gory
+gossamery
+gossipry
+gossipy
+goucher
+gouda
+goulash
+gourde
+gourmandism
+gouty
+governable
+governessy
+governmentalism
+governmentalist
+governorate
+governorates
+governorship
+goyish
+goys
+grabbier
+grabble
+grabbled
+grabbler
+grabbles
+grabbling
+grabby
+graceless
+gracelessly
+gracelessness
+gracie
+gracileness
+gracility
+grackle
+gradable
+gradational
+gradationally
+gradeless
+gradiometer
+gradiometer's
+gradiometers
+gradualism
+graduator
+graftage
+grafton
+grainier
+graininess
+grainy
+gramicidin
+gramophone
+gramophone's
+gramophones
+gramps
+grandad
+grandaddy
+grandam
+grandame
+granddad
+grande
+grandee
+grandiloquence
+grandiosity
+grandioso
+grandparental
+grandparenthood
+grandsire
+grandsires
+grangerism
+granitic
+granivorous
+grantable
+grantsman
+grantsmanship
+granulator
+granulite
+granulitic
+granulocyte
+granulocytes
+grapeshot
+graphemic
+graphemically
+graphemics
+graphitic
+graphological
+graphologist
+graphology
+graphophone
+grapier
+grapnel
+grapy
+gras
+grasshopper
+grasshopper's
+grasslike
+grata
+graticule
+gratin
+gratulating
+graveless
+gravesend
+gravidity
+gravimeter
+gravimeter's
+gravimeters
+gravimetrically
+gravimetry
+gravitometer
+gravitometer's
+gravitometers
+graviton
+graviton's
+gravitons
+gravure
+grayish
+grayling
+graylings
+graywacke
+grazable
+grazeable
+grazier
+graziers
+greaseless
+greasepaint
+greasepaints
+greaseproof
+greasewood
+greasily
+greathearted
+greatheartedly
+greatheartedness
+greave
+greaves
+grebe
+greenback
+greenbacker
+greenbackism
+greengrocery
+greenhorn
+greenlet
+greenling
+greenroom
+greensward
+greentree
+greenware
+greeny
+gregarine
+gregarinian
+gremlin
+gremlin's
+gremlins
+gremmie
+gremmies
+gremmy
+grenadier
+grenadine
+grenier
+grep
+grewsome
+greylag
+gridlock
+gridlock's
+griefless
+grievant
+grillage
+grille
+grillroom
+grimier
+grimines
+grimmest
+grimy
+gringo
+gringos
+grinner
+grippe
+grippy
+gris
+gristle
+grith
+gritted
+grittily
+gritting
+grog
+groggily
+grogshop
+groomsman
+groot
+groovier
+groovy
+grosse
+grossular
+grossularite
+grotesquerie
+grotesquery
+grouch
+grouch's
+grouched
+grouches
+grouchily
+grouching
+groundling
+groundmass
+groundnut
+groundout
+groundsel
+groundsheet
+groundskeep
+groundwater
+groupable
+groupie
+groupie's
+groupies
+groupoid
+grubber
+grubbily
+grubstake
+grubstaker
+gruel
+grumbly
+grummet
+grump
+grumped
+grumpier
+grumpily
+grumpiness
+grumping
+grumps
+grumpy
+grunion
+gruntle
+gruntled
+gruntles
+gruntling
+grusky
+gryphon
+gtad
+guacamole
+guadalupe
+guanidine
+guanine
+guarantor
+guardant
+guardrail
+guardroom
+guardsman
+guava
+guck
+gudgeon
+guerdon
+guesstimate
+guff
+guggle
+guggled
+guggles
+guggling
+guhleman
+guidable
+guideway
+guignol
+guildship
+guildsman
+guileful
+guilefully
+guilefulness
+guillemot
+guillotine
+guillotine's
+guillotined
+guillotines
+guillotining
+guimet
+guimpe
+guisard
+gul
+gules
+gullable
+gullibly
+gulosity
+gumboil
+gumdrop
+gumdrop's
+gumdrops
+gummatous
+gummed
+gummer
+guncotton
+gundog
+gunlock
+gunmetal
+gunnar
+gunnysack
+gunplay
+gunpoint
+gunpowdery
+gunrunner
+gunrunning
+gunsel
+gunship
+gunsmith
+guppies
+guppy
+gurney
+gurneys
+gushier
+gushily
+gushiness
+gushy
+gustation
+gustative
+gustativeness
+gustatorial
+gustatorially
+gustatorily
+gustatory
+gustily
+gustoes
+gutless
+gutlessness
+guttate
+guttation
+guttersnipe
+guttersnipish
+guttier
+gutturalism
+gutty
+gymkhana
+gymnastically
+gymnosophist
+gypseous
+gyral
+gyrational
+gyrator
+gyrators
+gyratory
+gyre
+gyrene
+gyrfalcon
+gyrofrequency
+gyromagnetic
+gyron
+gyroplane
+gyroscopically
+gyrostat
+haberdasher
+habiles
+habiliment
+habilitate
+habilitated
+habilitates
+habilitating
+habilitation
+habilitations
+habitability
+habitably
+habitude
+habitudes
+habitus
+hac
+hackberry
+hackmatack
+hackstaff
+hadal
+haddix
+hade
+hades
+hadst
+hafiz
+haft
+haggadic
+haggadist
+haggadistic
+haggis
+haggish
+hagiographies
+hagiography
+hagiography's
+hah
+hairbreadth
+hairbrush
+haircloth
+haircutter
+haircutting
+hairlike
+hairpiece
+hairsbreadth
+hairsplitter
+hairsplitting
+hairspring
+hairspring's
+hairsprings
+hairstreak
+hairstyle
+hairstyle's
+hairstyles
+hairstyling
+hairstylist
+halberdier
+halfpennies
+halfpenny
+halftone
+halidom
+halitosis
+halliard
+halliards
+hallinan
+hallo
+halloo
+halloos
+halluces
+hallucinational
+hallucinatory
+hallucinogen
+hallucinogenic
+hallucinogens
+hallucinosis
+halma
+halocline
+haloes
+halogenate
+halogenation
+halogenous
+halomorphic
+halomorphism
+halpern
+haltere
+halvah
+halyard
+hamate
+hamey
+hammerlock
+hammertoe
+hammett
+hammier
+hammily
+hamminess
+hammy
+hamstring
+hamstrung
+handball
+handbill
+handbreadth
+handcar
+handcart
+handcraft
+handcraftman
+handcraftsman
+handcrank
+handcranks
+handfast
+handfasting
+handgrip
+handleless
+handline
+handlist
+handmaid
+handpick
+handpicked
+handpress
+handprint
+handprint's
+handprints
+handsaw
+handsbreadth
+handsful
+handshook
+handspring
+handsprings
+handwaving
+handwheel
+handwheels
+handwork
+handworker
+handwoven
+handwrought
+hangdog
+hangnail
+hangnail's
+hangnails
+hangtag
+hangup
+hankie
+hankies
+hanky
+hant
+hanter
+haole
+hapchance
+hapgood
+haphazardry
+haploid
+haploidy
+haplology
+happenchance
+happing
+hardback
+hardbake
+hardball
+hardboot
+hardbound
+hardcase
+hardcopies
+hardcopy
+hardcover
+hardcovers
+hardfisted
+hardfistedness
+hardhanded
+hardhandedness
+hardhead
+hardheaded
+hardheadedly
+hardheadedness
+hardhearted
+hardheartedly
+hardheartedness
+hardihood
+hardiment
+hardmouthed
+hardpan
+hardstand
+hardstanding
+harebrain
+harebrained
+harelipped
+harlequin
+harlequinade
+harlotry
+harmonica
+harmonica's
+harmonical
+harmonically
+harmonicalness
+harmonicas
+harmonium
+harridan
+harrumphs
+harvestable
+harvesttime
+haskell
+haskins
+hassock
+hassocks
+hast
+hastate
+hastately
+hatband
+hatbox
+hatchability
+hatchable
+hatcheck
+hatchling
+hatchment
+hatchments
+hatchure
+hatter
+hatting
+haulageway
+haulaway
+haulier
+hauser
+hausfrau
+hautboy
+hautboys
+haute
+hauteur
+haversack
+haversack's
+haversacks
+havocked
+havocking
+hawkish
+hawkishly
+hawkishness
+haycock
+hayfork
+haymaker
+haymaking
+haymow
+hayrack
+hayrick
+hayride
+hayseed
+hayseeds
+haywire
+haywood
+hazily
+headachy
+headband
+headcount
+headfirst
+headforemost
+headgroup
+headgroup's
+headgroups
+headhunter
+headily
+headlock
+headman
+headman's
+headmastership
+headmen
+headmen's
+headmistress
+headmost
+headnote
+headpiece
+headpin
+headrest
+headsail
+headshrinker
+headspring
+headstall
+headstock
+headstream
+headstrong
+headwaiter
+headwind
+headwind's
+headwinds
+headword
+headwork
+healths
+heartbroken
+hearthstone
+heartrending
+heartrendingly
+heartsease
+heartsick
+heartsickness
+heartsome
+heartsomely
+heartsore
+heartstring
+heartstrings
+heartwarming
+heartwood
+heathendom
+heathenism
+heathenry
+heathery
+heathless
+heathlike
+heathman
+heatless
+heatstroke
+heavyhearted
+heavyheartedly
+heavyheartedness
+heavyset
+hebdomad
+hebdomadal
+hebdomadally
+hebetation
+hebetude
+hebetudinous
+hectare
+hectically
+hectograph
+hectographic
+hedda
+heddle
+heddler
+hedgehop
+hedgehopper
+hedgepig
+hedgerow
+hedonic
+hedonically
+hedonics
+hedonistically
+hee
+heelball
+heelless
+heelpiece
+heeltap
+heftily
+hegel
+heidegger
+heigh
+heinze
+heirless
+heirloom
+heirship
+heiser
+heldentenor
+heliacal
+heliacally
+helicoid
+helicoidal
+helicopt
+helicopted
+helicopters
+helicopting
+heliochrome
+heliogram
+heliogram's
+heliograms
+heliograph
+heliographer
+heliographic
+heliography
+heliogravure
+heliolatrous
+heliolatry
+heliometer
+heliometer's
+heliometers
+heliometric
+heliometrically
+heliophyte
+heliopolis
+heliostat
+heliotaxis
+heliotropic
+heliotropically
+heliotropism
+heliozoan
+heliozoic
+helipad
+heliport
+helistop
+hellbox
+hellbroth
+hellcat
+hellebore
+hellgrammite
+hellhole
+hellhound
+hellion
+helmetlike
+helmsmanship
+helot
+helotism
+helotry
+helpmeet
+helve
+helved
+helves
+helving
+hemacytometer
+hemacytometer's
+hemacytometers
+hemal
+hematic
+hematin
+hematinic
+hematoblast
+hematoblastic
+hematocrit
+hematogenous
+hematologic
+hematological
+hematologist
+hematology
+hematoma
+hematophagous
+hemihedral
+hemihedrally
+hemihydrate
+hemihydrated
+hemimetabolic
+hemimetabolism
+hemimetabolous
+hemimorphic
+hemimorphism
+hemimorphite
+hemiparasite
+hemiparasitic
+hemiplegia
+hemiplegic
+hemispheral
+hemline
+hemmer
+hemoblast
+hemodynamically
+hemodynamics
+hemoflagellate
+hemoglobinic
+hemoglobinopathy
+hemoglobinous
+hemolymph
+hemolysin
+hemophilia
+hemophiliac
+hemophilic
+hemoprotein
+hemoptysis
+hemorrhagic
+hemorrhoid
+hemorrhoidal
+hemosiderin
+hemostasis
+hemostatic
+hempel
+hemus
+henae
+henbane
+henceforward
+hendecasyllabic
+hendecasyllable
+hendiadys
+hendrix
+henequen
+henna
+hennery
+henotheism
+henotheist
+henotheistic
+hent
+hep
+heparin
+hepatic
+hepatica
+hepatocellular
+hepatocyte
+hepatocyte's
+hepatocytes
+hepatoma
+heptagon
+heptagonal
+heptameter
+heptameter's
+heptameters
+heraldic
+heraldically
+heraldry
+herbaceous
+herbage
+herbalist
+herbarium
+herbicidal
+herbicidally
+herbicide
+herbicide's
+herbicides
+herblike
+herdic
+herdlike
+herdsmen
+hereaway
+hereaways
+hereditament
+hereditarian
+hereditarianism
+hereditarily
+hereinabove
+hereinbefore
+hereinbelow
+hereon
+heretical
+heretically
+hereticalness
+hereto
+hereunder
+hereupon
+heritability
+hermaphrodite
+hermaphrodite's
+hermaphrodites
+hermaphroditic
+hermaphroditically
+hermaphroditism
+hermatypic
+hermeneutic
+hermeneutical
+hermeneutically
+hermetical
+hermetically
+hermeticism
+hermetism
+hermetist
+hermitage
+hermitage's
+hermitages
+hermitism
+hern
+hernandez
+hernia
+hernia's
+hernial
+hernias
+herniate
+herniated
+herniates
+herniating
+herniation
+herniations
+heroical
+heroicomic
+heroicomical
+heroinism
+heronry
+herpesvirus
+herpetic
+herpetologic
+herpetological
+herpetologically
+herrington
+hersey
+herty
+hesiometer
+hesiometer's
+hesiometers
+hest
+heterarchy
+heterecious
+hetero
+heteroatom
+heteroautotrophic
+heterocycle
+heterocyclic
+heterocyst
+heterodox
+heterodoxy
+heteroecious
+heteroecism
+heterogamete
+heterogametic
+heterogenesis
+heterogenetic
+heterogeny
+heterogonic
+heterogony
+heterograft
+heterologously
+heterology
+heterolysis
+heterolytic
+heteromorphic
+heteromorphism
+heteromorphous
+heteronomous
+heteronomously
+heteronomy
+heterophil
+heterophile
+heterophony
+heterophyllous
+heterophylly
+heterophyte
+heterophytic
+heteroploid
+heteroploidy
+heteropolar
+heteropolarity
+heteropterous
+heteroscedasticity
+heterosexuality
+heterosis
+heterotic
+heterotopic
+heterotroph
+heterotrophic
+heterotrophically
+heterotypic
+heterotypical
+heterozygosis
+heterozygosity
+heterozygote
+hexad
+hexade
+hexadic
+hexagram
+hexahedron
+hexahydrate
+hexahydrated
+hexahydrite
+hexamethonium
+hexane
+hexaploid
+hexaploidy
+hexapod
+heywood
+hibernal
+hibernator
+hibiscus
+hickok
+hidalgo
+hidebound
+hidrosis
+hidrotic
+hie
+hieing
+hierarch
+hieratically
+hieroglyph
+hieroglyphical
+hieroglyphically
+higgle
+higgled
+higgler
+higgles
+higgling
+highbinder
+highborn
+highbred
+highbrow
+highbrowed
+highbrowism
+highline
+highlines
+hilding
+hillary
+hillocky
+hillyer
+hilum
+himation
+hindbrain
+hindquarter
+hingism
+hinkle
+hipbone
+hipped
+hipper
+hippest
+hippie
+hippocampal
+hippocampus
+hippocras
+hippogriff
+hipsterism
+hirey
+hirsute
+hirsuteness
+hirsutism
+hirsutulous
+hist
+histaminase
+histamine
+histaminergic
+histaminic
+histidine
+histologic
+histological
+histologically
+histologist
+histolysis
+histolytic
+histopathologic
+histopathological
+histopathologically
+histopathologist
+histopathology
+histophysiologic
+histophysiological
+histophysiology
+histoplasmosis
+historicist
+historiographer
+historiographic
+historiographical
+historiographically
+histrionically
+hithermost
+hitherward
+hiveless
+hmm
+hoarsen
+hoarsened
+hoarsening
+hobbledehoy
+hobday
+hobgoblin
+hobnail
+hobnailed
+hobnob
+hobnobbed
+hobnobber
+hobnobbing
+hobnobs
+hockaday
+hocus
+hocused
+hocusing
+hocussed
+hocussing
+hod
+hodad
+hodaddy
+hodoscope
+hoecake
+hoedown
+hoeing
+hogback
+hoggish
+hoggishly
+hoggishness
+hogshead
+hogwash
+hoi
+hoising
+hoistman
+hoistmen
+hokan
+hoke
+hokeypokey
+hoking
+hokum
+holabird
+holandric
+holandry
+holdall
+holdalls
+holdback
+holdfast
+holdout
+holdouts
+holeable
+holey
+holidaymaker
+holily
+holism
+holistically
+hollas
+hollo
+holloa
+holloware
+holoblastic
+holoblastically
+hologamous
+hologamy
+holograph
+holographic
+holographically
+hologynic
+hologyny
+holohedral
+holometabolism
+holometabolous
+holomyarian
+holophrastic
+holophytic
+holotype
+holotypic
+holozoic
+holt
+holzman
+hombre
+homburg
+homebody
+homebred
+homegrown
+homelike
+homeobox
+homeroom
+homesite
+homestretch
+hometown
+homey
+homeyness
+homier
+homiletic
+homiletical
+homiletically
+homiletics
+hominess
+hominid
+hominoid
+hominy
+homocercal
+homochromatic
+homoerotic
+homoeroticism
+homogametic
+homogamic
+homogamous
+homogeny
+homograft
+homograph
+homographic
+homoiotherm
+homoiothermal
+homoiothermic
+homolog
+homologate
+homologation
+homological
+homologically
+homolographic
+homolysis
+homolytic
+homomorphy
+homonuclear
+homonymic
+homonymous
+homonymously
+homonymy
+homoousian
+homophile
+homophobia
+homophone
+homophonic
+homophonous
+homophony
+homophyly
+homoplastic
+homoplastically
+homoplasy
+homopolar
+homopolymer
+homopteran
+homopterous
+homorganic
+homoscedastic
+homoscedasticity
+homosexuality
+homosporous
+homospory
+homothallic
+homothallism
+homotopy
+homotransplant
+homotransplantation
+homozygosis
+homozygosity
+homozygote
+homozygotic
+homunculi
+homunculus
+homy
+honcho
+honchos
+hondo
+honied
+honkeys
+honkie
+honoraria
+honorarily
+honorarium
+honorific
+honorific's
+honorifically
+honorifics
+hoodlike
+hoodlumish
+hoodlumism
+hoodoo
+hoodooism
+hoodoos
+hooey
+hoofbeat
+hoofprint
+hoofprint's
+hoofprints
+hookah
+hookey
+hookeys
+hooklet
+hooky
+hootch
+hootenanny
+hophead
+hopi
+hoplite
+hopple
+hora
+horary
+hord
+horehound
+horizonal
+hormonal
+hormonally
+hormonelike
+hornbeam
+hornbeams
+hornbill
+hornbills
+hornblende
+hornless
+hornlessness
+hornlike
+hornmouth
+hornpipe
+hornpipe's
+hornpipes
+hornswoggle
+hornswoggled
+hornswoggles
+hornswoggling
+horntail
+hornwort
+horologer
+horologic
+horological
+horologist
+horologists
+horology
+horrent
+horrific
+horrifically
+horsecar
+horsehide
+horselaugh
+horsemint
+horseradish
+horseradishes
+horseshit
+horsewhip
+horsewomen
+horsey
+horsier
+horsily
+horsiness
+horsy
+hortative
+hortatively
+hortatory
+horticultural
+horticulturally
+horticulturist
+hosanna
+hostel
+hosteler
+hostels
+hostler
+hotblood
+hotchpot
+hotchpotch
+hotelier
+hotfeet
+hotfoot
+hotfoot's
+hotfoots
+hotshot
+hottish
+houri
+housebound
+houseboy
+houseboys
+houseclean
+housecleaner
+housecleaning
+housecoat
+housedress
+housefather
+housefathers
+housefront
+houseful
+houseguest
+houseless
+houselessness
+houselights
+housemaid
+housemaids
+houseman
+housemate
+housemate's
+housemates
+housemother
+housemothers
+houseplant
+houseroom
+houseward
+housewarming
+housewifery
+howbeit
+howsoever
+howsomever
+hoyden
+hoydenish
+hoyle
+hubcap
+hubcap's
+hubcaps
+hubristic
+hubristically
+huck
+huckaback
+hucksterism
+hud
+huey
+huff
+huffier
+huffiness
+huffish
+huffy
+hugeous
+hugeously
+huggable
+hugger
+huggers
+hullabaloo
+hullabalooed
+hullabalooing
+hullabaloos
+hullo
+humanistically
+humanitarianism
+humankind
+humanlike
+humanoid
+humbug
+humbugged
+humbuggery
+humbugging
+humdinger
+humdrum
+humectant
+humeral
+humeri
+humerus
+humic
+humidor
+humification
+humifications
+humified
+hummable
+hummer
+hummocky
+humoresque
+humorism
+humorism's
+humorisms
+humoristic
+humoristical
+humoristical's
+humoristicals
+humoristics
+humph
+humpier
+humpty
+humpy
+hunchback
+hunchback's
+hunchbacked
+hunchbacks
+hundredweight
+hundredweights
+hup
+hurley
+hurly
+hurtless
+hurty
+hussar
+hussies
+hussy
+hustings
+hutzpah
+huzzah
+hyacinthine
+hyaena
+hyaenas
+hyalin
+hyaline
+hyalite
+hyaloid
+hyaloplasm
+hybridism
+hybridity
+hybris
+hydra
+hydrangea
+hydranth
+hydrator
+hydraulical
+hydrazide
+hydrazine
+hydric
+hydrically
+hydrobiological
+hydrobiologist
+hydrobiology
+hydrocarbonaceous
+hydrocarbonic
+hydrocarbonous
+hydrocephalic
+hydrocephalus
+hydrocephaly
+hydrocyanic
+hydrodynamical
+hydrodynamically
+hydrodynamicist
+hydroelectrically
+hydroelectricity
+hydrofoil
+hydroformer
+hydroforming
+hydrographer
+hydrographic
+hydrographically
+hydrography
+hydroid
+hydrokinetic
+hydrokinetics
+hydrolase
+hydrologic
+hydrologist
+hydrolysate
+hydrolytic
+hydrolytically
+hydromagnetic
+hydromagnetics
+hydromancy
+hydromechanical
+hydromechanics
+hydrometric
+hydrometrical
+hydrometry
+hydromorphic
+hydronic
+hydronically
+hydronium
+hydropathic
+hydropathically
+hydropathy
+hydroperoxide
+hydrophane
+hydrophile
+hydrophobicity
+hydrophone
+hydrophyte
+hydrophytic
+hydroplane
+hydroplaner
+hydroponic
+hydroponically
+hydroponics
+hydroscope
+hydrosere
+hydrosol
+hydrosolic
+hydrospace
+hydrospheric
+hydrostatical
+hydrostatically
+hydrosulfide
+hydrosulfite
+hydrotactic
+hydrotherapy
+hydrothorax
+hydrotropic
+hydrotropically
+hydrotropism
+hydroxylic
+hydroxyproline
+hydrozoan
+hyenic
+hyenoid
+hygienically
+hygienist
+hygienists
+hygrograph
+hygrometric
+hygrometry
+hygrophyte
+hygrophytic
+hygroscope
+hygroscopically
+hygroscopicity
+hyla
+hymenal
+hymeneal
+hymeneally
+hymenial
+hymenium
+hymnary
+hymnbook
+hymnody
+hymnology
+hyperacid
+hyperacidity
+hyperactive
+hyperactivity
+hyperbaric
+hyperbarically
+hyperbolical
+hyperbolist
+hyperborean
+hypercharge
+hypercritic
+hypercritical
+hypercritically
+hypercriticism
+hypereutectic
+hyperglycemia
+hyperglycemic
+hyperirritability
+hyperirritable
+hyperkeratosis
+hyperkeratotic
+hyperkinesis
+hyperkinetic
+hypermeter
+hypermeter's
+hypermeters
+hypermetric
+hypermetrical
+hypermetropia
+hypermetropic
+hypermetropical
+hypermetropy
+hypermnesia
+hypermnesic
+hypermorph
+hypermorphic
+hypermorphism
+hyperon
+hyperope
+hyperopia
+hyperopic
+hyperostosis
+hyperostotic
+hyperparasite
+hyperparasitic
+hyperparasitism
+hyperphagia
+hyperphysical
+hyperphysically
+hyperpituitarism
+hyperpituitary
+hyperplane
+hyperplanes
+hyperplastic
+hyperploid
+hyperploidy
+hypersensitive
+hypersensitiveness
+hypersensitivity
+hypersonic
+hypersonically
+hyperspace
+hypersurface
+hypertension
+hyperthermia
+hyperthermic
+hyperthyroid
+hyperthyroidism
+hypertonic
+hypertonicity
+hypertrophic
+hyperventilation
+hypha
+hyphal
+hyphenless
+hypnagogic
+hypnoanalysis
+hypnogenesis
+hypnogenetic
+hypnogenetically
+hypnogogic
+hypnoid
+hypnoidal
+hypnoses
+hypnotherapy
+hypnotism
+hypnotist
+hypnotists
+hypo
+hypocaust
+hypocentral
+hypochlorite
+hypochlorous
+hypochondria
+hypochondriac
+hypochondriacal
+hypochondriacally
+hypocoristic
+hypocoristical
+hypocoristically
+hypocritic
+hypocycloid
+hypodermically
+hypodermis
+hypoglycemia
+hypoglycemic
+hypoiodite
+hypomorphic
+hypos
+hypotension
+hypotensive
+hypothalmus
+hypothecate
+hypothecation
+hypothecator
+hypothenuse
+hypothermal
+hypothermic
+hypotonic
+hypotonically
+hypotonicity
+hypotrophy
+hypoxemia
+hypoxemic
+hypoxia
+hypoxic
+hypsography
+hypsometer
+hypsometer's
+hypsometers
+hypsometric
+hypsometry
+hysteretic
+hysteron
+iambus
+iambuses
+iatrogenic
+ibero
+ibex
+ibidem
+iceblink
+icebound
+icebreaker
+icecap
+icecap's
+icecaps
+icefall
+icehouse
+iceless
+iceman
+iceman's
+icemans
+ichneumon
+ichorous
+icily
+ickier
+icky
+iconically
+iconicity
+iconoclastic
+iconoclastically
+iconographer
+iconographic
+iconographical
+iconographically
+iconography
+iconolatry
+iconological
+iconology
+iconoscope
+icosahedra
+idealess
+idealistically
+ideality
+idealless
+idealogy
+ideational
+ideationally
+idem
+identic
+ideogram
+ideogram's
+ideogramic
+ideogrammatic
+ideogrammic
+ideograms
+ideograph
+ideographic
+ideographically
+ideography
+ideolect
+ideologic
+ideologue
+ideologues
+ideomotor
+ides
+idetic
+idiographic
+idiolectal
+idiomatically
+idiomorphic
+idiomorphically
+idiopathic
+idiopathically
+idioplasm
+idioplasmatic
+idioplasmic
+idiotical
+idioticalness
+idiotism
+idolater
+idolatrous
+idolatrously
+idolatrousness
+idyllically
+idyllist
+ie
+ignescent
+ignitable
+ignitible
+ignitor
+ignitron
+ignobility
+ignobly
+ignominiosness
+ignominy
+ignorable
+igor
+iguana
+ikon
+ilial
+illation
+illative
+illatively
+illaudable
+illaudably
+illegibility
+illegibly
+illiberal
+illiberalism
+illiberality
+illiberally
+illiberalness
+illimitability
+illimitably
+illiquid
+illiquidity
+illite
+illitic
+illogicality
+illon
+illuminable
+illuminance
+illuminant
+illuminati
+illuminator
+illuminators
+illuminism
+illuminist
+illus
+illusional
+illusionism
+illusionist
+illusionistic
+illusorily
+illust
+illustrational
+illuvial
+illuviate
+illuviation
+illuvium
+ilmenite
+im
+imaginal
+imaginarily
+imaginate
+imagism
+imagist
+imagistic
+imagistically
+imago
+imam
+imamate
+imaret
+imbecilic
+imbecility
+imbed
+imbibition
+imbibitional
+imbitter
+imbosom
+imbricate
+imbricately
+imbrication
+imbrown
+imbrue
+imbrued
+imbrute
+imbruted
+imbruting
+imdtly
+ime
+imidazole
+imide
+imidic
+imido
+imine
+imino
+imipramine
+imit
+imitational
+imitator
+immaculacy
+immane
+immanence
+immanency
+immanentism
+immanentist
+immanentistic
+immaterialism
+immaterialist
+immateriality
+immaturel
+immedicable
+immedicably
+immensurable
+immerge
+immerged
+immergence
+immerging
+immersible
+immesh
+immethodical
+immethodically
+immigrational
+imminency
+immingle
+immiscibility
+immiscible
+immiscibly
+immitigable
+immitigableness
+immitigably
+immittance
+immix
+immixture
+immoderacy
+immolate
+immolation
+immolator
+immoralist
+immotile
+immotility
+immunochemical
+immunochemically
+immunochemistry
+immunoelectrophoresis
+immunofluorescence
+immunofluorescent
+immunogenesis
+immunogenetic
+immunogenetically
+immunogenetics
+immunogenic
+immunogenically
+immunogenicity
+immunohematological
+immunohematology
+immunologic
+immunologist
+immunopathologic
+immunopathological
+immunopathologist
+immunopathology
+immunosuppression
+immunosuppressive
+immunotherapy
+immunotoxin
+immunotoxins
+immure
+immured
+immurement
+immures
+immuring
+immutability
+immutably
+impala
+impalement
+impalpability
+impalpably
+impanel
+imparadised
+imparity
+impartable
+impartible
+impartibly
+impartment
+impassability
+impassably
+impassibility
+impassible
+impassibly
+impassivity
+impeachable
+impeachment
+impeccability
+impecuniosity
+impecunious
+impecuniously
+impecuniousness
+impellor
+impendent
+impenitence
+impenitent
+impenitently
+imperate
+imperator
+imperatorial
+imperceptibility
+imperceptive
+imperceptiveness
+imperceptivity
+imperfectivity
+imperforate
+imperforated
+imperforates
+imperialistic
+imperialistically
+imperilment
+imperishability
+imperishably
+impermanency
+impermeability
+impermeably
+impermissibility
+impermissibly
+impersonality
+impersonator
+impertinence
+impertinency
+imperturbably
+impetrate
+impetrated
+impetrates
+impetrating
+impetration
+impetrations
+impetuosity
+impingement
+implacability
+implacably
+implantable
+implausibility
+implead
+implemental
+implode
+imploded
+implodes
+imploding
+implosion
+implosions
+implosive
+implosively
+impolitical
+impolitically
+imponderability
+imponderably
+importable
+importancy
+importunity
+imposthume
+imposture
+impoundment
+impracticability
+impracticably
+imprecatory
+impregnability
+impregnably
+impregnator
+impregnators
+impressibility
+impressibly
+impressionability
+impressionably
+impressional
+impressionistically
+imprimis
+imprisonable
+improbability
+improvability
+improvable
+improvably
+improvidence
+improvisator
+improvisatorial
+improvisatory
+improvisor
+imprudence
+impudicity
+impugnable
+impuissance
+impuissant
+imputability
+imputable
+imputative
+imputatively
+inadmissibly
+inadvertency
+inalienability
+inalienably
+inalterability
+inalterably
+inamorata
+inanition
+inapparent
+inappetence
+inapplicably
+inapposite
+inappositely
+inappositeness
+inaptitude
+inaugurator
+inaugurators
+inbound
+inbreathe
+incalculably
+incalescence
+incalescences
+incalescent
+incandesce
+incandesced
+incandescence
+incandesces
+incandescing
+incantational
+incantatory
+incapability
+incapacitator
+incardination
+incarnadine
+incase
+incaution
+incendiarism
+incertitude
+incessancy
+inchoate
+inchoately
+inchoateness
+inchoative
+inchoatively
+inchworm
+inchworm's
+inchworms
+incitant
+incitants
+incitation
+inclinable
+inclinational
+inclip
+includable
+includible
+incog
+incogitable
+incogitant
+incognita
+incognito
+incombustibility
+incommensurability
+incommensurably
+incommode
+incommodity
+incommunicability
+incommunicably
+incommunicative
+incommutably
+incompliant
+incompressibly
+incomputably
+inconceivability
+inconcinnity
+incondite
+inconscient
+inconsecutive
+inconsequence
+inconsequent
+inconsequentiality
+inconsolably
+inconsonant
+inconsumable
+inconsumably
+incontestability
+incontestably
+incontinency
+incontinent
+incontrovertibly
+inconveniency
+inconvertibly
+inconvincible
+incoordinate
+incoordination
+incorporator
+incorporeal
+incorporeity
+incorrigibility
+incorrigibly
+incorrupt
+incorrupted
+incorruptibly
+incorruptly
+incorruptness
+increate
+incrementalism
+incrementalist
+incrementalists
+increscent
+incriminate
+incriminated
+incriminates
+incrimination
+incriminatory
+incross
+incrossbred
+incrust
+incrustation
+incubational
+incubatory
+incudes
+inculcator
+inculpate
+inculpation
+inculpative
+inculpatory
+incult
+incumbency
+incumber
+incunabulum
+incurability
+incuriosity
+incurious
+incuriously
+incuriousness
+incurrence
+incurrent
+incurrer
+incurvate
+incurvated
+incurvates
+incurvating
+incurvation
+incurvature
+incurve
+incus
+incuse
+indagate
+indagation
+indagator
+indamine
+indecency
+indeclinable
+indecorum
+indefatigability
+indefatigably
+indefeasibility
+indefeasible
+indefeasibly
+indefectibility
+indefectible
+indefectibly
+indefensibility
+indefensibly
+indefinability
+indefinably
+indefinity
+indehiscence
+indehiscent
+indelibility
+indelicacy
+indemnifier
+indemnify
+indemonstrable
+indention
+independency
+indescribably
+indestructibility
+indestructibly
+indeterminably
+indeterminist
+indexical
+indican
+indicational
+indicatory
+indicia
+indictable
+indiction
+indictor
+indifferency
+indifferentism
+indifferentist
+indigen
+indigence
+indigene
+indigenes
+indigestibility
+indign
+indigotin
+indisciplinable
+indiscrete
+indiscussible
+indissociably
+indissolubility
+indissolubly
+indistinguishability
+indistinguishably
+indite
+indited
+inditer
+inditing
+indivertible
+indivertibly
+individualistically
+indivisibly
+indocile
+indocility
+indoctrinator
+indole
+indomitability
+indomitably
+indrawn
+indubitability
+indubitably
+inducibility
+indue
+indult
+indurate
+induration
+indurative
+indwell
+indweller
+indwelling
+inebriant
+inebriety
+inedible
+ineducability
+ineducable
+ineffability
+ineffably
+ineffaceability
+ineffaceably
+ineffectuality
+inelasticity
+inelegance
+ineliminable
+ineluctability
+ineluctably
+ineludible
+inenarrable
+ineptitude
+inequivalve
+inequivalved
+ineradicability
+ineradicably
+inerrancy
+inerrant
+inertance
+inestimably
+inexhaustibility
+inexhaustibly
+inexistence
+inexorability
+inexpedience
+inexpiably
+inexplicability
+inexpugnable
+inexpugnableness
+inexpugnably
+inexpungible
+inextinguishably
+inextricability
+infall
+infanta
+infantilism
+infantility
+infarct
+infarcted
+infarction
+infatuate
+infatuated
+infatuations
+infaunal
+infectivity
+infector
+infecundibility
+inferrer
+inferrible
+infestant
+infiltrator
+infiltrators
+infinitival
+inflammability
+inflammably
+inflammatorily
+inflationism
+inflationist
+inflator
+inflexion
+inflictor
+inflorescence
+inflorescences
+inflorescent
+informatics
+informatory
+infract
+infractor
+infrahuman
+infrangibility
+infrangible
+infrangibleness
+infrangibly
+infrasonic
+infraspecific
+infrastructural
+infrequence
+infrequency
+infundibular
+infundibulate
+infusibility
+infusoria
+infusorial
+infusorian
+ingather
+ingathering
+ingenue
+ingle
+ingratiatory
+ingress
+ingression
+ingressive
+ingressiveness
+ingrowing
+inguinal
+ingurgitate
+ingurgitation
+inhabitancy
+inhalational
+inhalator
+inharmonic
+inharmony
+inherence
+inheritability
+inhumanity
+inhumation
+inhume
+inhumed
+inhumes
+inhuming
+inimitably
+initialism
+initiatory
+initio
+injectant
+injector
+injectors
+injunct
+inkhorn
+inkiness
+inkle
+inkstand
+inkwell
+inky
+inmost
+innard
+innersole
+innerspring
+innervate
+innervated
+innervates
+innervating
+innervation
+innervational
+innerve
+innkeeper
+innkeeper's
+innkeepers
+innocency
+innominate
+innovational
+innovator
+innovatory
+innumerous
+inobservance
+inobservant
+inoculant
+inoculativity
+inoculator
+inoculum
+inoffensive
+inoffensively
+inoffensiveness
+inoperculate
+inosculate
+inosculated
+inosculates
+inosculating
+inosculation
+inositol
+inotropic
+inpatient
+inphase
+inpour
+inquisitional
+inquisitorial
+inquisitorially
+inrush
+insalubrious
+insalubrity
+insanitation
+insatiability
+insatiably
+insatiate
+insatiately
+insatiateness
+inscriptional
+inscriptive
+inscriptively
+inscroll
+inscrutably
+insculp
+inseam
+insectan
+insectary
+insecticidal
+insecticidally
+insectifuge
+insectile
+insectivore
+insectivore's
+insectivores
+insectivorous
+insectivory
+inseminator
+insentience
+insentient
+insertional
+insessorial
+insetted
+inshore
+insignificancy
+insinuator
+insipidity
+insistency
+insolate
+insolation
+insole
+insolubly
+insolvably
+insoul
+inspan
+inspectorate
+inspectorship
+insphere
+inspirator
+inspiratory
+inspirit
+inspissate
+inspissated
+inspissation
+inspissator
+instalment
+instalments
+instancy
+instantaneity
+instar
+instate
+instating
+instauration
+instil
+instillment
+instils
+institutionalism
+institutor
+instructorship
+instructress
+instrumentalism
+instrumentality
+insubstantiality
+insufferableness
+insufferably
+insufficience
+insufflate
+insufflated
+insufflates
+insufflating
+insufflation
+insufflator
+insugently
+insulant
+insularism
+insupportably
+insuppressibly
+insurability
+insurable
+insurgency
+insurmountably
+insuror
+insurrectional
+insurrectionary
+insurrectionist
+insusceptibly
+intaglio
+intangibility
+integrability
+integrality
+integrationist
+integrator
+integumental
+integumentary
+intellection
+intellectualism
+intellectualist
+intellectualistic
+intellectus
+intelligential
+intendance
+intendment
+intenerate
+inteneration
+intentionality
+intepupillary
+interactant
+interactional
+interatomic
+interbrain
+interbreed
+intercalary
+intercellular
+intercellularly
+intercession
+intercessional
+intercessor
+intercessory
+interclavicle
+interclavicular
+intercolumniation
+intercommunion
+intercomputer
+interconversion
+interconvert
+interconvertibility
+interconvertible
+intercooler
+intercostal
+intercostally
+intercrisis
+intercrop
+intercross
+intercultural
+interculturally
+intercurrent
+intercurrently
+intercut
+interdenominationalism
+interdental
+interdentally
+interdepend
+interdiction
+interdictor
+interdictory
+interdiffuse
+interdiffusion
+interdigitate
+interdigitation
+interfacial
+interfascicular
+interferential
+interferogram
+interferogram's
+interferograms
+interferometrically
+interfertile
+interfertility
+interfile
+interframe
+interfuse
+interfusion
+intergeneric
+intergradation
+intergradational
+intergrade
+intergrowth
+interhemispheric
+interionic
+interiority
+interjection
+interjectional
+interjectionally
+interjector
+interjectory
+interlacement
+interlaminate
+interlamination
+interlard
+interleaf
+interline
+interlinear
+interlinearly
+interlineation
+interlocal
+interlocution
+interlocutory
+interlope
+interloped
+interloper
+interlopes
+interloping
+interlunar
+interlunary
+intermarry
+intermeddle
+intermeddler
+intermediacy
+intermembrane
+intermetallic
+intermezzo
+intermit
+intermittence
+intermitter
+intermixture
+internality
+internationalism
+interne
+internecine
+internee
+internescine
+interneuron
+interneuronal
+internist
+internment
+internodal
+internode
+internship
+internuclear
+internuncial
+internuncially
+internuncio
+interoceptive
+interoceptor
+interoffice
+interpellate
+interpellation
+interpellator
+interpenetrate
+interpenetration
+interphase
+interplant
+interplead
+interpleader
+interpolator
+interpolatory
+interpretability
+interpretational
+interreligious
+interring
+interrogational
+interrogee
+interrogees
+interscholastic
+intersectoral
+interservice
+intersession
+intersex
+intersexual
+intersexuality
+intersexually
+interspace
+interspecific
+interstadial
+intersterile
+intersterility
+intersubjective
+intersubjectively
+intersubjectivity
+intertestamental
+intertidal
+intertidally
+intertie
+intertill
+intertillage
+intertropical
+intertwinement
+intertwist
+interurban
+intervale
+intervalometer
+intervalometer's
+intervalometers
+interventionism
+intervertebral
+intervertebrally
+interwar
+interweave
+interweaves
+interzonal
+interzone
+intestacy
+intima
+intimidator
+intimidatory
+intinction
+intine
+intitule
+intl
+intnl
+intonational
+intraarterial
+intraarterially
+intracardiac
+intracardial
+intracardially
+intracellular
+intracellularly
+intracranial
+intracranially
+intracutaneous
+intracutaneously
+intradermal
+intradermally
+intrados
+intraepithelial
+intragalactic
+intramolecular
+intramolecularly
+intrans
+intransigeance
+intransigeant
+intransigeantly
+intrant
+intraperitoneal
+intraperitoneally
+intrapersonal
+intrapopulation
+intrapsychic
+intrapsychically
+intraspecies
+intraspecific
+intraspecifically
+intrauterine
+intravascular
+intravital
+intravitally
+intravitam
+intrazonal
+intreat
+intrench
+intrepidity
+intrigant
+intriguant
+intrinsical
+intrinsicalness
+introductorily
+introgressant
+introgression
+introgressive
+introit
+introjection
+intromission
+intromit
+intromittent
+intromitter
+introrse
+introrsely
+introspectional
+introspectionism
+introspectionist
+introspectionistic
+introversive
+introversively
+intrvascularly
+intsv
+intuit
+intuiting
+intuitional
+intuitionism
+intumesce
+intumescence
+intumescent
+intussuscept
+intussusception
+intussusceptive
+inulin
+inundator
+inundatory
+inurement
+inurn
+inutility
+inv
+invaginate
+invaginated
+invaginates
+invaginating
+invagination
+invalidator
+inveiglement
+invenit
+inventorial
+inventorially
+inventress
+invercalt
+invertase
+investable
+investigational
+investiture
+inveteracy
+invictus
+invigorator
+inviible
+invincibility
+invincibly
+inviolableness
+inviolably
+inviolacy
+inviscid
+invitatory
+invocational
+invocatory
+involucral
+involucrate
+involucre
+involucred
+involucrum
+involutional
+involutionary
+invulnerably
+inweave
+iodic
+iodin
+iodoamino
+iodocompounds
+iodoform
+iodophor
+iodoprotein
+iodopsin
+iodothyronines
+iodotyrosines
+iodous
+ione
+ionicity
+ionium
+ionospherically
+iosola
+iotacism
+ipecacuanha
+iproniazid
+ipsilateral
+ipsilaterally
+iraqi
+irascibility
+irascible
+irascibleness
+irascibly
+ireful
+irenaeus
+irenic
+irenically
+irenics
+irid
+iridaceous
+irides
+iridescence
+iridescent
+iridescently
+iridic
+iridosmine
+irina
+ironbound
+ironclad
+ironfisted
+ironhanded
+ironhandedly
+ironhandedness
+ironhearted
+ironist
+ironmaster
+ironmonger
+ironmongery
+ironware
+ironweed
+irradiance
+irradiator
+irradicable
+irradicably
+irrationalism
+irrationalist
+irrationalistic
+irreal
+irreality
+irreclaimable
+irreclaimably
+irreconcilability
+irreconcilably
+irreconciliable
+irrecoverably
+irrecusable
+irrecusably
+irred
+irredenta
+irreducibility
+irreformability
+irreformable
+irrefragability
+irrefragable
+irrefragably
+irrefrangible
+irrefutability
+irrefutably
+irreg
+irregardless
+irrelative
+irrelatively
+irreligion
+irreligionist
+irreligious
+irreligiously
+irremeable
+irremediably
+irremovability
+irremovably
+irrepealability
+irrepealable
+irreplaceability
+irreplaceably
+irrepressibility
+irrepressibly
+irreproachability
+irreproachably
+irresoluble
+irrespirable
+irresponsive
+irresponsiveness
+irretrievability
+irretrievably
+irreversibility
+irrevocability
+irrigational
+irrigationists
+irrigator
+irrigators
+irrotational
+irrotationally
+irrupt
+irrupted
+irrupting
+irruptive
+irruptively
+irrupts
+isentropic
+islandia
+ism
+isoagglutination
+isoagglutinative
+isoagglutinin
+isoagglutinogen
+isoalloxazine
+isoantibody
+isoantigen
+isoantigenic
+isoantigenicity
+isobar
+isobaric
+isobutylene
+isochromatic
+isochron
+isochrone
+isochronism
+isoclinal
+isoclinally
+isoclinic
+isoclinically
+isogram
+isogram's
+isograms
+isolationist
+isolator
+isologue
+isomagnetic
+isomerase
+isomeric
+isomerism
+isomerous
+isometrical
+isometrically
+isometry
+isomorphous
+isoniazid
+isonomy
+isooctane
+isophotal
+isophote
+isopiestic
+isotonically
+isotonicity
+isotopically
+isotopy
+isozyme
+isozymic
+issuable
+issuably
+issueless
+isthmic
+italianate
+itchiness
+itchy
+iterance
+iterant
+itineracy
+itinerancy
+itinerate
+itinerated
+itinerates
+itinerating
+itineration
+itsy
+iud
+iuds
+izaak
+jabber
+jabbered
+jabberer
+jabbering
+jabbers
+jabberwocky
+jabot
+jackal
+jackal's
+jackals
+jackanapes
+jackassery
+jacketted
+jacketting
+jackhammer
+jackscrew
+jacobite
+jacoby
+jacquerie
+jactitation
+jagger
+jaggery
+jaggy
+jai
+jailbait
+jailbird
+jailbreak
+jailor
+jalousie
+jamb
+jambalaya
+jammer
+janis
+janitress
+japanned
+japanner
+japanning
+jape
+japer
+japery
+japes
+japing
+japonica
+jardiniere
+jarful
+jargonistic
+jasmine
+jauntily
+java
+javanese
+jawbreaker
+jawline
+jaybird
+jazzily
+jazzman
+jeanne
+jeepable
+jeeringly
+jell
+jelled
+jelling
+jello
+jells
+jellylike
+jerkily
+jerkin
+jerkwater
+jeroboam
+jessy
+jesuitic
+jesuitical
+jesuitically
+jesuitry
+jetbead
+jetport
+jetsam
+jettied
+jetties
+jettisonable
+jetty
+jettying
+jeunes
+jib
+jibber
+jibbers
+jibbing
+jibboom
+jiff
+jigged
+jigglier
+jiggly
+jimjams
+jingly
+jingo
+jingoes
+jingoish
+jingoism
+jingoist
+jingoistic
+jingoistically
+jink
+jinks
+jinn
+jinni
+jinny
+jitney
+jitneys
+jiujutsu
+jobbed
+jobber
+jobbers
+jobrel
+jocosity
+jocularity
+jocundity
+jodhpur
+jodhpurs
+jogger
+joggers
+jogging
+joinable
+joinder
+joinery
+jointress
+jointure
+jointured
+jointures
+jointuring
+jointworm
+joist
+joists
+jollification
+jollifications
+jolty
+jouncier
+jouncy
+jour
+journalistically
+journeywork
+jow
+jowlier
+jowly
+joyance
+jubilarian
+judgmatic
+judgmatical
+judgmatically
+judoist
+jugful
+jugged
+juggernaut
+juggernaut's
+juggernauted
+juggernauting
+juggernauts
+jugglery
+jugular
+jugulum
+juiceless
+juicily
+jujitsu
+jujutsu
+jukebox
+julienne
+junco
+junctional
+junctor
+jungian
+jungly
+junkyard
+junto
+juntos
+jural
+jurally
+jurassic
+jurat
+jure
+jurel
+juridic
+jurisconsult
+jurisconsults
+juristic
+juristically
+jussive
+jussives
+juste
+justiciability
+justiciar
+justifiability
+justificative
+justificatory
+justment
+jutted
+juttied
+jutties
+jutty
+juttying
+juvenescence
+juvenescent
+juvenilia
+juvenility
+juvenocracy
+juxtapositional
+kaftan
+kaiser
+kale
+kaleidoscope
+kaleidoscoped
+kaleidoscopes
+kaleidoscopic
+kaleidoscopical
+kaleidoscopically
+kaleidoscoping
+kalmia
+kapok
+kaput
+karateist
+karma
+karmic
+karyatid
+katydid
+kava
+kayak
+kayaker
+kayaks
+kayo
+kayoed
+kayoing
+kebab
+kebabs
+keddah
+keegan
+keelboat
+keelhaul
+keelless
+keelson
+keepsake
+keepsakes
+keeshond
+kegful
+kegsful
+kelts
+kerchieves
+kern
+kerne
+kernite
+kerosine
+kerry
+kerygma
+kestrel
+ketch
+ketches
+ketene
+keto
+ketogenesis
+ketogenic
+ketonic
+ketose
+ketosteroid
+ketotic
+kettledrum
+kewaskum
+kewaunee
+keybutton
+keyless
+keyway
+keyways
+khrush
+kibble
+kibbled
+kibbles
+kibbling
+kibbutz
+kibbutznik
+kibe
+kibosh
+kickapoo
+kickshaw
+kickshaws
+kickstand
+kickup
+kickups
+kiddish
+kiddush
+kiddy
+kidskin
+kiel
+kielbasa
+killdeer
+killebrew
+kiln
+kilo
+kilobar
+kilocalorie
+kilocalories
+kilocurie
+kilocycle
+kilocycles
+kilooersted
+kiloparsec
+kilorad
+kilos
+kilt
+kilter
+kindergartner
+kindless
+kindlessly
+kine
+kinematical
+kinematically
+kinescope
+kinescoped
+kinescopes
+kineses
+kinesic
+kinesiology
+kinesis
+kineticist
+kinetin
+kinetochore
+kinetonucleus
+kinetoplast
+kinetoplastic
+kinetoscope
+kinetosome
+kinfolk
+kinfolks
+kingfish
+kingmaker
+kingship
+kingside
+kingwood
+kinkajou
+kinkajou's
+kinnickinnic
+kinsey
+kinsfolk
+kinswoman
+kip
+kipper
+kippered
+kippering
+kippers
+kips
+kirk
+kirkwood
+kirsch
+kismet
+kissable
+kitchenware
+kitchenwares
+kith
+kithe
+kithing
+kitschy
+kittle
+kittled
+kittler
+kittles
+kittling
+kiva
+kivu
+kiwi
+kiwi's
+kiwis
+kiz
+kizzie
+klatch
+klatsch
+klauber
+kleptomania
+kleptomaniac
+kline
+knackery
+knavery
+knavish
+knavishly
+kneadable
+kneehole
+kneeholes
+knickknack
+knifelike
+knish
+knitter
+knitwear
+knobbed
+knobeloch
+knockabout
+knockabouts
+knothole
+knotter
+knotweed
+knout
+knoweth
+knowily
+knowledgeability
+knowledgeably
+knucklebone
+knucklebones
+knucklehead
+knuckleheaded
+koine
+koinonia
+kola
+kolkhoz
+kombu
+konga
+konrad
+kook
+kookaburra
+kookie
+kookier
+kookiness
+kooky
+kooning
+kopeck
+kopek
+kowtow
+kpc
+kraemer
+kraken
+kremlinologist
+kremlinology
+kretchmer
+krummholz
+kudo
+kudu
+kulak
+kultur
+kurdish
+kwashiorkor
+labdanum
+labellate
+labellum
+labia
+labiate
+lability
+labium
+laborious
+laboriously
+laboriousness
+laborsaving
+labradorite
+labyrinthian
+labyrinthine
+laceless
+lacelike
+lacemaker
+lacewing
+lacework
+lacey
+laches
+lachrymal
+lachrymator
+lachrymose
+lachrymosely
+lacier
+laciniate
+laciniated
+laciniation
+lackaday
+laconic
+laconically
+laconics
+laconism
+laconisms
+lacrimal
+lacrimation
+lacrimator
+lactase
+lacteal
+lactic
+lactiferousness
+lactobionamide
+lactobionamides
+lactobionic
+lactobionyl
+lactogenic
+lactoglobulin
+lactone
+lactonic
+lacunal
+lacunar
+lacunaria
+lacunary
+lacunate
+lacustrine
+lacy
+ladanum
+laddie
+lade
+ladybird
+ladybird's
+ladybirds
+ladybug
+ladybug's
+ladybugs
+ladyfern
+ladyfinger
+ladykin
+ladylove
+ladyship
+lage
+lagger
+lagniappe
+lagomorph
+lagomorphic
+lagomorphous
+lagoonal
+laguna
+laic
+laical
+laically
+laicism
+laird
+lairdly
+laitance
+laitances
+lakefront
+lakeshore
+lakewood
+lakh
+laky
+lallygag
+lallygagged
+lam
+lama
+lamasery
+lambast
+lambaste
+lambency
+lambent
+lambently
+lambert
+lambertian
+lambeth
+lambkill
+lambskin
+lamebrain
+lamebrained
+lamella
+lamellae
+lamellar
+lamellarly
+lamellas
+lamellate
+lamellately
+lamellation
+lamelliform
+lametedly
+lamia
+laminal
+laminaria
+laminarian
+laminarin
+laminator
+laminin
+lampoonery
+lamster
+lanai
+lancelet
+lanceolate
+lanceolately
+lancet
+lanceted
+lancinate
+lancinated
+lancinates
+lancinating
+lancination
+lancinations
+landaulet
+landes
+landfall
+landform
+landlocked
+landlordism
+landlubber
+landlubberly
+landmass
+landmasses
+landowning
+landside
+landslip
+landslips
+landsman
+landward
+landwards
+lanesmanship
+langeland
+languishment
+languorous
+languorously
+langur
+lankily
+lanolin
+lanuginous
+lanuginousness
+lanyard
+laodicean
+laparotomy
+lapboard
+lapdog
+lapful
+lapidarian
+lapper
+lappet
+lapstrake
+lapstreak
+lapwing
+larcener
+larcenist
+larcenous
+larcenously
+lardy
+lares
+largehearted
+largess
+larghetto
+largish
+largo
+largos
+larkier
+larkspur
+larky
+larvicidal
+larvicide
+larynges
+laryngitis
+laryngology
+laryngoscope
+laryngoscopic
+lasagna
+lasagne
+lascar
+lase
+lassie
+lassies
+lassitude
+lassitudes
+lassoes
+latchet
+latchkey
+latchstring
+latecomer
+latecomers
+lateen
+lateener
+lateiner
+latened
+latening
+latensification
+latensifications
+latensified
+latensifies
+latensify
+latera
+laterite
+lathery
+latices
+laticiferous
+latish
+latitudinarian
+latitudinarianism
+latten
+latticework
+lattimer
+latus
+laudability
+laudable
+laudableness
+laudation
+laudations
+laudative
+laudatorily
+laughterful
+launderability
+launderette
+launderettes
+laundress
+laundryman
+laundrywoman
+laurate
+laureateship
+lavabo
+lavage
+lavaged
+lavalava
+lavaliere
+lavalike
+lavallade
+lavalliere
+lavation
+lavational
+lavato
+lave
+laveer
+laver
+laverock
+laving
+lawmaker
+lawny
+laxation
+layabout
+layabouts
+layaway
+layerage
+layette
+layover
+layovers
+laypeople
+laywoman
+laywomen
+laze
+lazes
+lazyish
+lea
+leachable
+leadeth
+leadier
+leadless
+leadoff
+leadwork
+leady
+leafage
+leaflike
+leafstalk
+leafstalks
+leakily
+leant
+leapfrogged
+leapfrogging
+learnable
+leary
+leastways
+leastwise
+leasure
+leatherback
+leatherlike
+leatherwork
+lecherous
+lecherously
+lecherousness
+lecithin
+lecithinase
+lectern
+lectern's
+lecterns
+lectin
+lectin's
+lectins
+lection
+lectionary
+lectureship
+lederhosen
+ledgy
+leeboard
+leeds
+leftism
+legalese
+legalism
+legalist
+legalistic
+legalistically
+legateship
+legatine
+legator
+legendarily
+legendry
+legerity
+leges
+legionary
+legionnaire
+legionnaires
+legis
+legislatorial
+legislatorship
+legislatress
+legislatrix
+legist
+legit
+legitimism
+legitimist
+legless
+legman
+legroom
+legwork
+lei
+leith
+lemke
+lemony
+lemur
+lemures
+lengthways
+lenience
+lenis
+lenitive
+lenitively
+lenity
+lense
+lensless
+lenticulate
+lenticulation
+lentissimo
+lento
+leopardess
+leotard
+leotards
+lepidolite
+lepidopterist
+leprechaun
+leprechauns
+leprotic
+leprous
+leprously
+leprousness
+lepton
+lepton's
+leptons
+leptospiral
+les
+lesbianism
+lessee
+letch
+letdown
+letdowns
+lethargic
+lethargically
+letted
+letterpress
+letup
+leu
+leucine
+leucite
+leucitic
+leucoma
+leukemic
+leukemoid
+leukocyte
+leukocytic
+lev
+levanter
+levator
+levatores
+levators
+leveeing
+levelheaded
+levelheadedness
+leven
+leveret
+leviathan
+leviathan's
+levigate
+levigated
+levigates
+levigating
+levigation
+levirate
+leviratic
+levitational
+levorotation
+levorotatory
+levulose
+lewellyn
+lewisite
+lexica
+lexicality
+lexicographer
+lexicographer's
+lexicographers
+lexicography
+lexicostatistic
+lexicostatistics
+ley
+liaise
+liaised
+liaises
+liaising
+liana
+lib
+libationary
+libelist
+liber
+liberace
+liberalist
+liberalistic
+liberationist
+liberationists
+libertarianism
+libertie
+libertinage
+libertinism
+libidinal
+libidinally
+libra
+librae
+librarianship
+librate
+libration
+librational
+libratory
+libriform
+licating
+licenseless
+licenselesses
+licensure
+licentiate
+licentiateship
+lichee
+lichenous
+licht
+lichtenstein
+lichter
+lickerish
+lickerishly
+lickerishness
+lickspittle
+lictor
+lidded
+lido
+lidocaine
+lidos
+lieberman
+lief
+lierne
+lieutenancy
+lieve
+lifeful
+lifeline
+lifelines
+lifemanship
+lifesaver
+lifeway
+lifework
+liftable
+liftman
+ligamentary
+ligamentous
+ligate
+ligated
+ligates
+ligating
+ligation
+ligations
+lighterage
+lightface
+lightfaced
+lightfooted
+lightfootedly
+lightfootedness
+lightful
+lighthanded
+lighthandedness
+lightheaded
+lightish
+lightless
+lightship
+lightsome
+lightsomely
+lightsomeness
+lightyear
+lightyears
+ligneous
+lignification
+lignified
+lignifies
+lignify
+lignifying
+lignin
+lignitic
+lignocellulose
+ligulate
+ligule
+ligure
+likability
+likable
+likableness
+lilliput
+lilliputian
+limba
+limbless
+limbus
+limeade
+limekiln
+limen
+limey
+limier
+liminal
+limitable
+limitary
+limitational
+limitative
+limitrophe
+limmer
+limn
+limner
+limnetic
+limnic
+limning
+limnological
+limnologically
+limnologist
+limnology
+limo
+limo's
+limonene
+limonite
+limonitic
+limos
+limpet
+limpidity
+limpkin
+limpsy
+limulus
+limy
+linac
+linage
+linate
+linated
+lination
+linchpin
+linchpin's
+linchpins
+lindy
+lineality
+lineament
+lineamental
+lineation
+linebacking
+linebreed
+linecaster
+linecasting
+lineolate
+lineolated
+lineprinter
+lineprinter's
+lineprinters
+linerless
+linesman
+linga
+lingoes
+lingonberry
+linguae
+linguine
+linguistical
+linguistician
+lingulate
+linin
+linkboy
+linkman
+linksman
+linkup
+linoleate
+linoleic
+linolenate
+linos
+lintel
+linty
+linum
+lionhearted
+lionlike
+lipide
+lipidic
+lipless
+liplike
+lipolysis
+lipolytic
+lipped
+lippen
+lippier
+lipping
+lippy
+lipread
+lipreading
+liquate
+liquated
+liquates
+liquating
+liquation
+liquations
+liquefactive
+liquefactive's
+liquefactives
+liquefiability
+liquefiable
+liquescent
+liquidator
+liquorice
+lira
+liras
+lire
+lisle
+liss
+lissom
+lissome
+lissomely
+lissomeness
+liste
+listel
+listenable
+listeriosis
+liston
+literalist
+literalistic
+literality
+literarily
+literati
+literatim
+literator
+literatus
+litharge
+lithesome
+lithia
+lithiasis
+lithic
+lithically
+litho
+lithographic
+lithographically
+lithologic
+lithological
+lithologically
+lithophane
+lithophyte
+lithophytic
+lithopone
+lithos
+lithosol
+lithotomy
+lithuanian
+litigable
+litotes
+litterateur
+litterbag
+littermate
+littermate's
+littermates
+littery
+liturgiologist
+liturgiology
+liturgist
+litz
+liveability
+liveable
+livelily
+livelong
+liverish
+liverishness
+liveryman
+lividity
+livlihood
+lixiviate
+lixiviated
+lixiviates
+lixiviating
+lixiviation
+lizzy
+llama
+llama's
+llamas
+llano
+llanos
+lo
+loach
+loaches
+loanable
+loanword
+loanword's
+loanwords
+lobar
+lobate
+lobated
+lobately
+lobation
+lobbing
+lobbyer
+lobbyism
+lobbyist
+lobectomy
+lobelia
+lobeline
+loblolly
+lobo
+lobos
+lobscouse
+lobsterman
+lobstermen
+lobulate
+lobulated
+lobulation
+lobulose
+localism
+localite
+locatable
+loch
+lockable
+lockage
+lockbox
+locket
+lockies
+lockjaw
+lockstep
+lockstitch
+loco
+locoes
+locofoco
+locoism
+locomote
+locomoted
+locomotes
+locomoting
+locular
+loculate
+loculated
+loculation
+locule
+loculed
+loculus
+locution
+locutor
+lode
+loden
+lodestar
+lodgement
+loess
+loftily
+logbook
+loggets
+loggia
+loggie
+loggy
+logia
+logicality
+logistician
+lognormal
+lognormality
+lognormally
+logo
+logogram
+logogram's
+logogrammatic
+logograms
+logograph
+logographic
+logographically
+logogriph
+logomachy
+logorrheic
+logos
+logotype
+logroll
+logroller
+logrolling
+logwood
+logy
+lollipop
+lollop
+lollygag
+lollypop
+londonderry
+lonelily
+longanimity
+longanimous
+longboat
+longboats
+longbow
+longbowman
+longeron
+longevous
+longhair
+longhaired
+longhead
+longheaded
+longheadedness
+longhouse
+longlegs
+longline
+longshoreman
+longshoring
+longsome
+longsomely
+longsomeness
+longspur
+longstreet
+longue
+longwinded
+loo
+loobies
+looby
+looney
+loonier
+looniness
+loony
+loosestrife
+lopper
+loppier
+loppy
+lopseed
+loquat
+loran
+lorans
+lorca
+lordling
+lordosis
+lordotic
+loreal
+lorgnette
+lorgnettes
+lorgnon
+lorgnons
+loricate
+loricated
+loris
+lorn
+lornness
+lory
+los
+losable
+losableness
+losel
+loth
+lotharios
+lotos
+lotted
+lotting
+lotto
+loudmouth
+loudmouthed
+lough
+loup
+loupe
+louping
+lousily
+lout
+loutish
+loutishly
+loutishness
+louts
+loveable
+lovejoy
+lovelily
+lovelock
+lovelocks
+lovemaking
+lovesick
+lovesickness
+lovesome
+lowborn
+lowbred
+lowbrow
+lowermost
+lowery
+lowlihead
+lowlily
+lown
+lox
+loxes
+loxodrome
+loxodromic
+loxodromically
+loxodromics
+loy
+loyola
+lubber
+lubberland
+lubberlanders
+lubberliness
+lubberly
+lubbers
+lube
+lubric
+lubrical
+lubricator
+lubricous
+lubritorium
+lucency
+lucien
+luciferous
+lucubrate
+lucubrated
+lucubrates
+lucubrating
+lucubration
+lucubrations
+lucubrator
+luculent
+luculently
+ludmilla
+lues
+luetic
+luetically
+luggageless
+lugger
+lugubrious
+lugubriously
+lugubriousness
+lukemia
+lum
+lumbago
+lumberjack
+lumberjack's
+lumberjacks
+lumbian
+lumenal
+lumens
+lumina
+luminaire
+luminal
+luminance
+luminesce
+luminesced
+luminescing
+luminiferous
+luminist
+lummus
+lumpily
+luncheonette
+lune
+lunes
+lunette
+lungfish
+lunisolar
+lunitidal
+lunker
+lunkhead
+lunkheaded
+lunt
+lunule
+luny
+lupanar
+lupulin
+lupus
+lurdane
+lusion
+lustihood
+lustra
+lustral
+lustrate
+lustrated
+lustrates
+lustrating
+lustration
+lustrations
+lustrum
+luteal
+lutenist
+luteous
+lutetium
+lutihaw
+lux
+luxate
+luxated
+luxates
+luxating
+luxation
+luxations
+lycanthropic
+lycanthropy
+lycee
+lyceum
+lychee
+lychnis
+lycidas
+lymphadenitis
+lymphatic
+lymphatically
+lymphoblast
+lymphoblastic
+lymphocytic
+lymphocytosis
+lymphoid
+lymphomatoid
+lymphomatosis
+lymphomatous
+lymphopoiesis
+lyndon
+lyonnaise
+lyophile
+lyophilic
+lyophobic
+lyotropic
+lyrate
+lyrated
+lyrately
+lyrebird
+lyrebird's
+lyrebirds
+lyrism
+lyrist
+lysate
+lyse
+lysergic
+lyses
+lysimeter
+lysimeter's
+lysimeters
+lysimetric
+lysin
+lysine
+lysing
+lysis
+lysogen
+lysogenic
+lysogenicity
+lysogeny
+lysolecithin
+lysosomal
+lysosomally
+lysosome
+lysozyme
+lytically
+macadam
+macaque
+macaronic
+macaronically
+macaronies
+macaroon
+macaw
+macaw's
+macaws
+macerate
+macerated
+macerates
+macerating
+maceration
+macerations
+macerator
+macerators
+machete
+machicolate
+machicolation
+machinability
+machinate
+machinated
+machinates
+machinating
+machinator
+machineable
+mackerel
+mackerels
+mackle
+mackled
+mackles
+macklin
+mackling
+macle
+macled
+macrame
+macroaggregate
+macroaggregated
+macrobiotic
+macrobiotics
+macrocephalic
+macrocephalous
+macrocephaly
+macrocosm
+macrocosmic
+macrocosmically
+macrocyte
+macrocytic
+macrocytosis
+macroeconomic
+macroevolution
+macroevolutionary
+macrofossil
+macrogamete
+macroinstruction
+macron
+macronucleus
+macronutrient
+macropathological
+macropathology
+macrophagic
+macrophyte
+macrophytic
+macroscale
+macroscopical
+macrostructural
+macrostructure
+macrostructure's
+maculate
+maculated
+maculates
+maculating
+maculation
+maculations
+macule
+madded
+maddish
+madrigalian
+madrigalist
+madrilene
+madrona
+madrone
+madstone
+madstones
+madwoman
+madwomen
+maelstrom
+maelstrom's
+maelstroms
+maenadic
+maeterlinck
+mafia
+mafioso
+magazinism
+magazinist
+magazinists
+maggotries
+maggotry
+magicked
+magicking
+magill
+magisterium
+magistracy
+magistral
+magistrally
+magistrateship
+magistratical
+magistratically
+magistrature
+magma
+magmatic
+magna
+magnesian
+magnetitic
+magnetodynamo
+magnetoelectric
+magnetoelectrical
+magnetoelectricity
+magnetofluidmechanic
+magnetofluidmechanics
+magnetogasdynamic
+magnetogasdynamics
+magnetogram
+magnetogram's
+magnetograms
+magnetograph
+magnetohydrodynamic
+magnetohydrodynamics
+magnetometer
+magnetometer's
+magnetometers
+magnetometric
+magnetometry
+magnetomotive
+magneton
+magnetooptic
+magnetooptical
+magnetooptics
+magnetoscope
+magnetosphere
+magnetospheric
+magnetostatic
+magnetostriction
+magnetostrictive
+magnetostrictively
+magnetron
+magnetrons
+magnific
+magnifical
+magnifically
+magnifico
+magniloquence
+magniloquent
+magniloquently
+magtape
+magtapes
+maguire
+maguires
+magus
+maharaja
+maharaja's
+maharajah
+maharanee
+maharani
+maharishi
+mahatma
+mahatmaism
+mahler
+mahlstick
+mahout
+maidenhead
+maidenhood
+maidhood
+maidish
+maieutic
+maieutical
+maieutics
+mailability
+mailbag
+mailbags
+mailboat
+mailboats
+maillot
+mailplane
+mailplanes
+mailsack
+mailsacks
+mainmast
+mainsail
+mainsheet
+mainspring
+maintop
+maisonette
+maisonettes
+maitre
+maitres
+maize
+maizer
+maizers
+maizes
+majestical
+majolica
+majordomo
+majordomos
+majorette
+majorettes
+majuscular
+majuscule
+makeable
+makebate
+makefast
+makepeace
+makeshifty
+makeweight
+mako
+makos
+mal
+malachite
+malacologic
+malacological
+malacologist
+malacology
+malacostracan
+maladaptation
+maladminister
+maladministration
+malamud
+malamute
+malapert
+malapertly
+malapertness
+malapportioned
+malapportionment
+malappropriate
+malappropriated
+malappropriates
+malappropriating
+malapropian
+malapropos
+malar
+malarian
+malariated
+malariologist
+malariology
+malarkey
+malate
+malathion
+malaxate
+malaxated
+malaxates
+malaxating
+malconduct
+malconformation
+maldevelopment
+maldistribute
+maldistribution
+maledictory
+malefaction
+malefic
+maleficence
+maleficent
+malemute
+malentendu
+malfeasance
+malgovernment
+malic
+maliferous
+malignance
+malignity
+malinger
+malingered
+malingerer
+malism
+malleability
+mallemuck
+malleus
+mallow
+malmsey
+malodorous
+malodorously
+malodorousness
+malolactic
+malposition
+malpractitioner
+maltase
+maltobionic
+maltose
+maltreatment
+maltster
+malty
+malvasia
+malvasian
+malversation
+malvoisie
+mammalogist
+mammalogy
+mammary
+mammer
+mammies
+mammillar
+mammillary
+mammillate
+mammillated
+mammock
+mammography
+mammon
+mammonism
+mammonist
+mammonite
+mammy
+mana
+manacle
+manacled
+manacles
+manacling
+manageability
+manageably
+managemental
+manageress
+managership
+manchet
+mancipation
+mancipatory
+manciple
+manciples
+mandala
+mandarinate
+mandarinates
+mandarinic
+mandarinism
+mandataries
+mandatary
+mandator
+mandatorial
+mandibular
+mandibulate
+mandola
+mandolinist
+mandolinists
+mandorla
+mandragora
+mandrel
+mandril
+mandrill
+manducate
+manducated
+manducates
+manducating
+manege
+manful
+manfully
+manfulness
+manganate
+manganesian
+manganic
+manganite
+manganous
+mange
+mangel
+mangier
+mangily
+manginess
+mango
+mango's
+mangos
+mangrove
+mangy
+manhandle
+manhandled
+manhandles
+manhandling
+manhunt
+manhunts
+manically
+manicotti
+manicurist
+manifestant
+manifesto
+manifesto's
+manifestoed
+manifestoes
+manifestoing
+manifestos
+manioc
+manipular
+manitowoc
+mankowski
+manless
+manlike
+mannerist
+manneristic
+mannerless
+mannikin
+mannish
+mannishly
+mannishness
+mannitic
+mannitol
+mannopyranosyl
+mannosyl
+manometric
+manometrical
+manometrically
+manometry
+manorialism
+manque
+manrope
+manropes
+mansard
+mansarded
+manse
+manship
+manslayer
+mansuete
+mansuetude
+mantelet
+mantelpiece
+mantelshelf
+mantic
+mantis
+mantises
+mantra
+mantua
+manubrium
+manuduction
+manuductory
+manufactory
+manumission
+manumit
+manumitted
+manumitting
+manurial
+manuscriptal
+manward
+manwards
+manwise
+manyfold
+manzanita
+maplecrest
+mapmaker
+mapmakers
+mapmaking
+mapper
+mappery
+mappist
+mappists
+maquillage
+maquis
+marabou
+maraschino
+marasmic
+marasmus
+maraud
+marauder
+marauding
+marauds
+marbly
+marcelled
+marcelling
+marchesa
+marchese
+marchioness
+marchpane
+marconigram
+marconigram's
+marconigrams
+marcotte
+margarita
+marginate
+marginated
+marginates
+marginating
+margination
+marginations
+mariachi
+marimba
+marish
+marjoram
+markdown
+marketeer
+marketeer's
+marketeering
+marketeers
+marketwise
+markovitz
+marksmen
+markswoman
+markswomen
+markup
+markups
+marl
+marline
+marmoreal
+marmoreally
+marmorean
+marmoset
+marmoset's
+marmosets
+marmot
+marplot
+marque
+marquet
+marquisate
+marquise
+marquisette
+marrowfat
+marrowless
+marrowy
+marse
+marshalcy
+marshalship
+marshier
+marshiness
+marshmallowy
+marshy
+marsupial
+marsupial's
+marsupials
+marsupium
+martensite
+martensitic
+martensitically
+martinet
+martlet
+martyrologies
+martyrologist
+martyrologists
+martyrology
+martyry
+marzipam
+marzipan
+maskable
+masochism
+masochistic
+masochistically
+massbus
+masseter
+masseteric
+masseur
+masseurs
+masseuse
+massicot
+massif
+massifs
+massy
+mastectomies
+mastectomy
+mastership
+mastersinger
+mastersingers
+masterstroke
+masterstrokes
+masterwork
+masthead
+mastic
+masticate
+masticated
+masticates
+masticating
+mastication
+mastications
+masticator
+masticators
+masticatory
+mastitic
+mastodonic
+mastodont
+mastoid
+mastoidectomy
+mastoideus
+mastoiditis
+masturbational
+masturbatory
+matador
+matchboard
+matchboarding
+matchlock
+matchwood
+matelote
+materfamilias
+materialist
+materialistically
+materiality
+matey
+maths
+matinal
+matins
+matriarchate
+matriarchy
+matric
+matricidal
+matricide
+matriculant
+matrilineal
+matrilineally
+matroid
+matronymic
+matt
+matte
+mattei
+mattery
+mattie
+mattock
+matutinal
+matutinally
+matzo
+matzos
+maude
+maudlinism
+maudlinisms
+maugre
+mauricio
+maxi
+maxilla
+maxillae
+maxillary
+maxillas
+maxilliped
+maxillipede
+maximalist
+mayapple
+mayflower
+mayfly
+mayoralty
+mayoress
+maypole
+mayst
+mazy
+mazzard
+mea
+meadowlark
+meadowlark's
+meadowlarks
+meagre
+mealie
+mealymouth
+mealymouthed
+mealymouthedly
+mealymouthedness
+mealymouthednesses
+meandrous
+measurability
+measureless
+meatball
+meatballs
+meath
+meatman
+meatmen
+mech
+mechanician
+mechanistically
+mechanoreceptor
+mecholyl
+mecum
+medallic
+meddlesome
+meddlesomeness
+mediacy
+mediad
+mediae
+medial
+medially
+mediant
+mediational
+mediatorial
+mediatorship
+mediatory
+mediatress
+mediatresses
+mediatrice
+mediatrix
+medicable
+medicably
+medicaid
+medicament
+medicamented
+medicamenting
+medicamentous
+medicaments
+medicare
+medicinable
+medicolegal
+medievalise
+medievalises
+medievalism
+medievalism's
+medievalisms
+medievalistic
+medievalistics
+meditator
+mediumship
+medlar
+medlars
+medulla
+medullary
+medullated
+medusae
+medusoid
+meerschaum
+megabuck
+megacycle
+megagamete
+megagametophyte
+megakaryocyte
+megakaryocytic
+megalith
+megalithic
+megaloblast
+megaloblastic
+megalomaniacal
+megalomaniacally
+megalomanic
+megalopolis
+megalopolistic
+megalopolitan
+megalopolitanism
+megalopteran
+megalopterous
+megaparsec
+megaphone
+megaphonic
+megapolis
+megapolitan
+megarians
+megascopic
+megascopically
+megasporangium
+megaspore
+megasporic
+megasporogenesis
+megasporophyll
+megillah
+megrim
+megrims
+meiosis
+meiotic
+meiotically
+meister
+melancholia
+melancholiac
+melancholic
+melancholically
+melanic
+melanism
+melanist
+melanistic
+melanite
+melanitic
+melanoblast
+melanoblastic
+melanoblastoma
+melanochroic
+melanocyte
+melanogenesis
+melanoid
+melanophore
+melanosis
+melanotic
+melatonin
+melic
+melies
+meliorator
+meliorism
+meliorist
+melioristic
+mell
+melliferous
+mellifluent
+mellifluently
+mellifluous
+mellifluously
+mellifluousness
+mellitin
+mellophone
+melodist
+melodramatically
+melodramatist
+meltability
+meltable
+meltdown
+meltdown's
+meltwater
+meltwaters
+membranal
+membraneless
+membranous
+membranously
+meme
+memorably
+memorialist
+memoriter
+menarcheal
+mencken
+menckenese
+mendable
+mendicancies
+mendicancy
+mendicant
+mendicants
+mendicities
+mendicity
+mendoza
+menhaden
+menhir
+meningeal
+meninges
+meningitic
+meningitis
+meningococcal
+meningococcic
+meninx
+menisci
+meniscus
+meniscuses
+menominee
+menopausal
+menorah
+menorrhagia
+menorrhagic
+mensal
+mensch
+mense
+menseful
+menseless
+menservants
+menstruous
+menstruum
+mensurability
+mensural
+mensurational
+menswear
+mentalist
+mentation
+mentations
+menthol
+mentholated
+mentorship
+mentum
+meow
+meow's
+meowed
+meowing
+meows
+mephitic
+mephitis
+mercantilism
+mercantilist
+mercantilistic
+mercenarily
+mercery
+merchantable
+merchantman
+merchantmen
+mercurate
+mercurated
+mercurates
+mercurating
+mercuration
+mercurations
+mercurous
+merganser
+mergence
+mergences
+meridional
+meridionally
+merino
+meristically
+meriwether
+meroblastic
+meroblastically
+merocrine
+meromorphic
+meromyosin
+merrick
+merrimac
+merrymaker
+merryman
+merrythought
+mescal
+mesdames
+mesdemoiselles
+meseems
+mesenteric
+mesenteron
+meshwork
+meshy
+mesial
+mesially
+mesic
+mesically
+mesmerically
+mesmerism
+mesmerisms
+mesmerist
+mesmerists
+mesne
+mesoblast
+mesoblastic
+mesocarp
+mesoderm
+mesodermal
+mesodermic
+mesomerism
+mesomorph
+mesomorphic
+mesomorphism
+mesomorphy
+mesonephric
+mesonephros
+mesonic
+mesopause
+mesopelagic
+mesophase
+mesophases
+mesosome
+mesosphere
+mesospheric
+mesothoracic
+mesothorax
+mesothorium
+mesotron
+mesotronic
+mesotrophic
+messaline
+messiahship
+messianic
+messianism
+messuage
+messuages
+mestizo
+metabole
+metabolically
+metacarpal
+metacarpus
+metacentric
+metachromatic
+metaethical
+metaethics
+metagalactic
+metagalaxies
+metagalaxy
+metagenesis
+metagenetic
+metagenetically
+metalicities
+metalicity
+metalicity's
+metallically
+metallike
+metallist
+metallists
+metallographer
+metallographic
+metallographically
+metallographist
+metalloidal
+metallurgist
+metalware
+metamathematician
+metamathematics
+metamere
+metameric
+metamerically
+metamerism
+metamorphically
+metanephric
+metanephros
+metaph
+metaphase
+metaphysician
+metaplasia
+metaplasm
+metaplasmic
+metaplastic
+metaprotein
+metapsychological
+metapsychology
+metasomatic
+metasomatically
+metasomatism
+metastability
+metastable
+metastably
+metastasis
+metastatic
+metastatically
+metatarsal
+metatarsally
+metatarsus
+metate
+metathesis
+metathetic
+metathetical
+metathetically
+metathoracic
+metazoa
+metazoal
+metazoan
+metempsychosis
+metencephalic
+metencephalon
+meteorically
+meteoritical
+meteorograph
+meteorographic
+meteoroidal
+meteorol
+meteorologic
+meteorologicaly
+meteorologist
+methacrylate
+methadon
+methadone
+methamphetamine
+methanolic
+metheglin
+methinks
+methionine
+methodic
+methodistic
+methodologist
+methought
+methylal
+methylamine
+methylase
+methylate
+methylated
+methylation
+methylator
+methylcholanthrene
+methylic
+methylnaphthalene
+methylphenidate
+meticulosity
+metier
+metis
+metonym
+metonymic
+metonymical
+metonymically
+metonymy
+metope
+metopon
+metrazol
+metrication
+metrist
+metrological
+metrologically
+metrologist
+metrology
+metronomic
+metronomical
+metronomically
+mewl
+mezuza
+mezuzah
+mezzanine
+mezzanines
+mezzotint
+miasmatic
+miasmic
+micaceous
+micellar
+micelle
+micelle's
+micelles
+micra
+microampere
+microamperes
+microanalyst
+microanalytical
+microanatomical
+microanatomy
+microbarograph
+microbe
+microbe's
+microbeless
+microbes
+microbic
+microbiologic
+microbiological
+microbiologically
+microbiologist
+microbiology
+microbus
+microcalorimetric
+microcephalic
+microcephaly
+microcircuit
+microcircuitry
+microcircuits
+microcirculation
+microcirculatory
+microclimate
+microclimates
+microclimatic
+microclimatological
+microclimatologist
+microclimatology
+microcline
+microclines
+micrococcal
+micrococcus
+microconsumer
+microcontroller
+microcopier
+microcopy
+microcosmic
+microcosmically
+microcrystal
+microcrystalline
+microcrystallinity
+microcyte
+microcytic
+microdensitometer
+microdensitometer's
+microdensitometers
+microdensitometric
+microdensitometry
+microdissection
+microdomain
+microdomains
+microelectrode
+microelectronic
+microelectronically
+microelectronics
+microelectrophoresis
+microelectrophoretic
+microelectrophoretical
+microelectrophoretically
+microelement
+microencapsulate
+microencapsulation
+microenvironment
+microenvironmental
+microevolution
+microevolutionary
+microfarad
+microfarads
+microfauna
+microfaunal
+microfibril
+microfibrillar
+microfiche
+microfiches
+microfilaria
+microfilarial
+microfine
+microflash
+microflora
+microfloral
+microform
+microfossil
+microfungal
+microfungus
+microgamete
+microgametocyte
+micrograph
+micrographer
+micrographers
+microgroove
+microhabitat
+microhardness
+microinch
+microinjection
+microlith
+microlithic
+micromania
+micromanipulation
+micromanipulator
+micromere
+micrometeorite
+micrometeoroid
+micrometeorological
+micrometeorologist
+micrometeorology
+micromethod
+micrometric
+micrometry
+micromicrofarad
+micromicrofarads
+micromicron
+microminiature
+micronuclear
+micronucleate
+micronucleus
+micronutrient
+micronutrients
+microorganic
+micropaleontologic
+micropaleontological
+micropaleontologist
+micropaleontology
+microparasite
+microparasites
+microparasitic
+microphage
+microphonic
+microphonics
+microphotograph
+microphotographer
+microphotographic
+microphotography
+microphotometer
+microphotometer's
+microphotometers
+microphotometric
+microphotometrically
+microphotometry
+microphyll
+microphyllous
+microphysical
+microphysically
+microphysics
+micropipet
+micropipette
+microplankton
+micropore
+microporosity
+microporous
+microprint
+microprobe
+microprogrammable
+microprojection
+microprojector
+micropulsation
+micropump
+micropylar
+micropyle
+microradiograph
+microradiographic
+microradiography
+microreader
+microrelief
+microreproduction
+microscale
+microscopist
+microsection
+microseism
+microseismic
+microseismicity
+microsome
+microsomes
+microspectrophotometer
+microspectrophotometer's
+microspectrophotometers
+microspectrophotometric
+microspectrophotometrical
+microspectrophotometrically
+microspectrophotometry
+microsphere
+microspheric
+microsporangium
+microspore
+microsporic
+microstate
+microstructural
+microstructurally
+microstructure
+microstructures
+microsurgery
+microsurgical
+microtechnic
+microtechnique
+microtome
+microtomes
+microtonal
+microtonality
+microtonally
+microtone
+microtones
+microtubular
+microtubule
+microtubules
+micturate
+micturated
+micturates
+micturating
+micturition
+micturitions
+midafternoon
+midbrain
+midcapacity
+midcourse
+midden
+middens
+middies
+middlebrow
+middlebrowism
+middlebrows
+middorsal
+middy
+midfield
+midfielder
+midget
+midgut
+midline
+midmost
+midplane
+midportion
+midrash
+midrashic
+midrashim
+midrib
+midribbed
+midriff
+midriffs
+midsemester
+midsole
+midsummery
+midtown
+midwatch
+midwatches
+midwifery
+midwing
+midwintry
+midwived
+midwiving
+mig
+mightless
+mignonette
+migraine
+migraines
+migrainous
+migrancy
+migratetic
+migratetics
+migrational
+migrationist
+migrationists
+migrator
+migratorial
+migs
+mikado
+mikhail
+mikoyan
+mila
+milacre
+milady
+milanese
+milch
+mildewcide
+mildewproof
+mildewy
+mildhearted
+mildish
+milepost
+milesian
+milfoil
+milfoils
+milia
+miliaria
+miliarial
+miliarias
+miliary
+milieux
+milinch
+militance
+militances
+militancies
+militancy
+militaristic
+militaristically
+militaryism
+militaryisms
+militiaman
+milium
+milkily
+milkless
+milklike
+milkman
+milkmen
+milksop
+milksopping
+milksoppy
+milkstone
+millable
+millage
+millboard
+millcourse
+milldam
+millenaries
+millenary
+millenia
+millennial
+millerite
+millesimal
+millesimally
+millhouse
+milliammeter
+milliammeter's
+milliammeters
+milliard
+milliary
+millibar
+millibarn
+millicron
+millicurie
+millicycle
+millidarcy
+millieme
+milliemes
+milliequivalent
+millifarad
+milligal
+millihenry
+millihertz
+millihg
+millilambert
+millilux
+millime
+millimetric
+millimicrofarad
+millimicrofarads
+millimicron
+millimicrosecond
+millimolar
+millimolarity
+millimole
+milline
+milliner
+millionairedom
+millionairess
+millionary
+millionfold
+milliphot
+millipoise
+millirad
+milliroentgen
+millman
+millmen
+millowner
+millpond
+millponds
+millrace
+millraces
+millsite
+millstream
+millstreams
+milord
+milquetoast
+milquetoasts
+milt
+milter
+mim
+mimetism
+mimical
+mimicry
+mimosa
+min
+minable
+minaret
+minareted
+minarets
+minatory
+mincy
+mineable
+minestrone
+minesweeping
+mingy
+miniaturist
+miniaturistic
+miniaturists
+minibus
+minibuses
+minicam
+minicamera
+minicar
+minicartridge
+minikin
+minim
+minimalism
+ministrable
+ministrant
+ministration
+minitrack
+minium
+minot
+minous
+minster
+minstrelsy
+mintage
+minuscular
+minutia
+minutial
+minx
+minxes
+miocrystalline
+mioses
+miosis
+miotic
+mirabilite
+miracular
+miraculism
+miraculisms
+miraculist
+miraculists
+mirate
+mirated
+mirates
+mirating
+miration
+mirations
+mirky
+mirrorlike
+mirrory
+mirthful
+mirthfully
+mirthfulness
+mirths
+miry
+misaddress
+misaddressed
+misadjustment
+misadventure
+misadventured
+misadventures
+misadventurous
+misadvise
+misaim
+misalliance
+misally
+misandry
+misanthropically
+misanthropism
+misanthropist
+misanthropists
+misanthropy
+misappreciate
+misappreciation
+misapprehend
+misapprehended
+misapprehending
+misapprehendingly
+misapprehends
+misapprehension
+misapprehensions
+misapprehensive
+misapprehensively
+misapprehensiveness
+misappropriate
+misappropriates
+misappropriation
+misarranged
+misarrangement
+misarray
+misascription
+misassignment
+misattribution
+misbecome
+misbecoming
+misbeget
+misbehadden
+misbeholden
+misbelief
+misbelieve
+misbeliever
+misbelieving
+misbelievingly
+misbeseem
+misbestow
+misbirth
+misc
+miscalculate
+miscalculates
+miscalculating
+miscalculator
+miscall
+miscaller
+miscast
+miscasting
+miscasts
+miscegenational
+miscellanea
+miscellaneity
+miscellanist
+miscellanists
+mischance
+mischiefful
+miscibility
+miscible
+misclassifications
+misclassify
+miscomprehend
+miscomprehension
+misconceit
+misconceive
+misconceived
+misconceiver
+misconceives
+misconceiving
+misconduct
+misconducted
+misconducting
+misconducts
+miscontent
+miscontentment
+miscook
+miscopy
+miscorrect
+miscorrected
+miscounsel
+miscounseled
+miscreance
+miscreances
+miscreate
+miscreation
+miscreative
+miscreator
+misdate
+misdeal
+misdealing
+misdeem
+misdeems
+misdeliver
+misdelivered
+misdelivery
+misdemean
+misdescribe
+misdescription
+misdescriptive
+misdo
+misdoer
+misdoing
+misdoubt
+miseducated
+miseducation
+misemphasis
+misemphasization
+misemphasize
+misemphasized
+misemphasizes
+misemphasizing
+misemploy
+misemployment
+misericorde
+mises
+misesteem
+misestimate
+misestimation
+misfeasance
+misfeasor
+misfeed
+misfile
+misfiled
+misfiles
+misfiling
+misgive
+misgives
+misgovern
+misgovernment
+misguidance
+mishandle
+mishandled
+mishandles
+mishandling
+mishear
+mishmash
+misimpression
+misimprove
+misinformative
+misintelligence
+misinterpretable
+misjoinder
+misknow
+misknowledge
+misknows
+mislabel
+mislay
+mislaying
+mislays
+misleared
+mislike
+mismachine
+mismanagement
+mismarriage
+mismate
+misogamic
+misogamist
+misogamists
+misogamy
+misogynic
+misogynistic
+misologist
+misology
+misoneism
+misorder
+misperception
+misperceptions
+misplay
+mispleading
+mispoint
+mispraise
+misprint
+misprision
+misprisions
+misprize
+misprized
+misprizes
+misprizing
+mispunctuate
+mispunctuation
+misquotation
+misquote
+misquotes
+misreckon
+misrecollect
+misrecollection
+misregister
+misregistration
+misremember
+misreport
+misrepresentative
+misrule
+misruled
+misruler
+misrules
+misruling
+missend
+misshape
+misshapes
+missileer
+missileers
+missileman
+missilemen
+missilery
+missilry
+missionate
+missort
+missout
+misspeak
+misspend
+misspended
+misspender
+misspending
+misspends
+misstrike
+misterm
+mistful
+misthink
+mistily
+mistime
+mistimed
+mistrain
+mistranslate
+mistranslation
+mistreatment
+mistrustful
+mistrustfully
+mistrustfulness
+misusage
+misvalue
+misventure
+miswrite
+miswrites
+miswriting
+mitch
+miterwort
+mitigator
+mitigators
+mitigatory
+mitochondria
+mitochondrion
+mitogenesis
+mitogenetic
+mitogenic
+mitoinhibitory
+mitosis
+mitotic
+mitotically
+mitral
+mitt
+mitted
+mittimus
+mitts
+mitzvah
+mitzvah's
+mitzvahes
+mixable
+mixologist
+mixologists
+mixology
+mizzenmast
+mizzle
+mizzled
+mizzles
+mizzling
+mizzly
+mlea
+moanful
+moanfully
+mobbish
+mobbishly
+mobbishness
+mobbism
+mobocracy
+mobocrat
+mobocratic
+mocha
+mockernut
+moderationist
+moderatism
+moderato
+moderatorship
+modernist
+modicity
+modificative
+modiste
+modulability
+modulatory
+moduli
+mogul
+mohair
+mohm
+moil
+moiler
+moiling
+moilingly
+moistureless
+molality
+molarity
+moldable
+molecularity
+moleskin
+moleskins
+molestation
+molestations
+molluscan
+molluskan
+molotov
+molt
+molter
+molto
+molts
+molucca
+moly
+molybdate
+molybdic
+molybdous
+momental
+momentaneous
+monachal
+monachism
+monadism
+monandrous
+monandry
+monarchal
+monarchial
+monarchical
+monarchically
+monarchism
+monarchist
+monarchistic
+monarchists
+monasterial
+monastical
+monastically
+monatomic
+monde
+mondrian
+monel
+moner
+monestrous
+monet
+monetarily
+moneybags
+moneylender
+moneylending
+moneyless
+moneymake
+moneymaker
+moneywort
+monger
+mongered
+mongering
+mongers
+mongolism
+mongoloid
+mongrel
+mongrelism
+mongrelly
+mongrelness
+monic
+monicker
+monied
+moniker
+monilia
+monish
+monism
+monist
+monistic
+monistical
+monition
+monitions
+monitorial
+monitorially
+monitorship
+monitory
+monitress
+monkeries
+monkery
+monkeyflower
+monkeyshine
+monkhood
+monoacid
+monoacidic
+monoamine
+monochasial
+monochromat
+monochromatically
+monochromaticity
+monochromatism
+monochromic
+monochromist
+monocline
+monocoque
+monocracy
+monocrat
+monocratic
+monocultural
+monoculture
+monocycle
+monocyclic
+monocycly
+monocyte
+monocytic
+monodisperse
+monodist
+monodrama
+monodramatic
+monoecious
+monoeciously
+monoecism
+monoenergetic
+monoester
+monofilament
+monofuel
+monogamic
+monogamist
+monogamists
+monogastric
+monogenean
+monogenesis
+monogenetic
+monogenic
+monogenically
+monogerm
+monogram
+monogram's
+monogrammatic
+monograms
+monographic
+monographical
+monography
+monogynous
+monogyny
+monohybrid
+monoid
+monolayer
+monologuist
+monomania
+monomaniac
+monometallic
+monometer
+monometer's
+monometers
+monomolecular
+monomolecularly
+monomorphemic
+monomorphic
+monomorphism
+monomorphous
+monophonically
+monophony
+monophthong
+monophthongal
+monophyletic
+monophyletism
+monoplane
+monoploid
+monopodial
+monopodially
+monopolist
+monopolistically
+monopropellant
+monopsony
+monopulse
+monorail
+monorail's
+monorails
+monosaccharide
+monosaccharides
+monosomic
+monostat
+monostatic
+monosyllabically
+monosyllabicity
+monosymmetric
+monosymmetry
+monosynaptic
+monosynaptically
+monotheist
+monotheistical
+monotheistically
+monotint
+monotrematous
+monotreme
+monotrichous
+monotype
+monotypic
+monovalent
+monovular
+monoxide
+monozygotic
+monsoonal
+monstrance
+monstrances
+montaigne
+monte
+monticule
+monumentless
+mooch
+moocher
+mooches
+mooching
+moola
+moolah
+moonbeam
+moonbeam's
+moonbeams
+moonbow
+mooncalf
+mooneye
+moonish
+moonishly
+moonless
+moonlet
+moonquake
+moonrise
+moonscape
+moonseed
+moonset
+moonstone
+moonstruck
+moonward
+moony
+moorage
+mopper
+moppet
+morainal
+morainic
+moralism
+moralistically
+morassy
+moray
+mordacious
+mordaciously
+mordacity
+mordancy
+mordent
+morehouse
+morel
+moresque
+morganatic
+morganatically
+morganite
+moribundity
+moron
+moronically
+moronism
+moronity
+morosity
+morph
+morphinic
+morphinism
+morpho
+mort
+mortarboard
+mortem
+mortgagor
+mortgagors
+mortimer
+mortise
+mortising
+mortmain
+mortuaries
+mortuary
+mortuary's
+mosaically
+mosaicism
+mosaicist
+moscone
+mosey
+moseyed
+moseying
+mosquitoey
+mossback
+mossbacked
+mosslike
+mot
+mote
+motet
+mothball
+motherhouse
+motherless
+motherlessness
+mothproof
+mothproofer
+motile
+motility
+motivic
+motivity
+motoneuron
+motorbike
+motorboat
+motorboater
+motorboating
+motorcade
+motorcade's
+motorcades
+motorcyclist
+motordrome
+motoric
+motorically
+motorless
+motortruck
+motorway
+mots
+moulage
+moulin
+moulins
+moult
+mountaintop
+mountaintop's
+mountaintops
+mountainy
+mountebank
+mountebankery
+mousetrap
+mousey
+mousily
+moussaka
+mousse
+mouthier
+mouthlike
+mouthpart
+mouthy
+movability
+movably
+moveless
+movelessly
+movelessness
+moviedom
+moviegoer
+moviemaker
+mown
+moxie
+mozzarella
+mu
+muciferous
+mucilaginous
+mucilaginously
+muckrake
+muckraker
+muckraking
+mucosa
+mucous
+mudded
+muddily
+mudhole
+mudhole's
+mudholes
+mudsill
+mudstone
+mudstones
+muezzin
+mufti
+muftis
+mugged
+mugger
+muggily
+mugho
+mugwump
+muhammad
+mukluk
+muley
+muliebrity
+mullein
+mullet
+mullets
+mullion
+mullite
+multiaperture
+multicavity
+multicellularity
+multichip
+multicollector
+multicompletion
+multicoupler
+multicycle
+multideck
+multielectrode
+multiengine
+multifactorial
+multifactrially
+multifarious
+multifariously
+multifariousness
+multifold
+multiform
+multiformity
+multihued
+multilane
+multilaned
+multilayer
+multilayered
+multilayers
+multilingual
+multilingualism
+multilingualist
+multilingually
+multimeter
+multimeter's
+multimeters
+multinucleate
+multinucleated
+multipactor
+multiparous
+multipartite
+multiphase
+multiphasic
+multiphastic
+multiplicable
+multiplicate
+multiplicates
+multipolar
+multipolarity
+multipronged
+multiracial
+multiracialism
+multisectoral
+multisegment
+multistatic
+multistory
+multivalence
+multivalued
+multivolume
+multivolumed
+mummer
+mummery
+mumming
+mump
+mumper
+mumps
+mundt
+mung
+munificence
+munist
+munroe
+muonic
+muralist
+murderee
+murderess
+muriate
+murkily
+murmurous
+murmurously
+murrain
+murre
+murrey
+murrow
+muscadine
+muscatel
+muscly
+muscularity
+musculoskeletal
+musee
+musette
+musettes
+mushily
+musicale
+musicological
+musicologist
+musketeer
+musketry
+muskie
+muskier
+muskies
+muskiness
+musky
+mussier
+mussily
+mussiness
+mussy
+mustily
+mutably
+mutafacient
+mutagen
+mutagenesis
+mutagenic
+mutagenically
+mutagenicity
+mutandis
+mutase
+mutatis
+muticous
+mutilator
+mutine
+mutined
+mutining
+mutinous
+mutinously
+mutinousness
+muttonchops
+muttony
+mutualism
+mutualist
+mutualistic
+mutuel
+muumuu
+muzzier
+muzzily
+muzziness
+muzzy
+mycobacteria
+mycoplasma
+mycorrhiza
+mycosis
+mycotic
+myel
+myeline
+myeloid
+myocarditis
+myofibril
+myoglobin
+myopically
+myosin
+myosotis
+myotic
+myotome
+myotonia
+myriameter
+myriameter's
+myriameters
+myriapod
+myriopod
+myristate
+myrmecological
+myrrh
+mystagogy
+mythmaker
+mythmaking
+mythologer
+mythologic
+mythologist
+mythomania
+mythomaniac
+mythopoeic
+mythopoetic
+mythopoetical
+mythos
+nacelle
+nacreous
+nagger
+naiad
+naivety
+nakamura
+nakoma
+namable
+nannies
+nanny
+nanook
+napalm
+nape
+napery
+napes
+naphthalene
+naphthalenic
+naphthene
+naphthenic
+naphthol
+napless
+napper
+nappier
+nappies
+nappy
+narc
+narcism
+narcissi
+narcissism
+narcist
+narcolepsy
+narcoleptic
+narcos
+narcotically
+narrational
+narrowminded
+narwal
+narwhal
+narwhal's
+narwhals
+nascence
+nascency
+nastic
+natant
+natation
+natations
+natatorial
+natatorium
+natatory
+nate
+nates
+nationalistically
+nativism
+nativist
+nativistic
+nattily
+naturalistically
+naturam
+naturopath
+naughtily
+nauseant
+nauseous
+nauseously
+nauseousness
+nauseum
+naut
+navaho
+nave
+naves
+navicular
+navigability
+navigably
+navigational
+navigationally
+navona
+navtas
+naw
+nawab
+nazification
+nazifications
+nazified
+nazifies
+nazify
+nazifying
+neath
+nebbish
+nebulosity
+necessitarian
+necessitarianism
+necessitous
+necessitously
+necessitousness
+neckerchief
+necrological
+necrologist
+necrologists
+necrology
+necromantically
+necrophagia
+necrophagous
+necrophagy
+necrophilia
+necrophilic
+necrophilism
+necropolis
+necroses
+nectareous
+nectarine
+needlelike
+needlewoman
+needlewomen
+nefarious
+nefariously
+nefariousness
+negational
+negativist
+negativistic
+negativists
+negaton
+negatron
+neglectful
+neglectfully
+neglectfulness
+negligibility
+negligibly
+negotiability
+negotiator
+negotiators
+negotiatory
+negrophile
+negrophilism
+nematicidal
+nematicide
+nematocyst
+nemeses
+nemophila
+neo
+neoanthropic
+neoclassicism
+neoclassicist
+neocosmic
+neofascism
+neogenesis
+neogenetic
+neoglycolipid
+neoglycolipids
+neoliberalism
+neolith
+neological
+neologistic
+neology
+neonate
+neoorthodox
+neoorthodoxy
+neoplasia
+neoplasm
+neoplastic
+neoplasticism
+neoplasticist
+neoplasticists
+neostigmine
+neotenic
+neoteny
+neoteric
+neotype
+nepenthe
+nepenthean
+nephanalysis
+nepheline
+nephelinic
+nephelinite
+nephelinitic
+nephelite
+nephelometer
+nephelometer's
+nephelometers
+nephelometric
+nephelometry
+nephometer
+nephometer's
+nephometers
+nephoscope
+nephrectomy
+nepotism
+nepotist
+nepotistic
+nepotists
+nereid
+nervation
+nervations
+nervosity
+nescience
+nesciences
+nescient
+nethermost
+netkeeper
+netless
+netlike
+netter
+netty
+neumatic
+neuralgic
+neuritic
+neuroanatomic
+neuroanotomy
+neuroblastoma
+neurochemistry
+neurocirculatory
+neuroendocrine
+neuroepithelial
+neurofibril
+neurofibrillary
+neurogenic
+neurogenically
+neuroglia
+neuroglial
+neuronic
+neuropathic
+neuropathically
+neuropathy
+neurospora
+neurosurgeon
+neurosurgery
+neurosurgical
+neurotically
+neuroticism
+neurotoxic
+neurotoxicity
+neurotoxin
+neurotropic
+neutercane
+neutralistic
+neutronium
+neutrophil
+neutrophile
+neutrophilic
+neutrophilis
+neutrophils
+neve
+nevermore
+nevers
+nevus
+newbury
+newfangled
+newfangledness
+newish
+newsagent
+newsagents
+newsbreak
+newsier
+newsiness
+newsless
+newsmagazine
+newsmonger
+newsprint
+newsroom
+newsy
+niacin
+nib
+nibelungenlied
+nibs
+niccolo
+nickelic
+nickeliferous
+nickelodeon
+nickelous
+nicklaus
+nicknameless
+nicotinamide
+nicotinic
+nidification
+nidifugous
+nietzschean
+nigger
+nightclothes
+nightclubber
+nightglow
+nightie
+nighties
+nightlong
+nightshade
+nightside
+nightstand
+nightstick
+nighttide
+nightwalker
+nighty
+nihilianism
+nihilistically
+nihility
+nijinsky
+nill
+nilmanifold
+nimbostratus
+nimiety
+nimming
+nincompoop
+nincompoopery
+ninebark
+ninepin
+ninepins
+ninetyfold
+ninnies
+ninny
+ninnyhammer
+nipper
+nippers
+nippier
+nippily
+nippiness
+nippy
+nisei
+niseis
+nit
+nite
+nitid
+nitrator
+nitrification
+nitrifications
+nitrify
+nitrile
+nitro
+nitrobenzene
+nitrocellulose
+nitrocellulosic
+nitrofuran
+nitroglycerin
+nitroparaffin
+nitros
+nitrosamine
+nitrosoamine
+nitty
+nitwit
+nitwitted
+nobbier
+nobble
+nobbled
+nobbling
+nobby
+noblewoman
+nocent
+noces
+nociceptive
+nock
+nocking
+noctambulation
+noctambulism
+noctambulist
+nocturn
+nocuous
+nocuously
+nodality
+nodder
+noddies
+noddle
+noddy
+nodi
+nodical
+nodose
+nodosity
+nodulation
+nodus
+noes
+noetic
+nog
+noggin
+nogging
+nohow
+noisome
+noisomely
+noisomeness
+nolo
+noma
+nomad
+nomadic
+nomadism
+nomads
+nomenclator
+nomenclatorial
+nomenclatural
+nomic
+nomina
+nominalism
+nominalist
+nominalistic
+nominator
+nominators
+nomogram
+nomogram's
+nomograms
+nomograph
+nomographer
+nomographic
+nomographically
+nomographies
+nomography
+nomological
+nomology
+nomothetic
+nonage
+nonagenarian
+nonagon
+nonallelic
+nonbank
+nonbook
+noncalcareous
+nonce
+nonchalance
+noncharitable
+noncom
+nonconcurrence
+nonconcurrency
+noncondensing
+nonconducting
+nonconductor
+nonconductors
+nonconfidence
+nonconform
+nonconformable
+nonconformably
+nonconformance
+nonconformer
+nonconforming
+nonconformism
+nonconformity
+noncooperation
+noncooperationist
+noncooperative
+noncooperator
+noncrossing
+noncurrent
+nondeductibility
+nondeductible
+nondefense
+nondefense's
+nondefenses
+nondeforming
+nondegenerate
+nondemocratic
+nondestructive
+nondirectional
+nondirective
+nondisjunction
+nondisjunctional
+nondistinctive
+nondivided
+nondormant
+nondramatic
+nondrying
+noneconomist
+nonelectrolyte
+nonentities
+nonentity
+nonesuch
+noneuclidean
+nonfat
+nonfeasance
+nonfictional
+nonfigurative
+nonflammable
+nonflowering
+nonfragmenting
+nongovernment
+nongovernmental
+nonillion
+nonimpact
+nonimpinging
+noninductive
+nonintersecting
+nonintervention
+noninterventionist
+noninverting
+noninvolvement
+nonjoinder
+nonjuring
+nonjuror
+nonlinguist
+nonliterate
+nonloaded
+nonmatching
+nonmetal
+nonmoral
+nonmultiple
+nonnucleated
+nonobjective
+nonobjectivism
+nonobjectivist
+nonobjectivity
+nonobservance
+nonoccurrence
+nonparallel
+nonparametric
+nonparametrics
+nonpareil
+nonparticipant
+nonparticipating
+nonparticipation
+nonpartisanship
+nonpast
+nonpaternity
+nonpathogenic
+nonpermanent
+nonpersonal
+nonplus
+nonpluses
+nonpolar
+nonporous
+nonpositive
+nonpossession
+nonpossessor
+nonprint
+nonprinting
+nonproducer
+nonproductive
+nonproductively
+nonproductiveness
+nonprofessional
+nonprofessionally
+nonprofitable
+nonprogressive
+nonpros
+nonprossed
+nonprossing
+nonprotein
+nonreactive
+nonreader
+nonrealistic
+nonreclosing
+nonrecording
+nonregulation
+nonreimbursable
+nonrelativistic
+nonreligious
+nonremovable
+nonrenewable
+nonrepresentational
+nonrepresentationalism
+nonrepresentative
+nonresidence
+nonresidency
+nonresistant
+nonrestraint
+nonrestricted
+nonrestrictive
+nonretractable
+nonreturnable
+nonrigid
+nonscheduled
+nonscientific
+nonseasonal
+nonsecretor
+nonsectarian
+nonsegregated
+nonsegregation
+nonsignificant
+nonsignificantly
+nonskid
+nonslip
+nonsocial
+nonspecific
+nonsporting
+nonsupport
+nonsyllabic
+nonsynchronous
+nontemporal
+nontenure
+nonunion
+nonuse
+nonuser
+nonviable
+nonviolence
+nonvolatile
+nonworker
+normotensive
+northeasternmost
+northeastward
+northeastwards
+northwestward
+northwestwards
+nosebag
+nosebag's
+nosebags
+nosegay
+nosepiece
+nosey
+noseying
+nosh
+nosher
+nosily
+nosologic
+nosological
+nosologically
+nosology
+nostrum
+nota
+notability
+notarial
+notarially
+notarius
+notecase
+noteless
+notepaper
+noteworthily
+notional
+notionality
+notionally
+notocord
+nougat
+nouncing
+nous
+novaculite
+novae
+novelette
+novelettish
+novelistic
+novella
+novelle
+novemdecillion
+novena
+novocaine
+nowaday
+noway
+noways
+nowhither
+nowise
+noyes
+nu
+nub
+nubbin
+nubble
+nubbles
+nubbly
+nubility
+nucellar
+nucelli
+nucellus
+nuchal
+nucleant
+nuclease
+nucleator
+nuclein
+nucleocapsid
+nucleolar
+nucleon
+nucleon's
+nucleonic
+nucleonics
+nucleons
+nucleophile
+nucleophilic
+nucleophilically
+nucleophilicity
+nucleoplasm
+nucleoplasmatic
+nucleoplasmic
+nucleoprotein
+nucleoside
+nucleosynthesis
+nucleotidase
+nuclidic
+nudibranch
+nugent
+nullificationist
+nulliparous
+numberable
+numbskull
+numia
+numis
+numismatically
+nummular
+numskull
+nunciation
+nunciature
+nuncupate
+nuncupation
+nuncupative
+nunes
+nunnery
+nuovo
+nuptiality
+nursemaid
+nurserymaid
+nurseryman
+nursling
+nurtural
+nurturant
+nutational
+nuthatch
+nutlike
+nutria
+nutriment
+nutted
+nutting
+nux
+nymphal
+nymphalid
+nymphet
+nymphette
+nympholepsy
+nympholept
+nymphomaniacal
+nystagmic
+nystagmus
+o'er
+oafish
+oafishly
+oafishness
+oarsman
+oarsmanship
+oatcake
+oatcake's
+oatcakes
+obbligato
+obcordate
+obeah
+obeisance
+obi
+objectionably
+objectivism
+objectivist
+objectivistic
+objectless
+objectlessness
+objurgate
+objurgated
+objurgates
+objurgating
+objurgation
+objurgations
+objurgatory
+oblast
+obligator
+obligatorily
+obligee
+obligor
+obligors
+obliquity
+obliterator
+obliviated
+obliviates
+obliviating
+oblongatal
+oblongated
+oblongish
+obloquious
+obloquy
+obnubilate
+obnubilated
+obnubilates
+obnubilating
+obnubilation
+obnubilations
+obovate
+obovoid
+obscurant
+obscurantic
+obscurantism
+obscurantist
+obscuration
+obscurations
+obsessional
+obsessionally
+obsolesce
+obstetric
+obstetrical
+obstetrically
+obstetrician
+obstetrician's
+obstetricians
+obstetrics
+obstreperous
+obstreperously
+obstreperousness
+obstructionism
+obstructionistic
+obstructor
+obstruent
+obtainability
+obtainment
+obtect
+obtected
+obtest
+obtestation
+obtrusion
+obtund
+obturate
+obturated
+obturates
+obturating
+obturation
+obturator
+obvert
+occas
+occiput
+occludent
+occlusal
+occultation
+occultations
+occultism
+occultist
+occurrent
+oceana
+oceanarium
+oceanfront
+oceangoing
+oceanographer
+oceanographer's
+oceanographers
+oceanographical
+oceanographically
+oceanologic
+oceanological
+oceanologically
+oceanologist
+oceanology
+ocellar
+ocellate
+ocellated
+ocellation
+ocelli
+ocellus
+och
+ochlocracy
+ochlocrat
+ochlocratic
+ochlocratical
+oconomowoc
+ocotillo
+octadecyl
+octahedra
+octahedral
+octahedrally
+octameter
+octameter's
+octameters
+octandrious
+octant
+octant's
+octants
+octodecillion
+octodecimo
+octoploid
+octoploidy
+octopod
+octopodan
+octopodous
+octosyllabic
+octosyllable
+octroi
+oculomotor
+odalisque
+oddball
+oddball's
+oddballs
+oddment
+odea
+odeum
+odic
+odilo
+odograph
+odontologst
+odontology
+odorant
+odoriferous
+odoriferously
+odoriferousness
+oedipal
+oeillade
+oenology
+oenomel
+oersted
+oeuvre
+oeuvres
+offcast
+officialese
+officialism
+officiant
+officiary
+offish
+offishly
+offishness
+offprint
+offprints
+offsaddle
+offscour
+offscouring
+offscreen
+offside
+ofttimes
+ogeographically
+ogle
+ogler
+ogles
+ogling
+ogre
+ogreish
+ogress
+ohmage
+ohmically
+ohs
+oilcan
+oilily
+oilskin
+oilstone
+oink
+okamoto
+okapi
+okra
+olasticism
+oldfangled
+oldie
+oldish
+oleaginous
+oleaginously
+oleaginousness
+oleaster
+oleate
+olefin
+oleg
+oleophilic
+oleophobic
+olfaction
+olfactions
+olfactive
+olfactology
+olfactometer
+olfactometer's
+olfactometers
+olfactorily
+olfactory
+oligarch
+oligarchical
+oligochaete
+oligoclase
+oligomer
+oligomer's
+oligomers
+oligosaccharide
+oligosaccharide's
+oligosaccharides
+olivine
+olympiad
+om
+ombudsman
+ombudsman's
+ombudsperson
+omelette
+omental
+omentum
+omer
+omissible
+ommatidial
+ommission
+omnidirectional
+omnifarious
+omnifariously
+omnifariousness
+omnificence
+omnificences
+omnificent
+omnify
+omnipotency
+omnipresence
+omnirange
+omniscience
+omnisciency
+omnist
+omnivorous
+omnivorously
+omnivorousness
+onanistic
+oncogene
+oncogene's
+oncogenes
+oncogenic
+onefold
+oneiric
+oneirocritic
+oneirocritical
+oneirocritically
+oneiromancy
+onionskin
+onium
+onload
+onlooking
+onomastic
+onomastics
+onomatology
+onomatopoeia
+onomatopoeia's
+onomatopoeic
+onsetting
+onshore
+onside
+onstage
+ontically
+ontogenesis
+ontogenetic
+ontogenetically
+ontologist
+oocyte
+oomph
+oozier
+oozy
+op
+opalescence
+opalescences
+opaline
+openability
+openable
+openendedness
+openhanded
+openhandedly
+openhandedness
+openhearted
+openheartedly
+openheartedness
+openmouthed
+openmouthedly
+openmouthedness
+openwork
+operability
+operably
+operatically
+operationalism
+operationalist
+operationalistic
+operationism
+operationist
+opercular
+operculate
+operculated
+operculum
+operettist
+operon
+ophidian
+ophiology
+ophiophagous
+ophite
+ophitic
+ophthalmologic
+ophthalmologically
+ophthalmology
+ophthalmoscope
+ophthalmoscopic
+ophthalmoscopical
+ophthalmoscopy
+opine
+opined
+opines
+oping
+opining
+opinionate
+opinionative
+opinionatively
+opinionativeness
+opportunist
+opposability
+opposeless
+oppositional
+opprobrious
+opprobriously
+opprobriousness
+oppugn
+oppugner
+ops
+opsonic
+opsonin
+optative
+optatively
+optician
+optima
+optimistical
+optimo
+optoacoustic
+optoisolate
+optokinetic
+optometrical
+opulence
+opuntia
+opuscule
+opusculum
+ora
+orach
+orache
+oracular
+oracularity
+oracularly
+orality
+orangeade
+orangeroot
+orangery
+orangewood
+orangey
+orangish
+orangoutan
+orangy
+oratio
+oratoric
+orbicular
+orbicularity
+orbicularly
+orbiculate
+orbiculately
+orca
+orca's
+orcas
+orch
+orchardist
+orchardman
+orchesis
+orchestrational
+orchestrator
+orchestre
+orchis
+ordainment
+orderless
+ordinand
+ordines
+ordure
+organdie
+organelle
+organicism
+organicist
+organismal
+organismically
+orgasmic
+orgastic
+orgiastically
+orgulous
+orientable
+orientalism
+orientalist
+orientational
+orientationally
+orienteering
+orificial
+oriflamme
+origami
+origanum
+orismological
+orismology
+orison
+orney
+ornith
+ornithic
+ornithine
+ornithology
+ornithology's
+orogenic
+orogeny
+orographical
+orographically
+orotund
+orotundity
+ort
+orthant
+orthicon
+ortho
+orthocephalic
+orthocephalous
+orthocephaly
+orthochromatic
+orthoclase
+orthoclastic
+orthodontia
+orthoepic
+orthoepical
+orthoepically
+orthoepist
+orthoepy
+orthogenesis
+orthogenetic
+orthogenetically
+orthogenic
+orthognathism
+orthognathous
+orthognathy
+orthograde
+orthographical
+orthographically
+orthopsychiatric
+orthopsychiatrist
+orthopsychiatry
+orthopteran
+orthopterist
+orthopteroid
+orthopteron
+orthorhombic
+orthoscope
+orthoscopes
+orthoscopic
+orthotic
+orthotics
+orthotist
+orthotropic
+orthotropically
+orthotropism
+orthotropous
+ortolan
+orts
+oryx
+oryxes
+orzae
+oscillational
+oscillogram
+oscillogram's
+oscillograms
+oscillograph
+oscillographic
+oscillographically
+oscillography
+oscilloscopic
+oscilloscopically
+oscine
+osculate
+osculated
+osculates
+osculating
+osculation
+osculations
+osculatory
+osculum
+osier
+osmatic
+osmeterium
+osmic
+osmiridium
+osmolal
+osmolality
+osmolar
+osmolarity
+osmometer
+osmometer's
+osmometers
+osmometric
+osmometry
+osmoregulation
+osmoregulatory
+osmose
+osmosed
+osmosing
+osmotically
+osmous
+osmunda
+oso
+osram
+osric
+ossicle
+ossicular
+ossiculate
+ossiculated
+ossificatory
+ossifrage
+ossuary
+osteitis
+ostensive
+ostensively
+ostensorium
+ostentation
+ostentations
+osteoarthritic
+osteoarthritis
+osteoblast
+osteoblastic
+osteoclast
+osteoclastic
+osteocyte
+osteoid
+osteological
+osteologically
+osteologist
+osteoma
+osteopathically
+osteophyte
+osteophytic
+osteoplastic
+osteoplasty
+ostracod
+otherguess
+otherwhere
+otherwhile
+otherwhiles
+otiose
+ouabain
+ouan
+oubliette
+ough
+oui
+outbalance
+outbid
+outbound
+outbrave
+outbreed
+outbreeding
+outbuilding
+outby
+outbye
+outcaste
+outcrop
+outcross
+outdazzle
+outdistance
+outdoorsman
+outdoorsmanship
+outdoorsy
+outdraw
+outercoat
+outfall
+outfight
+outfighting
+outfitter
+outfitting
+outflank
+outflanker
+outfoot
+outgas
+outgeneral
+outgiving
+outgo
+outgoes
+outguess
+outgun
+outhaul
+outlier
+outmatch
+outmode
+outmoding
+outmost
+outpace
+outpaced
+outplay
+outpoint
+outport
+outporter
+outpull
+outputted
+outrace
+outrance
+outrange
+outrank
+outride
+outrider
+outrival
+outscore
+outsell
+outsert
+outshine
+outshoot
+outshout
+outsight
+outsit
+outsize
+outskirt
+outsleep
+outsmell
+outsoar
+outsole
+outspeak
+outspeed
+outspend
+outspent
+outspin
+outstand
+outstare
+outstart
+outstay
+outstretch
+outtake
+outtalk
+outthink
+outturn
+outwear
+outwork
+ouvre
+ouzel
+ovarial
+ovarian
+ovariectomy
+ovariole
+ovariotomy
+ovaritis
+ovenbird
+ovenbirds
+overabundant
+overact
+overaction
+overactivity
+overarm
+overawe
+overbalance
+overbear
+overbearance
+overbid
+overbite
+overblew
+overblow
+overblowing
+overblows
+overbought
+overbuild
+overbuy
+overcall
+overcalled
+overcalling
+overcalls
+overcapacity
+overcareful
+overcarefully
+overcautious
+overcharge
+overcompensate
+overcompensation
+overcompensatory
+overconfidence
+overcurrent
+overcurrents
+overdetermination
+overdetermined
+overdevelop
+overdevelopment
+overdo
+overdominance
+overdominant
+overdress
+overdrive
+overemphasization
+overemphasization's
+overemphasizations
+overet
+overexcite
+overexcitement
+overexposure
+overfastidious
+overfed
+overfish
+overfleshed
+overflight
+overflown
+overfly
+overgarment
+overglaze
+overgraze
+overgrow
+overgrowth
+overily
+overindulge
+overindulgence
+overindulgent
+overissue
+overissued
+overissues
+overissuing
+overleap
+overlearn
+overlie
+overlong
+overlord
+overlordship
+overman
+overmaster
+overmatch
+overmuch
+overoptimism
+overoptimist
+overoptimistic
+overoptimistically
+overpass
+overpay
+overpersuade
+overpersuasion
+overplay
+overplus
+overpopulate
+overpraise
+overprize
+overproduce
+overproduced
+overproduces
+overproducing
+overpronounce
+overproof
+overproportion
+overprotect
+overrate
+overreact
+overreaction
+overrefine
+overrefinement
+overrepresent
+overripe
+oversanguine
+oversea
+overseen
+oversell
+overselling
+oversells
+oversensitive
+oversensitiveness
+oversexed
+overshoe
+overskirt
+overslaugh
+oversleep
+overslip
+oversold
+oversoul
+overspeculate
+overspeculation
+overspeed
+overspend
+overspender
+overspending
+overspends
+overspread
+oversteepen
+oversteer
+overstep
+oversteps
+overstock
+overstory
+overstrain
+overstrew
+overstride
+overstrung
+overstuff
+overstuffed
+overstuffing
+overstuffs
+oversubscribe
+oversubscribes
+oversubscribing
+oversubscription
+oversubtle
+oversubtlety
+overtax
+overtaxation
+overthrust
+overtop
+overtrade
+overtrain
+overtrick
+overtrump
+overvalue
+overvoltage
+overvoltages
+overwatch
+overwear
+overweary
+overween
+overweening
+overweigh
+overwind
+overwinter
+overword
+overwrought
+ovicidal
+ovicide
+oviduct
+oviductal
+ovine
+oviparous
+oviparously
+oviparousness
+oviposit
+oviposition
+ovipositional
+ovipositor
+ovoid
+ovoidal
+ovonic
+ovotestis
+ovoviviparous
+ovoviviparously
+ovoviviparousness
+ovular
+ovulate
+ovulated
+ovulates
+ovulating
+ovulation
+ovulations
+ovule
+ow
+owerless
+owlet
+oxacillin
+oxalacetate
+oxalacetic
+oxalis
+oxaloacetate
+oxazine
+oxblood
+oxbow
+oxeye
+oxheart
+oxidase
+oxidasic
+oxidic
+oxonian
+oxtail
+oxygenator
+oxygenic
+oxygenicity
+oxygenless
+oxyhemoglobin
+oxyhydrogen
+oxymoron
+oxyphil
+oxyphile
+oxyphilic
+oxysome
+oxysulfide
+oystchers
+oysterman
+oystermen
+oz
+ozagen
+ozagenians
+ozocerite
+ozokerite
+ozonic
+ozonide
+ozoniferous
+ozonosphere
+ozonous
+ozzie
+pacem
+pacemaking
+pacesetter
+pachyderm
+pachydermal
+pachydermatous
+pachydermatously
+pachysandra
+pachytene
+pacifiable
+pacifically
+pacificator
+pacificators
+pacificatory
+pacificist
+pacifistically
+packability
+packable
+packboard
+packhorse
+packinghouse
+packman
+packsack
+packsaddle
+packthread
+packwood
+paddleboard
+padrone
+paella
+paeon
+paestum
+paganini
+paganish
+pageboy
+paginal
+pailful
+painfuller
+painfullest
+paisley
+paix
+paladin
+palaeoanthropic
+palaeontology
+palaeontology's
+palaestra
+palanquin
+palasts
+palatably
+palatial
+palatially
+palatialness
+palatinate
+palaver
+palavered
+palavering
+palazzo
+palazzos
+paleface
+paleoanthropology
+paleoanthropology's
+paleoecologic
+paleoecological
+paleoecologist
+paleoecology
+paleogeographic
+paleogeographical
+paleogeographically
+paleogeography
+paleographer
+paleographic
+paleographical
+paleographically
+paleography
+paleolith
+paleoliths
+paleologist
+paleologists
+paleomagnetics
+paleontologic
+paleontological
+paleontologist
+paleontology
+paleozoological
+paleozoology
+palingenesis
+palingenetic
+palinode
+palish
+palladia
+pallbearer
+pallette
+pallial
+palliasse
+palliator
+pallium
+pallor
+pallor's
+pallors
+palmar
+palmary
+palmate
+palmated
+palmately
+palmation
+palmier
+palmistry
+palmitate
+palmlike
+palmy
+palomino
+palp
+palpability
+palpal
+palpate
+palpated
+palpates
+palpating
+palpation
+palpations
+palpebral
+palpi
+palpitant
+palpitate
+palpitated
+palpitates
+palpitating
+palter
+paltered
+palterer
+paltering
+paludal
+paludism
+palynologic
+palynological
+palynologically
+palynologist
+palynology
+pampa
+pampas
+pamphleteer
+pamphleteers
+panacean
+panache
+panatela
+panchromatic
+pancratium
+pandect
+pandects
+pandied
+pandit
+panegyric
+panegyrical
+panegyrically
+panegyrist
+panetela
+panetella
+panful
+pangenesis
+pangenetic
+pangolin
+panhandle
+panhandled
+panhandler
+panhandles
+panhandling
+panhuman
+panicking
+panicle
+pannier
+panoramically
+panpipe
+panpipes
+pantalets
+pantalettes
+pantaloon
+pantaloons
+pantas
+pantheistic
+pantheistical
+pantheistically
+pantie
+pantile
+pantiled
+pantisocracies
+pantisocracy
+pantisocratic
+pantisocratical
+pantisocratist
+pantograph
+pantographic
+pantomimic
+pantomimist
+pantothenate
+pantothenic
+pantropic
+pantryman
+pantrymen
+pantsuit
+pantywaist
+panza
+panzer
+papacy
+papaw
+paperbound
+paperboy
+paperboys
+paperhanger
+paperhanging
+papermaker
+papermakers
+papermaking
+papiers
+papilla
+papillae
+papillate
+papillated
+papilloma
+papillomatous
+papillon
+papillose
+papillote
+papist
+papistry
+pappose
+para
+parabiosis
+parabiotic
+parabiotically
+parabolically
+parachutic
+parachutist
+paradigmatical
+paradisaic
+paradisaical
+paradisaically
+paradisal
+paradisiac
+paradisiacal
+paradisiacally
+paraffinic
+paragenesis
+paragenetic
+paragenetically
+paraginase
+paragonite
+paragraphic
+paralinguistic
+parallactic
+paralogism
+paralytic
+paramagnetically
+paramagnetism
+paramecium
+paramedic
+parament
+parametrical
+paramnesia
+paramountcy
+paramour
+paranormality
+paranymph
+paraoxon
+paraph
+paraphrasable
+paraphrastic
+paraphrastically
+paraphysis
+paraplegia
+parapodial
+parapodium
+paraquat
+pararosaniline
+parasang
+paraselene
+paraselenic
+parasexual
+parasexuality
+parasitical
+parasitically
+parasiticidal
+parasiticide
+parasitism
+parasympathomimetic
+parasynthesis
+parasynthetic
+paratactic
+paratactical
+paratactically
+parataxis
+parathion
+parathyroid
+parathyroidectomy
+paratyphoid
+paravane
+paraxial
+parbuckle
+parbuckled
+parbuckling
+parcenary
+parcener
+pard
+pardner
+pardners
+paregoric
+parella
+parenchyma
+parenchymal
+parenteral
+parenterally
+parfait
+parian
+paries
+parietal
+parietes
+parioli
+parisina
+parisology
+parka
+parka's
+parkas
+parkinsonism
+parlante
+parle
+parling
+parlous
+parlously
+parmigiana
+parmigiano
+parodic
+parodist
+parodistic
+parol
+paronomasia
+paronomastic
+paronym
+paronymous
+parotid
+parotitis
+parous
+paroxysm
+paroxysmal
+paroxytone
+parquetry
+parrakeet
+parricidal
+parricide
+parrillo
+parring
+parris
+partan
+parterre
+parthenocarpic
+parthenocarpically
+parthenocarpy
+parthenogenesis
+parthenogenetic
+parthenogenetically
+parti
+partible
+participator
+particularism
+particularist
+partisanship
+partite
+partitionist
+partitive
+partitively
+partizan
+parturient
+parturition
+partway
+parure
+parve
+parvenue
+parvis
+parvise
+paschal
+pasha
+passably
+passarine
+passavant
+passbook
+passbook's
+passbooks
+passel
+passementerie
+passerine
+passible
+passim
+passional
+passionless
+passivate
+passivated
+passivates
+passivating
+passivation
+passivations
+passivism
+passivist
+passivists
+passkey
+pastelist
+pastellist
+pastern
+pasternak
+pasterns
+pastil
+pastilles
+pastlle
+pastorale
+pastoralism
+pastoralist
+pastorate
+pastorium
+pastorship
+pastrami
+pasturage
+pastureland
+patagonians
+patchboard
+patchily
+patchouli
+patchouly
+pate
+patella
+patellae
+patellar
+patellas
+patelliform
+patency
+patentability
+patentor
+paterfamilias
+paternalist
+pathbreaking
+pathetical
+pathetically
+pathfinder
+pathfinding
+pathogenetic
+pathogenically
+pathogenicity
+pathognomonic
+pathol
+pathometer
+pathometer's
+pathometers
+pathomorphologic
+pathomorphological
+pathomorphology
+pathophysiologic
+pathophysiological
+pathophysiology
+patible
+patil
+patinae
+patine
+patined
+patining
+patisseries
+patois
+patresfamilias
+patriarchate
+patriciate
+patriciates
+patricidal
+patricide
+patrilineage
+patrilineal
+patriotically
+patristical
+patroller
+patronal
+patronne
+patronymic
+patroon
+patten
+pattie
+patulous
+patulously
+patulousness
+paulownia
+pauperism
+pavanne
+pavese
+pavid
+pawl
+pawnbroker
+pawnbroker's
+pawnbrokers
+pawnbroking
+pawnor
+pawpaw
+pax
+paxam
+paxton
+payee
+paygrade
+paygrades
+payola
+payor
+peaceably
+peacekeeper
+peacekeeping
+peacemake
+peacemaker
+peachier
+peachy
+peacockish
+peafowl
+peahen
+pealike
+pearlescence
+pearlescent
+pearlite
+pearlitic
+pearlstone
+peascod
+peasecod
+peashooter
+peaty
+pebbly
+peccable
+peccadillo
+peccancy
+peccant
+peccantly
+peccavi
+pecky
+pectate
+pectic
+pectin
+pectinaceous
+pectinate
+pectinated
+pectination
+pectines
+pectoralis
+peculator
+pecuniarily
+pedagog
+pedalfer
+pedalferic
+pedantically
+peddlery
+peden
+pederast
+pederastic
+pederasts
+pederasty
+pedestrianism
+pediatrist
+pedicab
+pedicel
+pedicellate
+pedicle
+pedicled
+pediculate
+pediculosis
+pediculous
+pedicure
+pedicurist
+pedimental
+pedipalp
+pedlar
+pedlary
+pedocal
+pedocalic
+pedogenesis
+pedogenetic
+pedogenic
+pedologic
+pedological
+pedologist
+pedology
+pedometer
+pedometer's
+pedometers
+pedophile
+pedophilia
+pedophiliac
+pedophilic
+pee
+peekaboo
+peelable
+peeress
+peeter
+peewee
+peignoir
+pekoe
+pelage
+pelagic
+pellagrin
+pellagrous
+pelletal
+pellitory
+pellucid
+pellucidity
+pellucidly
+pellucidness
+peloria
+peloric
+pelorus
+pelota
+pelotas
+peltate
+peltately
+peltries
+peltry
+pemberton
+pemican
+penates
+pendency
+pendent
+pendentive
+pendently
+pendleton
+pendular
+pendulous
+pendulously
+pendulousness
+penetrability
+penetrable
+penetrableness
+penetrably
+penetralia
+penetrance
+penetrances
+penetrant
+penetrants
+penetrometer
+penetrometer's
+penetrometers
+pengally
+penholder
+penicillate
+penicillately
+penicillation
+penicillium
+penile
+peninsular
+penis
+penises
+penitence
+penitences
+penitency
+penlight
+penmanship
+penna
+pennaceous
+pennae
+pennate
+pennis
+pennyroyal
+penological
+penologist
+penology
+pensile
+pensionable
+pensionary
+pensionless
+pentacle
+pentacles
+pentad
+pentadactyl
+pentadactylism
+pentagram
+pentagram's
+pentagrams
+pentagraph
+pentahedral
+pentahedron
+pentamerous
+pentameter
+pentane
+pentangle
+pentangles
+pentapeptide
+pentaploid
+pentaploidy
+pentaquin
+pentaquine
+pentarchy
+pentathlete
+pentathlon
+pentatonic
+pentavalent
+pentazocine
+pentobarbital
+pentobarbitone
+pentode
+pentodes
+pentomic
+pentosan
+penuche
+penult
+penultima
+penumbra
+penumbral
+peon
+peonage
+peones
+peoplehood
+peopleless
+pepperminty
+peppertree
+pepsico
+pepsin
+pepsinogen
+peptic
+peptone
+peradventure
+perambulate
+perambulated
+perambulates
+perambulating
+perambulation
+perambulations
+perambulator
+perambulatory
+percale
+percaline
+perceptibility
+perceptional
+perceptivity
+perchlorate
+percipience
+percipient
+percoidean
+percptibly
+percuss
+percussionist
+perdurability
+perdurable
+perdurably
+pere
+peregrinate
+peregrinated
+peregrinates
+peregrinating
+peregrination
+peregrinations
+peregrine
+peremptorily
+perennate
+perennated
+perennates
+perennating
+perennation
+perennations
+perfecta
+perfectivity
+perfecto
+perfervid
+perfoliate
+perfoliation
+perforator
+performable
+performative
+performatory
+perfuse
+perfused
+perfusing
+perfusive
+pergola
+pericardial
+pericarditis
+pericardium
+pericarp
+perichondral
+perichondrial
+perichondrium
+pericranial
+pericranium
+pericycle
+pericyclic
+pericynthion
+periderm
+peridermal
+peridermic
+peridia
+peridium
+peridot
+peridotic
+peridotite
+peridotitic
+perigean
+perigee
+perigee's
+perigynous
+perigyny
+perihelial
+perikaryal
+perikaryon
+perilune
+perilymph
+perimorph
+perimysium
+perinatal
+perineum
+periodontics
+periodontist
+perioneum
+periotic
+peripatecically
+peripatetically
+peripateticism
+peripatus
+peripety
+peripherad
+periphrasis
+periphrastically
+periphytic
+periphyton
+periplast
+periscopic
+perishability
+peritectic
+peritonitis
+peritrichous
+peritrichously
+perjurious
+perjuriously
+perkily
+perlite
+perlitic
+perlocutionary
+perm
+permafrost
+permeability
+permeably
+permeance
+permease
+permissable
+permitter
+permittivity
+permutational
+peroneal
+peroral
+perorally
+perorate
+peroration
+perorational
+peroxidase
+peroxidic
+peroxisomal
+peroxisome
+perpend
+perpendicularity
+perpetuator
+perseverant
+perseveration
+perseverations
+persistency
+persnickety
+personalism
+personalist
+personalistic
+personate
+personated
+personates
+personating
+personation
+personative
+personator
+personhood
+perspicacity
+perspiratory
+persuasible
+pertinacity
+pertinency
+perturbable
+perturbational
+perturbative
+perversity
+pervious
+perviousness
+peso
+pesos
+pessary
+pessimal
+pessimistically
+pessimum
+peste
+pestiferous
+pestiferously
+pestiferousness
+petallike
+petaloid
+petalous
+petard
+petasos
+petasus
+petiolate
+petiolated
+petiole
+petioled
+petiolule
+petit
+petitionary
+petrarchan
+petrel
+petrifaction
+petrochemistry
+petrogenesis
+petrogenetic
+petrographer
+petrographic
+petrographical
+petrographically
+petrography
+petrolatum
+petrologic
+petrological
+petrologically
+petrologist
+petronel
+petrosal
+petrous
+pettibone
+pettifog
+pettifogger
+pettifoggery
+pettily
+petulancy
+pewaukee
+pewee
+ph
+phaeton
+phage
+phagocytosis
+phalanges
+phalanstery
+phalarope
+phalli
+phallic
+phallically
+phallicism
+phallus
+phalluses
+phanerogam
+phanerogamic
+phanerogamous
+phantasm
+phantasma
+phantasmagoria
+phantasmagoric
+phantasmal
+phantasmic
+phantomlike
+pharaoh
+pharaonic
+pharisaic
+pharisaical
+pharisaically
+pharisaicalness
+pharisaism
+pharisee
+pharmacodynamic
+pharmacodynamically
+pharmacodynamics
+pharmacogenetic
+pharmacogenetics
+pharmacognostic
+pharmacognostical
+pharmacognosy
+pharmacokinetic
+pharmacokinetics
+pharmacologic
+pharmacologist
+pharmacopoeia
+pharnges
+pharos
+pharyngitis
+phasic
+phasmid
+phd
+phenetics
+phenetidine
+phenetole
+phenobarbital
+phenobarbitone
+phenocain
+phenocopy
+phenocryst
+phenolate
+phenological
+phenologically
+phenology
+phenomenalism
+phenomenalist
+phenomenalistic
+phenomenalistically
+phenomenologist
+phenothiazine
+phenotypic
+phenotypical
+phenotypically
+phenoxide
+phentolamine
+phenylalanine
+phenylene
+phenylephrine
+phenylic
+pheromone
+pheromone's
+pheromones
+phial
+philanthropical
+philanthropically
+philatelic
+philatelically
+philatelist
+philately
+philco
+philippe
+philippians
+philogyny
+philol
+philologist
+philoprogenitive
+philoprogenitiveness
+philter
+philtre
+phlebitis
+phlebotomy
+phlegmatic
+phlegmatically
+phlegmy
+phloem
+phlogistic
+phlogiston
+phobia
+phon
+phonate
+phonated
+phonates
+phonating
+phonation
+phonematic
+phonemically
+phonetical
+phonetician
+phoney
+phoneys
+phonically
+phonily
+phonocardiogram
+phonocardiogram's
+phonocardiograms
+phonocardiograph
+phonocardiographic
+phonocardiography
+phonogram
+phonogram's
+phonogramic
+phonogramically
+phonogrammic
+phonogrammically
+phonograms
+phonographic
+phonographically
+phonography
+phonolite
+phonolitic
+phonologial
+phonologist
+phonon
+phonons
+phonoreception
+phonoreceptor
+phonorecord
+phonos
+phosgene
+phosphatic
+phosphatide
+phosphatidic
+phosphatidyl
+phosphene
+phosphite
+phosphocreatine
+phospholipid
+phospholipids
+phosphore
+phosphorescence
+phosphoreted
+phosphoretted
+phosphorism
+phosphorite
+phosphoritic
+phosphorolysis
+phosphorolytic
+phosphorous
+phosphoryl
+phosphorylase
+phosphorylate
+phosphorylation
+phosphorylative
+photic
+photically
+photoautotrophic
+photoautotrophically
+photobiologic
+photobiological
+photobiologist
+photobiology
+photobiotic
+photocathode
+photocathodes
+photocell
+photochemist
+photochemistry
+photochromic
+photochromism
+photocoagulation
+photocompose
+photocomposer
+photocomposition
+photoconductive
+photoconductivity
+photocurrent
+photodecomposition
+photodetector
+photodiode
+photodiodes
+photodisintegrate
+photodisintegration
+photodissociation
+photodissociative
+photodrama
+photoduplicate
+photoduplication
+photodynamic
+photodynamically
+photodynamics
+photoelectric
+photoelectrically
+photoelectron
+photoemission
+photoemissive
+photoengrave
+photoengraver
+photoengraving
+photoflash
+photoflood
+photofluorogram
+photofluorogram's
+photofluorograms
+photofluorographic
+photofluorography
+photogene
+photogenically
+photogeologic
+photogeological
+photogeology
+photogram
+photogram's
+photogrammetric
+photogrammetrist
+photogrammetry
+photograms
+photogravure
+photoheliograph
+photoinduced
+photoinduction
+photoinductive
+photojournalism
+photojournalist
+photojournalist's
+photojournalistic
+photojournalists
+photokinesis
+photokinetic
+photolithograph
+photolithographer
+photolithographic
+photolithographically
+photolithography
+photolytically
+photomap
+photomechanical
+photomechanically
+photometer
+photometer's
+photometers
+photometrically
+photomicrgraphical
+photomicrogram
+photomicrogram's
+photomicrograms
+photomicrographic
+photomicroscope
+photomicroscopic
+photomontage
+photomorphogenesis
+photomorphogenic
+photomultiplier
+photomural
+photonegative
+photonic
+photonuclear
+photooxidation
+photooxidative
+photoperiod
+photoperiodic
+photoperiodically
+photoperiodism
+photophilic
+photophilous
+photophily
+photophobia
+photophobic
+photophore
+photopia
+photoplay
+photopositive
+photoprint
+photoproduct
+photoproduction
+photoreaction
+photoreception
+photoreceptive
+photoreceptor
+photoreconnaissance
+photorecord
+photorecorder
+photoreduction
+photoresistance
+photorespiration
+photosensitivity
+photoset
+photosetter
+photosphere
+photospheric
+photostat
+photostatic
+photosynthesis
+photosynthetic
+photosynthetically
+phototactic
+phototactically
+phototaxis
+phototelegraphy
+phototropic
+phototropically
+phototropism
+phototube
+phototypesetter
+phototypesetting
+phototypographic
+phototypography
+photovoltaic
+phrasally
+phrasemaker
+phrasemonger
+phrasemongering
+phraseogram
+phraseogram's
+phraseograms
+phraseograph
+phraseological
+phraseologically
+phraseologist
+phratries
+phratry
+phreatic
+phreatophyte
+phreatophytic
+phrenetic
+phrenic
+phrenological
+phrenologically
+phrenologist
+phrenology
+phrensy
+phthalate
+phycologist
+phycology
+phycomycete
+phycomycetes
+phylactery
+phylae
+phylar
+phyle
+phylesis
+phyletic
+phyllary
+phylloclade
+phyllode
+phyllodium
+phylloid
+phyllome
+phyllomic
+phyllophagous
+phyllopod
+phylogenetic
+physiatrics
+physiatrist
+physicalism
+physicalist
+physicalistic
+physicality
+physicked
+physicking
+physicochemically
+physiocratic
+physiognomic
+physiognomical
+physiognomically
+physiographer
+physiographic
+physiographical
+physiography
+physiol
+physiopathologic
+physiopathological
+physiopathology
+physostigmine
+phytane
+phytoalexin
+phytochemical
+phytochemically
+phytochemist
+phytochemistry
+phytochrome
+phytoflagellate
+phytogenic
+phytogeographic
+phytogeographical
+phytogeographically
+phytogeography
+phytography
+phytological
+phytologically
+phytology
+phyton
+phytonic
+phytopathogen
+phytopathogenic
+phytopathologic
+phytopathological
+phytopathology
+phytophagous
+phytophagy
+phytoplanktonic
+phytosociological
+phytosociologically
+phytosociologist
+phytosociology
+phytosterol
+phytotoxic
+phytotoxicity
+pial
+pianistically
+pianoforte
+pianoforte's
+pianofortes
+pias
+piassava
+piazze
+pibroch
+pic
+picador
+picadores
+picaninny
+picara
+picaresque
+picaro
+picaroon
+picayunish
+piccalilli
+piccoloist
+pice
+piceous
+pickaback
+pickaninny
+pickaroon
+pickax
+pickeer
+picketboat
+picklock
+pickpocket
+pickproof
+pickthank
+picnicky
+picnometer
+picnometer's
+picnometers
+picoline
+picon
+picosecond
+picoseconds
+pictograph
+pictographic
+pictography
+pictorialism
+picturegoer
+piebald
+piecework
+pieceworker
+piecrust
+piefort
+pieing
+pieta
+pietism
+pietist
+pietistic
+pietistical
+pietistically
+pietro
+piezoelectrically
+piezometer
+piezometer's
+piezometers
+piezometric
+piezometry
+piffle
+piffled
+piffles
+piffling
+pigboat
+pigeonberry
+pigeonfoot
+pigeonhearted
+pigeonwing
+pigged
+piggeries
+piggery
+piggyback
+piggybacked
+piggybacking
+pigheaded
+pigheadedness
+piglet
+piglets
+pigmentary
+pigmy
+pigstick
+pigsticker
+pigsticking
+pikeman
+pikestaff
+pilaf
+pilaff
+pilaster
+pilchard
+pilea
+pileate
+pileated
+pilei
+pileum
+pileup
+pileus
+pilewort
+pilgarlic
+pillbox
+pillboxes
+pillion
+pillions
+pillowcase
+pillowcases
+piloerection
+pilotage
+pilotages
+pilothouse
+pilotless
+pilsener
+pilsner
+pilular
+pilule
+pilus
+pinar
+pinaster
+pinata
+pinbone
+pincer
+pincer's
+pincerlike
+pincers
+pinchbeck
+pinchcock
+pindling
+pineal
+pinecone
+pinedrops
+pinene
+pinery
+pinesap
+pineta
+pinetum
+pinewood
+piney
+pinfold
+pingo
+pinkeye
+pinko
+pinkoes
+pinkos
+pinkroot
+pinky
+pinna
+pinnace
+pinnae
+pinnal
+pinnas
+pinnate
+pinnately
+pinner
+pinniped
+pinniped's
+pinnipeds
+pinnula
+pinnular
+pinnulate
+pinnulated
+pinnule
+pinprick
+pinpricks
+pinscher
+pinsetter
+pinspotter
+pinstripe
+pinta
+pintle
+pintoes
+pinup
+pinxter
+pionic
+pipage
+pipal
+pipeage
+pipefish
+pipeful
+pipeless
+pipelike
+piperazine
+piperidine
+piperine
+piperonal
+pipestone
+pipgras
+pipit
+pipkin
+pippin
+pipping
+pipsissewa
+piquancy
+piquet
+piranha
+piraro
+piratical
+piratically
+pirogue
+piroplasm
+piroplasma
+piroplasmata
+piscicultural
+pisciculture
+pisciculturist
+piscina
+piscine
+piscivorous
+pisiform
+pismire
+pisolite
+pisolitic
+pissoir
+pistillate
+pistoleer
+pita
+pitchman
+pitchout
+pitchy
+pithead
+pithily
+pitiably
+pivotable
+pivotman
+pixie
+pixieish
+pixilated
+pixilates
+pixilation
+pizazz
+pizz
+pizzazz
+pizzeria
+placability
+placable
+placably
+placatory
+placebo
+placeholder
+placeman
+placemat
+placemat's
+placemats
+placency
+placent
+placentation
+placentations
+placentia
+placidity
+placket
+plagal
+plage
+plagiaristic
+plagiary
+plagioclase
+plaguesome
+plaguey
+plaguily
+plaguy
+plaice
+plainclothesman
+plainsman
+plainspoken
+plainspokenness
+plaint
+plaintext
+plaintful
+plainview
+plaister
+planarian
+planation
+planchet
+planetoidal
+planetological
+planetologist
+planetology
+plangency
+plangent
+plangently
+planimeter
+planimeter's
+planimeters
+planimetric
+planish
+planisher
+planisphere
+planispheric
+planktonic
+planless
+planlessly
+planlessness
+planograph
+planographic
+planography
+planosol
+plantable
+plantar
+plantlike
+planula
+planular
+planuloid
+plasmagel
+plasmagene
+plasmagenic
+plasmalemma
+plasmapheresis
+plasmasol
+plasmatic
+plasmid
+plasmid's
+plasmids
+plasmin
+plasminogen
+plasmodesm
+plasmodium
+plasmogamy
+plasmolysis
+plasmolytic
+plasmolytically
+plasmon
+plasodesma
+plasterboard
+plasterwork
+plastery
+plastid
+plastidial
+plastisol
+plastisols
+plastogene
+plastral
+plastron
+plat
+plateaux
+plateful
+platelike
+platemaker
+platemaking
+plateresque
+platies
+platina
+platinic
+platinous
+platipi
+platipi's
+platitudinal
+platitudinarian
+platonically
+platterful
+platting
+platypus
+platypus's
+platypuses
+plauded
+plauding
+plaudit
+plause
+plausive
+playa
+playability
+playact
+playbill
+playbills
+playbook
+playgirl
+playgoer
+playgoers
+playland
+playmaker
+playpen
+playpen's
+playpens
+playsuit
+pleadable
+pleasantry
+pleasurability
+pleasurably
+pleasureless
+pleatless
+plebe
+plebeianism
+plebes
+plebian
+plebiscitary
+plebs
+plectrum
+plectrum's
+plectrums
+pledgee
+pledget
+pledgor
+plenipotent
+plenish
+plenitudinous
+plentitude
+plethoric
+pleurae
+pleuritic
+pleurodont
+plex
+plexiform
+plexiglass
+plexus
+pliability
+pliably
+plimsoll
+plinth
+plodder
+plosion
+plotless
+plotlessness
+plottage
+plottier
+plotty
+plowmen
+plowmen's
+pluckily
+plugboard
+plugboard's
+plugboards
+plugger
+plumbaginous
+plumbago
+plumbate
+plumbeous
+plumbic
+plumbiferous
+plumbism
+plumbous
+plumelet
+plumier
+plumlike
+plummier
+plummy
+plumose
+plumosely
+plumpish
+plumulate
+plumule
+plumulose
+plumy
+plunderable
+plunderage
+plunderous
+pluperfect
+pluralistically
+pluriaxial
+pluripotent
+plussage
+plusses
+plutocracy
+plutocrat
+plutocratic
+plutocratically
+pluton
+plutonian
+plutonic
+pluvial
+plyscore
+pneumatically
+pneumaticity
+pneumatology
+pneumatolysis
+pneumatolytic
+pneumatometer
+pneumatometer's
+pneumatometers
+pneumatophore
+pneumatophoric
+pneumectomy
+pneumococcus
+pneumonic
+pocahontas
+pockmark
+pocky
+poco
+podagra
+podagral
+podded
+podding
+podgier
+podgy
+podiatric
+podiatrist
+podiatry
+podite
+poditic
+poetaster
+poetess
+poeticism
+pogromist
+poi
+poikilotherm
+poikilothermic
+poikilothermism
+poilu
+poinciana
+pointe
+pointillism
+pointillist
+pointilliste
+pointillistic
+pointwise
+poirot
+poitrine
+pokey
+pokeys
+pokier
+pokily
+pokiness
+poky
+polarimetric
+polariscopic
+polariton
+polarographic
+polarographically
+polaron
+polder
+poleax
+poleless
+polemicist
+polemist
+polemonium
+polestar
+poleward
+policewoman
+policewoman's
+policewomen
+policyholder
+policyholders
+poliomyelitic
+poliomyelitis
+poliovirus
+politesse
+politick
+politicker
+polity
+polkadot
+polkadots
+pollee
+pollenate
+pollenated
+pollenates
+pollenating
+pollenation
+pollenosis
+pollex
+pollical
+pollices
+pollinate
+pollinated
+pollinates
+pollinating
+pollination
+pollinator
+pollinic
+polliniferous
+pollinium
+polloi
+pollster
+pollywog
+pollywog's
+pollywogs
+poloist
+poltergeist
+poltroon
+poltroonery
+poltroonish
+poltroonishly
+polyandrous
+polyandry
+polyanka
+polyantha
+polyanthus
+polybasite
+polycarbonate
+polycarpellary
+polycarpic
+polycarpous
+polycarpy
+polycentrism
+polychaete
+polychaetous
+polychasium
+polychotomous
+polychotomy
+polychromatic
+polychrome
+polychromy
+polycistronic
+polyclinic
+polycondensation
+polycot
+polycotyl
+polycotyledon
+polycotyledonous
+polycrystal
+polycyclic
+polycythemia
+polycythemic
+polydactyl
+polydactylous
+polydactyly
+polydipsi
+polygala
+polygamic
+polygamical
+polygamically
+polygamist
+polygene
+polygenesis
+polygenesist
+polygenetic
+polygenetically
+polygenic
+polyglandular
+polyglot
+polyglotism
+polyglottism
+polygonum
+polygram
+polygram's
+polygrams
+polygraph
+polygraphic
+polygynoecial
+polygyny
+polyhedrosis
+polyhistor
+polyhistoric
+polyhydroxy
+polymath
+polymathic
+polymathy
+polymerically
+polymerism
+polymorphically
+polymorphism
+polymorphonuclear
+polymorphous
+polymorphously
+polymyxin
+polyneuritis
+polynuclear
+polynucleotide
+polynya
+polyonymous
+polyp
+polypary
+polypeptide
+polypeptidic
+polypetalous
+polyphagia
+polyphagous
+polyphagy
+polyphase
+polyphasic
+polyphenol
+polyphenolic
+polyphone
+polyphonically
+polyphonous
+polyphonously
+polyphyletic
+polyphyletically
+polyphyleticism
+polypide
+polyploid
+polyploidy
+polypnea
+polypneic
+polypody
+polypoid
+polypous
+polyptych
+polyrhythm
+polyrhythmic
+polyrhythmically
+polyribonucleotide
+polyribosomal
+polyribosome
+polysaccharide
+polysaccharides
+polysaprobic
+polysemous
+polysemy
+polysepalous
+polysilicon
+polysiloxanes
+polysome
+polysomic
+polysorbate
+polystichous
+polysulfide
+polysyllabic
+polysyllabically
+polysyllable
+polysynaptic
+polysynaptically
+polysyndeton
+polytene
+polyteny
+polytheism
+polytheist
+polytheistic
+polytheistical
+polythene
+polytocous
+polytonality
+polytope
+polytrophic
+polytype
+polytypic
+polytypism
+polytypy
+polyurethane
+polyuria
+polyvalence
+polyvalent
+polyvinyl
+polywater
+polyzoan
+polyzoarium
+polyzoic
+pomace
+pomaceous
+pomade
+pomaded
+pomades
+pomander
+pomatum
+pome
+pomelo
+pomerania
+pomeranian
+pomiferous
+pommel
+pomological
+pomologically
+pomologist
+pomology
+pompey
+pompon
+pon
+ponderable
+ponderosa
+ponderosa's
+ponderosas
+pong
+pont
+pontific
+pontificaly
+pontificator
+pontifices
+pontine
+pontius
+ponton
+pontonier
+pontoon
+ponytail
+pood
+poolroom
+poop
+poorhouse
+poorish
+popery
+popgun
+popinjay
+popish
+popishly
+popliteal
+popover
+poppa
+poppet
+popple
+poppycock
+poppyhead
+populaire
+populaires
+populism
+populist
+populistic
+porcelainlike
+porcelaneous
+porcellaneous
+poriferal
+poriferan
+porkies
+porky
+pornographically
+porphyria
+porphyrin
+porphyritic
+porphyroid
+porphyropsin
+porphyry
+porrect
+porringer
+portance
+portative
+portcullis
+porterage
+porthole
+portico
+portiere
+portionless
+portraitist
+portress
+portulaca
+posable
+posada
+posey
+posies
+positivistic
+positivity
+positronium
+posseman
+possemen
+possessory
+posset
+possets
+postaxial
+postaxially
+postbag
+postbags
+postbellum
+postbox
+postboxes
+postboy
+postboys
+postbreeding
+postclassic
+postclassical
+postcolonial
+postdental
+postdiluvian
+postdoctorate
+postembryonal
+postembryonic
+postemergence
+posteriad
+posteriority
+postern
+postexilic
+postface
+postform
+postglacial
+posthaste
+posthole
+posthypnotic
+postiche
+postilion
+postillion
+postmastership
+postmenopausal
+postmillenarian
+postmillenarianism
+postmillennial
+postmillennialism
+postmillennialist
+postmistress
+postmodern
+postmultiply
+postnasal
+postnatal
+postnatally
+postnuptial
+postnuptially
+postorbital
+postpaid
+postpituitary
+postponable
+postposition
+postpositional
+postpositionally
+postpositive
+postpositively
+postprandial
+postprandially
+postprocess
+postprocessor
+postprocessors
+postschool
+postsynaptic
+postsynaptically
+posttension
+posttraumatic
+postulancy
+postulant
+postulational
+postulator
+postural
+posy
+potability
+potassic
+potation
+potboy
+poteen
+potemkin
+potence
+potentiate
+potentiation
+potentiator
+potentiometric
+potful
+pothead
+potheen
+pother
+pothered
+pothering
+pothook
+pothouse
+pothunter
+pothunting
+potpie
+potsdam
+potsherd
+potshot
+potshotting
+potstone
+pottage
+pottawatomie
+potteringly
+pottier
+potties
+pottle
+potto
+pottos
+potty
+pouchier
+pouchy
+pouf
+pouff
+pouffed
+poulard
+poularde
+poult
+poulterer
+poultryman
+poundage
+poundal
+pourable
+pourboire
+pourparler
+pourpoint
+poussette
+poussetted
+poussetting
+poussin
+poussins
+pouty
+powderman
+powdermen
+powerboat
+powerhouse
+powerhouse's
+powerhouses
+powwow
+poxvirus
+poza
+ppm
+practicum
+praecox
+praedial
+pragmatical
+pragmaticism
+pragmaticist
+pragmatistic
+praiseworthily
+praline
+prandial
+prankish
+prankishly
+prankishness
+prankster
+pranksters
+prase
+pratfall
+pratincole
+pratique
+prawn
+prawner
+prawns
+praxeological
+praxeology
+pre
+preachier
+preachifies
+preachify
+preachily
+preachiness
+preachment
+preachy
+preadapt
+preadaptation
+preadapted
+preadaptive
+preadolescence
+preadolescent
+preamplifier
+preamplifiers
+prearrange
+prearrangement
+preatomic
+preaxial
+preaxially
+prebend
+prebendal
+prebendary
+prebind
+prebiologic
+prebiological
+prebiotic
+precancel
+precancerous
+precast
+precautious
+precedency
+preceeded
+preceeding
+precensor
+precentor
+precentorial
+precentorship
+preceptor
+preceptorial
+preceptorship
+preceptory
+preceptress
+precessional
+preciosity
+precipitance
+precipitancy
+precipitant
+precipitantly
+precipitantness
+precipitator
+precipitin
+precipitinogen
+precipitinogenic
+precisian
+precisianism
+precisionist
+preclinical
+preclusion
+preclusive
+preclusively
+precoat
+precoating
+precocial
+precognition
+precognitive
+precombustion
+precompact
+precompose
+precomputation
+precomputed
+preconceptual
+preconcert
+preconcerted
+preconcertedly
+preconcertedness
+preconsonantal
+precook
+precritical
+precursory
+predaceous
+predaceousness
+predacious
+predacity
+predatorily
+predawn
+predecease
+predefense
+predefense's
+predefenses
+predesignate
+predesignation
+predestinarian
+predestinarianism
+predestinate
+predestination
+predestinator
+predestine
+predetermination
+predicable
+predicatable
+predicatory
+predigest
+predigestion
+predominancy
+preemergence
+preemergent
+preemie
+preemphasization
+preemphasization's
+preemphasize
+preemphasized
+preemphasizer
+preemphasizers
+preemphasizes
+preemphasizing
+preexchange
+preexchanged
+preexist
+preexistence
+prefatorial
+prefatorially
+prefatorily
+prefectural
+preferability
+preferrer
+prefigurative
+prefiguratively
+prefigurativeness
+prefigure
+prefigured
+prefigurement
+prefigures
+prefiguring
+prefixal
+prefixally
+prefocus
+prefocused
+prefocuses
+prefocusing
+preform
+preformation
+preformed
+preforms
+prefrontal
+pregnability
+pregnable
+pregnenolone
+preheat
+preheated
+preheater
+prehensile
+prehensility
+prehension
+prehistorian
+prehistorical
+prehistorically
+prehistory
+prehominid
+preignition
+preinduction
+prejudicious
+prejudiciously
+prelature
+prelection
+prelibation
+prelicense
+prelicensed
+prelicenser
+prelicenses
+prelicensing
+preliminarily
+prelusion
+prelusive
+prelusively
+prelusory
+premalignant
+preman
+premed
+premedial
+premedian
+premedical
+premedieval
+premedieval's
+premedievalism
+premedievalism's
+premedievalisms
+premedievals
+premeditator
+premeiotic
+premenstrual
+premenstrually
+premership
+premie
+premillenarian
+premillenarianism
+premillennial
+premillennialism
+premillennialist
+premillennially
+premiss
+premolar
+premonish
+premonitorily
+premorse
+premune
+premunition
+prename
+prenatal
+prenatally
+prenominate
+prenomination
+prenotion
+preoccupancy
+preoperative
+preoperatively
+preorbital
+preordain
+preordained
+preordaining
+preordains
+preordination
+preoviposition
+preovulatory
+prepackage
+preparator
+preparatorily
+prepausal
+prepay
+prepense
+prepensely
+preplan
+preponderancy
+prepositive
+prepositively
+prepossess
+prepossessing
+prepossessingly
+prepossessingness
+prepossession
+prepotency
+prepotent
+prepotently
+preppie
+preprandial
+preprocess
+preprocessed
+preprocesses
+preprofessional
+prepuberal
+prepuberally
+prepubertal
+prepubertally
+prepuberty
+prepubescence
+prepuce
+prepunch
+prepupal
+preputial
+prerealization
+prerealization's
+prerealizations
+prerealize
+prerealizes
+prerecord
+presageful
+presanctified
+presbyope
+presbyopia
+presbyopic
+presbyter
+presbyterate
+presbyterial
+presbyterially
+presbytery
+prescient
+prescientific
+presciently
+prescind
+prescore
+prese
+preselection
+presell
+presentability
+presentably
+presentative
+presentee
+presentient
+presentiment
+presentimental
+presentment
+preservable
+preservationist
+presettable
+presetting
+preshrunk
+presidentship
+presidial
+presidiary
+presidio
+presidium
+presignify
+presley
+presoak
+pressboard
+pressmark
+pressor
+pressroom
+pressrun
+presswork
+prest
+prester
+presternum
+prestigeful
+prestissimo
+prestress
+prestressed
+presumptive
+presumptively
+presynaptic
+presynaptically
+pretax
+preteen
+pretensionless
+preterit
+preterite
+preterition
+preteritive
+preterminal
+pretermission
+pretermit
+preternatural
+preternaturally
+preternaturalness
+pretreat
+pretreatment
+prettification
+prettify
+prettyish
+pretubercular
+pretuberculous
+pretzel
+prevaricate
+prevaricated
+prevaricates
+prevaricating
+prevarication
+prevaricator
+prevenient
+preveniently
+preventability
+preventative
+preventible
+preverbal
+previsional
+previsionary
+prevocalic
+prevocational
+prevue
+prexy
+priapic
+pricey
+pricier
+pricket
+prickier
+pricky
+pricy
+prideful
+pridefully
+pridefulness
+priesthood
+prieur
+priggery
+priggism
+prima
+primality
+primateship
+primatial
+primatological
+primatologist
+primatology
+primero
+primipara
+primiparity
+primiparous
+primitivist
+primitivistic
+primitivity
+primmer
+primmest
+primming
+primo
+primogenitor
+primogeniture
+primos
+primrdium
+primula
+primus
+princedom
+princekin
+princelet
+princeling
+princeship
+princesse
+principalship
+principial
+principium
+princox
+prink
+prinker
+printability
+printemps
+printery
+printless
+priorate
+prioress
+prioresses
+priorship
+pripet
+prise
+prisere
+prismatically
+prismatoid
+prismatoidal
+prismoid
+prismoidal
+prissily
+pristane
+prithee
+privatdocent
+privatdozent
+privatism
+privet
+privily
+privity
+prix
+prizefight
+prizefighter
+prizefighting
+prizewinner
+proa
+proach
+proaching
+proactive
+probabilism
+proband
+probang
+probational
+probationally
+probationary
+probatory
+probenecid
+probit
+probosces
+proboscidean
+proboscidian
+proboscis
+procambial
+procambium
+procaryote
+procaryotic
+procathedral
+procephalic
+procercoid
+processability
+processable
+processibility
+processible
+proclimax
+proclitic
+proconsul
+proconsular
+proconsulate
+proconsulship
+procreant
+procreator
+procryptic
+proctodaeum
+proctologic
+proctological
+proctologist
+proctology
+proctorial
+proctorship
+procumbent
+procurable
+procurance
+procuration
+procurator
+procuratorial
+procuress
+prodder
+prodigality
+prodromal
+prodromata
+prodrome
+prodromes
+prodromic
+productional
+proemial
+proenzyme
+proestrus
+profanation
+profanatory
+professeur
+professorate
+professoriat
+professoriate
+profili
+profitless
+profitted
+profitting
+profligacy
+profluent
+prog
+progamete
+progestational
+progesterone
+progestin
+progestogen
+progging
+proglottid
+proglottidean
+proglottis
+prognathic
+prognathism
+prognathous
+prognostic
+prograde
+programmatic
+programmatically
+progressional
+progressionist
+progressist
+progressivist
+progressivistic
+prohibitionist
+projectable
+projectional
+projet
+projets
+prokaryote
+prokaryotic
+prolactin
+prolamin
+prolamine
+prolan
+prolapse
+prolapsed
+prolapsing
+prole
+proleptic
+proletarian
+proliferous
+proliferously
+prolificacy
+prolificity
+proline
+prolocutor
+prolotherapy
+prolusion
+prolusions
+prolusory
+prom
+promazine
+promisee
+promisor
+promissory
+promotability
+promotable
+promptbook
+promptbooks
+promulgator
+pronatalism
+pronatalist
+pronate
+pronated
+pronating
+pronation
+pronator
+pronephric
+pronephros
+pronghorn
+pronghorns
+pronominal
+pronominally
+pronuclear
+pronucleus
+pronunciamento
+pronunciational
+prooflike
+proofread
+proofroom
+propaedeutic
+propagable
+propagandism
+propagandistically
+propagational
+propagator
+propagule
+proparoxytone
+propellent
+propellor
+propend
+propense
+properdin
+propertyless
+prophage
+prophase
+prophasic
+prophetess
+prophetical
+prophylactic
+prophylactically
+prophylaxis
+propine
+propined
+propining
+propionibacteria
+propitiable
+propitiator
+propitiatory
+proplastid
+propman
+propolis
+propone
+proponed
+proponing
+proportionable
+proportionably
+propos
+propositus
+propranolol
+proprietress
+proprioceptor
+proptosis
+propulsive
+propyl
+prorogate
+prorogation
+prorogue
+prorogued
+proroguing
+prosaically
+prosaism
+prosaist
+prosateur
+prosciutto
+proscriptive
+proscriptively
+prosector
+prosectorial
+prosecutable
+proselyte
+proselytism
+proseminar
+prosencephalic
+prosencephalon
+prosenchyma
+prosenchymas
+prosenchymata
+prosenchymatous
+prosier
+prosily
+prosiness
+prosit
+proso
+prosobranch
+prosodical
+prosodically
+prosodist
+prosoma
+prosomal
+prosopographical
+prosopography
+prosopopoeia
+prossed
+prosser
+prost
+prostaglandin
+prostatectomy
+prostatic
+prostatism
+prostatitis
+prosthesis
+prosthetically
+prosthodontics
+prosthodontist
+prostitutor
+prostomial
+prostomium
+prosy
+protamine
+protasis
+protatic
+protea
+protectant
+protectionism
+protectoral
+protectorship
+protectory
+protectress
+proteid
+proteide
+proteinaceous
+proteinase
+proteinate
+proteinuria
+proteinuric
+protend
+protensive
+protensively
+proteoclastic
+proteose
+proteranthous
+proteranthy
+protestor
+proteus
+prothalamion
+prothalamium
+prothallial
+prothallium
+prothallus
+prothesis
+prothetelic
+prothetely
+prothetic
+prothonotarial
+prothonotary
+prothoracic
+prothorax
+prothrombin
+protist
+protistan
+protitch
+protium
+proto
+protoderm
+protodermal
+protogalaxy
+protogeometric
+protohistorian
+protohistoric
+protohistory
+protohuman
+protolanguage
+protolithic
+protomartyr
+protonate
+protonated
+protonation
+protonema
+protonemal
+protonematal
+protonic
+protonotary
+protonymph
+protonymphal
+protopathic
+protophloem
+protophyta
+protoplanet
+protoplast
+protoplastic
+protoporphyrin
+protostar
+protostele
+protostelic
+prototroph
+prototrophic
+prototrophy
+prototypal
+protoxylem
+protozoal
+protozoic
+protozoological
+protozoologist
+protozoology
+protozoon
+protractile
+protraction
+protractor
+protreptic
+protrusible
+protuberatly
+proudful
+proudhearted
+provascular
+provement
+provender
+provenience
+provincialist
+provinciality
+proviral
+provirus
+provisionary
+provisons
+provisory
+provitamin
+provolone
+proxemic
+proxemics
+proximo
+proxmire
+prude
+prude's
+prudery
+prudes
+prudish
+prudishly
+prudishness
+pruinose
+prurience
+pruriency
+pruriginous
+prurigo
+pruritic
+pruritus
+prussiate
+prussic
+prutot
+pryer
+psalmbook
+psalmody
+psalter
+psalterium
+psaltery
+psaltry
+psephological
+psephologist
+psephology
+pseud
+pseudepigraph
+pseudepigraphon
+pseudepigraphy
+pseudoallele
+pseudoallelic
+pseudoallelism
+pseudoclassic
+pseudoclassicism
+pseudoenergy
+pseudomedieval
+pseudomedieval's
+pseudomedievals
+pseudonymity
+pseudonymous
+pseudonymously
+pseudonymousness
+pseudopotential
+pseudoscience
+pseudoscientific
+pseudoscientist
+pseudoscorpion
+pseudosophisticated
+pseudosophistication
+pseudotuberculosis
+psychedelia
+psychedelically
+psychiatrically
+psychoanalytical
+psychoanalytically
+psychobiographical
+psychobiography
+psychobiologic
+psychobiological
+psychobiologist
+psychochemical
+psychodrama
+psychodramatic
+psychodynamic
+psychodynamically
+psychodynamics
+psychogenesis
+psychogenetic
+psychogenic
+psychogenically
+psychognosis
+psychognosy
+psychograph
+psychokinesis
+psychokinetic
+psycholinguist
+psychologic
+psychologism
+psychometrically
+psychomotor
+psychoneurosis
+psychoneurotic
+psychopathically
+psychopathologic
+psychopathological
+psychopathologically
+psychopathologist
+psychopathology
+psychopathy
+psychopharmaceutical
+psychopharmacologic
+psychopharmacological
+psychopharmacologist
+psychopharmacology
+psychophysicist
+psychophysiologic
+psychophysiological
+psychophysiologically
+psychophysiologist
+psychopomp
+psychosexual
+psychosexuality
+psychosexually
+psychosomatically
+psychosurgery
+psychosurgical
+psychotherapeutically
+psychotherapist
+psychotically
+psychotogen
+psychotogenic
+psychotomimetic
+psychotomimetically
+psychotropic
+psychrometer
+psychrometer's
+psychrometers
+psychrometric
+psychrometry
+psychrophilic
+psyllium
+pterodactyl
+pterodactyl's
+pterodactyls
+ptolemaists
+ptomaine
+puberal
+pubertal
+puberulent
+pubes
+pubescence
+pubic
+pubis
+publican
+publicans
+publicist
+publick
+publique
+publishable
+puccoon
+puce
+pucka
+puckery
+pud
+puddingstone
+pudency
+pudendal
+pudendum
+puerperal
+puerperium
+pug
+pugaree
+puggaree
+pugging
+pugilism
+pugilist
+pugilistic
+pugmark
+pugnacious
+pugnaciously
+pugnaciousness
+pugnacity
+puisne
+puissance
+pukka
+pul
+pulchritude
+pulchritudinous
+pule
+puler
+puli
+pulicide
+pulik
+puling
+pulis
+pullback
+pullet
+pullout
+pullulate
+pullulation
+pulmonate
+pulmonic
+pulmotor
+pulpal
+pulpally
+pulpiness
+pulpwood
+pulpy
+pulque
+pulsant
+pulsator
+pulsatory
+pulsimeter
+pulsimeter's
+pulsimeters
+pulsometer
+pulsometer's
+pulsometers
+pulverulent
+pulvillus
+pulvinus
+pumiceous
+pumicite
+pumpernickel
+pumpkinseed
+pumpkinseeds
+puna
+punchball
+punchballs
+punchboard
+puncheon
+punchier
+punchinello
+punchless
+punchy
+punctate
+punctation
+punctilio
+punctilious
+punctiliously
+punctiliousness
+punctuator
+pung
+punily
+punishability
+punition
+punkah
+punkie
+punkin
+punnier
+punning
+punny
+punties
+punty
+pupae
+puparia
+puparial
+puparium
+pupfish
+pupilage
+pupilar
+pupillage
+pupillary
+pupiparous
+puppetry
+pupping
+purblind
+purblindly
+purblindness
+purdah
+purdew
+pureblood
+purebred
+puree
+puree's
+pureed
+pureeing
+purees
+purfle
+purfled
+purfling
+purgatorial
+purificator
+purificatory
+purifing
+purine
+puristic
+puritanism
+purl
+purled
+purler
+purlers
+purlieu
+purlin
+purling
+puromycin
+purplish
+purply
+purpura
+purpure
+purpuric
+purselike
+pursewarden
+pursier
+pursiness
+purslane
+pursuance
+pursuivant
+pursy
+purtenance
+purulence
+purulent
+purveyance
+purvis
+pushball
+pushcart
+pushchair
+pushchairs
+pushful
+pushfulness
+pushily
+pushout
+pushover
+pushover's
+pushovers
+pushpin
+pushpin's
+pushpins
+pusillanimity
+pusillanimous
+pusillanimously
+pussyfoot
+pussyfooter
+pussyfooting
+pussytoes
+pustulant
+pustular
+pustulate
+pustulated
+pustulation
+pustule
+pustules
+putains
+putas
+putdown
+putdown's
+putdowns
+putout
+putrefaction
+putrefactive
+putrescence
+putrescent
+putrescible
+putrescine
+putridity
+putsch
+putschist
+puttana
+puttee
+puttees
+puttyroot
+puzzleheaded
+puzzleheadedness
+pycnidium
+pycnogonid
+pycnometer
+pycnometer's
+pycnometers
+pyelitis
+pyelonephritic
+pyelonephritis
+pyemia
+pyemic
+pygidial
+pygidium
+pygmaean
+pygmean
+pygmoid
+pygmyish
+pygmyism
+pyknic
+pylon
+pylons
+pylori
+pyloric
+pylorus
+pyocanea
+pyoderma
+pyodermic
+pyogenic
+pyracanth
+pyracantha
+pyralid
+pyralidid
+pyramidical
+pyran
+pyranoid
+pyranose
+pyranoside
+pyrargyrite
+pyrene
+pyrenoid
+pyrethrin
+pyrethroid
+pyrethrum
+pyretic
+pyrexia
+pyrexial
+pyrexic
+pyrheliometer
+pyrheliometer's
+pyrheliometers
+pyrheliometric
+pyric
+pyridoxal
+pyridoxamine
+pyridoxin
+pyridoxine
+pyriform
+pyrimethamine
+pyrimidine
+pyrimidines
+pyrite
+pyrites
+pyritic
+pyrocatechol
+pyrocellulose
+pyrochemical
+pyrochemically
+pyroclastic
+pyroelectric
+pyroelectricity
+pyrogallol
+pyrogen
+pyrogenic
+pyrogenicity
+pyrogenous
+pyrola
+pyroligneous
+pyrolusite
+pyrolytic
+pyrolytically
+pyromancy
+pyromania
+pyromaniac
+pyromaniac's
+pyromaniacal
+pyromaniacs
+pyrometallurgical
+pyrometallurgy
+pyrometric
+pyrometrically
+pyromorphite
+pyronine
+pyroninophilic
+pyrope
+pyrophoric
+pyrophosphatic
+pyrophyllte
+pyrosis
+pyrotechnical
+pyrotechnically
+pyrotechnist
+pyroxenic
+pyroxenitic
+pyroxenoid
+pyroxylin
+pyrrhic
+pyrrhotite
+pyrrhuloxia
+pyrrol
+pyrrole
+pyrrolic
+pyruvate
+pyschiatrist
+pythoness
+pythonic
+pythonine
+pyuria
+pyx
+pyxides
+pyxidium
+pyxie
+pyxis
+qua
+quackish
+quadded
+quadding
+quadrantal
+quadraphonic
+quadraphonics
+quadraphony
+quadrat
+quadrate
+quadrated
+quadrates
+quadrating
+quadrennium
+quadricentennial
+quadricipital
+quadrifid
+quadripuntal
+quadrisect
+quadrisected
+quadrisecting
+quadrisects
+quadrisyllabic
+quadrivalent
+quadrivial
+quadroon
+quadroons
+quadrumvir
+quadrumvirate
+quadruped
+quadrupedal
+quadrupeds
+quadruplet
+quadruplets
+quadruplicity
+quadruply
+quadrupolar
+quadrupole
+quaestor
+quag
+quai
+quaich
+qualmish
+qualmishly
+qualmishness
+qualmy
+quant
+quantal
+quantasome
+quantic
+quantifiably
+quantificational
+quantificationally
+quantifys
+quantitate
+quantitated
+quantitates
+quantitating
+quantitation
+quantitations
+quarantinable
+quark
+quarks
+quartan
+quarterage
+quarterdeck
+quarterdecks
+quarterfinal
+quarterfinalist
+quartern
+quarternary
+quarterstaff
+quartette
+quartic
+quartics
+quarto
+quartos
+quartziferous
+quartzitic
+quartzose
+quasimodo
+quasiparticle
+quatercentenary
+quaternion
+quaternity
+quatrefoil
+quattrocento
+quattuordecillion
+quavery
+quayage
+quayside
+quean
+queasily
+queazy
+queenship
+queerish
+quenchable
+quenchless
+querilla
+querist
+quern
+querns
+questionary
+questionless
+questor
+quetzal
+quetzales
+quib
+quibs
+quickset
+quid
+quid's
+quiddity
+quids
+quiescence
+quietism
+quietist
+quietus
+quiff
+quiffed
+quiffs
+quillwort
+quince
+quinces
+quincuncial
+quincuncially
+quincunx
+quincunxes
+quincunxial
+quindecillion
+quinidine
+quiniela
+quinoa
+quinoid
+quinoidine
+quinoline
+quinquennium
+quinquevalent
+quinquivalent
+quintain
+quintal
+quintessence
+quintette
+quintic
+quintuple
+quintupled
+quintuples
+quintuplet
+quintuplet's
+quintuplets
+quintuplicate
+quintuplicated
+quintuplicates
+quintuplicating
+quintupling
+quintus
+quipped
+quipster
+quirkily
+quirkiness
+quirky
+quisling
+quislingism
+quitch
+quitclaim
+quitrent
+quittance
+quitted
+quittor
+quixotical
+quixotically
+quixotry
+quizmaster
+quizzer
+quizzicality
+quod
+quodlibet
+quoin
+quoit
+quoits
+quondam
+quot
+quotable
+quotidian
+rRNA
+rabbet
+rabbeted
+rabbeting
+rabbets
+rabbinate
+rabbinic
+rabbinism
+rabbitry
+rabbity
+rabblement
+rabic
+rabidity
+racecourse
+racecourses
+racemate
+racemic
+racemose
+rachet
+rachides
+rachiodont
+rachis
+rachises
+rachitic
+rachitis
+racialism
+racialist
+racialistic
+racily
+racine
+rackle
+racon
+raconteur
+racoon
+rad
+radarscope
+radarscopes
+raddle
+raddled
+raddles
+raddling
+radiale
+radiancy
+radiational
+radiationless
+radic
+radicand
+radicate
+radicle
+radicular
+radioautograph
+radioautographic
+radioautography
+radiobiologic
+radiobiological
+radiobiologically
+radiobiologist
+radiobiology
+radiobroadcast
+radiobroadcaster
+radiobroadcasting
+radiocast
+radiocaster
+radiochemist
+radiochlorine
+radioecological
+radioecologist
+radioecology
+radioelement
+radiogenic
+radiogram
+radiogram's
+radiograms
+radiograph
+radiographically
+radioimmunoassay
+radioisotope
+radioisotopic
+radioisotopically
+radiolarian
+radiolocation
+radiologist
+radiolucency
+radiolucent
+radiolysis
+radiolytic
+radiometeorograph
+radiometrically
+radiomimetic
+radionuclide
+radiopaque
+radiophone
+radiophoto
+radiophotograph
+radioscopic
+radioscopy
+radiosensitive
+radiosensitivity
+radiosonde
+radiostrontium
+radiosymmetrical
+radiotelegraph
+radiotelegraphic
+radiotelegraphy
+radiotelephone
+radiotelephony
+radiotherapist
+radiothorium
+radiotracer
+radome
+rads
+radula
+radular
+raff
+raffia
+raffinose
+raftsman
+raga
+ragamuffin
+ragbag
+raggedy
+raggle
+ragi
+raglan
+ragman
+ragpicker
+ragtag
+ragtime
+rah
+rainmaker
+rainmaking
+rainproof
+rainspout
+rainsquall
+rainwash
+rainwear
+raj
+raja
+rale
+rallye
+rallyist
+rallymaster
+ramate
+rambunctious
+rambunctiously
+rambunctiousness
+ramekin
+ramentum
+ramequin
+rami
+ramie
+ramiform
+ramillies
+ramirez
+rammer
+ramose
+ramosely
+ramous
+rampageous
+rampageously
+rampageousness
+rampancy
+rampion
+ramshackle
+ramus
+ranchman
+ranian
+rantry
+ranunculus
+rapacity
+rapine
+rapist
+rappee
+rappen
+rapporteur
+rapscallion
+raptor
+raptorial
+rapunzel
+rarebit
+rarefaction
+rarefactional
+rarefactive
+rarify
+rasa
+rascality
+rasing
+rasorial
+raspy
+rasure
+rata
+ratably
+ratafia
+rataplan
+ratch
+ratel
+ratemeter
+ratemeter's
+ratemeters
+ratepayer
+ratepayers
+rathe
+rathskeller
+raticide
+ratificationist
+ratiocinator
+rationalistically
+ratlike
+ratline
+raton
+ratoon
+rattan
+ratted
+ratteen
+ratter
+ratting
+rattlebrain
+rattlebrained
+rattletrap
+rattly
+rattrap
+raunchier
+raunchily
+raunchiness
+raunchy
+ravagement
+ravel
+ravelment
+ravels
+ravioli
+ravishment
+rawinsonde
+rawlings
+rawlins
+rayless
+raylessness
+rayon
+razeed
+razeeing
+razorbill
+razz
+razzmatazz
+reabsorb
+reabsorption
+reacquaint
+reacquire
+reacquisition
+reactance
+reactances
+reactional
+reactionally
+reactionaryism
+reaggregate
+reaggregation
+realpolitik
+reapportion
+rearhorse
+rearm
+rearmament
+rearming
+rearmost
+rearward
+rearwardly
+rearwards
+reasonability
+reasonless
+reasonlessly
+reassembly
+reave
+reaver
+reaving
+reb
+rebarbative
+rebarbatively
+reboant
+rebs
+rebus
+rebuttable
+rebutter
+recalcitrance
+recalcitrancy
+recalescence
+recallability
+recantation
+recap
+recatory
+receivership
+recension
+receptaculum
+recessional
+recessionary
+recharge
+rechargeable
+recharger
+recharging
+recheat
+recidivism
+recidivist
+recidivistic
+reciprocator
+recision
+recitalist
+recitativo
+reck
+reclinate
+reclosable
+recoin
+recombinant
+recommit
+recommitment
+recompence
+recompose
+reconcilability
+reconcilable
+reconcilableness
+reconcilement
+reconfirm
+reconfirmation
+reconstitute
+reconstitution
+reconstructionism
+reconstructionist
+reconstructor
+recontaminate
+reconversion
+reconvert
+reconverted
+reconvey
+reconveyance
+recordable
+recordation
+recordist
+recoupable
+recoupment
+recreant
+recreatable
+recreationist
+recriminatory
+recrudesce
+recrudescence
+recrudescent
+rectal
+rectally
+rectangularity
+recti
+rectifiability
+rectifiable
+recting
+rection
+rectitudinous
+rective
+recto
+rectorate
+rectorial
+rectorship
+rectos
+rectrices
+rectrix
+rectus
+recumbency
+recusancy
+redaction
+redactional
+redargue
+redbone
+redcap
+redded
+reddy
+rede
+redear
+redecorate
+redecorator
+redeemable
+redemptional
+redemptory
+redeploy
+redeployed
+redeployment
+redescribe
+redescription
+redetermine
+redetermined
+redetermining
+redhook
+redhorse
+redia
+rediae
+redial
+redias
+redintegrate
+redintegration
+redintegrative
+rediscount
+rediscountable
+redistributory
+redistrict
+redivivus
+redleg
+redolence
+redolent
+redolently
+redondo
+redoubt
+redoubtably
+redout
+redox
+redpoll
+redroot
+redshank
+redshift
+redshifted
+redshifting
+redshifts
+redshirt
+redskin
+redstart
+redtop
+reductant
+reductase
+reductio
+reductional
+reductionist
+reductionistic
+reduplicate
+reduplication
+reduplicative
+reduplicatively
+reduviid
+redwing
+ree
+reedbuck
+reedify
+reeducate
+reeducative
+reeky
+reelable
+reembroider
+reemphasization
+reemphasization's
+reemploy
+reemployment
+reenforce
+reenlist
+reenlisted
+reenlistment
+reentrance
+reest
+reestablishment
+ref
+reface
+refacing
+refect
+refection
+referable
+refinish
+refinisher
+refinishes
+refinishing
+refit
+reflation
+reflationary
+reflectional
+reflectometer
+reflectometer's
+reflectometers
+reflectometry
+reflexion
+reflexology
+reflorescence
+reflorescent
+reflow
+refluence
+reforest
+reforge
+reformate
+reformational
+refractile
+refractivities
+refractivity
+refractometric
+refractometry
+refractor
+refractorily
+refrainment
+refrangibility
+refrangible
+refrangibleness
+refrigerant
+refringent
+reft
+refugeeism
+refugium
+refulgence
+refulgent
+refundability
+refundable
+refurbishment
+refutably
+regality
+regardant
+regardful
+regardfully
+regardfulness
+regelation
+regenerable
+regeneracy
+regenerator
+regental
+regicidal
+regicide
+regimental
+regimentally
+regimentals
+regionalist
+regionalistic
+regisseur
+regius
+reglet
+regna
+regnal
+regnant
+regnum
+regolith
+regorge
+regorged
+regorging
+regosol
+regrant
+regreet
+regressor
+regretless
+regretter
+regrid
+regridded
+regridding
+regrow
+regurgitate
+regurgitated
+regurgitates
+regurgitating
+regurgitation
+regurgitative
+rehabilitant
+rehabilitationist
+rehabilitator
+rehear
+rehouse
+rehousing
+rehydratable
+rehydrate
+rehydration
+reichsmark
+reification
+reified
+reify
+reifying
+reimpression
+reincarnationist
+reinfection
+reinforceable
+reinhard
+reinhardt
+reinless
+reinsman
+reinsurance
+reinsure
+reinsurer
+reintegrate
+reintegration
+reintegrative
+reinvestment
+reinvigorate
+reinvigorator
+reiterator
+reive
+reiver
+reiving
+rejectee
+rejuvenate
+rejuvenated
+rejuvenates
+rejuvenating
+rejuvenation
+rejuvenator
+rejuvenescence
+rejuvenescent
+relatable
+relator
+relaxant
+relaxin
+releasability
+releasably
+relection
+reliction
+relievable
+relievo
+religionist
+religiose
+reline
+relinquishment
+reliquary
+relique
+reliquiae
+relishable
+relocatee
+relucent
+reluctancy
+reluctate
+reluctated
+reluctation
+reluctivity
+relume
+relumed
+relumine
+reluming
+remaines
+reman
+remanence
+remanent
+remanufacture
+remanufacturer
+remap
+remarque
+remediably
+remedially
+remediate
+remediation
+remediless
+remedilessly
+rememberability
+rememberable
+remigial
+remindful
+reminiscential
+remint
+remise
+remised
+remising
+remissible
+remissibly
+remitment
+remittable
+remittal
+remittent
+remittently
+remitter
+remonstrance
+remonstrant
+remonstrantly
+remonstrator
+remount
+removability
+removably
+remunerator
+remuneratory
+remus
+renascence
+renderable
+renegade
+renegades
+renege
+reneged
+reneger
+reneges
+reneging
+renewability
+renewably
+reniform
+renig
+renigged
+renigging
+renin
+renitency
+renitent
+rennet
+rennin
+renographic
+renography
+renominate
+renominating
+renomination
+renouncement
+renovator
+rentability
+rentable
+rente
+rentier
+renunciatory
+reoccupy
+reoccur
+reoccurrence
+rep
+repack
+repacker
+repacking
+repairability
+repand
+reparative
+repass
+repassage
+repatriate
+repatriated
+repatriates
+repatriating
+repatriation
+repealable
+repellant
+repellency
+repeller
+repercussive
+repetend
+repetitional
+replant
+repleviable
+replevied
+replevies
+replevin
+reportable
+reposal
+reposeful
+reposefully
+reposefulness
+reposit
+reposited
+repositing
+repossess
+repossession
+repower
+reprehend
+reprehensibility
+reprehensibly
+reprehension
+reprehensive
+representationalism
+representationalist
+repressibility
+repressible
+repressionist
+repressor
+reprieval
+repristinate
+repristination
+repro
+reproachable
+reproachful
+reproachfully
+reproachfulness
+reprobance
+reprobatory
+reprocess
+reprocessable
+reprocesses
+repros
+repudiationist
+repudiator
+repugn
+repugnancy
+reputability
+req
+requestioner
+requestor
+requiescat
+requin
+requital
+reradiate
+reradiation
+reredos
+reremouse
+rereward
+resail
+rescale
+rescindment
+rescission
+rescissory
+rescript
+researchist
+resect
+resectability
+resectable
+resection
+reseed
+resend
+resending
+reserpine
+reservist
+reservists
+resettable
+reship
+reshipment
+reshipper
+reshuffle
+residua
+resile
+resiled
+resiliency
+resiling
+resinate
+resinify
+resinoid
+resinous
+resiny
+resistable
+resistibility
+resistless
+resistlessly
+resistlessness
+resitting
+resojet
+resole
+resolvent
+resorb
+resorcinol
+resorption
+resorptive
+respell
+respirable
+respirational
+respirometer
+respirometer's
+respirometers
+respirometric
+respirometry
+resplendence
+resplendency
+responsory
+responsum
+ressentiment
+resses
+restage
+restartable
+restauranteur
+restitute
+restorable
+restoral
+restrainable
+restrictionism
+restrictionist
+restrike
+resultful
+resultfulness
+resultless
+resupinate
+resupination
+resupine
+resurgam
+resurge
+resurging
+resurrectional
+resurrectionist
+resuscitator
+resuscitators
+resvering
+ret
+retable
+retake
+retardate
+retentivity
+retenue
+retia
+retiarius
+reticency
+reticule
+reticulocyte
+reticulocytic
+reticulose
+retiform
+retinacular
+retinaculum
+retinae
+retinene
+retinitis
+retinol
+retinopathy
+retinoscopy
+retinospora
+retinula
+retinular
+retirant
+retool
+retortion
+retot
+retouch
+retoucher
+retractile
+retractility
+retrainable
+retrainee
+retral
+retrally
+retread
+retreaded
+retreading
+retreatant
+retrench
+retrial
+retributive
+retributively
+retributory
+retrievability
+retroaction
+retroactivity
+retrocede
+retrocession
+retrofire
+retrofitted
+retrogradation
+retrogress
+retrogression
+retrolental
+retrolingual
+retropack
+retroperitoneal
+retroperitoneally
+retroreflection
+retroreflective
+retroreflector
+retrorse
+retrorsely
+retroserrate
+retroversion
+rets
+retsina
+retted
+retting
+returnee
+returnee's
+returnees
+retuse
+reunification
+reunify
+reunionist
+reunionistic
+rev
+revalidate
+revalidating
+revaluate
+revalue
+revanche
+revanchist
+revealable
+revealment
+revegetate
+revegetation
+revehent
+reveille
+reveilles
+revelator
+revenant
+rever
+reverb
+reverberant
+reverberantly
+reverberatory
+reverential
+reverentially
+revers
+reversibly
+reversional
+reversionary
+revertible
+revery
+revest
+revetment
+revetted
+revictual
+revilement
+revisal
+revisionism
+revisor
+revisory
+revivable
+revivalist
+revivalistic
+revivalists
+revivification
+revivify
+reviviscence
+reviviscent
+revokable
+revoluable
+revolute
+revolutionarily
+revolutionibus
+revolutionist
+revolvable
+revs
+revulsed
+revulsive
+rew
+rewake
+rewaken
+rewardable
+rexroth
+rey
+reynard
+rezone
+rhabdom
+rhabdomancy
+rhabdome
+rhabdomere
+rhadamanthine
+rhamnaceous
+rhamnose
+rhamnus
+rhaphe
+rhapsodical
+rhapsodically
+rhapsodist
+rhatany
+rhebok
+rheims
+rheinholdt
+rheological
+rheologically
+rheologist
+rheometer
+rheometer's
+rheometers
+rheophile
+rheophilic
+rheostatic
+rhesus
+rhet
+rhetor
+rheumatically
+rheumatiz
+rheumatoid
+rheumatologist
+rheumatology
+rheumy
+rhinal
+rhinelander
+rhinencephalic
+rhinencephalon
+rhinitis
+rhinocerotic
+rhinolaryngology
+rhinopharyngitis
+rhinoscopy
+rhinosporidium
+rhinovirus
+rhizanthous
+rhizobium
+rhizocarpic
+rhizocarpous
+rhizocephalan
+rhizocephalid
+rhizoctonia
+rhizogenesis
+rhizogenetic
+rhizogenic
+rhizoid
+rhizoidal
+rhizomatous
+rhizome
+rhizomic
+rhizomorphous
+rhizoplane
+rhizopod
+rhizopodal
+rhizopodous
+rhizopus
+rhizosphere
+rhizotomy
+rhodamine
+rhodochrosite
+rhodomontade
+rhodoplast
+rhodopsin
+rhodora
+rhomb
+rhombencephalon
+rhombi
+rhombohedral
+rhombohedron
+rhomboid
+rhomboidal
+rhomboideus
+rhombs
+rhonchi
+rhonchus
+rhumb
+rhumba
+rhumbs
+rhus
+rhuses
+rhymester
+rhyolite
+rhyolitic
+rhythmicity
+rhythmist
+rhytidome
+ri
+rial
+rialto
+riant
+riantly
+riata
+ribaldry
+riband
+ribas
+ribband
+ribber
+ribbonlike
+ribby
+ribgrass
+riblet
+ribonuclease
+ribonucleoprotein
+ribonucleoside
+ribonucleotide
+ribose
+ricci
+ricebird
+ricercar
+richert
+richey
+richland
+richment
+rici
+ricin
+ricinus
+rickards
+rickenbaugh
+rickettsia
+rickey
+rickeys
+rickrack
+ricksha
+ricotta
+rictal
+rictus
+ridded
+ridder
+rideable
+riderless
+ridgeling
+ridgling
+ridgy
+ridotto
+ridpath
+riegger
+riel
+rien
+rier
+rife
+rifely
+riff
+riffle
+riffled
+riffler
+riffles
+riffling
+riffraff
+rification
+rifice
+rificer
+riflebird
+riflery
+riflescope
+rifying
+rigadoon
+rigatoni
+rigaudon
+rightism
+rigidification
+rigidify
+rigorism
+rigorism's
+rigorisms
+rigorist
+rigorist's
+rigoristic
+rigoristics
+rigorists
+rile
+riling
+rilke
+rille
+rillet
+rilly
+rimbaud
+rimier
+rimland
+rimose
+rimous
+rimrock
+rimy
+rin
+rinascimento
+rinderpest
+ringbark
+ringbolt
+ringbolts
+ringbone
+ringboned
+ringdove
+ringel
+ringent
+ringleader
+ringleaders
+ringlike
+ringmaster
+ringmasters
+ringneck
+ringolade
+ringstraked
+ringtail
+ringtaw
+ringtoss
+ringworm
+ringworms
+ripieno
+ripoff
+ripoff's
+ripoffs
+riposte
+ripper
+riprap
+ripsaw
+ripsnorter
+ripsnorting
+riptide
+risibility
+risorgimento
+risotto
+rit
+ritard
+ritualism
+ritualist
+ritualistic
+ritualistically
+ritzier
+ritziness
+ritzy
+rivalrous
+riverbed
+riverview
+riverward
+riverwards
+riverweed
+riyal
+roadability
+roadless
+roadrunner
+roadrunners
+roadstead
+roadwork
+roadworks
+roadworthiness
+roadworthy
+roan
+robalo
+roband
+robbie
+roble
+robustious
+robustiously
+robustiousness
+roc
+rocambole
+rochet
+rockabilly
+rockaway
+rockaways
+rocketeer
+rocketry
+rockettes
+rockfish
+rocklike
+rockling
+rockoon
+rockrose
+rockshaft
+rockskipper
+rococo
+rodenticide
+rodeph
+rodless
+rodlike
+roemer
+roentgenogram
+roentgenogram's
+roentgenograms
+roentgenograph
+roentgenographic
+roentgenographically
+roentgenography
+roentgenologic
+roentgenological
+roentgenologically
+roentgenologist
+roentgenology
+roentgenoscope
+roentgenoscopic
+roentgenoscopy
+roentgenotherapy
+roff
+rogation
+rogueing
+roguery
+roi
+roic
+roily
+roister
+roistered
+roisterer
+roistering
+roisterous
+rolamite
+rollick
+rollie
+rollout
+rollover
+rolnick
+romaine
+romanticist
+romanza
+romaunt
+romulo
+rondeau
+rondeaux
+rondel
+rondelet
+rondelle
+rondure
+ronnel
+ronyon
+roofhouse
+roofless
+rooflike
+roofline
+rooftree
+rookery
+rooky
+roomette
+rooney
+roorback
+roos
+roose
+rootage
+roothold
+rootlet
+rootlike
+rootstalk
+rootstock
+rooty
+ropean
+ropedancer
+ropedancing
+ropery
+ropewalk
+ropewalker
+ropeway
+ropework
+ropier
+ropiness
+ropy
+roque
+roquelaure
+rorqual
+rosabelle
+rosaceous
+rosaniline
+rosarian
+rosebay
+rosefish
+roselike
+rosella
+rosemaling
+roseola
+roseolar
+rosery
+roset
+rosewater
+rosewood
+rosie
+rosily
+rosin
+rosined
+rosining
+rosinous
+rosinweed
+roslev
+rossi
+rossoff
+rostagno
+rostagnos
+rostellar
+rostellate
+rostellum
+rostra
+rostral
+rostrate
+rosulate
+roswell
+rota
+rotaed
+rotameter
+rotameter's
+rotameters
+rotatable
+rotatory
+rote
+rotenone
+rotgut
+rothko
+rotifer
+rotisserie
+rotonda
+rotorcraft
+rotos
+rotted
+rottenstone
+rotter
+rottosei
+rottweiler
+roturier
+rou
+rouen
+roughage
+roughcast
+roughhouse
+roughhoused
+roughhousing
+roughleg
+roughrider
+roughriders
+roulade
+rouleau
+rouleaux
+roundel
+roundelay
+roundish
+roundlet
+roundsman
+roundwood
+roup
+rous
+rouseabout
+rousement
+roust
+rouster
+routeman
+routeway
+routh
+roux
+roven
+rowdily
+rowdyish
+rowdyism
+rowlock
+roxy
+royalism
+royaux
+royster
+rozella
+rozelle
+rozzer
+rpt
+rubasse
+rubato
+rubberlike
+rubberneck
+rubbernecker
+rubbishy
+rubblework
+rubefacient
+rubellite
+rubeola
+rubeolar
+rubicundity
+rubiginous
+rubious
+rubrical
+rubrically
+rubricate
+rubrication
+rubricator
+rubus
+rubythroat
+rucellai
+ruche
+ruching
+ruck
+rucksack
+ruction
+rudbeckia
+rudd
+rudderpost
+rudderstock
+ruddily
+ruddle
+ruddled
+ruddleman
+ruddling
+ruddock
+ruderal
+rudesbies
+rudesby
+rudimental
+rudimentarily
+rufescent
+ruff
+ruffe
+ruffed
+ruffianism
+ruffly
+rufous
+ruga
+rugae
+rugal
+rugate
+rugby
+rugger
+ruggiero
+rugose
+rugosely
+rugosity
+rugulose
+ruh
+ruidoso
+ruinate
+ruleless
+rulership
+rumba
+rumbly
+rumbustious
+rumdum
+rumina
+ruminal
+ruminate
+rumination
+ruminative
+ruminatively
+ruminator
+rummel
+rummer
+rummest
+rumrunner
+runagate
+runaround
+runback
+runcinate
+rundle
+rundlet
+runless
+runlet
+runnel
+runnels
+runneth
+runny
+runout
+runouts
+runover
+runtm
+rupiah
+rupiahs
+rupicoline
+rupicolous
+ruppert
+ruralist
+rurban
+rushall
+rushee
+rushlight
+rushy
+russetting
+russification
+russify
+russula
+rustical
+rustically
+rusticator
+rusticity
+rustily
+ruthenic
+ruthenious
+rutilant
+rutile
+ruttish
+ruttishly
+ruttishness
+ryegrass
+saba
+sabadilla
+sabbat
+sabbatic
+sabin
+sabol
+sabot
+saboteur
+saboteurs
+sabra
+sac
+sacahuiste
+sacaton
+saccade
+saccadic
+saccate
+saccharase
+saccharate
+saccharide
+saccharides
+saccharification
+saccharify
+saccharimeter
+saccharimeter's
+saccharimeters
+saccharimetry
+saccharin
+saccharine
+saccharinity
+saccharoidal
+saccharometer
+saccharometer's
+saccharometers
+saccharomyces
+saccharose
+saccular
+sacculate
+sacculated
+sacculates
+sacculation
+saccule
+sacculus
+sacerdotal
+sacerdotalism
+sacerdotalist
+sacerdotally
+sachem
+sachemic
+sachems
+sachet
+sacheted
+sacheverell
+sackbut
+sackcloth
+sackful
+saclike
+sacque
+sacra
+sacramental
+sacramentalism
+sacramentalist
+sacramentally
+sacrarium
+sacre
+sacrestia
+sacrilegiousnes
+sacring
+sacristan
+sacristy
+sacroiliac
+sacrosanctity
+sacrum
+saddhu
+saddlebow
+saddlecloth
+saddleless
+saddlery
+saddletree
+sadomasochism
+sadomasochist
+sadomasochistic
+safecracker
+safecracking
+safelight
+safetyman
+safflower
+safranin
+safranine
+safrole
+sagami
+saggar
+sagger
+sagittal
+sagittally
+sagittate
+sago
+sagos
+saguaro
+sahib
+sailable
+sailboard
+sailcloth
+sailon
+sailplane
+sailplaner
+sain
+sainfoin
+saintdom
+saintlike
+saintsbury
+saintship
+saith
+saithe
+saki
+sako
+salability
+salamandrine
+salariat
+saleable
+saledo
+saleratus
+saleroom
+salesclerk
+salesroom
+saleswoman
+salic
+salicin
+salicylate
+salida
+salientian
+salimeter
+salimeter's
+salimeters
+salinity
+salinometer
+salinometer's
+salinometers
+sallet
+sallowish
+salmagundi
+salmi
+salmonberries
+salmonberry
+salmonella
+salmonellosis
+salmonid
+salmonoid
+salometer
+salometer's
+salometers
+saloonkeep
+saltarello
+saltation
+saltatorial
+saltatory
+saltbox
+saltbush
+saltcellar
+saltern
+saltily
+saltine
+saltire
+saltless
+saltlike
+saltonstall
+saltshaker
+saltworks
+saltwort
+salubrity
+saluki
+salutarily
+salutaris
+salutational
+salutatorian
+salutatory
+salutiferous
+salutory
+salvable
+salvageability
+salvational
+salvationism
+salvationist
+salverform
+salvific
+salvoes
+salvor
+samar
+samara
+samarium
+samarskite
+samba
+sambar
+sambur
+samisen
+samite
+samlet
+samp
+sampan
+samphire
+samurai
+samurai's
+samurais
+sanatarium
+sanative
+sanbenito
+sancta
+sanctimony
+sanctum
+sandarac
+sandbagger
+sandbank
+sandbar
+sandbox
+sandbur
+sandglass
+sandhog
+sandling
+sandlot
+sandlotter
+sandpapery
+sandsoap
+sandstorm
+sandstorms
+sandworm
+sandworms
+sangaree
+sangfroid
+sanguinaria
+sanguinarily
+sanguineum
+sanguinity
+sanguinolent
+sanicle
+sanious
+sanipractor
+sanitaire
+sanitarian
+sanitarily
+sanitorium
+sannyasi
+sans
+sansei
+sanseis
+sanserif
+sansevieria
+sanskritic
+sansom
+sansome
+sant
+santolina
+santonica
+santonin
+santour
+saphead
+sapheaded
+saphenous
+sapid
+sapidity
+sapience
+sapiens
+sapient
+sapiently
+sapio
+sapless
+saplessness
+sapodilla
+sapogenin
+saponaceous
+saponaceousness
+saponifiable
+saponification
+saponifier
+saponify
+saponin
+saponins
+saponite
+sapor
+saporous
+sapota
+sapper
+sapphic
+sapphirine
+sapphism
+sapremia
+sapremic
+saprobe
+saprobic
+saprobically
+saprogenic
+saprogenicity
+saprolite
+sapropelic
+saprophagous
+saprophyte
+saprophytic
+saprophytically
+saprozoic
+sapsago
+saraband
+sarabande
+sarape
+sarasate
+sarcenet
+sarcoid
+sarcoidosis
+sarcolemma
+sarcolemmal
+sarcomatosis
+sarcomatous
+sarcomere
+sarcomeric
+sarcophagic
+sarcophagous
+sarcophagus
+sarcophagy
+sarcoplasm
+sarcoplasma
+sarcoplasmatic
+sarcoplasmic
+sarcosomal
+sarcosome
+sardonically
+sardonicism
+sardonyx
+sargasso
+sargassum
+sarge
+sarmi
+sarod
+sarode
+sarodist
+sarong
+sarong's
+sarongs
+sarpsis
+sarsaparilla
+sarsenet
+sarsparilla
+sarti
+sartorial
+sartorially
+sashimi
+saskatoon
+sass
+sassier
+sasswood
+sassy
+satang
+satangs
+satanically
+satchelful
+sateen
+satem
+sati
+satiety
+satinet
+satinwood
+satiny
+satori
+saturable
+saturant
+saturator
+saturnali
+saturnalian
+saturnalianly
+saturniid
+satyriasis
+satyric
+satyrid
+saucebox
+saucerlike
+sauch
+sauerbraten
+sauger
+saurel
+saurian
+sauries
+sauropod
+savable
+savagism
+savanna
+savanna's
+savannas
+savant
+savants
+savate
+saveable
+sawbelly
+sawbones
+sawboneses
+sawbuck
+sawfish
+sawfly
+sawlike
+sawtimber
+saxhorn
+saxifrage
+saxophonic
+saxton
+sayable
+scabbier
+scabbing
+scabble
+scabbled
+scabbles
+scabbling
+scabby
+scabies
+scabietic
+scabiosa
+scabious
+scad
+scad's
+scads
+scag
+scagliola
+scalade
+scalado
+scalage
+scalare
+scalariform
+scalariformly
+scalation
+scalawag
+scaleless
+scalelike
+scalene
+scalepan
+scallion
+scallopini
+scallywag
+scallywags
+scalogram
+scalogram's
+scalograms
+scammed
+scamming
+scammony
+scampi
+scampini
+scampish
+scandalmonger
+scandent
+scannable
+scansion
+scantling
+scape
+scapegoatism
+scapegrace
+scaphoid
+scapin
+scaping
+scapolite
+scapose
+scarab
+scarabaeid
+scaramouch
+scaramouche
+scarecrowish
+scarehead
+scaremonger
+scarey
+scarfpin
+scarfskin
+scarious
+scarlatinal
+scarless
+scarp
+scarped
+scarper
+scarpered
+scarpering
+scarpers
+scarph
+scarping
+scarps
+scarring
+scarry
+scatback
+scathe
+scathed
+scatheless
+scathes
+scatological
+scatology
+scatted
+scatteration
+scattershot
+scattier
+scatty
+scaup
+scauper
+scaups
+scc
+scena
+scenarist
+scenical
+scenically
+scenographic
+scenographically
+scenography
+scentless
+sceptibly
+schelling
+schematism
+scherzi
+scherzo
+schismatic
+schismatical
+schismatically
+schismatist
+schistose
+schistosity
+schistosomal
+schistosome
+schistosomiasis
+schistous
+schizo
+schizocarp
+schizogonic
+schizogonous
+schizogony
+schizomycete
+schizomycetous
+schizont
+schizophrene
+schizophrenically
+schizophyte
+schizophytic
+schizos
+schizothymic
+schlemiel
+schlepp
+schlieren
+schlieric
+schlock
+schmaltz
+schmaltzy
+schmalz
+schnauzer
+schnitzel
+scholastica
+scholasticate
+scholasticism
+scholiast
+scholiastic
+scholium
+schoolbag
+schoolchild
+schoolfellow
+schoolman
+schoolmistress
+schooltime
+schopenhauer
+schorlaceous
+schuman
+schwada
+sciaenoid
+sciatic
+sciential
+scientifique
+scientism
+scientologist
+scientology
+scilicet
+scilla
+scintigraphic
+scintigraphy
+scintilla
+scintillant
+scintillantly
+scintillator
+scintillometer
+scintillometer's
+scintillometers
+sciolism
+sciolist
+sciolistic
+sciomancy
+sciomantic
+scirocco
+scirrhi
+scirrhous
+scirrhus
+scissile
+scission
+scissortail
+sclerose
+sclerosed
+sclerotial
+sclerotin
+sclerotium
+scofflaw
+scofflaw's
+scofflaws
+scolecite
+scolex
+scolices
+scoliosis
+scoliotic
+scollop
+scolopendra
+scombroid
+sconce
+scone
+scoopful
+scopic
+scopolamine
+scopula
+scopulate
+scorbutic
+scorbutically
+scorekeeper
+scoria
+scoriaceous
+scorpaenid
+scorpioid
+scotchgard
+scotchman
+scoter
+scotoma
+scotomatous
+scotopic
+scottie
+scouse
+scouser
+scoutcraft
+scoutmaster
+scrabbly
+scrag
+scraggier
+scragging
+scraggy
+scrannel
+scrapie
+scrapper
+scrappier
+scrappiness
+scrapple
+scrappy
+scrawly
+screak
+screaky
+scree
+screenable
+screenful
+screvane
+screwbean
+screwier
+screwiness
+screwlike
+screwworm
+screwy
+scrieve
+scrimpy
+scrimshaw
+scrip
+scriptal
+scription
+scriptorium
+scriptwriter
+scriptwriter's
+scriptwriters
+scrod
+scrofula
+scrofulous
+scrollwork
+scrota
+scrotal
+scrotum
+scrotum's
+scrotums
+scrouge
+scrouging
+scrubbier
+scrubby
+scrubland
+scrubwoman
+scruff
+scruffier
+scruffiness
+scruffy
+scrum
+scrummage
+scrunch
+scrutator
+scrutin
+scrutineer
+scud
+scudded
+scudding
+scuds
+scull
+sculled
+sculler
+sculleries
+scullery
+sculling
+scullion
+scullions
+sculls
+sculpin
+sculpsit
+sculptress
+sculpturesque
+sculpturesquely
+scumble
+scumbled
+scumbles
+scumbling
+scumming
+scummy
+scunner
+scup
+scupper
+scuppered
+scuppering
+scuppernong
+scuppers
+scups
+scurf
+scurfy
+scurril
+scurrile
+scurrility
+scurvily
+scuttlebutt
+scutum
+seabag
+seabeach
+seabed
+seabed's
+seabird
+seaboot
+seaborne
+seacraft
+seadog
+seadrome
+seafloor
+seafowl
+seafront
+seagirt
+seagoing
+sealery
+sealskin
+seamanlike
+seamark
+seamlike
+seamount
+seamster
+seaplane
+seaquarium
+searchable
+searchless
+seascape
+sease
+seashell
+seashell's
+seashells
+seasick
+seasickness
+seastrand
+seatmate
+seatmate's
+seatmates
+seawall
+seaware
+seawater
+seawater's
+seaworthiness
+seaworthy
+sebaceous
+sebum
+sec
+secateur
+secateurs
+secco
+secessionism
+seclusive
+seclusively
+seclusiveness
+secobarbital
+secondo
+secretaryship
+secretin
+secretionary
+secretor
+secretory
+sectarianism
+sectary
+sectile
+sectility
+sectionalism
+sectorial
+secularistic
+secund
+securement
+seder
+sedgwick
+sedgy
+sedilia
+sedimentologic
+sedimentological
+sedimentologically
+sedimentologist
+sedimentology
+seducement
+seductress
+sedulity
+sedulous
+sedulousness
+sedum
+seeable
+seedcake
+seedcakes
+seedily
+seedlike
+seedpod
+seedsman
+seedtime
+seel
+seeley
+seepy
+seeress
+seerey
+segetal
+segmentary
+segno
+segnos
+segue
+segue's
+segued
+segueing
+segues
+seguidilla
+segur
+segura
+sei
+seicento
+seiche
+seigneur
+seigneurial
+seigneury
+seignior
+seigniorage
+seigniory
+seignorage
+seignorial
+seignory
+seine
+seiner
+seining
+seisin
+seisins
+seism
+seismicity
+seismogram
+seismogram's
+seismograms
+seismographic
+seismologist
+seismometric
+seismometry
+selachian
+selaginella
+selden
+selectee
+selectman
+selectmen
+selenic
+selenide
+seleniferous
+selenious
+selenocentric
+selenographer
+selenographic
+selenographist
+selenography
+selenological
+selenologist
+selenologist's
+selenologists
+selenology
+selenosis
+selfadjoint
+selfdom
+selfhood
+sellable
+selle
+selvage
+selvaged
+selvedge
+selvedged
+semasiological
+semasiologist
+semasiology
+sematic
+semblable
+semblably
+semeiology
+sement
+semestral
+semestrial
+semiabstract
+semiabstraction
+semiaquatic
+semiarboreal
+semiaridity
+semiautomatically
+semiautonomous
+semibasement
+semibreve
+semicentenary
+semicentennial
+semicircle
+semicircles
+semiclassic
+semiclassical
+semicolonial
+semicolonialism
+semicolony
+semicommercial
+semiconducting
+semiconscious
+semiconsciously
+semiconsciousness
+semiconservative
+semiconservatively
+semicrystalline
+semicylindrical
+semidarkness
+semidesert
+semidetached
+semidiameter
+semidiurnal
+semidivine
+semidocumentary
+semidome
+semidomed
+semidomestic
+semidomesticated
+semidomestication
+semidominant
+semidouble
+semidry
+semiellipse
+semielliptic
+semielliptical
+semiempirical
+semierect
+semievergreen
+semifinal
+semifinalist
+semifinished
+semifitted
+semiflexible
+semifluid
+semiformal
+semifossil
+semigloss
+semigovernmental
+semigroup
+semilegendary
+semilethal
+semiliquid
+semiliterate
+semilog
+semilunar
+semilustrous
+semimanufactures
+semimetal
+semimetallic
+semimicro
+semimoist
+semimonastic
+semimonthly
+semimystical
+seminarist
+seminiferous
+semiofficial
+semiofficially
+semiological
+semiology
+semiopaque
+semiosis
+semiotic
+semiotical
+semiotician
+semiotics
+semipalmated
+semiparasitic
+semipermeability
+semipermeable
+semiphore
+semipolitical
+semiporcelain
+semipostal
+semiprecious
+semiprivate
+semipro
+semiquaver
+semiramis
+semireligious
+semiretired
+semiretirement
+semirigid
+semisacred
+semisedentary
+semishrub
+semishrubby
+semiskilled
+semisoft
+semisolid
+semisweet
+semisynthetic
+semiterrestrial
+semitonal
+semitonally
+semitone
+semitonic
+semitonically
+semitrailer
+semitranslucent
+semitransparent
+semitropic
+semitropics
+semivowel
+semiweekly
+semiworks
+semiyearly
+semmes
+semolina
+semper
+sempervivum
+sempiternal
+sempiternally
+sempiternity
+semple
+semplice
+sempre
+sempstress
+semra
+sen
+senarii
+senarius
+senary
+senatorian
+senatorship
+sendable
+senecio
+senectitude
+senega
+senesac
+senescence
+senescent
+seneschal
+sengi
+senhor
+senhora
+senhores
+senhorita
+senilis
+senility
+senioritatis
+seniti
+senna
+sennet
+sennight
+sennit
+sens
+sensa
+sensationalist
+sensationalistic
+senseful
+sensibilia
+sensillum
+sensitometer
+sensitometer's
+sensitometers
+sensitometric
+sensitometry
+sensorial
+sensorially
+sensorimotor
+sensorineural
+sensorium
+sensualism
+sensualist
+sensualistic
+sensum
+sensuosity
+sententia
+sententious
+sententiously
+sententiousness
+senti
+sentience
+sentimentalism
+sentimentalist
+sepal
+separably
+separationist
+separatism
+separatist
+separatistic
+sepiolite
+sepses
+sepsis
+septa
+septal
+septenarius
+septendecillion
+septentrion
+septentrional
+septicemia
+septicemic
+septicidal
+septifragal
+sepuchral
+sepulture
+sequacious
+sequaciously
+sequacity
+sequela
+sequelae
+sequency
+sequent
+sequestrate
+sequestrum
+sequinned
+sequitur
+ser
+sera
+serac
+serafin
+seraglio
+serai
+seral
+seraphic
+seraphically
+seraphs
+serbantian
+serbian
+sere
+serfage
+sergeancy
+sergeanty
+serialism
+serialist
+seriate
+seriately
+seriatim
+sericeous
+sericin
+sericultural
+sericulture
+sericulturist
+serieuses
+serif
+serigraph
+serigrapher
+serigraphy
+serin
+serine
+seriocomic
+seriocomically
+serjeants
+serjeanty
+sermonic
+serodiagnosis
+serodiagnostic
+serologic
+serologist
+seropurulent
+serosa
+serosal
+serotinal
+serotinous
+serotonin
+serotype
+serous
+serow
+serpiginous
+serpiginously
+serra
+serranid
+serranoid
+serrate
+serrated
+serrates
+serrating
+serration
+serratus
+serried
+serriedly
+serriedness
+serry
+serrying
+serting
+sertive
+sertularian
+serval
+servanda
+servation
+servatius
+serviceably
+serviceberry
+servility
+servomotor
+servosystem
+servosystems
+sesamoid
+sesquicarbonate
+sesquicentenary
+sesquicentennial
+sesquipedalian
+sessed
+sesshu
+sessile
+sessility
+sessional
+sesterce
+sestertium
+sestet
+sestina
+seta
+setaceous
+setaceously
+setae
+setal
+setline
+setnm
+seto
+setoff
+setom
+setose
+setout
+setpoint
+setpoints
+settee
+settees
+settlor
+setz
+setzb
+setzm
+seurat
+sevec
+sevenths
+seventyfold
+severability
+severable
+severna
+sevigli
+sewickley
+sexagenarian
+sexagesimal
+sexdecillion
+sexily
+sexless
+sexlessly
+sexlessness
+sexology
+sexpot
+sext
+sextant
+sextic
+sexto
+sextodecimo
+sextos
+sextuor
+sextuplicate
+sey
+sforzando
+shacklebone
+shad
+shadberry
+shadblow
+shadbush
+shaddock
+shadeless
+shadflower
+shadoof
+shadowbox
+shadowgraph
+shadowily
+shadowless
+shadowlike
+shagbark
+shaggily
+shaggymane
+shagreen
+shahdom
+shahn
+shaitan
+shakeout
+shako
+shakoes
+shakya
+shalloon
+shallop
+shallot
+shalt
+shaman
+shamanism
+shamanist
+shamanistic
+shamefaced
+shamefacedness
+shamefast
+shammer
+shammes
+shamming
+shammosim
+shammy
+shamus
+shan
+shandies
+shandrydan
+shandy
+shandygaff
+shanghaied
+shanghaier
+shankpiece
+shansi
+shantey
+shantyman
+shantytown
+shapable
+shapeable
+shapen
+shard
+shareability
+shareable
+sharkskin
+sharpie
+sharpies
+sharpy
+shashlick
+shashlik
+shatilov
+shaveling
+shavetail
+shavie
+shawano
+shawm
+shawomet
+shay
+shayne
+shayol
+shays
+sheaflike
+sheahe
+shearn
+shearwater
+sheatfish
+sheathbill
+shebang
+shebeen
+sheboygan
+shedded
+shedder
+sheen
+sheeny
+sheepfold
+sheepherder
+sheepherding
+sheepish
+sheepishly
+sheepishness
+sheepshank
+sheepshead
+sheepshearer
+sheepshearing
+sheeran
+sheetfed
+sheetlike
+sheikdom
+sheikh
+sheikhdom
+shekel
+shelagh
+shelfful
+shelflike
+shellac
+shellacked
+shellacking
+shellback
+shellback's
+shellbacks
+shellcracker
+shellfire
+shellfish
+shellproof
+shellwork
+shelly
+shelterbelt
+shelterless
+sheltie
+shelties
+shelty
+shend
+shending
+shensi
+shep
+shepherdess
+sher
+sherbert
+sherd
+sherif
+sheriffdom
+sherris
+shevelling
+shew
+shewe
+shews
+shh
+shiel
+shieling
+shietz
+shiflett
+shiftable
+shigella
+shih
+shikar
+shikari
+shikarred
+shikarring
+shiksa
+shikse
+shilingi
+shillalah
+shillelagh
+shillong
+shimmery
+shindies
+shindy
+shingly
+shinleaf
+shinleafs
+shinnery
+shinney
+shinnied
+shinning
+shinny
+shinnying
+shinplaster
+shinsplints
+shipborne
+shipfitter
+shiplap
+shipload
+shipmaster
+shipowner
+shipside
+shipway
+shipworm
+shipwright
+shirr
+shirring
+shirtwaist
+shirtwaister
+shirty
+shish
+shitepoke
+shiv
+shivaree
+shlemiehl
+shlock
+sho
+shoat
+shockproof
+shoddily
+shoebill
+shoeblack
+shoepac
+shoepack
+shogun
+shogunate
+sholom
+shoon
+shoplift
+shoplifter
+shoplifters
+shoplifting
+shoppe
+shoptalk
+shoran
+shorebird
+shorebird's
+shorebirds
+shorefront
+shoreside
+shoreward
+shorewards
+shortbread
+shortcake
+shortchange
+shortchanger
+shorthorn
+shortie
+shorties
+shortliffe
+shorty
+shotbush
+shotline
+shotlines
+shotten
+shouldst
+shoup
+shovelful
+shovelhead
+shovelman
+shovelnose
+shovelsful
+showbread
+showery
+showily
+showstopper
+shrievalty
+shrieve
+shrike
+shrimpy
+shrive
+shrived
+shriven
+shroff
+shrubbier
+shrubby
+shtetel
+shtetl
+shtetlach
+shtg
+shtick
+shuiski
+shul
+shulde
+shunner
+shunpike
+shunpiker
+shunpiking
+shush
+shute
+shutterbug
+shutterless
+shuz
+shyer
+shyes
+shyest
+shylockian
+shyster
+si
+sialagogue
+siamang
+sib
+sibe
+sibilate
+sibilation
+sibly
+sibyl
+sibylic
+sibylla
+sibyllic
+sibylline
+sibyls
+siccative
+siccing
+siciliana
+sickbed
+sickbed's
+sickbeds
+sicklebill
+sicklemia
+sicklewort
+sicklily
+sid
+siddo
+siddur
+siddurim
+sideburned
+sidedress
+sidehill
+sidekick
+sidekicks
+sideling
+sidency
+sident
+sidepiece
+siderite
+sideritic
+siderolite
+sideslip
+sideslips
+sidespin
+sidesplitting
+sidestepped
+sidestepper
+sidestroke
+sideswipe
+sideward
+sidewards
+sie
+sieben
+siebern
+siecle
+siecles
+siepi
+sierran
+sieux
+sig
+sightless
+sightlessness
+sigmoid
+sigmoidal
+sigmoidally
+signalman
+signalmen
+signalment
+signatory
+signifiable
+significancy
+significative
+significatively
+significativeness
+significs
+signior
+signiories
+signiory
+signori
+signories
+signorina
+signorino
+signory
+sike
+siking
+silane
+sild
+silds
+silenus
+silesia
+silex
+siliceous
+silicic
+silicicolous
+silicification
+silicify
+silicious
+silicle
+silicosis
+silicothermic
+silicotic
+silique
+silkaline
+silke
+silkoline
+silkweed
+sillabub
+sillily
+sillimanite
+silone
+siloxane
+siltstone
+siltstones
+siluroid
+silva
+silvan
+silvas
+silverfish
+silvern
+silverside
+silversides
+silverweed
+silvical
+silvicolous
+silvics
+silvicultural
+silviculturally
+silviculture
+silviculturist
+simazine
+simba
+simca
+simian
+simmel
+simms
+simnel
+simoleon
+simony
+simoom
+simoon
+simp
+simpatico
+simper
+simpered
+simperer
+simpering
+simpers
+simplices
+simplicial
+simplicially
+simplifiction
+simplism
+simplistically
+simulacre
+simulacrum
+simular
+sinan
+sinapism
+sincipita
+sincipital
+sinciput
+sind
+sinecure
+sinfonia
+sinfonietta
+singeing
+singleminded
+singlestick
+singletree
+singsong
+singsongy
+singspiel
+sinh
+siniboia
+sinistrorse
+sinistrous
+sinkable
+sinkage
+sinoatrial
+sinological
+sinologist
+sinologue
+sinology
+sinopia
+sinsyne
+sinterability
+sinton
+sinuate
+sinuately
+sinuatrial
+sinuosity
+sinusitis
+sion
+sipper
+sippet
+siree
+sirenian
+sirloin
+sirocco
+sirra
+sirrah
+sirree
+sirupy
+sirvente
+sirventes
+siskin
+sissies
+sissified
+sissy
+sisterhood
+sistrum
+sith
+sitosterol
+siva
+sivas
+sixmo
+sixmos
+sixpenny
+sixteenmo
+sixths
+sixtyfold
+sizably
+sizar
+sizova
+skag
+skagen
+skald
+skaldic
+skateboard
+skateboard's
+skateboarder
+skateboarding
+skateboards
+skedaddle
+skedaddled
+skedaddler
+skedaddles
+skedaddling
+skeg
+skeigh
+skein
+skein's
+skeins
+skeleta
+skellum
+skelp
+skelping
+skelpit
+skelter
+skeltered
+skeltering
+skene
+skep
+skepsis
+skerries
+skers
+skery
+skewback
+skewbald
+skiable
+skiagram
+skiagram's
+skiagrams
+skiagraph
+skiagraphy
+skiascope
+skiascopy
+skidder
+skiddier
+skiddoo
+skiddy
+skidoo
+skiffle
+skilful
+skilfully
+skilless
+skimobile
+skimpily
+skinflint
+skinflint's
+skinflints
+skinful
+skinhead
+skink
+skinker
+skint
+skintight
+skipjack
+skirl
+skirr
+skitter
+skittery
+skittish
+skittishly
+skittishness
+skive
+skiver
+skiving
+skivvies
+skivvy
+skiway
+skiwear
+skoal
+skulduggery
+skyborne
+skycap
+skydiving
+skyey
+skylounge
+skyphoi
+skyphos
+skyros
+skysail
+skywrite
+skywriter
+skywriting
+slabber
+slabbered
+slabbering
+slabbing
+slangily
+slanginess
+slangy
+slantways
+slantwise
+slapdash
+slaphappy
+slapjack
+slatelike
+slather
+slathered
+slathering
+slathers
+slattern
+slatternliness
+slatternly
+slaty
+slaughterous
+slaughterously
+slaveholder
+slaveholders
+slaveholding
+slavey
+slaveys
+slavocracy
+sleazily
+sledded
+sledder
+sleekit
+sleeplessess
+sleeplike
+sleepyhead
+sleeveless
+sleevelet
+slesinger
+sleuth
+sleuthhound
+slidden
+slideway
+slily
+slimily
+slimmest
+slimming
+slimpsy
+slimsy
+slinkier
+slinkily
+slinkiness
+slinky
+slipcase
+slipcover
+slipform
+slipknot
+slipover
+slippier
+slippy
+slipshod
+slipslop
+slipsole
+slipstick
+slipup
+slithery
+slitless
+slivovitz
+slobber
+slobbered
+slobberer
+slobbering
+slobbers
+slobbery
+slobbish
+slogger
+slopwork
+slopworker
+slotback
+slotting
+slouchier
+slouchily
+slouchiness
+slouchy
+sloughy
+slowish
+slowpoke
+slub
+slubber
+slubbered
+slubbering
+slubbing
+sludgier
+sludgy
+slue
+sluff
+slugabed
+slugfest
+sluggard
+sluggardly
+sluggardness
+sluiceway
+sluicy
+sluing
+slumberous
+slumbery
+slumbrous
+slumgullion
+slumlord
+slummer
+slummier
+slummy
+slungshot
+slushier
+slushiness
+slushy
+slut
+sluttish
+sluttishly
+sluttishness
+slyboots
+slyer
+slyest
+smartie
+smarties
+smartweed
+smarty
+smashup
+smatter
+smatterer
+smearcase
+smeary
+smectic
+smegma
+smeltery
+smidgen
+smidgeon
+smileless
+smilelessly
+smirch
+smirky
+smithery
+smithsonite
+smoggier
+smoggy
+smogless
+smokeable
+smokechaser
+smokeless
+smokelike
+smokeproof
+smokey
+smokily
+smolt
+smoochy
+smoothbore
+smoothie
+smoothies
+smooths
+smoothy
+smorgasbord
+smothery
+smoulder
+smsa
+smsa's
+smsas
+smudgily
+smugger
+smuggest
+smutch
+smutchy
+smutted
+smuttily
+smutting
+snaffle
+snaffled
+snaffling
+snaggletooth
+snaggletoothed
+snaggy
+snaillike
+snakebite
+snakebite's
+snakebites
+snakemouth
+snakeskin
+snakestrike
+snakeweed
+snakily
+snaky
+snappe
+snapshoot
+snapshooter
+snark
+snarks
+snarly
+snash
+snatchy
+snath
+snathe
+sndmsg
+snead
+sneap
+sneck
+sneed
+sneesh
+sneezeweed
+sneezewort
+sneezy
+snell
+snelling
+snick
+snickersnee
+snickery
+sniffily
+sniffiness
+sniffish
+sniffishly
+sniffishness
+sniffy
+snigger
+sniggered
+sniggerer
+sniggering
+sniggle
+sniggled
+sniggling
+sniperscope
+snippety
+snit
+snitch
+snitcher
+snobbism
+snobby
+snodgrass
+snollygoster
+snood
+snooperscope
+snoopily
+snoot
+snootier
+snootily
+snootiness
+snooty
+snooze
+snoozer
+snoozes
+snoozing
+snoozle
+snoozled
+snoozles
+snoozling
+snopes
+snot
+snoutish
+snouty
+snowbound
+snowbrush
+snowcap
+snowcapped
+snowdrift
+snowdrop
+snowfield
+snowless
+snowmaker
+snowmaking
+snowmelt
+snowpack
+snowplow
+snowscape
+snowshed
+snowshoeing
+snowslide
+snowsuit
+snubber
+snubbiness
+snubby
+snuffbox
+snuffy
+snugger
+snuggery
+snuggest
+soakage
+soapbark
+soapbox
+soapboxes
+soapily
+soapless
+soapmaking
+soapwort
+soba
+sobe
+sobersided
+sobersides
+sobf
+sobibor
+socage
+socager
+socal
+soccage
+sochi
+sociableness
+socialistically
+socialite
+socinianism
+sociolinguistic
+sociolinguistics
+sociologic
+sociopath
+sociopathic
+sociopolitical
+sociosexual
+sociosexuality
+sockdolager
+sockdologer
+sockeye
+socle
+socola
+soconoco
+sodalist
+sodalite
+sodality
+sodbuster
+sodded
+sodic
+sodomite
+soeren
+soever
+soffit
+softback
+softbound
+softcover
+softhead
+softheaded
+softheadedly
+softheadedness
+softhearted
+softheartedly
+softheartedness
+softie
+softies
+softish
+softy
+soggily
+sohn
+soign
+soignee
+soilborne
+soilge
+soilless
+soilure
+soir
+soke
+sokeman
+sokol
+sokolev
+sokolov
+sokolsky
+sola
+solacement
+solanaceous
+solanin
+solanine
+solanum
+solarium
+solate
+solated
+solating
+solatium
+soldan
+solderability
+soldi
+soldiership
+solecistic
+solemnify
+solenoidal
+soleplate
+soleprint
+solesmes
+solfatara
+solicitant
+solicitorship
+solidago
+solidarism
+solidarist
+solidaristic
+solidus
+solifluction
+soliloquist
+solipsist
+solipsistic
+solitarily
+soliton
+solitudinarian
+solitudinem
+solleret
+soln
+solonets
+solonetz
+solonetzic
+solstitial
+solubleness
+solubly
+solus
+solute
+solvability
+solvate
+solvated
+solvation
+solventless
+solvolysis
+solvolytic
+somatically
+somatogenic
+somatological
+somatology
+somatoplasm
+somatoplastic
+somatopleure
+somatopleuric
+somatosensory
+somatotrophin
+somatotropin
+somatotype
+somatotypic
+somatotypically
+sombre
+sombrero
+sombrous
+somebodies
+somedeal
+someway
+someways
+somewhen
+somewhither
+somite
+somitic
+somnambulant
+somnambular
+somnambulate
+somnambulation
+somnambulator
+somnambulism
+somnambulist
+somnambulistic
+somnambulistically
+somnifacient
+somniferous
+somniferously
+somnolency
+sonambula
+sonance
+sonant
+sonarman
+sonatina
+sonde
+sone
+songau
+songbird
+songfest
+songless
+songlessly
+songsmith
+songster
+songtress
+songwriter
+songwriting
+sonically
+sonicate
+sonicated
+sonication
+sonicator
+sonicators
+sonless
+sonneteer
+sonnobuoy
+sonogram
+sonogram's
+sonograms
+sonorant
+sonovox
+sonship
+sonsie
+sonsy
+soomed
+soothfast
+sootier
+sootily
+sootiness
+sooty
+sophistic
+sophistical
+sophistically
+sophy
+sopite
+sopited
+sopiting
+sopor
+soporiferous
+soporiferousness
+soppier
+soppy
+sopranino
+sopsaisana
+sora
+sorb
+sorbability
+sorbable
+sorbate
+sorbed
+sorbent
+sorceress
+sorcerous
+sordino
+sorehead
+soreheaded
+sorgo
+sori
+soricine
+sorites
+sororal
+sororate
+sorption
+sorptive
+sorrentine
+sorrentino
+sorrily
+sortable
+sortilege
+sortition
+sorus
+sostenuto
+sot
+soteriological
+soteriology
+sotol
+sottish
+sottishly
+sottishness
+sotun
+sou
+soubise
+soubrette
+souchong
+sough
+soukhouma
+soule
+soulless
+soullessly
+soullessness
+soundable
+soundboard
+soundless
+soundlessly
+soupier
+soupspoon
+soupy
+sourberry
+sourceless
+sourish
+sourpuss
+soursop
+sourwood
+sousaphone
+souse
+sousing
+sout
+soutache
+soutane
+souter
+southeasternmost
+southeastward
+southeastwards
+souths
+southwesternmost
+southwestward
+southwestwards
+sovietism
+sovkhoz
+sovkhozes
+sovran
+sovranty
+sowbug
+sowbug's
+sowbugs
+soxhlet
+spa
+spaceband
+spaceflight
+spaceless
+spaceman
+spaceport
+spacetime
+spacewalker
+spacewalking
+spacial
+spackle
+spackled
+spackling
+spacs
+spacward
+spada
+spadeful
+spadework
+spadices
+spadille
+spadix
+spaeing
+spahi
+spahn
+spake
+spalding
+spall
+spallable
+spallation
+spalled
+spalling
+spandrel
+spandril
+spang
+spanworm
+spareable
+spareribs
+sparge
+sparger
+sparging
+sparkily
+sparkish
+sparkplug
+sparred
+sparrowgrass
+sparsity
+spartan
+sparteine
+spas
+spasmodic
+spasmodical
+spasmodically
+spasmolytic
+spasmolytically
+spastically
+spasticity
+spathe
+spathic
+spathulate
+spatiotemporal
+spatiotemporally
+spatlum
+spatted
+spatting
+spatulate
+spavin
+speakeasy
+spean
+spearfish
+spearman
+specialism
+specialisms
+specialistic
+speciate
+speciation
+speciational
+speciosity
+specsartine
+spect
+spectate
+spectated
+spectating
+spectatress
+spector
+spectrality
+spectrofluorimeter
+spectrofluorimeter's
+spectrofluorimeters
+spectrofluorometer
+spectrofluorometer's
+spectrofluorometers
+spectrofluorometric
+spectrofluorometry
+spectrographic
+spectroheliogram
+spectroheliogram's
+spectroheliograms
+spectroheliograph
+spectroheliography
+spectrohelioscope
+spectrophotometrical
+spectrophotometrically
+spectroscopical
+spectroscopist
+speculum
+speechify
+speedball
+speedlight
+speedster
+speedway
+speedwell
+speel
+speir
+speiss
+speleogenesis
+speleogenetic
+spellbind
+spellbinder
+spelldown
+spelt
+spelter
+spelunker
+spelunking
+spendable
+spendthrift
+spenglerian
+spermaceti
+spermagonium
+spermary
+spermatheca
+spermathecal
+spermatial
+spermatic
+spermatid
+spermatium
+spermatocidal
+spermatocide
+spermatocyte
+spermatogenesis
+spermatogenetic
+spermatogenic
+spermatogonial
+spermatogonium
+spermatophore
+spermatophytic
+spermatozoa
+spermatozoal
+spermatozoan
+spermatozoid
+spermatozoon
+spermicidal
+spermicide
+spermidine
+spermiogenesis
+spermophile
+sperrylite
+spessartite
+sphagnous
+sphagnum
+sphalerite
+sphene
+sphenodon
+sphenodont
+sphenoid
+sphenoidal
+sphenopsid
+spheral
+sphericity
+spherometer
+spherometer's
+spherometers
+spheroplast
+spherulite
+spherulitic
+sphery
+sphincter
+sphincteral
+sphinges
+sphingid
+sphingosine
+sphygmograph
+sphygmographic
+sphygmography
+sphygmomanometer
+sphygmomanometer's
+sphygmomanometers
+sphygmomanometric
+sphygmomanometrically
+sphygmomanometry
+spicae
+spicate
+spiccato
+spiceberry
+spicery
+spicily
+spicula
+spicular
+spiculate
+spiculation
+spicule
+spiculiferous
+spiculum
+spiderweb
+spiegeleisen
+spiel
+spieler
+spiffier
+spiffy
+spikelet
+spikelike
+spikenard
+spile
+spiled
+spiles
+spiling
+spillable
+spillage
+spillage's
+spillages
+spillikin
+spillikins
+spillway
+spilosite
+spilth
+spinco
+spindly
+spindrift
+spinel
+spinelle
+spinescent
+spinet
+spinifex
+spinless
+spinneret
+spinnerette
+spinney
+spinneys
+spinodal
+spinoff
+spinor
+spinosely
+spinosity
+spinous
+spinout
+spinrad
+spinse
+spinsterhood
+spinsterish
+spinthariscope
+spinule
+spinulose
+spiracle
+spiracular
+spiraea
+spirant
+spirea
+spireme
+spirillum
+spiritism
+spiritist
+spiritistic
+spiritless
+spiritlessly
+spiritlessness
+spiritoso
+spiritous
+spiritualism
+spiritualist
+spiritualistic
+spiritualty
+spirituel
+spirituelle
+spirituous
+spirograph
+spirographic
+spirography
+spirogyra
+spirometer
+spirometer's
+spirometers
+spirometric
+spirometry
+spirt
+spirula
+spiry
+spital
+spitball
+spitted
+spitter
+spittoon
+spittoons
+splashboard
+splashdown
+splashdowns
+splashily
+splatter
+splayfoot
+splayfooted
+spleenful
+spleenwort
+spleeny
+splendent
+splendiferous
+splendiferously
+splendiferousness
+splendorous
+splendrous
+splenectomy
+splenetically
+splenic
+splenius
+splenomegaly
+splent
+spleuchan
+splore
+spluttery
+spodumene
+spoilable
+spoilsman
+spoilsport
+spoilt
+spokeshave
+spokespeople
+spokesperson
+spokesperson's
+spokeswoman
+spoliate
+spoliation
+spoliator
+spondaic
+spondee
+spondylitis
+sponson
+sponsorial
+spontoon
+spookily
+spookish
+spoondrift
+spooney
+spoonier
+spoonsful
+spoony
+spoor
+sporangial
+sporangiophore
+sporangium
+sporicidal
+sporicide
+sporiferous
+sporocarp
+sporocyst
+sporocystic
+sporogenesis
+sporogenic
+sporogenous
+sporogonic
+sporogonium
+sporogonos
+sporogony
+sporophore
+sporophyll
+sporophyte
+sporophytic
+sporopollenin
+sporotrichosis
+sporozoan
+sporozoite
+sportful
+sportfully
+sportfulness
+sportily
+sportsmanlike
+sportswoman
+sportswriting
+sporulate
+sporulation
+sporulative
+spottable
+spottily
+sprat
+spreadability
+spreadable
+sprent
+sprier
+spriest
+sprigging
+sprightful
+sprightfully
+sprightfulness
+sprigtail
+springal
+springald
+springbok
+springboks
+springe
+springily
+springtail
+springtails
+springtide
+springwood
+sprit
+spritsail
+sprucier
+sprucy
+spry
+spryer
+spryest
+spryly
+spryness
+spss
+spudded
+spudding
+spumone
+spumous
+spumy
+spunkie
+spunkier
+spunkily
+spunkiness
+spunky
+spurrey
+spurreys
+spurrier
+spurry
+spurtle
+sputa
+sputum
+spuyten
+squab
+squabs
+squadded
+squadding
+squalene
+squallier
+squally
+squama
+squamae
+squamate
+squamation
+squamosal
+squamose
+squamulose
+squaresville
+squarish
+squarishly
+squarishness
+squark
+squashberry
+squashily
+squattest
+squattier
+squatty
+squawbush
+squawroot
+squeegeeing
+squeezability
+squeezable
+squelchy
+squib
+squibs
+squidded
+squidding
+squiffed
+squiffy
+squiggle
+squiggled
+squiggles
+squiggling
+squiggly
+squilgee
+squill
+squilla
+squillae
+squills
+squinch
+squinnied
+squinny
+squinnying
+squinty
+squirarchy
+squirearchy
+squirish
+squoosh
+stabat
+stabber
+stabile
+stablemate
+stablish
+stablishment
+staddle
+stade
+stadia
+stadtholder
+stadtholderate
+stadtholdership
+stagecraft
+stagehand
+stagestruck
+stagey
+staggerbush
+staggery
+stagging
+staggy
+staghound
+stagily
+stagnancy
+stainability
+stainable
+stakeholder
+stakeout
+stalactitic
+stalagmite
+stalagmite's
+stalagmites
+stalagmitic
+stalkless
+stalky
+stallard
+stalworth
+staminal
+staminodium
+staminody
+stammel
+standardbred
+standaway
+standbys
+standee
+standeth
+standoffish
+standoffishly
+standoffishness
+standout
+standpat
+standpatter
+standpattism
+standpipe
+stang
+stanite
+stannard
+stannaries
+stannary
+stanzaic
+stapedectomy
+stapedes
+stapedial
+stapelia
+stapes
+staph
+staphylinid
+staphylococcal
+staphylococcic
+starbird
+starchily
+stardust
+starets
+starless
+starlike
+starlit
+starre
+starveling
+stases
+statable
+statant
+stateable
+statecraft
+statedly
+statehouse
+stateside
+statical
+statice
+stational
+stationarily
+statism
+statist
+stato
+statoblast
+statocyst
+statolatry
+statolith
+stator
+stators
+statoscope
+statutable
+statz
+staurolite
+staurolitic
+stavesacre
+stavropoulos
+steamroll
+steamroller
+steapsin
+stearate
+stearic
+stearin
+stearine
+steatite
+steatitic
+steatolysis
+steatopygia
+steatopygic
+steelhead
+steelie
+steelwork
+steelworker
+steelworks
+steelyard
+steenbok
+steeplechase
+steeplechaser
+steeplejack
+steerable
+steerage
+steerageway
+steersman
+steeve
+steeving
+steffens
+stegosaur
+stegosaurus
+steichen
+steinbecks
+stela
+stelae
+stelar
+stele
+stellate
+stelliform
+stellify
+stemless
+stemma
+stemmata
+stemmer
+stemmier
+stemmy
+stemson
+stemware
+stenchful
+stenchy
+steno
+stenobathic
+stenograph
+stenographic
+stenographically
+stenohaline
+stenophagous
+stenos
+stenosed
+stenosis
+stenotherm
+stenothermal
+stenothermy
+stenotic
+stenotopic
+stenotypist
+stenotypy
+stentor
+stentorian
+stentorophonic
+stephan
+stephanotis
+stepladder
+steplike
+stepparent
+steprelation
+steradian
+stercoraceous
+stere
+stereobate
+stereochemical
+stereochemically
+stereochemistry
+stereogram
+stereogram's
+stereograms
+stereograph
+stereographic
+stereographically
+stereoisomer
+stereoisomeric
+stereoisomerism
+stereoisomers
+stereological
+stereologically
+stereology
+stereometric
+stereomicroscope
+stereomicroscopic
+stereomicroscopically
+stereophonically
+stereophony
+stereophotographic
+stereophotography
+stereopsis
+stereopticon
+stereoregular
+stereoregularity
+stereoscope
+stereoscopic
+stereoscopically
+stereospecific
+stereospecifically
+stereospecificity
+stereotape
+stereotaxic
+stereotaxically
+stereotropism
+stereotypy
+steric
+sterically
+sterics
+sterigma
+sterilant
+sterios
+sterlet
+sterna
+sternforemost
+sternite
+sternmost
+sternocostal
+sternpost
+sternson
+sternutation
+sternutator
+sternutatory
+sternward
+sternwards
+sternway
+steroidal
+steroidogenesis
+steroidogenic
+sterol
+stertor
+stertorous
+stertorously
+stet
+stethoscopic
+stethoscopically
+stetted
+stettin
+stetting
+stevie
+stewpan
+stibine
+stibnite
+stichomythia
+stichomythic
+stichomythy
+stickball
+stickful
+stickhandler
+stickit
+stickseed
+sticktight
+stickum
+stickup
+stickweed
+stickwork
+sticle
+sticy
+stidger
+stiffish
+stigmal
+stigmasterol
+stigmatic
+stigmatically
+stigmatism
+stigmatist
+stilbene
+stilbestrol
+stilbite
+stillman
+stillroom
+stillwater
+stillwell
+stilly
+stime
+stimulator
+stimulators
+stingaree
+stingily
+stingless
+stingray
+stingray's
+stingrays
+stinkard
+stinkbug
+stinkbug's
+stinkbugs
+stinkhorn
+stinkpotters
+stinkstone
+stinkweed
+stinkwood
+stion
+stioning
+stipe
+stiped
+stipel
+stipellate
+stipendiary
+stipes
+stipitate
+stipites
+stipular
+stipulator
+stipulatory
+stipule
+stipuled
+stirabout
+stirk
+stirp
+stirpes
+stirps
+stitchery
+stithies
+stithy
+stoat
+stoat's
+stoats
+stockbreeder
+stockbrokerage
+stockbroking
+stockcar
+stockily
+stockinet
+stockinette
+stockish
+stockist
+stockkeeper
+stockman
+stockpot
+stockproof
+stocktaking
+stockyard
+stockynges
+stodge
+stodgily
+stodging
+stogie
+stogies
+stogy
+stoical
+stoically
+stoichiometrically
+stokehold
+stokehole
+stokesia
+stolidity
+stoll
+stollen
+stollens
+stolon
+stolonate
+stoloniferous
+stoloniferously
+stolzenbach
+stoma
+stomachache
+stomachic
+stomachically
+stomachy
+stomal
+stomas
+stomata
+stomatal
+stomate
+stomatitis
+stomatologic
+stomatological
+stomatologist
+stomatology
+stomatopod
+stomodaeal
+stomodaeum
+stomodeal
+stomodeum
+stonecrop
+stonecutting
+stonemasonry
+stonework
+stoneworker
+stoney
+stonyhearted
+stonyheartedness
+stoolie
+stoopball
+stopband
+stope
+stopes
+stoplight
+stoplights
+stopple
+stoppled
+stoppling
+storable
+storax
+storefront
+storefront's
+storefronts
+storeria
+storeship
+storewide
+storksbill
+stormily
+storybook
+storybooks
+storytelling
+storywriter
+stouthearted
+stoutheartedly
+stoutheartedness
+stoutish
+stovepipe
+stovepipes
+stowaway
+stowaway's
+stowaways
+stowe
+stowey
+strabismic
+strabismus
+strafaci
+stragglier
+straggly
+straightbred
+straightedge
+straightish
+straightjacket
+straightlaced
+strainometer
+strainometer's
+strainometers
+straitjacket
+straitlaced
+straitlacedly
+straitlacedness
+strake
+stram
+stramash
+stramonium
+stranahan
+strandline
+stranglehold
+strangury
+straphang
+straphanger
+strapless
+strappado
+strapper
+strategical
+strath
+strathspey
+strathspeys
+strati
+straticulate
+stratiform
+stratocracy
+stratocumulus
+stratus
+stravage
+stravinsky
+strawboard
+strawman
+streakier
+streakiness
+streaky
+streambed
+streamlet
+streamside
+streek
+streetwalker
+streetwalking
+strengthless
+strengthlessness
+strenuosity
+strep
+streptobacillus
+streptococcal
+streptococcic
+streptokinase
+streptolysin
+streptomyces
+streptomycete
+streptothricin
+stressless
+stresslessness
+stressor
+stretchability
+stretta
+stretti
+stretto
+strettos
+strewment
+stria
+striae
+strick
+strickle
+strickled
+strickling
+stridden
+stridence
+stridor
+stridulate
+stridulation
+stridulatory
+stridulous
+stridulously
+strifeless
+strigil
+strigose
+strikebound
+strikeless
+strikeout
+strikeover
+stringboard
+stringcourse
+stringency
+stringendo
+stringhalt
+stringhalted
+stringless
+stringpiece
+stripeless
+stripfilm
+stripier
+stripling
+strippable
+stript
+stripy
+strobila
+strobilar
+strobilation
+strobile
+strobilus
+stroboscope
+stroboscopically
+strobotron
+stroma
+stromal
+stromata
+stromatal
+stromatic
+stromatolite
+stromatolitic
+stromeyerite
+strongbox
+strongheart
+strongish
+strontia
+strontianite
+strontic
+strophanthin
+strophic
+strophoid
+stroud
+strouding
+strow
+strowing
+structuralism
+structureless
+structurelessness
+strudel
+struma
+strumae
+strumas
+strummer
+strumose
+strumpet
+strunt
+struthious
+strychninism
+stubblefield
+stubblefields
+stubbly
+stuccoes
+stuccowork
+studbook
+studbooks
+studding
+studentship
+studentships
+studhorse
+stuffily
+stuffless
+stull
+stum
+stumblebum
+stumer
+stumming
+stunner
+stunsail
+stupa
+stupe
+stupefacient
+stupefaction
+stuporous
+sturch
+sturdily
+sturley
+sturt
+stye
+styes
+stying
+styka
+stylebook
+styleless
+stylelessness
+stylet
+styliform
+stylite
+stylitic
+stylobate
+stylograph
+stylographic
+stylographical
+stylographically
+stylography
+styloid
+stylolite
+stylopodium
+stymieing
+styptic
+styrax
+suability
+suably
+suasion
+suasive
+suasively
+suasiveness
+subacid
+subacidly
+subacidness
+subacute
+subacutely
+subadar
+subadult
+subaerial
+subaerially
+subagency
+subagent
+subahdar
+subalpine
+subalternate
+subalternately
+subalternation
+subantarctic
+subapical
+subaquatic
+subaqueous
+subarctic
+subarea
+subatmospheric
+subaudible
+subaudition
+subaverage
+subbase
+subbasement
+subcabinet
+subcapsular
+subcelestial
+subcellular
+subcentral
+subcentrally
+subchaser
+subchloride
+subclavian
+subclimax
+subclinical
+subclinically
+subcollegiate
+subcommunity
+subcompact
+subcontinental
+subcontractor
+subcontraoctave
+subcontrariety
+subcontrary
+subcool
+subcordate
+subcortex
+subcortical
+subcritical
+subcrustal
+subcultural
+subcutaneous
+subcutaneously
+subdeacon
+subdeb
+subdebutante
+subdepot
+subdiaconate
+subdividable
+subdominance
+subdominant
+subedit
+subeditor
+subeditorial
+subemployed
+subemployment
+subentries
+subentry
+subepidermal
+subepidermally
+suberect
+subfamilies
+subfamily
+subfix
+subfossil
+subfreezing
+subgenus
+subglacial
+subglacially
+subglottal
+subgrade
+subgrammar
+subgross
+subhead
+subheading
+subhuman
+subhumanity
+subi
+subic
+subinfeud
+subinfeudate
+subinfeudation
+subinfeudatory
+subirrigate
+subirrigation
+subito
+subj
+subjacency
+subjacent
+subjacently
+subjectivism
+subjectivistic
+subjectless
+subjoin
+subjugator
+subjunction
+subjunctive
+subkingdom
+sublate
+sublated
+sublating
+sublation
+sublet
+sublethal
+sublethally
+sublevel
+sublicense
+sublicensed
+sublicenser
+sublicenses
+sublicensing
+sublieutenant
+sublimable
+sublimity
+sublingual
+subliterature
+sublittoral
+sublunar
+subluxation
+submandibular
+submarginal
+submarginally
+submaxilla
+submaxillary
+submediant
+submergence
+submergible
+submerse
+submersed
+submersing
+submersion
+submicrogram
+submicrogram's
+submicrograms
+submicron
+submicroscopic
+submicroscopically
+subminiature
+submiss
+submitochondrial
+submitter
+submitters
+submontane
+submucosa
+submucosal
+submucosally
+submucous
+submultiple
+subnormality
+suboceanic
+subopposite
+suboptimum
+suborbicular
+suborbital
+suborder
+suborn
+subornation
+suborned
+suborner
+suborning
+suborns
+subovate
+suboxide
+suboxides
+subpar
+subparallel
+subphylum
+subplot
+subplots
+subpolar
+subpotency
+subpotent
+subprincipal
+subprofessional
+subreption
+subreptitious
+subreptitiously
+subring
+subrogate
+subsaline
+subsatellite
+subsaturated
+subsaturation
+subsectio
+subserve
+subserviency
+subshrub
+subshrubby
+subsidence
+subsidiarily
+subsonic
+subsonically
+subspecific
+substage
+substanceless
+substandard
+substantiality
+substantival
+substantivally
+substation
+substations
+substituent
+substituents
+substitutional
+substitutionally
+substratosphere
+substratospheric
+substructural
+subsumption
+subteen
+subtemperate
+subtenancy
+subtenant
+subtend
+subterminal
+subterraneous
+subtetanic
+subthreshold
+subtile
+subtilely
+subtileness
+subtiler
+subtilest
+subtilis
+subtilisin
+subtilty
+subtonic
+subtotal
+subtropic
+subtropical
+subtropics
+subulate
+subvention
+subventionary
+subversionary
+subviral
+subvocal
+subvocally
+succedaneous
+succedaneum
+succedent
+successional
+successionally
+succinate
+succinyl
+succinylcholine
+succory
+succotash
+succuba
+succubi
+succulence
+succulent
+succulently
+suchlike
+sucrase
+sucre
+sucrose
+suctional
+suctorial
+suctorian
+sudanic
+sudatorium
+sudatory
+sudoriferous
+sudorific
+sudsier
+sudsless
+sudsy
+suede
+suet
+suey
+suff
+sufferable
+sufferableness
+sufferably
+suffixation
+suffragan
+suffragist
+suffragists
+sugarcane
+sugarcoat
+sugarhouse
+sugarloaf
+sugarplum
+sugary
+suint
+sukarno
+sukiyaki
+sulamite
+sulamith
+sulcate
+sulci
+sulcus
+sulfa
+sulfadiazine
+sulfanilamide
+sulfatase
+sulfatide
+sulfatides
+sulfhydryl
+sulfinyl
+sulfitic
+sulfonate
+sulfonation
+sulfone
+sulfonic
+sulfonium
+sulfonmethane
+sulfonyl
+sulfonylurea
+sulfoxide
+sulfureous
+sulfureously
+sulfureousness
+sulfuret
+sulfuryl
+sullage
+sulphurou
+sulphurous
+sultanate
+sultaness
+sultrily
+sulzberger
+sumach
+summa
+summability
+summable
+summae
+summated
+summates
+summating
+summational
+summerhouse
+summersault
+summerwood
+summery
+sumptuary
+sunay
+sunbath
+sunbathe
+sunbather
+sunbird
+sunbow
+sunburst
+sunbursts
+sundae
+sundaes
+sundew
+sundrops
+sunfast
+sunlamp
+sunless
+sunn
+sunna
+sunnily
+sunroof
+sunscald
+sunscreen
+sunscreen's
+sunscreening
+sunscreens
+sunstroke
+sunstruck
+sunsuit
+suntanning
+sunup
+sunward
+sunwards
+sunwise
+superable
+superableness
+superably
+superabound
+superabundance
+superabundant
+superabundantly
+superadd
+superaddition
+superagency
+superaltern
+superannuate
+superannuated
+superannuation
+superblock
+supercalender
+supercargo
+supercharge
+supercharger
+superciliary
+supercity
+superconduct
+superconducting
+superconductive
+superconductivity
+superconductor
+superconductors
+supercool
+superdominant
+superelevate
+superelevation
+supereminence
+supereminent
+supereminently
+superempirical
+superencipher
+superencipherment
+supererogation
+supererogatory
+superfamily
+superfecundation
+superfetation
+superficies
+superfine
+superfix
+superfluid
+superfluidity
+supergalaxy
+supergene
+supergiant
+superheat
+superheater
+superheats
+superheterodyne
+superhighway
+superhumanity
+superieure
+superimposable
+superimposition
+superincumbent
+superincumbently
+superindividual
+superinduce
+superinduction
+superinfection
+superintendence
+superintendency
+superjacent
+superjet
+superliner
+superluminal
+superlunar
+superman
+supernal
+supernally
+supernaturalist
+supernaturalistic
+supernormality
+supernovae
+supernumerary
+superorder
+superordinate
+superorganism
+superovulation
+superparasitism
+superpatriot
+superpatriotic
+superpatriotism
+superphosphate
+superphysical
+superpower
+superpowered
+superpowers
+supersaturate
+supersaturated
+supersaturation
+superscribe
+superscription
+supersedeas
+supersedure
+supersensible
+supersensory
+superserviceable
+supersession
+supersessive
+supersonically
+superstar
+superstratum
+supersubstantial
+supersubtle
+supersubtlety
+supersystem
+supertanker
+supertax
+supertonic
+supervenience
+supervenient
+supervention
+supervisee
+supinate
+supination
+supinator
+suppl
+supplantation
+supplejack
+suppletion
+suppletive
+suppletory
+suppliance
+suppliant
+suppliantly
+supplicant
+supplicant's
+supplicantly
+supplicants
+supplicatory
+supportability
+supportableness
+supportably
+supposably
+supposal
+suppositional
+suppositionally
+suppositious
+supposititious
+supposititiously
+supposititiousness
+suppositive
+suppositively
+suppositories
+suppository
+suppressant
+suppressibility
+suppurate
+suppuration
+suppurative
+supr
+supraglottal
+supralaryngeal
+supraliminal
+supraliminally
+supramolecular
+supranationalist
+supranationality
+supraorbital
+supraprotest
+suprarational
+suprarenal
+supravital
+supravitally
+supremum
+surah
+surbase
+surbased
+surcingle
+surcliffe
+surcoat
+surcoats
+surefire
+surefooted
+surefootedly
+surefootedness
+suretyship
+surfable
+surfboard
+surfboarder
+surfboards
+surfboat
+surfboats
+surficial
+surfperch
+surg
+surjection
+surjective
+surlily
+surmountable
+surmullet
+surpassable
+surplice
+surplusage
+surprint
+surprisal
+surra
+surrealistic
+surrealistically
+surrebutter
+surrejoinder
+surroyal
+surtout
+surveil
+survivable
+survivance
+susceptance
+susceptive
+susceptiveness
+susceptivity
+suspenseful
+suspensoid
+suspensory
+suspiration
+suspire
+suspired
+suspiring
+susquehanna
+sustentacular
+sustentation
+sustentative
+sustention
+susurrant
+susurration
+susurrous
+susurrus
+sutra
+suttee
+sutural
+suturally
+suzerain
+suzerainty
+swabber
+swabbie
+swadesh
+swage
+swagging
+swagman
+swainish
+swainishness
+swale
+swallowable
+swallowtail
+swallowwort
+swang
+swanherd
+swankily
+swannery
+swanning
+swansdown
+swanskin
+swartz
+swashbuckle
+swashbuckler
+swashbuckling
+swayback
+swaybacked
+swearword
+sweatbox
+sweatily
+sweatpants
+sweatshop
+sweatshop's
+sweatsocks
+sweazey
+sweepback
+sweepier
+sweepy
+sweetbread
+sweetbread's
+sweetbreads
+sweetbrier
+sweetmeat
+sweetshop
+sweetsop
+swellhead
+swellheaded
+swellheadedness
+swelter
+sweltered
+swidden
+swigger
+swill
+swiller
+swimmable
+swimmeret
+swimmier
+swimmily
+swimminess
+swimmy
+swinburne
+swineherd
+swingably
+swinge
+swingeing
+swingletree
+swishingly
+switchable
+switchback
+switchback's
+switchbacks
+switcheroo
+switchgrass
+switchyard
+swith
+swither
+swivet
+swoosh
+swop
+swordfight
+swordfight's
+swordfights
+swordlike
+swordsman
+swordsmanship
+swot
+swots
+swotted
+swotting
+sybarite
+sybaritically
+sybert
+sycamine
+syce
+sycee
+syconium
+sycophancy
+sycophantish
+sycophantishly
+sycophantism
+sycosis
+syenite
+syenitic
+syllabarium
+syllabary
+syllabically
+syllabicate
+syllabication
+syllabub
+syllepsis
+sylleptic
+syllogist
+syllogistically
+sylph
+sylphid
+sylphlike
+sylvanite
+sylvatic
+sylviculture
+sylvie
+sylvine
+sylvite
+sym
+symbiontic
+symbiote
+symbiotically
+symbolist
+symbolistic
+symbology
+symington
+symmetallism
+symonds
+sympathin
+sympatholytic
+sympathomimetic
+sympatric
+sympatrically
+sympatry
+sympetalous
+sympetaly
+symphonically
+symphonious
+symphoniously
+symphonist
+symphyseal
+symphysial
+symphysis
+symplectic
+sympodial
+sympodially
+symposiarch
+symposiast
+symptomatically
+symptomatologic
+symptomatological
+symptomatologically
+symptomless
+synaeresis
+synaesthesis
+synagog
+synagogal
+synalepha
+synaloepha
+synapsis
+synaptically
+synaptosomal
+synaptosome
+synarthrodial
+synarthrodially
+synarthrosis
+sync
+syncarpous
+syncarpy
+synch
+synching
+synchro
+synchroflash
+synchromesh
+synchronal
+synchroneity
+synchronic
+synchronical
+synchronically
+synchronistic
+synchros
+synchroscope
+syncing
+synclinal
+syncline
+syncopal
+syncopator
+syncope
+syncretic
+syncretism
+syncretist
+syncretistic
+syncytial
+syncytium
+syndactylism
+syndactyly
+syndesis
+syndesmosis
+syndesmotic
+syndetic
+syndetically
+syndical
+syndicalism
+syndicalist
+syndicator
+syne
+synecdoche
+synecdochic
+synecdochical
+synecdochically
+synecologic
+synecological
+synecologically
+synecology
+synectic
+synectically
+synectics
+synephrine
+syneresis
+synergetic
+synergic
+synergically
+synergid
+synergist
+synergistically
+synesis
+syngamy
+syngeneic
+synizesis
+synkaryon
+synodal
+synodic
+synodical
+synonymic
+synonymical
+synonymist
+synonymity
+synoptical
+synoptically
+synostosis
+synovial
+synovitis
+synsepalous
+synthesist
+synthetase
+synthetical
+synthetically
+syntonic
+syntonically
+syphilis
+syphilologist
+syphilology
+syren
+syringa
+syringomyelia
+syringomyelic
+syrinx
+syrinxes
+syrphid
+sysgt
+syst
+systaltic
+systat
+systematical
+systematism
+systematist
+systemically
+systemless
+systemwide
+systole
+systolic
+syzygial
+syzygy
+tabac
+tabanid
+tabard
+tabbed
+tabellen
+tabernacular
+tabes
+tabetic
+tabla
+tablature
+tableaux
+tableful
+tablespoonsful
+tableware
+tabloid
+tabor
+tabored
+taborer
+taborers
+taborin
+taboring
+taborins
+tabors
+tabu
+tace
+tacet
+tach
+tachinid
+tachism
+tachist
+tachiste
+tachistoscope
+tachistoscopic
+tachistosopically
+tachs
+tachycardia
+tachygraphic
+tachygraphical
+tachygraphy
+tachylite
+tachymeter
+tachymeter's
+tachymeters
+tachyon
+tachyon's
+tachyons
+taciturn
+taciturnity
+tackboard
+tackier
+tackies
+tackifier
+tackify
+tackily
+tacky
+tacloban
+taconite
+tactician
+tactility
+taction
+tactless
+tactlessly
+tad
+tadpole
+taeniacide
+taeniasis
+tagalong
+tagboard
+tagine
+tagines
+taiga
+tailboard
+tailbone
+tailcoat
+tailcoated
+taille
+tailless
+taillight
+taillight's
+taillights
+taillike
+tailorbird
+tailoress
+tailpiece
+tailrace
+tailspin
+tailspin's
+tailspins
+tailwater
+tailwind
+tailwind's
+tailwinds
+taintless
+taipan
+taiwanese
+takedown
+takeout
+talc
+talcose
+talcum
+talebearer
+talebearing
+talentless
+talesman
+taleysim
+tali
+talipes
+talipot
+talisman
+talismanically
+talkathon
+talladega
+tallage
+tallahatchie
+tallahoosa
+tallboy
+tallchief
+talleyrand
+tallish
+tallith
+tallithim
+tallowy
+tallyman
+talmudic
+talmudical
+talus
+tam
+tamandua
+tamarau
+tamarin
+tamarisk
+tambala
+tambour
+tambourer
+tamburitza
+tameable
+tameless
+tampala
+tamperproof
+tampion
+tanager
+tanbark
+tance
+tangelo
+tangere
+tangibility
+tanglement
+tangram
+tanh
+tanka
+tankage
+tankful
+tannage
+tannate
+tannenbaum
+tannest
+tannic
+tannish
+tansies
+tansy
+tantalate
+tantalic
+tantalite
+tantara
+tantivy
+tantra
+tantric
+tapa
+tapeline
+tapeta
+tapetum
+taphole
+tapioca
+tapis
+tapley
+tappa
+taproom
+taprooms
+tapster
+tapsters
+tara
+taraday
+tarantara
+tarantism
+taras
+taraxacum
+tarboosh
+tarbush
+tardigrade
+tardo
+tare
+targe
+targo
+tarheelia
+tarlatan
+tarmac
+tarmacadam
+tarn
+tarnishable
+taro
+tarok
+taros
+tarot
+tarpaper
+tarragon
+tarrant
+tarre
+tarriance
+tarsal
+tarsi
+tarsier
+tarsus
+tartan
+tartarughe
+tartish
+tartishly
+tartlet
+tartlets
+tartrate
+tartrated
+tartrates
+tartuffe
+taruffi
+taskmistress
+taskwork
+tasse
+tassel
+tassel's
+tasso
+tastemaker
+tastily
+tat
+tatami
+tate
+tatian
+tatler
+tatras
+tatted
+tatterdemalion
+tattersall
+tattooist
+taui
+taupe
+taurine
+taurocholate
+taurocholic
+taurog
+taussig
+tautog
+tautologous
+tautologously
+tautomer
+tautomeric
+tautomerism
+tautonym
+tautonymic
+tautonymous
+tautonymy
+taverna
+taw
+tawdrily
+tawes
+tawie
+tawpie
+taws
+tawse
+taxa
+taxability
+taxeme
+taxemic
+taxidermic
+taxidermist
+taxidermist's
+taxidermists
+taxidermy
+taxies
+taximan
+taximeter
+taximeter's
+taximeters
+taxon
+taxonomist
+taxonomist's
+taxonomists
+taxons
+taxus
+taxying
+tazza
+tchaikovsky
+teachability
+teachably
+teachership
+teacupful
+teak
+teak's
+teaks
+teapoy
+teardown
+teargas
+tearier
+tearily
+tearjerker
+tearle
+tearless
+tearlessly
+tearlessnss
+tearoom
+tearooms
+tearstain
+tearstained
+teary
+teaspoonsful
+teatime
+teatro
+teazel
+teazle
+teazled
+technetronic
+technic
+technics
+technion
+technocracy
+technocrat
+technocratic
+technol
+technologic
+technostructure
+techy
+tecta
+tectal
+tectonism
+tectum
+tecum
+ted
+tedded
+tedding
+teds
+teenie
+teenier
+teentsier
+teentsy
+teeny
+teenybopper
+teepee
+teeter
+teeterboard
+teetotal
+teetotalism
+teetotalist
+teetotum
+tegmen
+tegmental
+tegmentum
+tegument
+tegumental
+tegumentary
+teiid
+tektitic
+tel
+telamon
+telamones
+telangiectasia
+telangiectasis
+telangiectatic
+tele
+telecamera
+telecast
+telecaster
+telecourse
+teledu
+telefacsimile
+telefilm
+teleg
+telegony
+telegraphese
+telegraphically
+telegraphist
+telekinetic
+telekinetically
+teleman
+telemann
+telemark
+telemetrically
+telencephalic
+telencephalon
+teleologic
+teleologist
+teleost
+teleostean
+teleostome
+telephonically
+telephonist
+telephonists
+telephoto
+telephotographic
+teleplay
+teleran
+telescopically
+telesis
+telethermoscope
+telethon
+teletypesetting
+teletypewrite
+teletypewriter
+teletypist
+teleutospore
+teleutosporic
+teleview
+televiewer
+televisionally
+televisionary
+televisual
+telia
+telial
+telic
+telically
+teliospore
+teliosporic
+telium
+telli
+tellurian
+telluric
+telluride
+tellurite
+tellurometer
+tellurometer's
+tellurometers
+tellurous
+telly
+telocentric
+teloic
+telome
+telophase
+telos
+telotaxis
+telpher
+telson
+temblor
+temerarious
+temerariously
+temerariousness
+tempeh
+tempera
+temperable
+tempi
+templeman
+templet
+temporality
+temptable
+tempura
+tenability
+tenably
+tenace
+tenaculum
+tenantable
+tenantless
+tenantry
+tench
+tenches
+tenda
+tendance
+tendencious
+tendentious
+tendentiously
+tendentiousness
+tenderhearted
+tenderheartedly
+tenderheartedness
+tenderometer
+tenderometer's
+tenderometers
+tendinous
+tendresse
+tendril
+tendrilous
+tendrils
+tenebrific
+tenebrionid
+tenebrious
+tenebrism
+tenebrist
+tenementary
+tenenbaum
+tenesmus
+tenex
+tenia
+teniacide
+teniasis
+tennist
+tenosynovitis
+tenour
+tenpenny
+tenpin
+tenpins
+tenpounder
+tenrec
+tensility
+tensimeter
+tensimeter's
+tensimeters
+tensiometer
+tensiometer's
+tensiometers
+tensiometric
+tensiometry
+tensity
+tensometer
+tensometer's
+tensometers
+tentacular
+tentage
+tenterhook
+tenterhooks
+tentie
+tentless
+tentmaker
+tenty
+tenuis
+tenuity
+tenurial
+tenurially
+tenuto
+teocalli
+teonanacatl
+teosinte
+tepa
+tepee
+tephra
+tepidity
+ter
+terai
+teraph
+teraphim
+teratogen
+teratogenesis
+teratogenicity
+teratologic
+teratological
+teratologist
+teratoma
+teratomatous
+terce
+tercentenary
+tercentennial
+tercept
+tercet
+terebene
+terebic
+terebinth
+terebinthine
+tered
+teredines
+teredo
+terephthalate
+terest
+terete
+terga
+tergal
+tergite
+tergiversate
+tergiversation
+tergiversator
+tergum
+teriyaki
+termagant
+termagantly
+terminably
+terminational
+termined
+termining
+terminism
+termitarium
+termless
+termtime
+ternate
+ternately
+terneplate
+terpene
+terpeneless
+terpenic
+terpenoid
+terpineol
+terpolymer
+terr
+terrae
+terram
+terrane
+terraqueous
+terrarium
+terrazzo
+terrene
+terreplein
+terret
+terricolous
+terrifically
+terrigenous
+territorialism
+territorialist
+territoriality
+terrorless
+tertre
+tervalent
+tery
+tessera
+tessie
+tessitura
+testa
+testacean
+testaceous
+testacy
+testae
+testatrix
+testcross
+testis
+teston
+testoon
+testosterone
+testudo
+tetanal
+tetanic
+tetanically
+tetany
+tetartohedral
+tetched
+tetchier
+tetchy
+tete
+teter
+teth
+tetherball
+tetra
+tetrabasic
+tetrabasicity
+tetracaine
+tetrachord
+tetracid
+tetrad
+tetradecyl
+tetradic
+tetradrachm
+tetradymite
+tetradynamous
+tetraethyl
+tetraethyllead
+tetragonolobus
+tetragrammaton
+tetrahedrite
+tetrahydrate
+tetrahydrated
+tetrahydrocannabinol
+tetrahydrofuran
+tetrahydroxy
+tetrahymena
+tetralogy
+tetramer
+tetramer's
+tetrameric
+tetramerous
+tetramers
+tetrameter
+tetramethyl
+tetramethyllead
+tetraploid
+tetraploidy
+tetrapod
+tetrapyrrole
+tetrarch
+tetrarchic
+tetrarchy
+tetraspore
+tetrasporic
+tetratomic
+tetrazolium
+tetrode
+tetrodes
+tetrodotoxin
+tetrxide
+tetryl
+tetter
+tewfik
+textbookish
+textuary
+thalamencephalon
+thalamic
+thalamically
+thalamus
+thalassemia
+thalassemic
+thalassic
+thalassocracy
+thalassocrat
+thaler
+thalidomide
+thalli
+thallic
+thalloid
+thallophytic
+thallous
+thallus
+thalluses
+thames
+thane
+thaneship
+thankworthy
+thar
+thaumaturge
+thaumaturgic
+thaumaturgist
+thaumaturgy
+theast
+theat
+theatricalism
+theatricality
+theca
+thecae
+thecal
+thecate
+thecodont
+thee
+theelin
+theelol
+theist
+theist's
+theistical
+theistically
+theists
+thematically
+thenar
+thenceforward
+thenceforwards
+theobromine
+theocentric
+theocentricity
+theocentrism
+theocrat
+theocratic
+theocratical
+theocratically
+theodicy
+theodolite
+theodolitic
+theodosius
+theogonic
+theogony
+theol
+theolog
+theologic
+theologue
+theonomous
+theonomously
+theonomy
+theophanic
+theophany
+theophylline
+theorematic
+theosophical
+theosophically
+theosophist
+theosophy
+therapeusis
+therapeutically
+therapeutist
+therapsid
+thereabout
+thereat
+thereinafter
+thereinto
+thereunto
+therewithal
+theriac
+theriaca
+theriacal
+theriomorphic
+therm
+thermae
+thermalization
+thermalize
+thermalized
+thermalizes
+thermalizing
+thermic
+thermically
+thermion
+thermite
+thermite's
+thermochemical
+thermochemist
+thermochemistry
+thermocline
+thermocoagulation
+thermoduric
+thermodynamical
+thermodynamicist
+thermoelectron
+thermoelement
+thermoform
+thermoformable
+thermogram
+thermogram's
+thermograms
+thermograph
+thermographic
+thermographically
+thermography
+thermohaline
+thermojunction
+thermolabile
+thermolability
+thermoluminescence
+thermoluminescent
+thermolysis
+thermolytic
+thermomagnetic
+thermomagnetically
+thermometrically
+thermoperiodicity
+thermoperiodism
+thermophile
+thermophilic
+thermophilous
+thermoplasticity
+thermopylae
+thermoreceptor
+thermoregulation
+thermoregulator
+thermoregulatory
+thermoremanence
+thermoremanent
+thermoscope
+thermoset
+thermosphere
+thermospheric
+thermostability
+thermostatically
+thermotactic
+thermotaxis
+thermotropic
+thermotropism
+theroelectricity
+thesaural
+thetic
+thetically
+theurgic
+theurgical
+theurgist
+theurgy
+thew
+thiabendazole
+thiaminase
+thiamine
+thiazide
+thiazine
+thiazole
+thickety
+thickhead
+thickheaded
+thickset
+thievery
+thievish
+thievishly
+thievishness
+thighbone
+thigmotaxis
+thigmotropism
+thill
+thills
+thimbleberry
+thimbleful
+thimbleful's
+thimblerig
+thimblerigger
+thimblesful
+thimbleweed
+thimerosal
+thinclad
+thingamabob
+thingumajig
+thingummy
+thiocarbamide
+thiocyanic
+thioguanine
+thiol
+thiolic
+thionate
+thionic
+thiopental
+thiophene
+thiophosphate
+thiosulfate
+thiosulfuric
+thiotepa
+thiouracid
+thiourea
+thir
+thiram
+thirdhand
+thirl
+thirstily
+thirtyfold
+thistly
+thitherto
+thitherward
+thixotropic
+thixotropy
+tho
+thod
+tholdy
+thole
+tholed
+tholeiite
+tholeiitic
+tholepin
+tholer
+tholes
+tholing
+thoraces
+thoracic
+thoracically
+thoracotomy
+thorax
+thoraxes
+thoria
+thorianite
+thoric
+thorite
+thornback
+thornbush
+thornless
+thornlike
+thoroughpin
+thoroughwort
+thoth
+thoughtway
+thousandfold
+thraldom
+thralldom
+thrasonical
+thrasonically
+thraw
+thrawart
+thrawn
+thrawnly
+threadfin
+threadiness
+threadless
+threadlike
+thready
+threepence
+threepences
+threepenny
+thremmatology
+threnode
+threnodic
+threnodist
+threnody
+threonine
+thriftily
+thriftless
+thriftlessly
+thriftlessness
+thrips
+thriven
+thro
+throatily
+throatlatch
+throbber
+throe
+thrombin
+thrombocyte
+thrombocytic
+thrombocytopenia
+thrombocytopenic
+thromboembolic
+thromboembolism
+thrombokinase
+thrombophlebitis
+thromboplastic
+thromboplastically
+thromboplastin
+thrombosed
+thrombospondin
+thrombotic
+throneberry
+throstle
+throttleable
+throttlehold
+throughither
+throughother
+throughway
+throve
+throwaway
+throwster
+thrustful
+thrustfulness
+thrustor
+thudded
+thumbhole
+thumbprint
+thumbprint's
+thumbprints
+thumbscrew
+thunderbird
+thundercloud
+thundercloud's
+thunderclouds
+thunderflower
+thunderhead
+thunderpeal
+thundershower
+thundershower's
+thundershowers
+thunderstone
+thunderstrike
+thunderstroke
+thurber
+thurible
+thurifer
+thurl
+thwartwise
+thwump
+thylacine
+thylakoid
+thyme
+thyme's
+thymectomy
+thymes
+thymey
+thymic
+thymidine
+thymine
+thymocyte
+thymol
+thymus
+thymy
+thyrglobulin
+thyrocalcitonin
+thyroidectomy
+thyroiditis
+thyrotoxicosis
+thyroxin
+thyrse
+thyrsi
+thyrsus
+thysanopteran
+thysanuran
+ti
+tial
+tiality
+tian
+tiara
+tiated
+tibial
+tiburon
+tical
+ticism
+tickicide
+ticklebrush
+tickseed
+ticktack
+ticktacktoe
+ticktock
+ticonderoga
+tictac
+tiddledywinks
+tiddlywinks
+tideless
+tidemark
+tideway
+tieback
+tieck
+tieing
+tieless
+tiemannite
+tien
+tiepin
+tierce
+tiercel
+tigerish
+tigerishly
+tigerishness
+tigerlike
+tightfisted
+tightrope
+tightwad
+tightwad's
+tightwads
+tightwire
+tiglon
+tigon
+tijuana
+tike
+tiki
+til
+tilapia
+tilefish
+tillandsia
+tillerman
+tillich
+tillie
+tilly
+tiltable
+tiltmeter
+tiltmeter's
+tiltmeters
+tiltyard
+timbal
+timbale
+timberhead
+timberline
+timberman
+timberwork
+timbral
+timbrel
+timbrelled
+timekeeper
+timekeeping
+timeous
+timeously
+timepleaser
+timesaving
+timeserver
+timeservers
+timeserving
+timework
+timeworker
+timmy
+timocracy
+timocratic
+timocratical
+timorous
+timorously
+timorousness
+timpani
+timpanist
+tinamou
+tinc
+tincal
+tinct
+tinctorial
+tinctorially
+tinderbox
+tinea
+tineal
+tineau
+tinful
+ting
+tingeing
+tingen
+tingly
+tinhorn
+tinkly
+tinman
+tinnitus
+tinstone
+tintinnabulary
+tintinnabulation
+tintless
+tintoretto
+tinwork
+tinworks
+tipcart
+tipi
+tippecanoe
+tippet
+tipsily
+tipstaff
+tipstaves
+tipster
+tipstock
+tirewoman
+tisane
+tissuey
+titaness
+titania
+titanically
+titaniferous
+titanism
+titanous
+titbit
+tithable
+tithonia
+titi
+titivate
+titivation
+titlark
+titleholder
+titleholders
+titlist
+titmice
+tito
+titrant
+titratable
+titrator
+titrimetric
+titrimetrically
+tittie
+tittivate
+tittle
+tittup
+toadstool
+toastmaster
+toastmaster's
+toastmasters
+toastmistress
+tobacconist
+tobacconist's
+tobacconists
+tobies
+toboggan
+toboggan's
+tobogganer
+tobogganing
+tobogganist
+toboggans
+tocher
+tocopherol
+tocsin
+tod
+toddies
+toddy
+toddy's
+todies
+tody
+toehold
+toehold's
+toeholds
+toeing
+toeless
+toepiece
+toeplate
+toff
+toffies
+toffy
+toft
+toga
+togaed
+toggery
+togue
+toile
+toiletry
+toilette
+toilful
+toilfully
+toilworn
+toke
+tokenism
+tokonoma
+tola
+toland
+tolbooth
+tolbutamide
+tole
+tolerator
+tolidine
+toling
+tollbooth
+tollbooth's
+tollbooths
+tolley
+tollman
+tollway
+tolu
+toluate
+toluic
+toluidine
+toluol
+tolyl
+tolylene
+tombac
+tombigbee
+tombless
+tombolo
+tomboy
+tomboyish
+tomboyishness
+tomcat
+tomcod
+tomentose
+tomentum
+tomfoolery
+tommyrot
+tomogram
+tomogram's
+tomograms
+tompion
+tomtit
+tonality
+tondi
+tondo
+toneme
+tonemic
+tonetic
+tonetically
+tonetics
+tonette
+tonga
+tongueless
+tonguelike
+tonically
+tonicity
+tonio
+tonn
+tonne
+tonneau
+tonneaus
+tonner
+tonnes
+tonometer
+tonometer's
+tonometers
+tonometric
+tonometry
+tonoplast
+tonsillar
+tonsillectomy
+tonsorial
+tonsure
+tonsured
+tonsuring
+tontine
+tonus
+toolbox
+toolboxes
+toolhead
+toolholder
+toolhouse
+toolroom
+toolshed
+toom
+toomey
+toon
+toothache
+toothache's
+toothaches
+toothless
+toothlike
+tooths
+toothsome
+toothsomely
+toothsomeness
+toothwort
+topcross
+topdressing
+tope
+topee
+topes
+topflight
+topful
+topfull
+topheavy
+tophi
+tophus
+topi
+topiary
+topicality
+topkick
+topknot
+topless
+toploftical
+toploftily
+toploftiness
+toplofty
+topmast
+topminnow
+topograph
+topographer
+topoi
+topologise
+topologist
+toponym
+toponymic
+toponymical
+toponymy
+topos
+topper
+topsail
+topstitch
+topwork
+toque
+tor
+torchbearer
+torchlight
+torchon
+torchwood
+toreador
+torero
+toreutic
+toreutics
+tormentil
+tormentor
+tornadic
+tornillo
+torpidity
+torquate
+torr
+torrens
+torrential
+torrentially
+torridity
+torsade
+torsi
+torte
+tortes
+torticollis
+tortilla
+tortious
+tortiously
+tortoni
+tortricid
+tortrix
+tortuosity
+torturous
+torturously
+torula
+tosh
+tosspot
+totalism
+totaquina
+totaquine
+totemically
+totemism
+totemist
+totemistic
+totemite
+tother
+totipotency
+totipotent
+toto
+tottery
+totting
+toucan
+touchback
+touchhole
+touchline
+touchmark
+touchwood
+toughie
+toughies
+toughy
+toulouse
+toupee
+touraco
+tourbillion
+tourbillon
+touristic
+touristically
+tourmaline
+tournedos
+tourney
+tourneyed
+tourneying
+tourneys
+tourniquet
+tourniquets
+touse
+tousing
+tovarich
+tovarish
+towage
+towerlike
+towhee
+towie
+towline
+towmond
+townee
+townies
+townlet
+townley
+townsfolk
+townspeople
+townswoman
+townwear
+towny
+towpath
+towrope
+towsley
+toxaphene
+toxemia
+toxemic
+toxicant
+toxicogenic
+toxicologic
+toxicological
+toxicologically
+toxicologist
+toxicology
+toxicosis
+toxigenic
+toxigenicity
+toxoid
+toxophilite
+toxophilites
+toxophily
+toxoplasma
+toxoplasmic
+toxoplasmosis
+toylike
+toynbee
+toyon
+trabeate
+trabeated
+trabeation
+trabecula
+trabecular
+trabeculate
+traceability
+traceably
+tracheae
+tracheal
+tracheary
+tracheate
+tracheated
+tracheid
+tracheidal
+tracheitis
+tracheobronchial
+tracheolar
+tracheole
+tracheophyte
+tracheotomy
+trachoma
+trachomatous
+trachyte
+trachytic
+tracklayer
+tracklaying
+trackman
+trackside
+trackwalker
+tractableness
+tractably
+tractarians
+tractate
+tractional
+tradable
+tradeable
+tradescantia
+tradespeople
+tradevman
+traditionary
+traditionless
+tradtionalist
+traduce
+traduced
+traducement
+traducer
+traducing
+trafficable
+tragacanth
+tragedienne
+tragi
+tragical
+tragicomedy
+tragicomical
+tragopan
+tragus
+trailblazer
+trailblazer's
+trailblazers
+trailblazing
+trailbreaker
+trailerable
+trailerist
+trailerite
+trailership
+trailhead
+trailhead's
+trailheads
+trailless
+trainability
+trainable
+trainband
+trainbearer
+traineeship
+trainferry
+trainful
+trainload
+trainload's
+trainloads
+trainsick
+traitoress
+traitress
+traject
+trajection
+tral
+tramcar
+tramline
+tramming
+tramontane
+trampoline
+trampoliner
+trampolining
+trampolinist
+tramroad
+trancelike
+trangam
+transactinide
+transactional
+transactor
+transamination
+transaxle
+transcendency
+transcendentalist
+transcriptional
+transcriptionally
+transcutaneous
+transduced
+transducing
+transductional
+transection
+transeptal
+transferase
+transferential
+transfiguration
+transfigure
+transfixion
+transformant
+transformants
+transformationalist
+transformative
+transfusible
+transfusional
+transglottal
+tranship
+transhumance
+transhumant
+transilluminate
+transillumination
+transilluminator
+transitio
+transitorily
+translatory
+translocate
+translocation
+transmarine
+transmembrane
+transmigrate
+transmigration
+transmigrator
+transmigratory
+transmissibility
+transmissive
+transmissivity
+transmissometer
+transmissometer's
+transmissometers
+transmontane
+transmountain
+transmutable
+transmutative
+transnational
+transnatural
+transonic
+transparence
+transpersonal
+transpicuous
+transpierce
+transplacental
+transplacentally
+transplantability
+transpolar
+transponder
+transpontine
+transportational
+transpositional
+transsexual
+transsexualism
+transshape
+transthoracic
+transthoracically
+transubstantial
+transubstantiate
+transubstantiation
+transudate
+transudation
+transude
+transuded
+transuding
+transuranic
+transuranium
+transvaluate
+transvaluation
+transvalue
+transvestism
+transylvania
+trapeze
+trapezist
+trapezius
+trapezohedron
+trapnest
+traprock
+trapshooter
+trapshooting
+trapunto
+trashman
+trass
+trattoria
+traumata
+traumatically
+traumatism
+trave
+travois
+travoises
+trawlerman
+trayal
+trayful
+treacle
+treacly
+treadless
+treadwell
+treasonably
+treasurable
+treasurership
+treatability
+treatable
+trebly
+trebuchet
+trebucket
+trecento
+tred
+tredecillion
+treece
+treehopper
+treeing
+treeless
+treenail
+trehalase
+trehalose
+treillage
+trekker
+trelliswork
+trematode
+tremolant
+tremolite
+tremolitic
+tremolo
+tremulant
+trenail
+trenchancy
+trendily
+trepan
+trepanation
+trepang
+trepanned
+trepanning
+trepans
+trephination
+trephine
+trephined
+trephining
+trepid
+trepidant
+treponema
+treponemal
+treponematosis
+treponematous
+treponeme
+tressel
+trestletree
+trestlework
+trews
+trey
+treys
+tri
+triacetate
+triacid
+triadically
+triage
+trialogue
+triangularity
+triarchy
+triaxial
+triaxiality
+triazine
+triazines
+trib
+tribalism
+tribasic
+triboelectric
+triboelectricity
+tribological
+tribologist
+tribology
+triboluminescence
+triboluminescent
+tribophysics
+tribrach
+tribrachic
+tribromide
+tribunate
+tribuneship
+tricarboxylic
+tricarpellary
+tricarpellate
+trice
+triceps
+tricepses
+triceratops
+trichiasis
+trichina
+trichinal
+trichinosis
+trichinous
+trichite
+trichlorfon
+trichloride
+trichocyst
+trichocystic
+trichogyne
+trichoid
+trichome
+trichomic
+trichomonacidal
+trichomonacide
+trichomonad
+trichomonadal
+trichomonal
+trichomoniasis
+trichopteran
+trichotomous
+trichotomously
+trichromat
+trichromatism
+trichrome
+trichuriasis
+tricing
+trickily
+trickish
+trickishly
+trickishness
+tricksier
+tricksiness
+tricksy
+triclad
+triclinic
+triclinium
+tricolette
+tricorn
+tricorne
+tricornered
+tricot
+tricotine
+tricotyledonous
+trictrac
+tricuspid
+tricycle
+tricycles
+tricyclic
+tridimensional
+tridimensionality
+triduum
+triene
+triennium
+trierarch
+trierarchy
+triethyl
+trifacial
+trifid
+trifluralin
+trifocal
+trifoliate
+trifoliolate
+trifolium
+triforium
+triform
+trifurcate
+trifurcation
+trigeminal
+triggerfish
+triggerman
+trigging
+triglyceride
+triglycerides
+triglyph
+triglyphic
+triglyphical
+trigon
+trigonometrical
+trigonometrically
+trigonous
+trigraph
+trigraphic
+trihybrid
+trihydroxy
+triiodothyronine
+trijet
+trilateral
+trilaterality
+trilaterally
+trilbies
+trilby
+trilinear
+trilingual
+trilingually
+triliteral
+triliteralism
+trillium
+trilobate
+trilobation
+trilobed
+trilocular
+triloculate
+trimaran
+trimble
+trimeric
+trimerous
+trimestral
+trimestrial
+trimeter
+trimetrogon
+trimonthly
+trimorph
+trimorphic
+trimorphism
+trimorphous
+trimotor
+trinal
+trinary
+trindle
+trindled
+trindling
+trine
+trinitrotoluene
+trinketry
+trinkums
+trinocular
+trinomial
+trinucleotide
+triol
+triolet
+triose
+tripack
+triphammer
+triphammer's
+triphammers
+triphenylmethane
+triphibian
+triphibious
+triphosphate
+triphthong
+triphthongal
+tripinnate
+tripinnately
+triplane
+tripletail
+triplicity
+triplite
+triploblastic
+triploid
+triploidy
+tripodal
+tripos
+tripper
+trippet
+triptane
+triquetrous
+triradiate
+trireme
+tris
+trisaccharide
+trisect
+trisection
+trisector
+triskele
+triskelion
+trismus
+trisoctahedron
+trisome
+trisomic
+trisomy
+triste
+tristearin
+tristeza
+tristful
+tristfully
+tristfulness
+tristimulus
+trisubstituted
+trisulfide
+trisyllabic
+trisyllabicall
+trit
+tritheism
+tritheist
+tritheistic
+tritheistical
+trithing
+tritiated
+triticale
+tritoma
+tritone
+triturable
+triturate
+trituration
+triturator
+triumvir
+triumviral
+triumvirate
+trivalve
+trivet
+triweekly
+trochaic
+trochal
+trochanter
+trochanteral
+trochanteric
+trochar
+troche
+trochee
+trochilus
+trochlea
+trochlear
+trochoid
+trochoidal
+trochophore
+troglodytic
+trogon
+trograd
+troilite
+trolleybus
+trollied
+trollies
+trolly
+trombidiasis
+trommel
+tromp
+trona
+trone
+troostite
+trop
+tropaeolum
+trope
+tropez
+trophallaxis
+trophically
+trophoblast
+trophoblastic
+trophozoite
+tropidoclonion
+tropistic
+tropologic
+tropological
+tropologically
+tropology
+tropomyosin
+tropopause
+tropophilous
+troposphere
+tropotaxis
+troth
+trothplight
+trotline
+trotsky
+trotskyism
+troubadour
+troubadour's
+troubadours
+troubleshot
+troublous
+troublously
+troublousness
+troupial
+trousseau
+trousseaus
+trousseaux
+troutier
+trouty
+trove
+trover
+trow
+truantry
+truckage
+truckee
+truckle
+truckled
+truckler
+truckline
+truckling
+truckload
+truckload's
+truckloads
+truckman
+truckmaster
+truculency
+trueborn
+truehearted
+trueheartedness
+trueing
+truelove
+truepenny
+truffle
+truffle's
+truffled
+truffles
+truistic
+trujillo
+trull
+trumpetlike
+trumpetweed
+truncheon
+truncheons
+trunkfish
+trunkful
+trunnel
+trunnion
+trunnions
+trustability
+trustable
+trustbuster
+trusteeing
+trustless
+trustworthily
+tryout
+trypanosome
+trypanosomiasis
+tryparsamide
+trypsinogen
+tryptamine
+tryptic
+tryptophan
+tryptophane
+trysail
+tryst
+trytophan
+tryworks
+tset
+tsetse
+tsetses
+tsunamic
+tsunematsu
+tubal
+tubbable
+tubbed
+tubber
+tubbier
+tubbing
+tubby
+tubeless
+tubelike
+tubercle
+tubercled
+tubercular
+tubercularly
+tuberculate
+tuberculated
+tuberculation
+tuberculin
+tuberculoid
+tuberculous
+tuberculously
+tuberose
+tuberosity
+tuberous
+tubful
+tubifex
+tubifexes
+tubificid
+tubocurarine
+tubularity
+tubulous
+tuchun
+tuckahoe
+tucket
+tuebor
+tuel
+tufa
+tufaceous
+tuff
+tuffaceous
+tuffet
+tufty
+tugboat
+tugger
+tui
+tuille
+tuitional
+tularemic
+tulation
+tulatory
+tule
+tulipwood
+tullibee
+tumblebug
+tumbledown
+tumblerful
+tumbleweed
+tumbrel
+tumbril
+tumefaciens
+tumefaction
+tumefactive
+tumescence
+tumescent
+tumidity
+tumoral
+tumorigenic
+tumorigenicity
+tumorlike
+tumorlike's
+tumorlikes
+tumorous
+tump
+tumpline
+tumultuary
+tumulus
+tunability
+tunably
+tundish
+tuneable
+tuneless
+tunesmith
+tungstic
+tungstite
+tunica
+tunicae
+tunicate
+tunicated
+tunicle
+tunnellike
+tunny
+tup
+tuppence
+tupping
+tuque
+tural
+turbanned
+turbellarian
+turbid
+turbidimeter
+turbidimeter's
+turbidimeters
+turbidimetric
+turbidimetrically
+turbidimetry
+turbidite
+turbidity
+turbidly
+turbidness
+turbinal
+turbit
+turbjet
+turbo
+turbocar
+turbocharge
+turbocharger
+turboelectric
+turboprop
+turbos
+turboshaft
+turbosupercharged
+turbosupercharger
+turbot
+turbots
+turbulency
+turd
+ture
+tured
+tureen
+turfman
+turfski
+turfskiing
+turfy
+turgescence
+turgescent
+turgidity
+turgor
+turion
+turmeric
+turnbuckle
+turncoat
+turndown
+turnery
+turnsole
+turnspit
+turnstile
+turnup
+turnverein
+turpentinic
+turpentinous
+turps
+turquois
+turtledove
+turtlehead
+turves
+tusche
+tush
+tusklike
+tussah
+tussive
+tussock
+tussocks
+tussocky
+tussore
+tutee
+tutees
+tutelar
+tutelary
+tutorage
+tutoress
+tutorship
+tutoyer
+tutti
+tux
+tuyere
+twae
+twangy
+tween
+tweet
+tweeter
+twelvefold
+twelvemonth
+twentyfold
+twerp
+twiggy
+twilit
+twinberry
+twinborn
+twinflower
+twingeing
+twinkly
+twinship
+twiny
+twirp
+twitchily
+twitted
+twittery
+twixt
+twofer
+twohandedness
+twopence
+twopences
+twopenny
+tyke
+tyke's
+tykes
+tymbal
+tympan
+tympani
+tympani's
+tympanic
+tympanis
+tympanites
+tympanitic
+tympanum
+tympanum's
+tympany
+typal
+typeable
+typecase
+typecast
+typefounder
+typefounding
+typefoundry
+typeout
+typey
+typhlosole
+typic
+typier
+typograph
+typologist
+typy
+tyramine
+tyrannosaur
+tyrannosaurus
+tyrannous
+tyrannously
+tyro
+tyrocidin
+tyrocidine
+tyros
+tyrosinase
+tyrothricin
+tzaddik
+tzaddikim
+tzar
+tzigane
+tzimmes
+tzitzis
+udall
+udder
+uglification
+uglify
+uglily
+ukulele
+ulama
+ulcerogenic
+ulcerous
+uldered
+ulema
+ulexite
+ullage
+ulna
+ulna's
+ulnar
+ulotrichous
+ulotrichy
+ultima
+ultimacy
+ultimo
+ultimogeniture
+ultrabasic
+ultracentrifugal
+ultrafashionable
+ultrafiche
+ultrafilter
+ultrafiltration
+ultrahigh
+ultraism
+ultraist
+ultraistic
+ultramafic
+ultramicro
+ultramicroscope
+ultramicroscopes
+ultramicrotome
+ultramicrotomes
+ultramicrotomy
+ultramodernist
+ultramontane
+ultramontanism
+ultranationalism
+ultranationalist
+ultrapure
+ultrapurely
+ultrasecret
+ultrasonicate
+ultrasonicated
+ultrasonicates
+ultrasonicating
+ultrastructural
+ultrastructurally
+ululant
+ululate
+ululation
+ulva
+umbel
+umbellate
+umbellifer
+umbelliferous
+umbilicate
+umbilicated
+umbilication
+umbonate
+umbones
+umbos
+umbrae
+umbrageous
+umbrageously
+umbrageousness
+umbral
+umlaut
+ump
+umpirage
+umpteen
+umpteenth
+un
+unaccountability
+unadapted
+unageing
+unalterability
+unamazed
+unamusing
+unanchor
+unanswerably
+unapologetic
+unappealable
+unappreciation
+unapproachably
+unarm
+unassailability
+unassailably
+unassertive
+unassuageable
+unattach
+unaverage
+unballasted
+unbandage
+unbar
+unbeautiful
+unbecome
+unbeknown
+unbelief
+unbeliever
+unbeseeming
+unbiblical
+unbid
+unbitted
+unblenched
+unblessed
+unbolt
+unbosom
+unbox
+unbrace
+unbraid
+unbridle
+unbroke
+unbuckle
+unbudgeable
+unbudgeably
+unbuild
+unbundle
+unburden
+uncage
+uncalculated
+uncalculatingly
+uncandid
+uncannily
+uncelebrated
+unchain
+unchallengeable
+unchancy
+unchangealeness
+uncharge
+unchaste
+unchastely
+unchasteness
+unchivalrous
+unchoke
+uncial
+uncially
+unciform
+uncil
+uncinaria
+uncinariasis
+uncinate
+uncinus
+uncircumcision
+unclamp
+unclasp
+unclassical
+unclench
+unclimbable
+unclimbableness
+unclinch
+uncloak
+unclog
+unclose
+unclothe
+unclutter
+uncock
+uncoffin
+uncoffined
+uncoil
+uncommercial
+uncompassionate
+uncompetitive
+uncompetitiveness
+uncomplicated
+uncompromisable
+unconformable
+unconformably
+uncongenial
+unconquerably
+unconscionability
+unconscionably
+unconstraint
+uncork
+uncorseted
+uncouple
+uncoupler
+uncross
+uncrown
+uncrumple
+unctuous
+unctuously
+unctuousness
+uncurl
+uncus
+uncut
+undauntable
+undebatably
+undecagon
+undeceive
+undecillion
+underact
+underactivity
+underage
+underbid
+underbidder
+underbody
+underbred
+underbrim
+undercarriage
+undercharge
+underclass
+undercoat
+undercoating
+undercook
+undercool
+underdo
+underdrawers
+underdress
+underdressed
+undereducation
+underexpose
+underexposure
+underfeed
+undergarment
+undergird
+underglaze
+underhand
+underinsurance
+underlaid
+underlayment
+underlet
+underlip
+undermanned
+undermost
+undernourished
+undernourishment
+undernutrition
+underpants
+underpart
+underpass
+underpasses
+underpin
+underplot
+underplots
+underpowered
+underproduction
+underproductive
+underproof
+underreport
+underripe
+underrun
+undersaturated
+undersecretariat
+undersell
+undersexed
+undershorts
+undershrub
+undersigned
+underskirt
+underslung
+undersong
+underspin
+understaffed
+understeer
+understory
+understrapper
+understrength
+undersupply
+undersurface
+undertenant
+undertone
+undertrick
+underused
+undervaluation
+undervalue
+undervaluing
+underwaist
+underweight
+underwing
+underwool
+undetectability
+undine
+undiplomatically
+undock
+undogmatic
+undouble
+undramatic
+undrape
+undraw
+undrunk
+undulant
+undulatory
+une
+unequivocably
+unexceptionable
+unexceptionableness
+unexceptionably
+unexceptional
+unexpressive
+unfancy
+unfasten
+unfeeling
+unfeelingly
+unfeelingness
+unfetter
+unfix
+unfixable
+unflappability
+unflappable
+unforgettability
+unforgiveable
+unforgiveably
+unfreeze
+unfriended
+unfrock
+unfussy
+ungenerosity
+ungenerous
+ungird
+unglue
+ungovernable
+ungrudging
+ungual
+unguard
+unguent
+ungulate
+unhair
+unhandiness
+unhandsome
+unhandy
+unharness
+unhitch
+unhitches
+unhitching
+unhood
+unhorse
+unhorsed
+unialgal
+uniaxial
+uniaxially
+unibuss
+unicameral
+unicamerally
+unicellular
+unicellularity
+unicycle
+unicyclist
+unifactorial
+unifiable
+unifoliate
+unifoliolate
+uniformitarian
+uniformitarianism
+unijugate
+unilinear
+unilingual
+unillusioned
+unilocular
+uninformative
+unintelligence
+uninucleate
+uninvaginated
+unionism
+unionist
+unionists
+uniparental
+uniparentally
+uniparous
+uniplanar
+uniplex
+unipolarity
+uniramous
+unisex
+unisexual
+unisexuality
+unisexually
+unitage
+unital
+unitarily
+unitarity
+universalist
+univocal
+univocally
+unkenned
+unkennel
+unlace
+unlade
+unlash
+unlatch
+unlay
+unlimber
+unlimbered
+unlimbering
+unlive
+unloose
+unloosen
+unman
+unmate
+unmating
+unmeaning
+unmeet
+unmemorable
+unmemorably
+unmitigatd
+unmoor
+unmoral
+unmorality
+unmuffle
+unmuzzle
+unmyelinated
+unnail
+uno
+unopenable
+unpackage
+unpackaging
+unpalatable
+unpeg
+unpeople
+unperfect
+unperson
+unpick
+unpile
+unpin
+unplug
+unpolitical
+unpregnant
+unprofessed
+unpronounced
+unquote
+unreel
+unreeve
+unregenerate
+unreserve
+unrestraint
+unriddle
+unrig
+unrip
+unrobe
+unroof
+unroot
+unrotate
+unround
+unrounded
+unsaddle
+unsafety
+unsaturate
+unsay
+unsayable
+unseal
+unsealing
+unseam
+unsearchable
+unsearchably
+unsel
+unselective
+unserviceable
+unset
+unsettle
+unsettlement
+unsew
+unsex
+unshackle
+unshapen
+unshell
+unshift
+unship
+unshockability
+unshockable
+unshped
+unsight
+unsighted
+unsling
+unslinged
+unslinging
+unsnarl
+unspeak
+unspeakably
+unsphere
+unsportsmanlike
+unstate
+unstep
+unstick
+unstop
+unstoppably
+unstrap
+unstring
+unstudied
+unsubstantial
+unsubstantiality
+unsuccess
+unswathe
+unswear
+unsymmetrical
+untangle
+untenability
+unter
+untether
+unthaw
+unthink
+unthinkability
+unthought
+unthread
+unthrone
+untimeous
+untouchability
+untraceability
+untread
+untruss
+untuck
+untune
+untwine
+untwist
+unutterable
+unvocal
+unvoice
+unwarrantably
+unweave
+unweeting
+unweetingly
+unweight
+unwell
+unwieldily
+unwinnable
+unwisdom
+unwish
+unwished
+unworthily
+unwreathe
+unyoke
+unzio
+unzip
+upas
+upbuild
+upbuilder
+upcast
+upchuck
+updo
+updos
+upgrowth
+upheave
+upheaver
+uphoster
+upmanship
+upmost
+upperpart
+upping
+uppish
+uppishly
+uppishness
+uppity
+uppityness
+uprear
+uprush
+upsetter
+upshift
+upspring
+upstage
+upstaged
+upstages
+upstaging
+upstart
+upstroke
+upsweep
+upswept
+upthrow
+upthrust
+uptight
+uptightness
+uptilt
+upwell
+uracil
+uraei
+uraemia
+uraeus
+uralite
+uralitic
+uranic
+uranide
+uraninite
+uranographic
+uranographical
+uranography
+uranological
+uranology
+uranometry
+uranous
+urate
+uratic
+urbanist
+urbanistic
+urbanistically
+urbanity
+urbanologist
+urbanology
+urbiculture
+urceolate
+ure
+urease
+uredinial
+uredinium
+urediospore
+uredium
+uredostage
+ureide
+uremic
+ureotelic
+ureotelism
+ureter
+ureteral
+ureteric
+urethan
+urethral
+urethritis
+urethroscope
+uric
+uricosuric
+uricotelic
+uricotelism
+uridine
+urinalysis
+urinogenital
+urinometer
+urinometer's
+urinometers
+urinous
+urochord
+urochordal
+urochordate
+urochrome
+urodele
+urogenital
+urokinase
+urol
+urolith
+urolithiasis
+urologic
+urological
+urologist
+urology
+uropod
+uropygial
+uropygium
+urostyle
+ursine
+urticaria
+urticarial
+urticate
+urtication
+urus
+urushiol
+usableness
+usance
+useably
+usernames
+useway
+usherette
+usnea
+usrio
+usufruct
+usufructuary
+ute
+uteca
+utep
+uterus
+uteruses
+utilitarianism
+utiny
+utopism
+utopist
+utopistic
+utricle
+utricular
+utricularia
+utriculus
+utterable
+uttium
+uvarovite
+uvea
+uveal
+uveitis
+uvula
+uvular
+uvularly
+uxorial
+uxoricide
+uxorious
+uxoriously
+uxoriousness
+vacationist
+vacationless
+vaccinal
+vaccinate
+vaccinated
+vaccinates
+vaccinator
+vaccinators
+vacua
+vacuolar
+vagabondage
+vagabondish
+vagabondism
+vagally
+vagarious
+vagariously
+vagile
+vagility
+vagotomy
+vagotonic
+vagotropic
+vagrancy
+vainglory
+valediction
+valerian
+valetudinarian
+valetudinarianism
+valetudinary
+valiance
+valiancy
+valine
+valise
+valises
+valle
+vallecular
+valorous
+valorously
+valuational
+valuationally
+valvular
+vamoose
+vamoosed
+vamooses
+vamoosing
+vampirism
+vampish
+vandalistic
+vanderburgh
+vandyked
+vanguardism
+vanguardist
+vanillic
+vanillin
+vanquishable
+vanquishment
+vanward
+vapid
+vapidity
+vapidly
+vapidness
+vaporous
+vaporously
+vaporousness
+vaquero
+variac
+variational
+variationally
+varices
+varicose
+varicosed
+varicosity
+variegator
+varietal
+varietally
+variform
+variocoupler
+varioloid
+variolous
+variometer
+variometer's
+variometers
+variorum
+varisized
+varix
+varlet
+varletry
+varnishy
+varsity
+varus
+varve
+varved
+vasal
+vascularity
+vasculature
+vasculum
+vaselike
+vasiform
+vasoactive
+vasoactivity
+vasoconstriction
+vasoconstrictive
+vasoconstrictor
+vasodilatation
+vasodilation
+vasodilator
+vasomotor
+vasopressin
+vasopressor
+vasospasm
+vasospastic
+vasotocin
+vassalage
+vastitude
+vastity
+vasty
+vatic
+vaticinal
+vaticinate
+vaticination
+vaticinator
+vatted
+vatting
+vaudevillian
+vaulty
+vauntful
+vauntingly
+vaunty
+vaward
+vealy
+vectograph
+vectographic
+vectorcardiogram
+vectorcardiogram's
+vectorcardiograms
+vectorcardiographic
+vectorcardiography
+vee
+veep
+veeries
+veery
+vegetably
+vegetal
+vegetarianism
+vegetational
+vegetationally
+vegete
+vegetive
+veinal
+veinlet
+veiny
+velamen
+velamentous
+velamina
+velarium
+veld
+velitation
+velleity
+veloce
+velocimeter
+velocimeter's
+velocimeters
+velocipede
+velodrome
+velopment
+velure
+velutinous
+velveteen
+venae
+venality
+venatic
+venation
+venational
+vendable
+vendace
+vendaces
+vendee
+vendibility
+vendibly
+vendition
+vendue
+veneeal
+venenate
+venenation
+venerability
+venerably
+venerator
+venereological
+venereologist
+venereology
+venerology
+venery
+venesection
+venetian
+venge
+venging
+venin
+venipuncture
+venire
+venireman
+venisection
+venography
+ventage
+ventail
+ventilatory
+ventless
+ventricose
+ventricular
+ventriculus
+ventriloquial
+ventriloquially
+ventriloquism
+ventriloquist
+ventriloquist's
+ventriloquistic
+ventriloquists
+ventriloquy
+ventrolateral
+ventrolaterally
+ventromedial
+ventura
+venturous
+venturously
+venturousness
+venule
+veratrine
+veratrum
+verbalism
+verbalist
+verbalistic
+verbena
+verbenas
+verbicide
+verbid
+verbify
+verbigeration
+verbile
+verdancy
+verderor
+verdigris
+verdin
+verdurous
+verdurousness
+vergil
+veridic
+veridicality
+verisimilar
+verisimilarly
+verisimilitudinous
+verism
+verismo
+verist
+veristic
+veritably
+verjuice
+vermeil
+vermian
+vermicelli
+vermicide
+vermicular
+vermiculate
+vermiculated
+vermiculation
+vermiform
+vermifuge
+vermillion
+verminosis
+verminous
+verminously
+vern
+vernacle
+vernacularism
+vernation
+vernicle
+vernissage
+versal
+verseman
+verset
+versicle
+versicular
+versification
+versifier
+versify
+versine
+versional
+verso
+versos
+verticality
+verticil
+verticillte
+vertiginous
+vertiginously
+vesical
+vesicant
+vesicate
+vesication
+vesicularity
+vesiculate
+vesiculation
+vesperal
+vespertinal
+vespertine
+vespiary
+vespid
+vespine
+vesta
+vestee
+vestiary
+vestibular
+vestlike
+vestment
+vestmental
+vestryman
+vesuvian
+vesuvianite
+vetchling
+vetted
+vexillary
+vexillologic
+vexillological
+vexillologist
+vexillology
+vexillum
+viand
+viands
+viaticum
+vibist
+vibraharp
+vibraharpist
+vibrance
+vibraphone
+vibraphonist
+vibratile
+vibratility
+vibrational
+vibrationless
+vibrator
+vibratory
+vibrion
+vibriosis
+vibrissa
+vibrissae
+viburnum
+vic
+vicarage
+vicarate
+vicarial
+vicariate
+vicarship
+vicegerency
+vicegerent
+vicennial
+viceregal
+viceregally
+vicereine
+viceroyalty
+viceroyship
+vichyssoise
+vicinage
+vicinal
+vicissitudinous
+vickers
+victress
+vicuna
+vidal
+vide
+videophone
+vidette
+vidicon
+viduity
+viewfinder
+viewfinder's
+viewfinders
+viewy
+vigesimal
+vigintillion
+vignettist
+vigorish
+vigorist
+vigorist's
+vigorists
+vigoroso
+vilipend
+villadom
+villagery
+villainess
+villanella
+villanelle
+villatic
+villein
+villenage
+villi
+villiform
+villosity
+villus
+vim
+vimen
+vinaceous
+vinaigrette
+vinal
+vinblastine
+vinca
+vincible
+vincristine
+vinculum
+vindicable
+vindicator
+vindicators
+vindicatory
+vineal
+vinedresser
+vinedressers
+vinegarish
+vinegarroon
+vinegary
+vinery
+vineyardist
+vinic
+viniculture
+vinier
+viniferous
+vinification
+vino
+vinosity
+vinous
+vinously
+viny
+vinylic
+vinylidene
+viol
+violability
+violable
+violableness
+violably
+violaceous
+violaceously
+violist
+viomycin
+viosterol
+viperine
+viperish
+viperous
+viperously
+viraginous
+virago
+virelay
+viremia
+viremic
+vireo
+vires
+virescence
+virescent
+virga
+virgate
+virginium
+virgulate
+viricidal
+viricide
+virid
+viridescent
+viridian
+viridity
+virilism
+virion
+virologic
+virological
+virologically
+virologist
+virology
+viroses
+virosis
+virtuality
+virtueless
+virtuosa
+virtuosic
+virucidal
+virucide
+virulency
+viruliferous
+virustatic
+viscacha
+viscerogenic
+visceromotor
+viscidity
+viscometric
+viscometry
+viscose
+viscosimeter
+viscosimeter's
+viscosimeters
+viscosimetric
+viscountcy
+viscountess
+viscounty
+viscus
+visional
+visionally
+visionless
+visitable
+visitant
+visitational
+visitatorial
+visorless
+vitalism
+vitalist
+vitalistic
+vitamer
+vitameric
+vitellin
+vitelline
+vitellogenesis
+vitellus
+vitiator
+viticultural
+viticulture
+viticulturist
+vitiligo
+vitiosity
+vitite
+vitrifiable
+vitrine
+vittae
+vittate
+vittles
+vituperate
+vituperation
+vituperator
+vituperatory
+vitus
+vivarium
+viverrid
+vivific
+viviparity
+viviparous
+viviparously
+viviparousness
+vivisect
+vivisection
+vivisectional
+vivisectionally
+vivisectionist
+vivisector
+vixenish
+vixenishly
+vixenishness
+vizard
+vizierate
+vizierial
+viziership
+vizor
+vms
+vocabular
+vocalically
+vocality
+vocationalism
+vocationalist
+vociferant
+vociferate
+vociferation
+vociferator
+voguish
+voguishness
+voicedness
+voiceful
+voicefulness
+voiceprint
+voidable
+voidableness
+voidance
+voile
+volant
+volante
+volcanically
+volcanicity
+volcanoes
+volcanologic
+volcanological
+volcanologist
+volcanology
+vole
+voles
+volitive
+volkslied
+volkslieder
+volplane
+volplaned
+volplaning
+voltameter
+voltameter's
+voltameters
+voltametric
+volubility
+volubly
+volumeter
+volumeter's
+volumeters
+voluminosity
+voluntarism
+voluntarist
+voluntaristic
+voluntaryism
+voluntaryist
+volunteerism
+voluptuary
+volute
+voluted
+volutin
+volution
+volva
+volvement
+volvox
+vomerine
+vomitory
+vomiturition
+vomitus
+von
+voodooism
+voodooist
+voodooistic
+vored
+vortical
+vortically
+vorticella
+vorticism
+vorticist
+vorticose
+vortiginous
+votaress
+votarist
+voteless
+votress
+vouchee
+vouchsafement
+voussoir
+voyageur
+voyageurs
+voyeur
+voyeurism
+voyeuristic
+voyeuristically
+voyeurs
+vroom
+vs
+vulcanian
+vulcanicity
+vulcanologist
+vulcanology
+vulgarian
+vulgarism
+vulgarity
+vulgate
+vulgus
+vulnerably
+vulnerary
+vulterine
+vulturine
+vulturous
+vulva
+vulvae
+vulval
+vulvar
+vulviform
+vulvitis
+wackily
+wadable
+wadder
+waddie
+waddied
+waddies
+wadding
+waddy
+waddying
+wadeable
+wadi
+waftage
+wafture
+wageless
+wageworker
+wagger
+waggery
+waggly
+wagoneer
+wagoneer's
+wagoneers
+wagonette
+wagonette's
+wagonettes
+wagonload
+wagonload's
+wagonloads
+wah
+wahine
+wahoo
+wahoos
+waif
+wailful
+wailfully
+wain
+wained
+wainscotting
+waistband
+wakeless
+wakerobin
+walkabout
+walkaway
+walkingstick
+walkout
+wallaroo
+wallenstein
+walleye
+walleyed
+wallflower
+wamble
+wambled
+wambling
+wampum
+wanderlust
+waney
+wanier
+wanner
+wannest
+wanning
+wansee
+wansley
+wany
+warbonnet
+wardenship
+wardership
+wardress
+wardship
+warehousemen
+wareroom
+warlock
+warlord
+warlordism
+warlords
+warpage
+warpath
+warplane
+warplane's
+warplanes
+warrantable
+warrantableness
+warrantably
+warrantee
+warrantees
+warrantless
+warrantor
+warrantors
+washability
+washable
+washcloth
+washerman
+washerwoman
+washhouse
+washoe
+washrag
+washroom
+washrooms
+washstand
+washstands
+washtub
+washtubs
+washwoman
+wasplike
+wassail
+wassailer
+wast
+wastage
+wastages
+wastepaper
+watchcase
+watcheye
+watchtower
+watchworks
+waterborne
+watercraft
+watercress
+waterflood
+waterfowl
+waterfowl's
+waterfowler
+waterhole
+waterhole's
+waterholes
+waterily
+waterish
+waterishness
+waterless
+waterlessly
+waterlessness
+waterlog
+waterlogged
+watermanship
+watermark
+waterpower
+waterscape
+waterweed
+waterwheel
+waterworks
+waterworn
+wattmeter
+wattmeter's
+wattmeters
+waught
+waukesha
+waunona
+waupaca
+waupun
+wausau
+wauwatosa
+waveland
+waveless
+wavelessly
+wavelet
+wavelets
+wavelike
+wavery
+wavily
+waxlike
+waxwing
+waxwing's
+waxwings
+waybill
+wayfarer
+wayfaring
+waygoing
+waylay
+wayless
+wayworn
+weakhearted
+weakish
+weakling
+weal
+wealthily
+weanling
+wearability
+weariful
+wearifully
+wearifulness
+weariless
+wearilessly
+weatherability
+weatherboard
+weatherboarding
+weatherglass
+weatherman
+weatherstripping
+weatherworn
+weathery
+webbed
+webber
+webby
+webfoot
+weblike
+wedder
+wedgy
+weedless
+weeknight
+weeknights
+weepy
+weet
+weever
+weevil
+weevilly
+weevily
+weft
+wefts
+weider
+weidman
+weighable
+weightily
+weightless
+weightlessly
+weimaraner
+weiner
+weir
+weirdie
+weirdies
+weldable
+weldment
+weldor
+weldwood
+welfarism
+welfarist
+welkin
+wellaway
+wellborn
+wellhead
+wellington
+wellman
+wellwisher
+wellwisher's
+wellwishers
+welmers
+weltschmerz
+wen
+wend
+wert
+weskit
+westernmost
+wetback
+wettable
+wettish
+wff
+whacky
+whaleback
+whaleboat
+whalebone
+whalebone's
+whalebones
+whang
+whangee
+whap
+wharfage
+wharfinger
+wharfmaster
+whats
+wheal
+wheatear
+wheatland
+wheaton
+wheelbarrow
+wheelbarrow's
+wheelhorse
+wheelless
+wheelman
+wheelock
+wheelsman
+wheelwork
+wheelwright
+wheen
+wheezily
+whelm
+whenas
+whencesoever
+whensoever
+whereat
+wherefrom
+whereinto
+whereness
+wheres
+wheresomever
+wherethrough
+whereto
+whereunto
+wherewithal
+wherries
+wherry
+whetstone
+whetter
+whichsoever
+whicker
+whickered
+whickering
+whidding
+whiffletree
+whigmaleerie
+whilom
+whilst
+whimsicality
+whiney
+whinstone
+whipcord
+whiplike
+whippersnapper
+whippier
+whippletree
+whippoorwill
+whippy
+whipstitch
+whipstock
+whirlybird
+whirried
+whirry
+whirrying
+whish
+whisht
+whiskery
+whispery
+whist
+whitebait
+whitebeard
+whitecap
+whitefish
+whiteleaf
+whiteley
+whiteout
+whitesmith
+whitethroat
+whitewall
+whitewater
+whitewing
+whithersoever
+whitherward
+whitish
+whity
+whizbang
+whizz
+whizzbang
+whizzer
+whomp
+whoopee
+whoopla
+whopper
+whoredom
+whorehouse
+whoremaster
+whoremonger
+whoreson
+whorish
+whort
+whortle
+whosesoever
+whoso
+whump
+whup
+whys
+wickerwork
+wickiup
+widemouthed
+widgeon
+widgeons
+widish
+widowerhood
+widthways
+wieland
+wieldy
+wienerwurst
+wienie
+wifehood
+wifeless
+wifelike
+wigan
+wigeon
+wigeons
+wigged
+wight
+wiglet
+wigwag
+wilco
+wildcatted
+wildcatting
+wildebeest
+wildebeest's
+wilderment
+wildflower
+wildflower's
+wildflowers
+wildfowl
+wildfowler
+wildfowling
+wildish
+wildling
+wildwood
+willable
+willemite
+willet
+willies
+williwaw
+willowlike
+willowware
+willpower
+willy
+willying
+wilmette
+wimble
+wimbled
+wimbles
+wimbling
+wimple
+wimpled
+wimpling
+winchell
+windage
+windblown
+windburn
+windburned
+windflaw
+windily
+windjammer
+windlass
+windlassed
+windlasses
+windlassing
+windlassly
+windpipe
+windproof
+windscreen
+windsurf
+windsurfed
+windsurfing
+windsurfs
+windswept
+windway
+wineglass
+winegrower
+winehead
+winepress
+wineshop
+winey
+wingbeat
+wingbeat's
+wingbeats
+wingding
+wingless
+winglessness
+winglet
+winglike
+wingover
+wingspread
+wingspread's
+wingspreads
+wingy
+winism
+winnable
+winnebago
+winned
+winooski
+winsett
+wintergreen
+winterkill
+wintertide
+wintery
+wintle
+wintrily
+winze
+wirable
+wiredraw
+wiredrawer
+wiredrawn
+wirehair
+wirehaired
+wirelike
+wiretapper
+wireway
+wirework
+wireworks
+wireworm
+wirily
+wisent
+wisewoman
+wisha
+wispish
+wistaria
+wisteria
+witchery
+witchlike
+witchy
+withdrawable
+withe
+witherite
+witherspoon
+withies
+withindoors
+withoutdoors
+withy
+witless
+witling
+witted
+witticism
+wittily
+wiz
+wizardry
+wolfhound
+wolflike
+wolverine
+wolverine's
+wolverines
+wolverton
+womanish
+womanishly
+womanishness
+womankind
+womanless
+womanlike
+womanpower
+wombat
+wombat's
+wombats
+womenfolk
+womenfolks
+womenkind
+wonderwork
+wonky
+wonning
+wonton
+woodberry
+woodcraft
+woodcutter
+woodcutting
+woodenhead
+woodenheaded
+woodenware
+woodlore
+woodnote
+woodpile
+woodsman
+woodsy
+woolie
+woolpack
+woolsack
+woolshed
+woolskin
+woops
+woozier
+woozily
+wooziness
+woozy
+wordage
+wordages
+wordbook
+wordless
+wordlessness
+wordmonger
+wordplay
+workability
+workbasket
+workboat
+workbox
+workfolk
+workfolks
+workforce
+workforce's
+workforces
+workhouse
+workless
+worklessness
+workpeople
+workroom
+workrooms
+workweek
+workwoman
+worldling
+wormhole
+wormlike
+worriment
+worrywart
+worshipless
+wort
+worthful
+worthily
+wotted
+wouldst
+woundless
+woundwort
+wowser
+wrack
+wracked
+wracks
+wraiths
+wrapup
+wrasse
+wrathy
+wreathy
+wriggly
+wristlet
+wristlock
+wristy
+writeup
+writeup's
+writeups
+writhen
+wrongheaded
+wrongheadedly
+wrongheadedness
+wunderkind
+wysiwyg
+xanthate
+xanthene
+xanthic
+xanthin
+xanthine
+xenia
+xenomania
+xenophile
+xenophilous
+xenophobe
+xenophobic
+xerarch
+xeric
+xerically
+xerographic
+xerographically
+xerophile
+xerophilous
+xerophily
+xylophonist
+xylose
+xylotomic
+xylotomical
+xylotomous
+xylotomy
+yack
+yacking
+yah
+yak
+yakking
+yalies
+yam
+yamen
+yardarm
+yardbird
+yardman
+yardmaster
+yare
+yarely
+yarmelke
+ycleped
+yclept
+ye
+yearling
+yearlong
+yeastily
+yellerish
+yep
+yester
+yeuk
+yew
+yoghurt
+yoghurt's
+yogic
+yogin
+yoknapatawpha
+yolky
+yond
+youngling
+yuba
+yuletide
+yuri
+zabaglione
+zagged
+zanier
+zanies
+zanily
+zaniness
+zany
+zazen
+zealotry
+zeffirelli
+zenithal
+zeolite
+zeolitic
+zephyr
+zeppelin
+ziggy
+zillion
+zincate
+zincic
+zinfandel
+zingier
+zingy
+zinnia
+zippier
+zippy
+zirconia
+zirconic
+zither
+zitherist
+zithers
+zizith
+zoantharian
+zoarial
+zoarium
+zobrist
+zombi
+zombiism
+zonate
+zonated
+zonation
+zonked
+zoogenic
+zoogenous
+zoogeographer
+zoogeographic
+zoogeography
+zooks
+zoologic
+zoomorphic
+zoonosis
+zoonotic
+zooparasite
+zooparasitic
+zoophagous
+zoophilic
+zoophilous
+zoophyte
+zoophytic
+zooplankton
+zoosporal
+zoospore
+zoosterol
+zootechnics
+zori
+zucchini
+zwitterion
+zwitterionic
+zwitterions
+zygote
+zygote's
+zygotes
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.3 b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.3
new file mode 100644
index 00000000000..4ecbceb570c
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/spellCheck/english.3
@@ -0,0 +1,19708 @@
+AAU
+AKA
+APS
+Aachen
+Aalborg
+Aalesund
+Aargau
+Aaronic
+Abba
+Abbado
+Abbevillian
+Abbeydale
+Abelard
+Abele
+Abelmosk
+Abernethy
+Aberystwyth
+Abravanel
+Abraxas
+Absalom
+Abu
+Abyssinian
+Acarus
+Accrington
+Aceldama
+Achaemenid
+Achates
+Achernar
+Achitophel
+Acis
+Actinia
+Actium
+Adamite
+Adar
+Addams
+Addington
+Adenauer
+Adige
+Adonai
+Adonic
+Adullamite
+Advowson
+Aedes
+Aegeus
+Aegina
+Aegisthus
+Aeolic
+Aeolipile
+Aeolis
+Aepyornis
+Aeschines
+Aesculapian
+Aesculapius
+Aesir
+Aetolia
+Affenpinscher
+Africanism
+Africanist
+Afrikander
+Afrikanerdom
+Agama
+Agapanthus
+Ageratum
+Agincourt
+Aglaia
+Agostini
+Agra
+Agrapha
+Agrippa
+Aguascalientes
+Ahasuerus
+Ahmednagar
+Ahriman
+Ahvenanmaa
+Ahwaz
+Aidan
+Aidin
+Aileen
+Akan
+Akhmatova
+Akkad
+Akkadian
+Akmolinsk
+Aktyubinsk
+Alamein
+Alaric
+Albi
+Albigenses
+Albinoni
+Albion
+Alboin
+Albury
+Alcman
+Alcock
+Alcoran
+Alcyone
+Aldermaston
+Alderney
+Aldine
+Aldus
+Aleksandropol
+Aleksandrovsk
+Alemanni
+Alemannic
+Aleppo
+Alexandrian
+Alexius
+Algerine
+Algonkian
+Alkoran
+Allahabad
+Allenby
+Allende
+Allhallowtide
+Almeida
+Almohade
+Almoravide
+Alsatia
+Altaic
+Altamira
+Altrincham
+Amaryllis
+Amati
+Amboina
+Ambrosian
+Ameling
+Americanist
+Amerigo
+Amerindian
+Amersfoort
+Ameslan
+Amfortas
+Amish
+Ammonites
+Amoy
+Ampelopsis
+Amphitrite
+Amphitryon
+Amritsar
+Amundsen
+Amytal
+Anabaena
+Anabas
+Anableps
+Anacreontic
+Anam
+Ananias
+Anchises
+Ancona
+Andaman
+Andhra
+Angara
+Angarsk
+Angelus
+Angevin
+Angkor
+Anglesey
+Anglian
+Anglicist
+Anglomania
+Anglophone
+Anguilla
+Anjou
+Annam
+Annamese
+Annapurna
+Anopheles
+Anouilh
+Ansermet
+Antarctic
+Anthurium
+Antigonus
+Antigua
+Anubis
+Anzac
+Aphis
+Apis
+Apollyon
+Apus
+Arabist
+Arafat
+Araiza
+Aramaic
+Araucanian
+Araucaria
+Arawakan
+Arbela
+Arcadic
+Archaeopteryx
+Archaeornis
+Archean
+Archilochian
+Arctic
+Arctogaea
+Areca
+Areopagus
+Ares
+Arethusa
+Argerich
+Argyrol
+Arian
+Ariel
+Aristides
+Aristippus
+Arius
+Arkhangelsk
+Arkhipova
+Arlberg
+Arminian
+Arrau
+Arroyo
+Arthurian
+Asarum
+Ascanius
+Ascensiontide
+Aschaffenburg
+Ascham
+Asclepiadean
+Asclepius
+Ashanti
+Ashford
+Ashkenazi
+Ashkenazy
+Ashkhabad
+Ashmore
+Ashton
+Ashur
+Asimov
+Aspasia
+Assamese
+Assisi
+Astilbe
+Aten
+Athanasian
+Atherton
+Atlantean
+Atlantov
+Attenborough
+Attila
+Aubergine
+Aubervilliers
+Aubrietia
+Aubusson
+Auger
+Augsburg
+Augustinian
+Aurignacian
+Aussie
+Auster
+Austerlitz
+Australasia
+Australiana
+Australianism
+Australoid
+Australorp
+Austrasia
+Austronesia
+Austronesian
+Autoharp
+Avar
+Averroism
+Avestan
+Axminster
+Aymara
+Ayrshire
+Azerbaijani
+Azilian
+Azotobacter
+Azov
+Azrael
+BBC
+BCPL
+BNF
+Baal
+Baalbek
+Baaskap
+Bab
+Babi
+Babism
+Bacchae
+Bacharach
+Bacquier
+Bactrian
+Baedeker
+Baganda
+Bagdad
+Bahai
+Bahaism
+Bahrain
+Bairam
+Baker
+Bala
+Balaam
+Balakirev
+Balaklava
+Balaton
+Balearic
+Balkis
+Balmacaan
+Balmoral
+Balt
+Balthazar
+Baltsa
+Baluchi
+Baluchistan
+Bambara
+Bamberg
+Banda
+Banff
+Bank
+Bannockburn
+Bantoid
+Bantustan
+Banville
+Barabbas
+Barathea
+Barbarossa
+Barbary
+Barber
+Barbirolli
+Barbuda
+Barcoo
+Bardolatry
+Barenboim
+Bari
+Barmecide
+Barotse
+Barsac
+Bart
+Bartoletti
+Bashkir
+Basilian
+Basingstoke
+Baskerville
+Bassas
+Bastianini
+Basutoland
+Bataan
+Bathonian
+Battenburg
+Battle
+Baudo
+Bauhinia
+Bax
+Bayard
+Beaconsfield
+Beaufort
+Beaune
+Bebington
+Bechuana
+Bechuanaland
+Beckenham
+Beckford
+Beckmann
+Bedfordshire
+Bedlington
+Beghard
+Beguin
+Behrens
+Belgae
+Belgravia
+Belial
+Belisarius
+Belisha
+Belleek
+Bellerophon
+Bellingshausen
+Bellmouth
+Bellona
+Belmondo
+Belorussia
+Belostok
+Belsen
+Beltane
+Bemba
+Benackova
+Benedictus
+Benedikt
+Beni
+Benin
+Benison
+Benne
+Bennet
+Berber
+Berberis
+Berbie
+Berchtesgaden
+Berdichev
+Berdyayev
+Berenson
+Berezina
+Berezniki
+Berg
+Bergama
+Bergamo
+Berganza
+Berger
+Bergonzi
+Bergsonism
+Berkeleian
+Berkeleianism
+Bernese
+Bessarabia
+Bethany
+Bethmann
+Betta
+Beulah
+Beveridge
+Bewick
+Bice
+Biedermeier
+Bielefeld
+Bihari
+Biisk
+Bilharzia
+Billingham
+Billingsgate
+Billiton
+Bim
+Birkenhead
+Bishop
+Blachut
+Blackbeard
+Blagoveshchensk
+Blanzat
+Blavatsky
+Blech
+Blegen
+Bley
+Blindheim
+Blini
+Bliss
+Blomstedt
+Bloomsbury
+Boanerges
+Boatwright
+Boche
+Bodoni
+Bogas
+Bohm
+Boildieu
+Boito
+Bokhara
+Bolshie
+Bolson
+Boltonia
+Bonapartism
+Bonynge
+Bordelaise
+Borghese
+Borodin
+Boronia
+Bosky
+Bosnia
+Bougainville
+Boughton
+Boulez
+Boult
+Bournemouth
+Bouvet
+Bozcaada
+Braata
+Brachiosaurus
+Bragi
+Brahman
+Brahmana
+Brahmani
+Brahmanism
+Brahmin
+Brahui
+Brailler
+Braillers
+Braillewriters
+Brantford
+Breconshire
+Bremerhaven
+Brendel
+Brentano
+Brentwood
+Brescia
+Breslau
+Bresson
+Bretagne
+Bretton
+Breuer
+Breughel
+Briareus
+Bridgeford
+Bridgeman
+Bright
+Brigid
+Britannia
+Briticism
+Britishism
+Brixton
+Brno
+Broadbrim
+Bromberg
+Brown
+Bruch
+Brule
+Brummagem
+Brunei
+Brunelle
+Bruson
+Brutus
+Bryansk
+Brython
+Brythonic
+Bubo
+Bucephalus
+Buchmanism
+Buckingham
+Buckinghamshire
+Buddleia
+Buenaventura
+Bueno
+Bulgar
+Bumbledom
+Buna
+Bundaberg
+Bundoora
+Bundu
+Burberry
+Burgos
+Burgoyne
+Burkina
+Burseraceous
+Bushire
+Bute
+Buttermere
+Butterworth
+Bydgoszcz
+Byelorussian
+Byelostok
+CATV
+CB
+CCNY
+CEQ
+CGS
+CO
+Caballe
+Cabinda
+Caddoan
+Cadmean
+Cadmus
+Caelian
+Caelum
+Caernarvonshire
+Caerphilly
+Caesarean
+Caesarism
+Cahokia
+Caicos
+Calabar
+Caladium
+Calciferous
+Caledonia
+Caledonian
+Caliban
+Calicut
+Callas
+Calliopsis
+Calvados
+Calvinism
+Calydonian
+Cambridgeshire
+Camelopardus
+Camenae
+Cana
+Canaanite
+Canaanitic
+Canadianism
+Candace
+Candiot
+Candlemas
+Canicula
+Canopic
+Canossa
+Cantabrian
+Canuck
+Capablanca
+Cape
+Capernaum
+Capetian
+Capone
+Cappuccilli
+Capri
+Capricornus
+Capsian
+Caravaggio
+Carbonari
+Cardiganshire
+Caribbee
+Carlist
+Carlovingian
+Carman
+Carmarthenshire
+Carmel
+Carmelite
+Carpathian
+Carreras
+Carrick
+Carteri
+Carthaginian
+Carthusian
+Cartier
+Caslon
+Caspar
+Casparian
+Caspian
+Cassegrainian
+Cassia
+Castalia
+Castilian
+Castilla
+Castleford
+Castlereagh
+Casuarina
+Catalan
+Cathay
+Cattleya
+Caucasoid
+Cavell
+Cavesson
+Cavetto
+Cavour
+Cawdrey
+Cawley
+Cawnpore
+Caxton
+Cayes
+Cayman
+Cayuse
+Ceanothus
+Cecrops
+Ceiba
+Celadon
+Celaeno
+Celeste
+Celtiberian
+Centaurus
+Central
+Cepheid
+Ceratodus
+Cercis
+Cerenkov
+Ceres
+Cete
+Chaco
+Chadderton
+Chailly
+Chalcis
+Chaldean
+Chaldee
+Cham
+Chamaeleon
+Chambertin
+Charlottenburg
+Charlottetown
+Charlton
+Charmeuse
+Charpentier
+Chartism
+Chasidim
+Chatterton
+Chaucerian
+Chechen
+Cheek
+Chellean
+Chelmsford
+Cheltenham
+Chelyabinsk
+Chelyuskin
+Chengchow
+Chengteh
+Chengtu
+Cheongsam
+Cheops
+Cherbourg
+Cheremiss
+Cheremkhovo
+Cherenkov
+Chernovtsy
+Chernozem
+Chertsey
+Cherubini
+Chessel
+Chesterfieldian
+Chetnik
+Cheval
+Chian
+Chibchan
+Chickasaw
+Chihuahua
+Childermas
+Chilean
+Chiltern
+Chilton
+China
+Chinee
+Chinookan
+Chionodoxa
+Chiron
+Chita
+Chkalov
+Chlorella
+Chloromycetin
+Chocho
+Choco
+Chrissie
+Christadelphian
+Christchurch
+Christhood
+Christmastide
+Christoff
+Christology
+Christophe
+Chukchi
+Chung
+Churrigueresque
+Chuvash
+Ciccolini
+Cicely
+Cid
+Cilician
+Cimbri
+Cimmerian
+Cinchona
+Cincinnatus
+Cinemascope
+Cineraria
+Cipango
+Circassian
+Circinus
+Cisalpine
+Cistercian
+Cistus
+City
+Clacton
+Clapham
+Clapton
+Clarabella
+Clarenceux
+Clarkia
+Claudel
+Claudius
+Clausewitz
+Claytonia
+Clematis
+Clementine
+Clemmons
+Cleome
+Cleopatra
+Cleve
+Clevenger
+Cliburn
+Clintonia
+Clipperton
+Clostridium
+Cluj
+Cluytens
+Clydesdale
+Coast
+Coatbridge
+Cobbett
+Cobham
+Cochin
+Cockaigne
+Cocos
+Cointreau
+Colchicum
+Colchis
+Colima
+Colleen
+Collier
+Collinsia
+Colloq
+Colobus
+Cologne
+Colossian
+Coltrane
+Columba
+Colwyn
+Comanchean
+Comintern
+Command
+Comoros
+Compositae
+Comptometer
+Comus
+Conferva
+Congreve
+Coniston
+Conium
+Convolvulus
+Cook
+Copland
+Coprosma
+Copt
+Coptic
+Coquille
+Coral
+Corantijn
+Cordelier
+Cordovan
+Coreopsis
+Corriedale
+Cortes
+Corvallis
+Corybant
+Corydalis
+Corydon
+Costa
+Costermansville
+Cotinga
+Cotrubas
+Couperin
+Courland
+Cousteau
+Cowell
+Cowichan
+Craal
+Cranfield
+Cressida
+Creston
+Cretic
+Crichton
+Crinum
+Croat
+Crockford
+Crompton
+Cronin
+Crookes
+Crookesmoor
+Crossley
+Crownland
+Cryptomeria
+Cuberli
+Culex
+Cumbrian
+Cundick
+Curculio
+Curcuma
+Curtana
+Curvet
+Cuscus
+Cushitic
+Cuthbert
+Cymric
+Cypripedium
+Cyrano
+Cyrenaic
+Cytherea
+Czechoslovak
+Czernowitz
+Czerny
+DMF
+DPP
+DWT
+Dagenham
+Dagestan
+Dago
+Daltonism
+Damara
+Damaraland
+Damascene
+Damien
+Damson
+Danaides
+Danegeld
+Danelaw
+Danio
+Danton
+Daphnis
+Dapsang
+Darby
+Dard
+Dardan
+Dardic
+Darien
+Darjeeling
+Darry
+Dartford
+Dartmoor
+Davidovich
+Deauville
+Deb
+Decembrist
+Deepfreeze
+Delian
+Delibes
+Delius
+Deller
+Delorme
+Delos
+Delsarte
+Demogorgon
+Demosthenes
+Denbighshire
+Dene
+Denis
+Dentalium
+Depraz
+Dernesch
+Derris
+Deuteronomist
+Deuteronomistic
+Deuteronomy
+Deutschland
+Deutzia
+Devereux
+Devonian
+Diablo
+Diamond
+Dictaphone
+Dictograph
+Didache
+Dieskau
+Dimitrovo
+Dinaric
+Dinesen
+Dingaan
+Dinka
+Dinnington
+Dinoceras
+Dione
+Dionysia
+Dionysiac
+Dioscuri
+Diplodocus
+Dirham
+Ditzel
+Djibouti
+Dneprodzerzhinsk
+Dnepropetrovsk
+Dniester
+Docetism
+Dodgson
+Dodona
+Doese
+Dohnanyi
+Dol
+Dolichosaurus
+Dominica
+Domitian
+Donar
+Donath
+Donatist
+Doncaster
+Donegal
+Donetsk
+Dongola
+Donizetti
+Dopper
+Dor
+Dorati
+Dorian
+Dorking
+Dormoy
+Doronicum
+Dowland
+Dowson
+Dracaena
+Draconic
+Drakensberg
+Drayton
+Dressen
+Dronfield
+Druse
+Duala
+Dubonnet
+Duisburg
+Dukas
+Dulcinea
+Dumbarton
+Dunbarton
+Dunker
+Dupre
+Duralumin
+Durban
+Durkheim
+Duroc
+Durufle
+Dutoit
+Duyker
+Dvandva
+Dvina
+Dvinsk
+Dvorsky
+Dyak
+Dyonisian
+Dzaudzhikau
+Dzerzhinsk
+Dzhambul
+Dziggetai
+Dzongka
+Dzungaria
+ECAD
+Eaglestone
+Eaglewood
+Eastbourne
+Eastertide
+Eastleigh
+Ebert
+Ecclesiastes
+Ecclesiasticus
+Echeveria
+Edda
+Eddington
+Edo
+Edomite
+Edwardine
+Efik
+Egbert
+Egeria
+Egham
+Egmont
+Ehrenburg
+Eichendorff
+Eiffel
+Eijkman
+Eikon
+Eilat
+Eindhoven
+Einkorn
+Eisenach
+Eisenstadt
+Eisenstein
+Eisteddfod
+Ekaterinburg
+Ekaterinodar
+Ekaterinoslav
+Elamite
+Elbert
+Eleatic
+Eleusinian
+Elfland
+Elgar
+Elia
+Elias
+Elisabethville
+Elisavetgrad
+Elisavetpol
+Ellesmere
+Ellice
+Ellington
+Elohim
+Elohist
+Elsass
+Elvira
+Emirates
+Emmenthal
+Emmet
+Emmy
+Empson
+Endamoeba
+Endrich
+Endymion
+Enesco
+Engel
+Englishism
+Englishry
+Entamoeba
+Eozoic
+Ephedra
+Ephemera
+Ephraimite
+Epigoni
+Episcopalism
+Equatorial
+Equisetum
+Erastianism
+Erechtheum
+Erechtheus
+Erenburg
+Erica
+Ericson
+Erin
+Eritrea
+Ermanaric
+Ermler
+Erse
+Erymanthian
+Escallonia
+Escherichia
+Escorial
+Esdras
+Eskilstuna
+Esperanto
+Esquiline
+Essene
+Estonian
+Eth
+Ethelbert
+Ethelred
+Ethiopian
+Eton
+Eucharis
+Euonymus
+Eupatorium
+Euphrosyne
+Euroclydon
+Eurocommunism
+Eurocrat
+Eurodollar
+Euromarket
+Eurovision
+Eurus
+Euryale
+Eurystheus
+Eustachian
+Euxine
+Everton
+Evertor
+Evesham
+Evonymus
+Ewing
+Excalibur
+Exmoor
+Exon
+FPS
+Fabianism
+Fabrikoid
+Factice
+Faisal
+Faizabad
+Falange
+Faliscan
+Falkirk
+Falkner
+Falla
+Falstaffian
+Fanti
+Fareham
+Farnborough
+Farnese
+Farnesol
+Farnham
+Faroe
+Faroes
+Farouk
+Farquhar
+Farrago
+Farthingale
+Fartlek
+Faruk
+Fassbaender
+Fassbinder
+Fathometer
+Fatimid
+Fatshan
+Faubourg
+Faure
+Fayal
+Fedoseyev
+Feigin
+Feisal
+Feme
+Fenian
+Fenice
+Fenrir
+Fergus
+Fernandi
+Ferrara
+Fescennine
+Feuchtwanger
+Feuerbach
+Feuilleton
+Fezzan
+Fianna
+Finnic
+Finsen
+Finsteraarhorn
+Firbank
+Flamig
+Flaminian
+Fleetwood
+Flensburg
+Fletcher
+Fletcherism
+Flintshire
+Flugelhorn
+Flysch
+Foism
+Foison
+Fokine
+Fokker
+Foochow
+Fornax
+Forrester
+Forsythia
+Fouquet
+Fourierism
+Fournet
+Fournier
+Francescatti
+Franck
+Franconia
+Franconian
+Francophile
+Francophobe
+Francophone
+Franglais
+Frankenstein
+Frankish
+Frauenfeld
+Fraunhofer
+Frazer
+Frazil
+Freccia
+Freda
+Fredericia
+Frederiksberg
+Fredrikstad
+Freesia
+Freiburg
+Frenchy
+Freni
+Frescobaldi
+Freytag
+Fribourg
+Fricandeau
+Friesian
+Frigg
+Frijol
+Frisch
+Frisco
+Friuli
+Friulian
+Frizette
+Frobisher
+Froment
+Ft
+Fuegian
+Fulham
+Futuna
+Fyzabad
+Gadarene
+Gael
+Gaeltacht
+Gagarin
+Gaia
+Gainsborough
+Galago
+Galenic
+Galenical
+Galenism
+Galibi
+Galician
+Galla
+Gallic
+Gallican
+Gallicanism
+Gallicism
+Galton
+Galwegian
+Gambeson
+Gambetta
+Gambier
+Gamboge
+Ganda
+Gandhiism
+Ganga
+Garamond
+Gargantua
+Garrya
+Garth
+Gascon
+Gaspar
+Gates
+Gatha
+Gaucho
+Gaulish
+Gaullism
+Gaullist
+Gaultheria
+Gaza
+Gedda
+Gehenna
+Geisel
+Geissler
+Gelderland
+Gelsemium
+Gelsenkirchen
+Gemara
+Gencer
+Gendron
+Genevan
+Genf
+Genfersee
+Genghis
+Genoese
+Genova
+Gentoo
+Geordie
+Georgette
+Germanism
+Germanophile
+Germanophobe
+Gethsemane
+Geum
+Gharial
+Gharry
+Ghaut
+Ghazi
+Ghazzah
+Gheber
+Gherao
+Ghiaurov
+Ghiberti
+Ghibli
+Ghillie
+Ghirlandaio
+Ghitalla
+Giacometti
+Gibeonite
+Gielgud
+Gierek
+Giessen
+Gigout
+Gilbertian
+Gileadite
+Gilels
+Gillingham
+Gippsland
+Gippy
+Giraud
+Giraudoux
+Gisborne
+Giscard
+Giulini
+Giulio
+Glagolitic
+Glazunov
+Glengarry
+Glickman
+Glinka
+Globigerina
+Glorioso
+Gloucestershire
+Gloxinia
+Gluck
+Gobbi
+Gobelin
+Godesberg
+Godetia
+Godiva
+Godolphin
+Godspeed
+Godthaab
+Godunov
+Goebbels
+Goidel
+Golconda
+Goldmark
+Golgi
+Golgotha
+Gomberg
+Gond
+Gondi
+Gondwanaland
+Gongorism
+Goop
+Gorcock
+Gorgonzola
+Gorki
+Gorlovka
+Goshen
+Gosplan
+Goth
+Gotha
+Gothenburg
+Gotland
+Goucher
+Gounod
+Goya
+Graafian
+Graben
+Gracchus
+Graeae
+Graffman
+Graian
+Granth
+Grecism
+Green
+Greenham
+Gregorian
+Greisen
+Grenada
+Grenadines
+Gretna
+Grieg
+Grierson
+Griffe
+Griffiths
+Griffon
+Grig
+Grigioni
+Grignard
+Grikwa
+Grindelia
+Griqua
+Griqualand
+Grison
+Grolier
+Grundheber
+Grus
+Guadeloupe
+Guarani
+Guernica
+Guernsey
+Guerrero
+Guevara
+Guido
+Guildford
+Guillaume
+Guillou
+Guinea
+Guinness
+Gurmukhi
+Gurzenich
+Gypsophila
+Habsburg
+Haddington
+Hadith
+Haematoxylon
+Hagegard
+Hagiographa
+Haida
+Hainan
+Haitink
+Hakea
+Hallamshire
+Halle
+Hallowmas
+Hallstatt
+Halpern
+Hamite
+Hamitic
+Handley
+Hansard
+Hanseatic
+Hanuman
+Hanyang
+Hardenberg
+Hardy
+Hargreaves
+Haringey
+Harl
+Harlow
+Harmsworth
+Harper
+Harrild
+Harrovian
+Hathor
+Hauptmann
+Haversian
+Hawick
+Heard
+Heaviside
+Hebraism
+Hebraist
+Hebron
+Heifetz
+Helgoland
+Helianthus
+Heligoland
+Heliogabalus
+Helios
+Helladic
+Hellas
+Helldiver
+Helleborine
+Hellenism
+Hellenist
+Hellenistic
+Helvetia
+Helvetian
+Helvetic
+Helvetii
+Hemmings
+Henie
+Henryson
+Henslowe
+Henze
+Hephaestus
+Heptateuch
+Heraclid
+Herat
+Hercynian
+Herefordshire
+Herero
+Hermaphroditus
+Hertford
+Hertfordshire
+Hertzian
+Herzegovina
+Herzl
+Herzog
+Hesione
+Hesperia
+Hesperian
+Hesperides
+Hesychast
+Het
+Heteroousian
+Hexateuch
+Heynis
+Heysham
+Hezekiah
+Hialeah
+Hibernicism
+Hickox
+Hideyoshi
+Hieland
+Hilary
+Hildesheim
+Himyarite
+Himyaritic
+Hinayana
+Hindemith
+Hindenburg
+Hippeastrum
+Hippocrene
+Hippolytus
+Hippomenes
+Hirudin
+Hispania
+Hispanicism
+Hispaniola
+Hittite
+Hobbism
+Hochheimer
+Hocktide
+Hodgson
+Hoene
+Hofmann
+Hohenzollern
+Hollandia
+Holliday
+Holliger
+Hom
+Homoiousian
+Hong
+Honiton
+Horatian
+Horatius
+Horenstein
+Horne
+Hortense
+Hosta
+Houdan
+Houstonia
+Howland
+Hoya
+Huddersfield
+Huddleston
+Hudibrastic
+Huguenot
+Humperdinck
+Hunnish
+Huntingdonshire
+Hussite
+Huybrechts
+Hyacinthus
+Hydrastis
+Hydroski
+Hydrus
+Hygeia
+Hynninen
+Hyoscyamus
+Hypnos
+Hyson
+ISSN
+Iapetus
+Ibo
+Ibrahim
+Icaria
+Icarian
+Iceni
+Ichthyornis
+Ido
+Idomeneus
+Ignatius
+Igorot
+Iguanodon
+Ijssel
+Ijsselmeer
+Ilford
+Ilkeston
+Illyrian
+Imai
+Immanuel
+Immelmann
+Immingham
+Impatiens
+Inbal
+Ind
+Indiaman
+Indic
+Indologist
+Indris
+Ingush
+Inkerman
+Innuit
+Inselberg
+Intelsat
+Interisland
+Invar
+Ionesco
+Ionia
+Ionian
+Ipomoea
+Ireton
+Irishism
+Irkutsk
+Irons
+Iroquoian
+Isbn
+Iscariot
+Ishmael
+Ishmaelite
+Ishtar
+Isidore
+Iskander
+Iskenderun
+Islington
+Ismaili
+Isocheim
+Italia
+Ivanovo
+Ivanovsky
+Ives
+Ivory
+Ixia
+Ixion
+Ixtaccihuatl
+Izhevsk
+Iztaccihuatl
+JCL
+Jabalpur
+Jabir
+Jabiru
+Jaborandi
+Jacaranda
+Jacobin
+Jacquard
+Jadotville
+Jaga
+Jahvist
+Jain
+Jainism
+Jamesian
+Janacek
+Janiculum
+Janigro
+Janowitz
+Jansenism
+Jap
+Japheth
+Japhetic
+Jarvi
+Jarvis
+Jat
+Jehovist
+Jemmy
+Jena
+Jenghis
+Jenner
+Jephthah
+Jeremiad
+Jersey
+Jervis
+Jespersen
+Jesselton
+Jesu
+Jethro
+Jetton
+Jewess
+Jewry
+Jezebel
+Jezreel
+Joab
+Jocasta
+Jochum
+Jodo
+Johnsonian
+Joinville
+Jolson
+Jonah
+Jonson
+Jotunheim
+Juantorena
+Jubbulpore
+Judaea
+Judah
+Judaic
+Juilliard
+Juliana
+Jumada
+Juneberry
+Junius
+Junoesque
+Jylland
+KWIC
+KWOC
+Kaaba
+Kabaka
+Kabyle
+Kaffir
+Kaffraria
+Kafir
+Kaiserslautern
+Kalahari
+Kalevala
+Kalmuck
+Kamu
+Kanaka
+Kanarese
+Kanawa
+Kandinsky
+Kanji
+Kapfenberg
+Karaite
+Karajan
+Karakul
+Karczykowski
+Karelian
+Karloff
+Karlovy
+Karlsbad
+Karlsruhe
+Karnak
+Karpov
+Karri
+Karst
+Kasha
+Kashmiri
+Kaspszyk
+Katrine
+Keeling
+Keewatin
+Keighley
+Keijo
+Kelson
+Kempff
+Kennelly
+Kennington
+Kentish
+Kerenski
+Kermanshah
+Kertesz
+Keswick
+Keynesianism
+Khabarovsk
+Khachaturian
+Khaddar
+Khakass
+Khakis
+Khalid
+Khalif
+Khalkha
+Khalkidiki
+Khama
+Khamsin
+Khanate
+Khanga
+Khania
+Kharif
+Kharkov
+Khat
+Khayal
+Khedive
+Khelat
+Kherson
+Khieu
+Khingan
+Khirbet
+Khiva
+Khoikhoi
+Khoisan
+Khojent
+Khotan
+Khufu
+Khulna
+Khuskhus
+Khyber
+Kiaat
+Kiang
+Kiangsi
+Kiangsu
+Kiaochow
+Kibitka
+Kiblah
+Kidderminster
+Kielce
+Kier
+Kierkegaard
+Kieselguhr
+Kif
+Kikoi
+Kikumon
+Kilauea
+Kildare
+Kilderkin
+Kilkenny
+Killarney
+Killick
+Killiecrankie
+Killifish
+Killikinick
+Kilmarnock
+King
+Kingdom
+Kingman
+Kinnock
+Kinross
+Kinshasa
+Kirchhoff
+Kirghiz
+Kiribati
+Kirigami
+Kirin
+Kirkby
+Kirkcaldy
+Kirkcudbright
+Kirkman
+Kirkuk
+Kirkwall
+Kirman
+Kirmess
+Kirovabad
+Kirovograd
+Kirshbaum
+Kiruna
+Kirundi
+Kisangani
+Kish
+Kishinev
+Kishke
+Kismayu
+Kissel
+Kissin
+Kissinger
+Kist
+Kistna
+Kisumu
+Kitts
+Kizil
+Klagenfurt
+Klangfarbe
+Klansman
+Klausenburg
+Klee
+Kleiber
+Kleist
+Klemperer
+Klimt
+Klipspringer
+Klondike
+Kneller
+Knesset
+Knighthead
+Kniplova
+Knobkerrie
+Knussen
+Koblenz
+Kodaly
+Koestler
+Koheleth
+Kohima
+Kohl
+Kohn
+Kohoutek
+Kokand
+Kokanee
+Kokobeh
+Kokoschka
+Kolhapur
+Kolinsky
+Kollo
+Kollwitz
+Kolmar
+Kolmogorov
+Kolo
+Kolomna
+Kolyma
+Komati
+Komatik
+Komi
+Kommunarsk
+Kommunizma
+Komodo
+Komsomol
+Komsomolsk
+Konakry
+Kondo
+Kondrashin
+Konstanz
+Kootenay
+Kopeisk
+Kopje
+Koppa
+Korbut
+Korchnoi
+Kordofan
+Kordofanian
+Korma
+Korngold
+Korsakov
+Kortrijk
+Koruna
+Korzybski
+Kos
+Kosciusko
+Kossuth
+Kostroma
+Kosygin
+Kota
+Kotabaru
+Koulibiaca
+Koumis
+Kovno
+Kovrov
+Koweit
+Kowhai
+Kozhikode
+Kra
+Kraal
+Kragujevac
+Krait
+Krakau
+Kramatorsk
+Krameria
+Kranj
+Krans
+Krasnodar
+Krasnoyarsk
+Krefeld
+Kreisky
+Kreisler
+Kremenchug
+Kremer
+Krems
+Kreplach
+Kreutzer
+Kriegspiel
+Kriemhild
+Krimmer
+Krio
+Krips
+Kriss
+Kristiansand
+Kristianstad
+Krivoy
+Kromesky
+Krone
+Kronig
+Kronos
+Kroon
+Kropotkin
+Krugersdorp
+Kruller
+Krummhorn
+Krupp
+Kruysen
+Krym
+Kshatriya
+Kuala
+Kuban
+Kubelik
+Kublai
+Kubrick
+Kuch
+Kuchen
+Kuching
+Kueh
+Kuenlun
+Kufic
+Kuibyshev
+Kukri
+Kuku
+Kula
+Kulturkampf
+Kulun
+Kum
+Kumamoto
+Kumasi
+Kumbaloi
+Kung
+Kungur
+Kunming
+Kunzite
+Kuomintang
+Kuopio
+Kura
+Kurgan
+Kuril
+Kurland
+Kurosawa
+Kuroshio
+Kurrajong
+Kursaal
+Kursk
+Kurzeme
+Kuskokwim
+Kutaisi
+Kutch
+Kutuzov
+Kuznetsk
+Kwa
+Kwacha
+Kwajalein
+Kwakiutl
+Kwangchow
+Kwangchowan
+Kwangju
+Kwangtung
+Kwantung
+Kwanza
+Kwara
+Kwazulu
+Kweichow
+Kweilin
+Kweisui
+Kweiyang
+Kwela
+Kynewulf
+Kyongsong
+Kyprianou
+Kyrie
+Kyushu
+LPG
+La
+Laager
+Laaland
+Laburnum
+Lacedaemonian
+Lactobacillus
+Ladin
+Ladino
+Lagting
+Lahnda
+Lahti
+Laibach
+Lakeland
+Lakes
+Laksa
+Lakshadweep
+Lalo
+Lamaism
+Lamarckian
+Lamarckism
+Lamington
+Lammas
+Lammastide
+Lancastrian
+Landau
+Langland
+Langobard
+Langobardic
+Langridge
+Langton
+Langtry
+Lantana
+Lapith
+Laplacian
+Lapland
+Lapp
+Lar
+Laski
+Lassen
+Latakia
+Latimeria
+Latina
+Latinism
+Latinist
+Latino
+Latona
+Latour
+Latvian
+Laudian
+Laughton
+Launce
+Launceston
+Lawless
+Lawrentian
+Lazar
+Leacock
+Leaf
+Leah
+Leamington
+Leatherette
+Leda
+Lefkowitz
+Leibnitz
+Leicester
+Leicestershire
+Leichhardt
+Leiden
+Leif
+Leinsdorf
+Leinster
+Leishmania
+Leitner
+Lemberg
+Lemmens
+Leninabad
+Leninakan
+Leno
+Lenya
+Leoncavallo
+Leonidas
+Leopardi
+Lepanto
+Lepidosiren
+Leptocephalus
+Lepton
+Lepus
+Lermontov
+Lerwick
+Lethbridge
+Leto
+Lett
+Lettish
+Leucippus
+Levant
+Levantine
+Leverhulme
+Leverkusen
+Levite
+Levitical
+Levko
+Lewisham
+Leyte
+Lhasa
+Liadov
+Liao
+Liaoning
+Liaotung
+Liaoyang
+Lias
+Lichfield
+Liebfraumilch
+Lilith
+Limbourg
+Limburg
+Limburger
+Limpopo
+Lincolnshire
+Linnaean
+Linsang
+Lipetsk
+Lippizaner
+Liriodendron
+Listerism
+Liszt
+Liv
+Ljubljana
+Llandaff
+Llandudno
+Llanelli
+Llangollen
+Llewellyn
+Lleyn
+Lobachevsky
+Locarno
+Loewe
+Lolland
+Lollard
+Lombrosian
+Longbenton
+Longford
+Longobard
+Lonicera
+Lorengar
+Loretta
+Lota
+Loughborough
+Louisburg
+Luba
+Lucan
+Lucania
+Lucina
+Lucknow
+Luddite
+Ludendorff
+Ludwigsburg
+Ludwigshafen
+Luffa
+Luganda
+Lugansk
+Luluabourg
+Luo
+Lupercalia
+Lur
+Lusatian
+Lusitania
+Lutetia
+Luton
+Lutoslawski
+Lutyens
+Luxemburg
+Luxon
+Lvov
+Lycian
+Lydian
+Lyme
+Lymington
+Lyonnais
+Lyonnesse
+Lysander
+Lysenkoism
+Lysimachus
+Lytham
+Lythraceous
+Lyublin
+MFD
+MIRV
+MKS
+MKSA
+MSC
+MVS
+MVT
+Ma
+Maag
+Maar
+Maarianhamina
+Maas
+Maastricht
+Maazel
+Mab
+MacKerras
+Macao
+Macaskill
+Macau
+Maccabean
+Maccabees
+Macclesfield
+Macdonnell
+Mackay
+Mackerras
+Maclean
+Macleod
+Macmahon
+Macneice
+Macpherson
+Macready
+Maddalena
+Maecenas
+Magdalen
+Magdalenian
+Magdeburg
+Magellan
+Maghreb
+Maglemosian
+Magnificat
+Magyar
+Mahdi
+Mahican
+Mahomet
+Mahonia
+Mahound
+Maia
+Maintenon
+Maitland
+Majlis
+Malacca
+Malaya
+Malinowski
+Malison
+Malpighian
+Mam
+Mameluke
+Manchu
+Mancunian
+Mandaean
+Mandalay
+Mande
+Mandeville
+Mandingo
+Manichaeism
+Mannerheim
+Mannheim
+Mantler
+Manuguerra
+Manx
+Manxman
+Marabout
+Maracaibo
+Maratha
+Marathi
+Marburg
+Marchland
+Marciano
+Marcionism
+Marconi
+Marengo
+Marenzio
+Margaux
+Margay
+Marge
+Mariana
+Mariehamn
+Marienbad
+Marinduque
+Marinetti
+Mariolatry
+Mariology
+Marist
+Mariupol
+Marius
+Marivaux
+Markevitch
+Markhor
+Markka
+Markova
+Marley
+Marlow
+Maronite
+Marquesan
+Marrakech
+Marrakesh
+Marriner
+Marsala
+Marseillaise
+Marseille
+Marshalsea
+Marston
+Martin
+Martinmas
+Martinon
+Marton
+Masai
+Mascagni
+Masefield
+Massawa
+Massenet
+Matabele
+Matabeleland
+Mathis
+Matorin
+Mattila
+Mauceri
+Maud
+Maugham
+Mauricio
+Maurist
+Mauser
+Mavourneen
+Mawson
+Maxim
+Mayakovski
+Mayan
+Mayen
+Mayotte
+Mazdaism
+Mbujimayi
+McNair
+Mccarthyism
+Mccartney
+Mccormack
+Mccullers
+Mcdiarmid
+Mcgonagall
+Mcluhan
+Mclure
+Mcmunn
+Mcmurdo
+Mcnaughten
+Mcqueen
+Meade
+Meccano
+Mechem
+Mechlin
+Mecklenburg
+Mede
+Medina
+Megaera
+Mehta
+Meissen
+Melaleuca
+Melanochroi
+Melchite
+Melchizedek
+Meleager
+Melitopol
+Melton
+Melungeon
+Memnon
+Memphian
+Mendeleyev
+Mendelism
+Menelik
+Mengelberg
+Menshevik
+Menton
+Mercian
+Mercouri
+Mercurian
+Mercurochrome
+Merionethshire
+Merovingian
+Merseburg
+Mersey
+Merseyside
+Merton
+Mesembryanthemum
+Mesple
+Messapian
+Metol
+Metternich
+Mexicali
+Meyerbeer
+Meyerhof
+Micah
+Michaelmas
+Micmac
+Microscopium
+Middelburg
+Middlesbrough
+Middlewood
+Midway
+Milashkina
+Milford
+Milhaud
+Milnes
+Milstein
+Mina
+Mindel
+Ming
+Mingrelian
+Minkowski
+Minorca
+Minorite
+Minton
+Minya
+Miquelon
+Miserere
+Mishima
+Mishnah
+Mithraism
+Mithras
+Mitropolous
+Mitropoulos
+Mittelland
+Mitterrand
+Mixtec
+Mizoguchi
+Mlle
+Mme
+Mnemosyne
+Modiolus
+Modred
+Mogilev
+Mohave
+Mohican
+Mohock
+Mojave
+Moldau
+Moldavian
+Moldavite
+Molech
+Moll
+Mollet
+Molokai
+Mommsen
+Momus
+Moncton
+Mondale
+Mondial
+Monegasque
+Mongo
+Mongol
+Mongolic
+Monmouthshire
+Monophysite
+Monteux
+Montezuma
+Montgomeryshire
+Montserrat
+Moorcock
+Moorland
+Moradabad
+Mordvin
+Mordvinian
+Moreton
+Morisco
+Moro
+Morocco
+Morpheus
+Moselle
+Mossi
+Mosul
+Mountbatten
+Mountie
+Moussorgsky
+Mousterian
+Mozambique
+Mozarab
+Mridang
+Muharram
+Mulciber
+Munch
+Munda
+Murdabad
+Murdoch
+Murillo
+Murmansk
+Musca
+Muskhogean
+Mussulman
+Muti
+Mwalimu
+Mweru
+Mycobacterium
+Myrica
+Myrmidon
+NCAR
+NGK
+NTP
+Naafi
+Nabataean
+Nabokov
+Nabonidus
+Nadia
+Naga
+Nagaland
+Nagana
+Nagano
+Nagari
+Nagpur
+Nagyszeben
+Nahuatl
+Nahum
+Nama
+Namaqualand
+Namibia
+Nana
+Nansen
+Napier
+Napierian
+Napoli
+Napravnik
+Narayanganj
+Narraganset
+Nathanael
+Nauru
+Navassa
+Nayarit
+Nazarite
+Nearctic
+Neblett
+Nederland
+Negress
+Negritic
+Negrito
+Negrophil
+Negrophobe
+Negus
+Nehemiah
+Nejd
+Nekrasov
+Nelly
+Nelson
+Nembutal
+Nemean
+Nemesia
+Neocene
+Neogaea
+Neogene
+Neotropical
+Neozoic
+Neptunian
+Nereis
+Neri
+Nestorianism
+Neubrandenburg
+Neville
+Nevis
+Nevski
+New
+Newburg
+Newcombe
+Newcomen
+Newfie
+Newgate
+Newham
+Newhaven
+Newmarket
+Newtonabbey
+Newtown
+Ngaio
+Ngaliema
+Ngoma
+Nguni
+Ngwee
+Nha
+Nicaea
+Nice
+Nicene
+Nicias
+Nicobar
+Nicol
+Nicola
+Nicolai
+Nicolesco
+Nicolson
+Nicotiana
+Niedersachsen
+Niersteiner
+Nietszche
+Niflheim
+Nijmegen
+Nikaria
+Nike
+Nikolainkaupunki
+Nikolayev
+Nilotic
+Nimitz
+Nimrod
+Nimwegen
+Ningpo
+Ninon
+Nipissing
+Nisei
+Nishapur
+Nissen
+Niue
+Nizam
+Noachian
+Noble
+Noctiluca
+Noguchi
+Noordholland
+Nordkyn
+Norland
+Normanton
+Norn
+Norseman
+Northallerton
+Northamptonshire
+Northcliffe
+Northcountryman
+Northman
+Northmen
+Northumbria
+Northumbrian
+Northumbrians
+Northwich
+Nostoc
+Notogaea
+Notornis
+Nototherium
+Notour
+Nottinghamshire
+Notus
+Novgorod
+Novokuznetsk
+Nuba
+Nucci
+Nuffield
+Nullstellensatz
+Nuneaton
+Nupe
+Nuremberg
+Nyanja
+Nyasaland
+Nynorsk
+Nyoro
+OSHA
+Oahu
+Oakham
+Oakville
+Oaxaca
+Obadiah
+Oberammergau
+Oberhausen
+Oberland
+Oberon
+Obraztsova
+Ochman
+Ockham
+Ocrea
+Octans
+Octavian
+Octobrist
+Odelsting
+Odontoglossum
+Ogham
+Oglethorpe
+Ogpu
+Ogygian
+Oidium
+Oireachtas
+Oistrakh
+Okayama
+Okeechobee
+Okefenokee
+Okhotsk
+Okie
+Olcott
+Oldcastle
+Oldham
+Oliveira
+Olynthus
+Ommiad
+Omsk
+Ophiuchus
+Oporto
+Oppens
+Orangeism
+Orangeman
+Oratorian
+Orcadian
+Ordovician
+Orenburg
+Orff
+Oriya
+Orleanist
+Ormandy
+Ormazd
+Ornithorhynchus
+Orphean
+Orphism
+Orpington
+Orsk
+Orvieto
+Osage
+Oscan
+Oshawa
+Oshogbo
+Osijek
+Osmanli
+Osnaburg
+Osset
+Ossetic
+Ossian
+Ostrogoth
+Ostyak
+Othin
+Ottley
+Ouija
+Ovambo
+Overijssel
+Oxbridge
+Oxfordshire
+Ozawa
+PABA
+PCB
+PCBS
+POBox
+PUC
+PWT
+Paal
+Pachisi
+Pachouli
+Pacific
+Paddywhack
+Paderewski
+Padus
+Pahari
+Pahlavi
+Paignton
+Paiute
+Palacio
+Palaearctic
+Palaeocene
+Palaeozoic
+Palau
+Palenque
+Pali
+Pallas
+Palmerston
+Panama
+Panathenaea
+Pandarus
+Pandean
+Panhellenic
+Panhellenism
+Panjabi
+Pantagruel
+Paphian
+Papiamento
+Papuan
+Paracel
+Paracelsus
+Parma
+Parnassian
+Parnassus
+Parsee
+Parthenopaeus
+Parthenope
+Parthenos
+Parthian
+Pasch
+Pashto
+Passamaquoddy
+Passiontide
+Pasteurism
+Pathan
+Patmos
+Pauk
+Paulinus
+Pavarotti
+Pavo
+Pawnee
+Pears
+Pecksniffian
+Pehlevi
+Pekin
+Pekingese
+Pelagian
+Pelagianism
+Pelasgian
+Peleus
+Pelew
+Pelias
+Pelmanism
+Peloponnesian
+Pelops
+Pembrokeshire
+Pentland
+Pentstemon
+Penutian
+Pepys
+Pequot
+Perceval
+Percheron
+Peritricha
+Perlman
+Persicaria
+Persis
+Persson
+Pesach
+Peterborough
+Peterlee
+Peterloo
+Peterman
+Petermann
+Petersham
+Petra
+Petrie
+Petrine
+Petronius
+Petropavlovsk
+Petrosian
+Petrov
+Petrovsk
+Petrozavodsk
+Peyer
+Pfalz
+Pforzheim
+Phaeacian
+Phaedrus
+Philadelphus
+Philippeville
+Philippic
+Philistia
+Philistinism
+Philoctetes
+Philomela
+Phlegethon
+Phoenician
+Phragmites
+Phrygian
+Phylloxera
+Pianola
+Piavko
+Picard
+Pickwickian
+Pictish
+Pierian
+Pierides
+Pierrot
+Pietermaritzburg
+Pieterson
+Pilsen
+Pilsudski
+Piltdown
+Pindaric
+Pinkerton
+Pinkster
+Pinsk
+Pisanello
+Pisano
+Piscis
+Pitcairn
+Pithecanthropus
+Pitta
+Plasson
+Plasticine
+Platonical
+Plattdeutsch
+Platte
+Platteland
+Plautus
+Podolsk
+Pogonia
+Pogorelich
+Polack
+Polanski
+Polje
+Pollack
+Pollini
+Pollyanna
+Polska
+Polycarp
+Pondo
+Pondoland
+Pons
+Pontic
+Popov
+Popp
+Porson
+Posen
+Positif
+Poulenc
+Powhatan
+Praesepe
+Praetorian
+Prakrit
+Pressburg
+Pretre
+Preussen
+Previn
+Prey
+Priapus
+Price
+Principe
+Priscian
+Procne
+Prokopyevsk
+Proterozoic
+Protophyta
+Provincetown
+Prunella
+Prussianism
+Pskov
+Psoralea
+Ptolemaist
+Puppis
+Purbeck
+Puseyism
+Pyrrhus
+Pythagoreanism
+Pythia
+Pythian
+Quadragesima
+Quassia
+Queenborough
+Queenstown
+Quimper
+Quinquagesima
+Quirites
+Quivar
+RI
+RTT
+Rabelais
+Rabelaisian
+Rabi
+Rabia
+Rackham
+Radetzky
+Radnorshire
+Rafflesia
+Raia
+Raimondi
+Rajput
+Rama
+Rambouillet
+Rameses
+Rampal
+Randova
+Ranki
+Rapallo
+Raphia
+Rastafarian
+Rattle
+Rauwolfia
+Ravel
+Rea
+Rebozo
+Recklinghausen
+Redbridge
+Redemptorist
+Redgrave
+Regensburg
+Rehoboam
+Reichsrat
+Reiner
+Remblai
+Reme
+Remex
+Renardy
+Renfrew
+Rensselaerite
+Resnik
+Respighi
+Reunion
+Rhadamanthus
+Rhaetian
+Rhaetic
+Rheinland
+Rhemish
+Rhodesian
+Rhodesoid
+Rhodian
+Rhodope
+Ricci
+Ricciarelli
+Riesling
+Rigsdaler
+Rijeka
+Rijksdaaler
+Rijn
+Rijswijk
+Riksdag
+Rimini
+Rimsky
+Ripuarian
+Riss
+Rivera
+Roanoke
+Robeson
+Robespierre
+Robson
+Rochberg
+Rochdale
+Rochelle
+Rockhampton
+Rockingham
+Rodin
+Rodrigo
+Rodzinski
+Roethke
+Rojak
+Rolf
+Rollo
+Roma
+Romagna
+Romaic
+Romains
+Romaji
+Romanes
+Romanic
+Romanies
+Romanism
+Romanist
+Romanov
+Romansch
+Romany
+Romberg
+Romero
+Romeros
+Romish
+Rommel
+Romney
+Roncesvalles
+Ronin
+Ronsard
+Rosalind
+Rosicrucian
+Rossini
+Rostov
+Rostropovich
+Rotherham
+Rothermere
+Rothesay
+Rotterdam
+Rouault
+Roubaix
+Roussillon
+Routemarch
+Rowan
+Rowbotham
+Rowicki
+Rowlandson
+Roxburgh
+Royden
+Rozhdestvensky
+Rubenstein
+Rubicon
+Rudesheimer
+Ruhr
+Rumpelstiltskin
+Rundstedt
+Rupert
+Rurik
+Ruritania
+Ruskin
+Russky
+Russophile
+Russophobe
+Ruthenian
+Rutherfordium
+Rutter
+Rybinsk
+Ryswick
+Ryukyu
+Ryurik
+Rzewski
+SNCC
+SNOBOL
+STOL
+Saadi
+Saar
+Saarinen
+Saarland
+Sabaean
+Sabaoth
+Sabbatarian
+Sabellian
+Sackville
+Sacramentarian
+Sadducee
+Saens
+Safar
+Safi
+Sahaptin
+Saharan
+Saint
+Saintpaulia
+Saiva
+Sakai
+Sakharov
+Sakyamuni
+Salford
+Salian
+Salicornia
+Sallinen
+Salminen
+Salol
+Salonen
+Salpa
+Salpiglossis
+Salvia
+Salzburg
+Samarkand
+Sambo
+Samian
+Samnite
+Samoyed
+Sanctus
+Sandhurst
+Sandringham
+Sandwich
+Sanforized
+Sanger
+Sangh
+Sangraal
+Sanjak
+Sankhya
+Santee
+Sao
+Sarajevo
+Sarangi
+Saransk
+Saratov
+Sard
+Sardinian
+Sardis
+Sardius
+Sardou
+Sargodha
+Sargon
+Sark
+Sarkis
+Sarracenia
+Sarsen
+Saschowa
+Sassanid
+Sassenach
+Satie
+Satsuma
+Saturnian
+Sauerbaum
+Sawney
+Saxe
+Scandian
+Schaerbeek
+Schaffhausen
+Schein
+Schenck
+Schiedam
+Schiff
+Schippers
+Schleiermacher
+Schlesien
+Schleswig
+Schliemann
+Schnecken
+Schnitzler
+Schwarz
+Schwarzkopf
+Sci
+Scimone
+Scleroderma
+Scofield
+Scopus
+Scorpius
+Scotism
+Scotswoman
+Scotticism
+Scotto
+Scriabin
+Scythian
+Seabee
+Sealyham
+Searle
+Seaton
+Sebastopol
+Secunderabad
+Sedgemoor
+Seebeck
+Seeger
+Seeland
+Seidlitz
+Seifert
+Selene
+Seleucid
+Selig
+Seljuk
+Semipalatinsk
+Semitics
+Senechal
+Senlac
+Sephardi
+Septembrist
+Septuagint
+Serapis
+Serb
+Serkin
+Sevastopol
+Severnaya
+Severus
+Sexagesima
+Shaban
+Shabuoth
+Shackleton
+Shaka
+Shakta
+Shakti
+Shang
+Shankar
+Shankaracharya
+Sharia
+Shavian
+Shaw
+Shawwal
+Shchedrin
+Shcheglovsk
+Shcherbakov
+Shechem
+Shekinah
+Shemite
+Shemitic
+Sheol
+Sherpa
+Sherrington
+Shetland
+Shiah
+Shiism
+Shimonoseki
+Shiraz
+Shluh
+Shoa
+Sholokhov
+Shona
+Shoshonean
+Shostakovich
+Shrewsbury
+Shropshire
+Shrovetide
+Shulamite
+Sibelius
+Sicanian
+Siddhartha
+Sierra
+Sihanouk
+Sika
+Silures
+Silurian
+Silvanus
+Simarouba
+Simbirsk
+Simeon
+Simferopol
+Sinaloa
+Sindhi
+Singhalese
+Sinhalese
+Sinicism
+Sinitic
+Sinopoli
+Sintow
+Siouan
+Siracusa
+Sisley
+Sitka
+Sivaism
+Sivan
+Siwash
+Sixtus
+Skelton
+Skijoring
+Skikda
+Skimmia
+Skipton
+Skokiaan
+Skolly
+Skrowaczewski
+Skua
+Slatkin
+Slavism
+Slavkov
+Slavonia
+Slavophile
+Slavophiles
+Slesvig
+Slovak
+Slovene
+Smeaton
+Smetana
+Smilax
+Smirnov
+Smolensk
+Smollett
+Sobranje
+Socinian
+Soderblom
+Soderstrom
+Sodom
+Soffel
+Sogdian
+Solenodon
+Solti
+Solutrean
+Solzhenitsyn
+Somaliland
+Sondheim
+Songhai
+Sorbian
+Sorbonne
+Sordello
+Sothic
+Sothis
+Sotho
+Souphanourong
+Souslik
+Sousse
+Souterrain
+Southdown
+Southern
+Southport
+Southron
+Southwark
+Sovetsk
+Soviet
+Soweto
+Soyinka
+Soyuz
+Spaak
+Spartacus
+Spassky
+Speenhamland
+Spenborough
+Spence
+Spengler
+Spenser
+Spenserian
+Spinoza
+Spinozism
+Spitsbergen
+Spivakov
+Spratly
+Springhaas
+Srbija
+Stade
+Stagirite
+Stakhanovism
+Stalinabad
+Stalingrad
+Stalinism
+Stalinogrod
+Stalinsk
+Stanislavsky
+Stanleyville
+Starker
+Stavanger
+Stavropol
+Steber
+Stefansson
+Stegodon
+Stegomyia
+Stegosaurus
+Steier
+Steiermark
+Stein
+Steinbeck
+Steinitz
+Stellite
+Stern
+Stijl
+Stillson
+Stillsons
+Stilton
+Stilwell
+Stockhausen
+Stockport
+Stockwood
+Stokowski
+Stokys
+Storting
+Stourbridge
+Stradivari
+Stradivarius
+Strafford
+Stralsund
+Stranraer
+Stratas
+Strathclyde
+Straus
+Stravaig
+Streisand
+Strelitzia
+Stretford
+Streusel
+Stroheim
+Strophanthus
+Strymon
+Stu
+Stylops
+Sudetenland
+Sudra
+Sufi
+Sufism
+Sultanabad
+Sulu
+Sumba
+Sumbawa
+Summers
+Sumo
+Sunderland
+Sunni
+Sunnite
+Suomi
+Surinam
+Suriname
+Susanna
+Susian
+Susu
+Sutcliffe
+Suvorov
+Suwannee
+Svalbard
+Sverdlovsk
+Svetlanov
+Swabia
+Swadeshi
+Swanee
+Swatow
+Swazi
+Swedenborg
+Swedenborgianism
+Sweeny
+Swithin
+Sylvan
+Symons
+Syriac
+Syrtis
+Szabadka
+Szczecin
+Szechwan
+Szeged
+Szell
+Szerying
+Szeryng
+Szewinska
+Szombathely
+Szymanowski
+TKO
+TP
+TWP
+Tabasco
+Tabriz
+Tacamahac
+Tacchino
+Tachina
+Tadzhiki
+Tagalog
+Tai
+Taichung
+Tainan
+Taino
+Taiping
+Taisho
+Tajik
+Talaing
+Talmudist
+Talvela
+Tambov
+Tamerlane
+Tamworth
+Tanagra
+Tanjungpriok
+Tannenberg
+Tardenoisian
+Targum
+Tarkington
+Tarnopol
+Tarpeia
+Tarpeian
+Tarquin
+Tartarean
+Tartaric
+Tartarus
+Tasmanian
+Tatar
+Tatary
+Tatum
+Taunton
+Tay
+Taymyr
+Tayra
+Tayside
+Tbilisi
+Tchad
+Te
+Teal
+Tear
+Tebaldi
+Technicolor
+Technion
+Tel
+Telegu
+Telescopium
+Telford
+Telstar
+Telugu
+Tema
+Temne
+Tempe
+Templar
+Tenebrae
+Tenerife
+Tennstedt
+Tenzi
+Terence
+Teresina
+Tereus
+Ternopol
+Terrani
+Tethys
+Teton
+Teucer
+Teucrian
+Teuton
+Teutonism
+Tewkesbury
+Thanatos
+Thebaid
+Themis
+Theodora
+Theodoric
+Theophilus
+Thermit
+Thersites
+Thetford
+Thomism
+Thorndike
+Thorvaldsen
+Thucydides
+Thuja
+Thurgau
+Thuringia
+Thuringian
+Thurn
+Thyestes
+Tiberius
+Tilburg
+Tilbury
+Tilsit
+Timor
+Timoshenko
+Timour
+Tintagel
+Tippett
+Tirol
+Tiruchirapalli
+Tirunelveli
+Tisa
+Tishab
+Tisiphone
+Titanesque
+Titanomachy
+Titograd
+Titoism
+Tivoli
+Tjirebon
+Tlaxcala
+Tlemcen
+Tlingit
+Tmesis
+Tobey
+Tobolsk
+Tobruk
+Tocharian
+Tocqueville
+Togliatti
+Togoland
+Tojo
+Tokay
+Tokelau
+Tokharian
+Tokoloshe
+Tokugawa
+Tolan
+Tolbert
+Tolima
+Tolkien
+Toller
+Tolly
+Toltec
+Toluca
+Tome
+Tomowa
+Tomsk
+Tonbridge
+Tonga
+Tonka
+Tonkin
+Tophet
+Torricellian
+Torsk
+Tourel
+Townsville
+Tractarianism
+Transcaucasia
+Transylvanian
+Trappist
+Treblinka
+Trent
+Trevino
+Treviso
+Tridentine
+Trinil
+Tripitaka
+Triticum
+Tromelin
+Trondheim
+Trowbridge
+Troyanos
+Truffaut
+Truro
+Tuamotu
+Tuareg
+Tucana
+Tucker
+Tuckwell
+Tunbridge
+Tungus
+Tungusic
+Tupi
+Turanian
+Turco
+Turkey
+Turki
+Turkic
+Turkism
+Turkmen
+Turkoman
+Turks
+Tuvalu
+Twelfthtide
+Twi
+Twickenham
+Tyche
+Tynwald
+Tyrannosaurus
+Tyrian
+Tyrol
+Tyrolienne
+Tyrone
+Tyrr
+Tyrrhenian
+UHF
+Ubangi
+Ubiquitarian
+Ude
+Ugrian
+Ugric
+Uhland
+Uhuru
+Uigur
+Uinta
+Uitlander
+Ujamaa
+Ujiji
+Ujjain
+Ujung
+Ukase
+Ukiyoe
+Ulbricht
+Ullswater
+Ulm
+Ulsterman
+Ulyanovsk
+Umbrian
+Umbriel
+Unalaska
+Uniat
+Union
+United
+Ural
+Uralic
+Uranian
+Uredo
+Uriah
+Uriel
+Urmston
+Urnfield
+Ustinov
+Uxbridge
+Uzbek
+VAC
+VAG
+VDU
+VLF
+VTOL
+Vaal
+Vaasa
+Vaishnava
+Valencia
+Valenciennes
+Valentinian
+Valjakka
+Vanda
+Vandyke
+Vanir
+Vanuatu
+Varady
+Varangian
+Varga
+Varuna
+Vaseline
+Vaticanism
+Veasy
+Veblen
+Vedalia
+Vedanta
+Vedda
+Veddoid
+Vedernikov
+Vedic
+Velsen
+Venda
+Veneti
+Venetia
+Venetic
+Venezia
+Venizelos
+Venora
+Venusberg
+Veracruz
+Vernoleninsk
+Veronal
+Veronese
+Verrett
+Vertumnus
+Vierne
+Vietcong
+Vietminh
+Vihuela
+Viipuri
+Vijayawada
+Vilayet
+Villach
+Villahermosa
+Villainage
+Villanovan
+Villars
+Villeneuve
+Villeurbanne
+Villiers
+Villon
+Vilnius
+Viminal
+Vincennes
+Vindhya
+Vineland
+Vinland
+Virchow
+Visakhapatnam
+Visayan
+Visby
+Visconti
+Viseu
+Vishakhapatnam
+Vishinsky
+Vitebsk
+Vizagapatam
+Vizcacha
+Vizsla
+Vlaardingen
+Vlach
+Vladikavkaz
+Vlaminck
+Vlei
+Vlissingen
+Vltava
+Voetsek
+Voetstoots
+Vogelweide
+Vogul
+Volans
+Volapuk
+Volga
+Volgograd
+Volsci
+Volscian
+Von
+Vorarlberg
+Voronezh
+Voroshilov
+Voroshilovgrad
+Voroshilovsk
+Vortumnus
+Votyak
+Vouvray
+Vries
+Vuelta
+Vulcanite
+Vulpecula
+Vyatka
+Vyshinsky
+Vyvyan
+WAAC
+WAAF
+Waart
+Waddenzee
+Waddington
+Wahhabi
+Waikato
+Waikiki
+Wajda
+Wakashan
+Wakayama
+Wakerife
+Waksman
+Walach
+Walachia
+Walbrzych
+Walcheren
+Waldemar
+Waldenburg
+Waldgrave
+Waldheim
+Waley
+Wallachia
+Walloon
+Wallsend
+Walpurgis
+Walsall
+Walsingham
+Walther
+Walvis
+Wand
+Wandsworth
+Wapentake
+Wappenshaw
+Waragi
+Warangal
+Warbeck
+Ward
+Warfarin
+Warhol
+Warison
+Warley
+Warren
+Warrington
+Wartburg
+Warwickshire
+Wasatch
+Waterford
+Watford
+Watling
+Watteau
+Wattenscheid
+Watts
+Watusi
+Waugh
+Wayland
+Webern
+Wedgwood
+Weigela
+Weikert
+Weikl
+Weill
+Weimar
+Weismannism
+Weisshorn
+Weizmann
+Wellingborough
+Wellingtonia
+Welsbach
+Welshman
+Welwitschia
+Wembley
+Wenceslaus
+Wendish
+Wenkel
+Wensleydale
+Westernism
+Westfalen
+Westmeath
+Westmorland
+Wetterhorn
+Wexford
+Weymouth
+Whikehart
+White
+Whiteboy
+Whitechapel
+Whitefield
+Whitlam
+Whitley
+Whitlow
+Whitsun
+Whitsuntide
+Whittington
+Wickersley
+Wickliffe
+Wicklow
+Widor
+Wiesbaden
+Wigner
+Wigtown
+Wijngaarden
+Wilberforce
+Willcocks
+Wilton
+Wimbledon
+Wimshurst
+Winceyette
+Winchesters
+Winckelmann
+Wiseman
+Wittenberg
+Witwatersrand
+Wixell
+Wobbegong
+Wodehouse
+Woden
+Woking
+Wokingham
+Wolds
+Wolffian
+Wolfram
+Wolfsburg
+Wollongong
+Wolof
+Wolverhampton
+Woodsia
+Woomera
+Wotton
+Woulfe
+Wraac
+Wrexham
+Wunderlich
+Wycliffite
+Wykeham
+Xeres
+Xmas
+Yablonovy
+Yahoo
+Yahweh
+Yakut
+Yakutsk
+Yalu
+Yangtze
+Yankeeism
+Yarborough
+Yarkand
+Yaroslavl
+Yashmak
+Yekaterinburg
+Yekaterinodar
+Yekaterinoslav
+Yelisavetgrad
+Yelisavetpol
+Yelizaveta
+Yenisei
+Yerba
+Yerkes
+Yevtushenko
+Yid
+Yorke
+Yorkist
+Yorkists
+Yoruba
+Yoshihito
+Youngberry
+Younker
+Ypres
+Yquem
+Yresko
+Ysaye
+Yser
+Yseult
+Yssel
+Yuga
+Yukawa
+Yuman
+Yurev
+Yurlov
+Yuzovka
+Zaandam
+Zabrze
+Zacatecas
+Zaccaria
+Zacharias
+Zaibatsu
+Zakai
+Zakuski
+Zambezi
+Zamboanga
+Zamenhof
+Zamia
+Zanasi
+Zanthoxylum
+Zapotec
+Zeebrugge
+Zeeland
+Zeeman
+Zemstvo
+Zend
+Zenobia
+Zepperitz
+Zermatt
+Zetland
+Zhdanov
+Zhitomir
+Zhivkov
+Zho
+Zhukov
+Zimbabwe
+Zindabad
+Zinman
+Zinovievsk
+Zinzendorf
+Zoa
+Zoroastrianism
+Zouave
+Zoysia
+Zuider
+Zuidholland
+Zukerman
+Zwilich
+aardwolf
+abac
+abaca
+abactinal
+abadan
+abaddon
+abakan
+abamp
+abampere
+abator
+abbasid
+abbatial
+abbess
+abcoulomb
+abdias
+abdominous
+abednego
+abeokuta
+aberdare
+abfarad
+abhenry
+abib
+abietic
+abilene
+abingdon
+abirritant
+abirritate
+abkhaz
+ablactation
+ablator
+abohm
+aboideau
+aborticide
+aboukir
+aboulia
+abranchiate
+abri
+abruzzi
+abseil
+absinthism
+absonant
+absorbefacient
+absorptivity
+absquatulate
+abstergent
+abukir
+abulia
+abvolt
+abwatt
+aby
+abydos
+abysm
+acajou
+acanthaceous
+acanthine
+acanthoid
+acanthous
+acariasis
+acarid
+acaroid
+acarology
+acarpous
+acas
+acaudal
+accad
+accentor
+accidie
+accipitrine
+accommodatory
+accouplement
+accrescent
+accutron
+acerate
+acerose
+acescent
+acetabulum
+acetanilide
+acetometer
+acetophenetidin
+acetum
+acetylcholine
+acetylide
+acetylsalicylic
+achaea
+achelous
+achene
+acheron
+acheulian
+achlamydeous
+achlorhydria
+achondrite
+achondroplasia
+achromatin
+achromatous
+achromic
+acicula
+aciculate
+aciculum
+acidometer
+acidophil
+acidophilus
+acidosis
+acierate
+acinaciform
+aciniform
+ackee
+acl
+aclinic
+acnode
+acol
+aconcagua
+aconite
+acotyledon
+acouchi
+acridine
+acriflavine
+acrilan
+acrocarpous
+acrodrome
+acrogen
+acrolein
+acrolith
+acromegaly
+acromion
+acrospire
+acroter
+acrylamide
+acrylonitrile
+acrylyl
+acta
+actin
+actinal
+actinidin
+actiniform
+actinochemistry
+actinoid
+actinomere
+actinomorphic
+actinomycete
+actinomycin
+actinomycosis
+actinon
+actinopod
+actinotherapy
+actinouranium
+actinozoan
+actomyosin
+aculeus
+acutance
+acyclical
+adactylous
+adamawa
+adamsite
+adana
+adaptably
+addax
+ademption
+adenectomy
+adenitis
+adenocarcinoma
+adenohypophysis
+adenoidectomy
+adenovirus
+adhibit
+adiaphorism
+adiaphorous
+adiathermancy
+adipocere
+adit
+adivasi
+admass
+admetus
+adminicle
+adnate
+adnominal
+adnoun
+adowa
+adrastus
+adscription
+adsorbtion
+adsuki
+adularia
+adumbral
+aduwa
+adventitia
+adversarial
+adygei
+adynamia
+adytum
+adzhar
+adzuki
+aeciospore
+aecium
+aedile
+aegospotami
+aegrotat
+aeneous
+aestheticism
+afebrile
+affettuoso
+afflatus
+affreightment
+aforemention
+aforetime
+afrit
+afrormosia
+afterbody
+afterbrain
+afterburning
+afterheat
+afterpains
+aftersensation
+aftershaft
+aga
+agadir
+agalloch
+agamogenesis
+agaric
+agartala
+agateware
+agegroup
+aggro
+agha
+agiotage
+agist
+aglet
+agley
+aglimmer
+agma
+agminate
+agnail
+agni
+agnus
+agora
+agraffe
+agram
+agranulocytosis
+agraphia
+agrestal
+agrestic
+agrigento
+agrippina
+agrose
+agrostology
+agrypnotic
+agueweed
+agulhas
+ahab
+ahimsa
+ahithophel
+ahura
+aiglet
+aiguille
+aiguillette
+aikido
+aikona
+ailurophile
+ailurophobe
+ain
+aintab
+airboat
+airbrick
+aircraftman
+airdrie
+aire
+airforce
+airgun
+airt
+aisha
+aisne
+ait
+aitchbone
+ajaccio
+ajmer
+akbar
+akela
+akene
+akhara
+akhenaten
+akihito
+akkerman
+aksum
+akure
+akvavit
+alagez
+alagoas
+alamode
+alanbrooke
+alanine
+alannah
+alap
+alar
+albacete
+albata
+albemarle
+alberti
+albertite
+albertus
+albescent
+albinus
+albite
+albuminate
+albuminuria
+albumose
+alburnum
+alcaeus
+alcahest
+alcaide
+alcalde
+alcan
+alcatraz
+alcheringa
+alcidine
+alcmene
+alcoholicity
+alcuin
+aldabra
+aldan
+aldershot
+aldis
+aldol
+aldosterone
+aldoxime
+alecost
+alecto
+alegar
+alekhine
+alembicated
+alessandria
+alethic
+aleurone
+alevin
+alexandretta
+alexipharmic
+alfieri
+alfilaria
+alforja
+algarroba
+algebraical
+algeciras
+alginic
+algoid
+algolagnia
+algology
+algometer
+algor
+algorism
+alible
+alicante
+aligarh
+aliped
+alit
+aliunde
+alkalic
+alkane
+alkene
+alkmaar
+alky
+alkyd
+alkylation
+alkyne
+allanite
+allantoid
+allantois
+allargando
+alleppey
+allethrin
+allhallows
+alloa
+allodial
+allodium
+allonym
+alloplasm
+allotts
+allyou
+almada
+almelo
+almemar
+almonry
+almucantar
+almuce
+alodium
+alopecia
+alost
+alow
+alpenhorn
+alpes
+alphatically
+alpheus
+alphonsus
+alphorn
+alphosis
+alsace
+alsike
+alt
+altdorf
+altdorfer
+alternant
+althing
+althorn
+altiplano
+altissimo
+altogther
+altona
+altostratus
+aludel
+alula
+aluminiferous
+aluminothermy
+alumroot
+alvey
+alvine
+amadavat
+amadou
+amagasaki
+amalekite
+amalthea
+amaranthaceous
+amaranthine
+amarelle
+amaryllidaceous
+amatol
+amaut
+amazonas
+ambala
+ambary
+amberjack
+amberoid
+amblygonite
+amblyopia
+ambo
+amboceptor
+amboise
+amboyna
+ambroid
+ambry
+amdahl
+ameba
+ameer
+amenhotep
+amesace
+amhara
+amharic
+amianthus
+amice
+amicus
+amidol
+amidship
+amin
+aminophenol
+aminopyridine
+aminopyrine
+amir
+ammendment
+ammendments
+ammine
+ammocoete
+ammon
+ammonal
+ammonate
+ammonic
+amoebaean
+amon
+amontillado
+amoroso
+amowt
+amphiarthrosis
+amphiaster
+amphibiotic
+amphiblastula
+amphibrach
+amphichroic
+amphicoelous
+amphictyon
+amphictyony
+amphidiploid
+amphigory
+amphimacer
+amphimixis
+amphiprostyle
+amphiprotic
+amphisbaena
+amphistylar
+amphithecium
+amphitricha
+amphora
+amphoteric
+ampulla
+amravati
+amrita
+amstrad
+amur
+amygdala
+amygdalate
+amygdale
+amygdalin
+amygdaline
+amygdaloidal
+amylaceous
+amylase
+amylene
+amyloid
+amylolysis
+amylopectin
+amylopsin
+amylose
+amyotonia
+anabantid
+anabolite
+anabranch
+anacardiaceous
+anachorism
+anaclinal
+anacoluthia
+anacoluthon
+anacoustic
+anacrusis
+anadem
+anadex
+anadromous
+anadyr
+anaglypta
+anagnorisis
+anagoge
+anak
+analcite
+analects
+anambra
+anamnesis
+anamorphism
+anamorphoscope
+anamorphosis
+anandrous
+ananthous
+anapaest
+anaphrodisiac
+anaplasty
+anaptyxis
+anapurna
+anarthria
+anarthrous
+anasarca
+anastomose
+anatase
+anatolia
+anatto
+anaxagoras
+anaximander
+anaximenes
+anbury
+anchoveta
+anchylose
+ancipital
+ancohuma
+ancon
+ancy
+ancylostomiasis
+andalusia
+anderlecht
+andizhan
+andreanof
+andreotti
+androcles
+androclinium
+androecium
+androgenous
+androgyne
+andros
+androsphinx
+androsterone
+andvari
+ane
+anear
+anelace
+anele
+anemochore
+anemography
+anemology
+anemophilous
+anemoscope
+anergy
+anestrus
+anethole
+aneto
+aneuploid
+aneurin
+angelico
+angell
+angelology
+angiology
+angioma
+angostura
+angra
+anguilliform
+anguine
+angwantibo
+anhalt
+anhinga
+anhwei
+aniakchak
+aniconic
+anil
+anilingus
+anima
+animatism
+animato
+anisodactyl
+anisogamy
+anisole
+anisometric
+anisometropia
+anking
+ankus
+ankylosaur
+ankylose
+ankylosis
+ankylostomiasis
+anlace
+anlage
+annaba
+annabergite
+annates
+annatto
+annecy
+annhilate
+anno
+annulose
+anoa
+anoestrus
+anole
+anorak
+anorthositic
+anoxaemia
+ansate
+anschluss
+anshan
+antemeridian
+antependium
+antepenultimate
+antetype
+anteversion
+antevert
+anthelmintic
+anthemion
+antheridium
+antherozoid
+anthocyanin
+anthophore
+anthotaxy
+anthozoan
+anthracene
+anthracoid
+anthraquinone
+anthropomorphosis
+anthropomorphous
+anthropopathy
+anthropophagi
+anthropophagite
+antibaryon
+antibes
+anticathode
+antichlor
+anticholinesterase
+antichrist
+anticlastic
+anticlinorium
+anticosti
+anticyclone
+anticyclones
+antidromic
+antiegalitarian
+antifebrile
+antifederalist
+antiferromagnetism
+antifluoridation
+antihalation
+antihelices
+antihelix
+antihero
+antiheros
+antilepton
+antileptons
+antilogism
+antilogy
+antimasque
+antimere
+antimilitarist
+antimilitarists
+antimissile
+antimissiles
+antimonous
+antimonyl
+antiochus
+antiparallel
+antipater
+antiperistalsis
+antipsychiatry
+antirachitic
+antiremonstrant
+antisana
+antiscorbutic
+antistatic
+antisthenes
+antitragus
+antitype
+antiworld
+antlia
+antlion
+antofagasta
+antoninus
+antonioni
+antonius
+antonomasia
+antre
+antrim
+antrum
+antung
+anu
+anuradhapura
+anuran
+anuresis
+anuria
+anurous
+anvers
+anyang
+anzio
+anzus
+aorangi
+aosta
+aoudad
+apagoge
+apanage
+aparri
+apatetic
+apeldoorn
+apelles
+apeman
+apennines
+apery
+apetalous
+aphagia
+apheliotropic
+aphesis
+aphonia
+aphtha
+apia
+apiezon
+apivorous
+aplanospore
+aplite
+apnoea
+apo
+apocarp
+apochromat
+apocopate
+apocynaceous
+apocynthion
+apoenzyme
+apogamy
+apogeotropism
+apollinaris
+apomict
+apopemptic
+apophasis
+apophthegm
+apophyge
+apophyllite
+apophysis
+apopolectic
+aposiopesis
+apospory
+apostil
+appaloosa
+apparitor
+appassionato
+appel
+appendicectomy
+appendicle
+appenzell
+applecart
+applecarts
+applesnits
+appointor
+appointors
+approximal
+approximator
+approximators
+appulse
+apriorism
+apteral
+apterygial
+apuleius
+apulia
+apure
+apurimac
+apyretic
+aqaba
+aqualung
+aquashow
+aquileia
+aquire
+aquit
+aquitaine
+aquittal
+ara
+arabica
+arabinose
+arad
+arafura
+aragats
+aragon
+aragonite
+araguaia
+arak
+arakan
+araks
+araldite
+araliaceous
+aram
+aran
+araneid
+arany
+arapaima
+ararat
+araroba
+aras
+araucania
+araxes
+arbalest
+arbil
+arbitress
+arboraceous
+arbroath
+arbuthnot
+arcature
+archaean
+archaeomagnetism
+archaeozoic
+archegonium
+archenteron
+archerfish
+archespore
+archicarp
+archidiaconal
+archidiaconate
+archiepiscopal
+archiepiscopate
+archil
+archilochus
+archimage
+archimandrite
+archine
+archipenko
+archiphoneme
+archiplasm
+archoplasm
+arcograph
+arcus
+ardeb
+ardennes
+areg
+arenicolous
+arenite
+areography
+aretino
+arezzo
+argal
+argali
+argand
+argenteuil
+argentum
+argil
+argilliferous
+argillite
+argol
+argolis
+argonon
+argovie
+arica
+arietta
+aril
+arillode
+arimathea
+ariminum
+ariose
+arioso
+ariosto
+arista
+aristaeus
+aristarchus
+aristophanes
+arjuna
+arkose
+arkwright
+arles
+arlon
+armagh
+armagnac
+armband
+armes
+armet
+armiger
+armillary
+arminius
+armipotent
+armorica
+armure
+arne
+arnhem
+arnica
+arnim
+arno
+aroid
+aroint
+arp
+arpent
+arquebus
+arran
+arrestable
+arretium
+arrivisme
+arroba
+arru
+arse
+arsenopyrite
+arsphenamine
+artaud
+artaxerxes
+arteriovenous
+arthralgia
+arthromere
+artic
+artifical
+artifically
+artistical
+artois
+arunachal
+arundel
+arundinaceous
+aruspex
+aruwimi
+arvo
+arytenoid
+asantehene
+asarabacca
+asben
+ascariasis
+ascarid
+asch
+asci
+asclepiadaceous
+ascocarp
+ascogonium
+ascoli
+ascomycete
+ascorbic
+aseity
+asepalous
+asgard
+ashcroft
+ashe
+ashet
+ashkey
+ashlar
+ashlared
+ashlaring
+ashlars
+ashplant
+ashtoreth
+ashurbanipal
+asir
+askari
+askja
+aslef
+asmara
+asmodeus
+aso
+asoka
+aspergillosis
+aspergillus
+asphyxiant
+asphyxiants
+aspinwall
+asquint
+asquith
+assad
+assentient
+asshur
+assibilate
+assiniboine
+assistents
+assiut
+associationism
+assuan
+assurbanipal
+astable
+astaire
+asternal
+asti
+astolat
+astomatous
+astraphobia
+astrict
+astrobotany
+astrocompass
+astrodynamics
+astrogeology
+astroid
+astrometry
+asturias
+astyanax
+asur
+aswan
+asyllabic
+asymptotical
+asyut
+atacama
+atactic
+ataghan
+atahualpa
+ataman
+atbara
+athabaska
+athamas
+athanasius
+athelstan
+athematic
+athermanous
+atheroma
+athodyd
+athos
+atli
+atmolysis
+atomy
+atrabilious
+attaboy
+attedance
+attemper
+attenuant
+attercliffe
+attlee
+attu
+atween
+aubade
+aube
+aude
+audiotypist
+audiphone
+auer
+auklet
+aulic
+aulis
+aurangzeb
+aurelian
+aureus
+auriferous
+auriol
+aurist
+aurum
+ausforming
+ausonius
+austen
+austenitic
+autacoid
+autarchy
+autarky
+autecious
+autecology
+auteur
+autochanger
+autochthon
+autocode
+autocue
+autocycle
+autoicous
+autokinetic
+autoload
+autoloaded
+autoloads
+autolycus
+autolyse
+automorphic
+autopista
+autoput
+autoradiographs
+autoroute
+autostability
+autostrada
+autotimer
+autotoxaemia
+autotoxin
+autotype
+autoxidation
+auvergne
+auxanometer
+auxochrome
+avadavat
+avagadro
+avalon
+avebury
+aveiro
+avellaneda
+avens
+averno
+aveyron
+avicenna
+aviemore
+avignon
+avizandum
+avlona
+avunculate
+awheel
+awlwort
+axseed
+axum
+ayacucho
+ayah
+ayahuasca
+aycliffe
+aydin
+ayesha
+ayr
+ayub
+ayurveda
+ayutthaya
+azan
+azazel
+azbine
+azikiwe
+aznavour
+azo
+azobenzene
+azoic
+azole
+azotemia
+azoth
+azotic
+baa
+baas
+baba
+babar
+babassu
+babbage
+babeuf
+babiche
+babirusa
+babu
+babul
+babur
+babylonia
+bacchius
+bacciform
+baccivorous
+baccy
+backbench
+backbencher
+backbenchers
+backblocks
+backbreaker
+backbreaking
+backchat
+backcloth
+backcomb
+backdate
+backdated
+backdates
+backdating
+backend
+backends
+backhaus
+backmost
+backscratcher
+backsheesh
+backstreet
+backus
+backwardation
+baclava
+bacolod
+bacteraemia
+bacteriological
+bacteriology
+bacteriolysis
+bacteriophage
+bacteriostasis
+bacteroid
+bactria
+baculiform
+baculum
+badajoz
+badalona
+badderlocks
+baddie
+badman
+badoglio
+baeda
+bael
+baeyer
+baez
+bagasse
+bagehot
+bagh
+baghlan
+bagie
+bagnio
+baguio
+bagwash
+bagwig
+bagworm
+bahadur
+bahasa
+bahia
+baht
+bahuvrihi
+baikal
+baile
+baines
+bairnsfather
+baja
+bajan
+bakeapple
+bakehouse
+bakewell
+bakra
+baksheesh
+bakst
+bakunin
+balaclava
+balanchine
+balas
+balata
+balbo
+balbriggan
+baldmoney
+baldric
+balibuntal
+balikpapan
+baliol
+balkh
+balkhash
+balladmonger
+ballance
+ballarat
+ballflower
+balliol
+ballocks
+ballonet
+balmain
+balmung
+balneal
+balneology
+balpa
+balsamiferous
+balsaminaceous
+banaras
+banat
+banc
+bandaranaike
+banderilla
+banderillero
+bandh
+bandicoot
+bandjarmasin
+bandobust
+bandoline
+bandore
+bandsaw
+bandspreading
+bandung
+bangalore
+bangka
+bangweulu
+banian
+banja
+banjermasin
+banjul
+banka
+banket
+banknote
+banknotes
+bannerol
+bansela
+banstead
+bant
+banting
+bap
+baranof
+baraza
+barbel
+barbellate
+barbet
+barbette
+barbican
+barbicel
+barbituric
+barbizon
+barbule
+barbusse
+barca
+barcarole
+barce
+barchart
+barcharts
+bardot
+barehanded
+bareilly
+barents
+baresark
+bargee
+bargepole
+barilla
+barite
+barkentine
+barkhan
+barletta
+barm
+barnardo
+barnaul
+barnsley
+barnum
+barocchio
+baroda
+baroja
+barong
+baroscope
+barostat
+barouche
+barozzi
+barque
+barquentine
+barquisimeto
+barracoon
+barracouta
+barranquilla
+barrault
+barrenwort
+barret
+barrie
+barros
+bartizan
+bartolommeo
+barycentre
+barye
+barysphere
+baryta
+barytes
+barytone
+basaltware
+bascinet
+baseburner
+basenji
+bashan
+bashibazouk
+basifixed
+basilan
+basildon
+basilicata
+basle
+basotho
+bassein
+bassenthwaite
+basseterre
+bastardry
+bastia
+bastinado
+bastnaesite
+bastogne
+batangas
+batata
+bateleur
+batesian
+bathetic
+batholith
+bathsheba
+bathyal
+bathymetry
+bathyscaph
+bathysphere
+batley
+battels
+battersea
+battik
+battledore
+battlepiece
+batum
+batwoman
+bauchi
+baucis
+baudouin
+bautzen
+bawbee
+bawdyhouse
+bawdyhouses
+bayern
+bayeux
+bayle
+baysian
+baywood
+bazoo
+bdellium
+beachie
+beadledom
+beanery
+beanfeast
+beano
+beanpole
+beasty
+beatles
+beatty
+beauharnais
+beaumarchais
+beaut
+beauvais
+beauvoir
+beaverbrook
+bebeerine
+bebel
+beccafico
+bechet
+becquerel
+beddable
+bedesman
+bedight
+bedivere
+bedizen
+bedrail
+bedsit
+bedsits
+bedsitter
+bedspaces
+bedwarmer
+bedwetting
+bedworth
+beeb
+beechnut
+beefburger
+beento
+beerbohm
+beersheba
+beeswing
+beetfly
+beetroot
+beetroots
+beezer
+beforeimage
+beforeimages
+begad
+beggarweed
+begird
+begorra
+begum
+behan
+behistun
+beiderbecke
+beigel
+beira
+bejabers
+bejewel
+belah
+belemnite
+belfort
+belga
+belitung
+bellarmine
+bellay
+belleau
+belletrist
+bellinzona
+belloc
+bellybutton
+belmopan
+belovo
+bemean
+benadryl
+benares
+bendel
+bendigo
+bendy
+benedicite
+benempt
+benevento
+benfleet
+bengaline
+benghazi
+benguela
+benoni
+bentinck
+bentwood
+benue
+benzaldehyde
+benzidine
+benzine
+benzoate
+benzocaine
+benzofuran
+benzoic
+benzoin
+benzol
+benzophenone
+benzoquinone
+benzoyl
+benzyl
+berar
+berbera
+berberidaceous
+berbice
+bergdama
+bergerac
+bergius
+beria
+bering
+berio
+beriosova
+berk
+berks
+berley
+berlichingen
+berlinguer
+berm
+bermejo
+bermondsey
+bernadette
+bernadotte
+bernhardt
+bernicle
+bernina
+berretta
+bersagliere
+berseem
+bertillon
+bertolucci
+berzelius
+bespangle
+bespread
+bestrode
+bethe
+bethral
+bethralled
+bethralling
+bethrals
+bethsaida
+betjeman
+betook
+betti
+betulaceous
+beuthen
+bevan
+bevanite
+bevanites
+bevatron
+bevin
+bevvy
+bexley
+beyrouth
+bezique
+bezoar
+bezonian
+bezwada
+bhagalpur
+bhai
+bhakti
+bhang
+bharal
+bharat
+bharatiya
+bhatpara
+bhavan
+bhavnagar
+bhindi
+bhishti
+bhopal
+bhubaneswar
+bhutto
+biafra
+biak
+biannulate
+biarritz
+biauriculate
+bibliomancy
+bicarb
+bicephalous
+bicester
+bicollateral
+bicorn
+bida
+bidarka
+biddle
+bidentate
+bidistill
+bidistilled
+bidistilling
+bidistills
+biel
+bield
+bienne
+bierkeller
+biestings
+bifarious
+biffin
+bifoliate
+bifoliolate
+biforate
+bifrost
+bigarreau
+bigener
+bigmouth
+bignoniaceous
+biguanide
+bihar
+bijapur
+bijugate
+bikaner
+bikie
+bikila
+bilander
+bilbao
+bilberry
+bilboes
+bilection
+bilestone
+bilirubin
+biliverdin
+billabong
+billfish
+billyo
+bilobate
+biltong
+bimah
+bimanous
+bimbo
+bimorph
+binal
+binate
+bingey
+binghi
+binh
+binodal
+binominal
+binturong
+biocellate
+biochip
+biochips
+bioclimatology
+biocycle
+biodynamics
+bioenergetics
+bioherm
+biolysis
+bioplasm
+biopoiesis
+bioscope
+bioscopy
+biosis
+biostatics
+biostrome
+biparietal
+biparous
+bipetalous
+bipyramidal
+biquadrate
+biquarterly
+birendra
+biriani
+biro
+birobidzhan
+biros
+birthweight
+birthweights
+birtwhistle
+bis
+bisayas
+biscay
+bise
+bisectrix
+biserrate
+bish
+bishopbird
+bisitun
+bisk
+biskra
+bismuthic
+bismuthinite
+bismuthous
+bissextile
+bist
+bistability
+bisulcate
+bisulphate
+bisulphide
+bisulphite
+bisutun
+bisymmetric
+bithynia
+bitolj
+bitterling
+bitterwood
+bivvy
+bizerte
+blackbuck
+blackbutt
+blackcurrant
+blackett
+blackmore
+blackpool
+blackshirt
+blackstrap
+blackwall
+blackwood
+bladdernose
+bladderwrack
+blague
+blah
+blain
+blamey
+blanquette
+blasco
+blastocoel
+blastocyst
+blastoderm
+blastoff
+blastogenesis
+blastomere
+blastopore
+blaubok
+blaydon
+bleb
+bleep
+bleeped
+bleeper
+bleeping
+blennioid
+blenny
+blent
+blepharitis
+blet
+blewits
+blida
+bligh
+blighty
+blimey
+blindage
+blindstorey
+blockboard
+bloemfontein
+blois
+bloodbaths
+bloodsport
+bloodsports
+bloomery
+blotto
+blowback
+blowie
+blowlamp
+blub
+bludge
+bluethroat
+bluetit
+blundell
+blunge
+blunger
+boabdil
+boadicea
+boarfish
+boarhound
+boarish
+boatbill
+boathook
+bobbysoxer
+bobfloat
+boblet
+bobol
+bobotie
+bobowler
+bobsleigh
+bocage
+boccaccio
+boccherini
+boccioni
+bochum
+bocklogged
+bodensee
+bodge
+bodger
+bodgie
+bodh
+bodmin
+bodybuild
+bodycheck
+boethius
+boeuf
+bofors
+bogan
+bogarde
+bogart
+bogbean
+bognor
+bogong
+bogor
+bogtrotter
+bogwood
+boh
+bohea
+bohol
+bohunk
+boiardo
+boileau
+boilover
+bokassa
+bokmakierie
+bolection
+boleyn
+bolide
+bolingbroke
+boliviano
+bollocks
+bolzano
+boma
+bombacaceous
+bombora
+bombycid
+bomu
+bonaire
+bonaventura
+bonce
+bondservant
+boneblack
+boneshaker
+bonhoeffer
+bonin
+bonism
+bonnard
+bonsela
+bontebok
+boobialla
+boobook
+boohoo
+bookeeper
+booklouse
+boole
+boomkin
+boomslang
+boong
+boothia
+boothroyd
+bootloader
+bophuthatswana
+boracic
+boracite
+boraginaceous
+borborygmus
+bordure
+borecole
+boree
+borehole
+boreholes
+borgerhout
+borges
+borgholm
+borgia
+bornholm
+bornu
+borodino
+borrowable
+bors
+borstal
+borzoi
+boschbok
+boschvark
+bosh
+bosk
+boskop
+bossa
+bossboy
+bossuet
+bosworth
+botargo
+botha
+bothnia
+bothwell
+bothy
+botryoidal
+bott
+botticelli
+bottlebrush
+bottlenose
+bottomost
+bottrop
+botvinnik
+boucicault
+boudicca
+boulanger
+bourges
+bourgogne
+bovid
+bovril
+bovver
+bowden
+bowsaw
+bowshot
+bowyangs
+boxboard
+boxfish
+boxroom
+boyla
+boyne
+boyoma
+boysenberry
+boz
+bozen
+brabant
+brach
+brachiopod
+brachycephalic
+brachydactylic
+brachylogy
+brachypterous
+brachyuran
+bracknell
+bracteate
+bracteole
+bradawl
+bradman
+bradycardia
+bradykinin
+braga
+brahe
+braillex
+braillink
+braillo
+brailtel
+brainchildren
+brakesman
+brakpan
+bramante
+bramley
+branchiopod
+brancusi
+brando
+branle
+brasenose
+brashy
+brasier
+brasil
+brasilein
+brasilin
+brassie
+bratislava
+braunite
+braunschweig
+bravais
+bravissimo
+braxy
+brazils
+breadline
+breadmaking
+breadnut
+breadnuts
+breakbone
+breakeven
+breastpin
+breathalyse
+breathalyzer
+brecht
+brecon
+breda
+brede
+bree
+breenger
+bregenz
+brekky
+brevier
+brewis
+brey
+brezhnev
+briand
+briarroot
+bricklay
+bricole
+bridie
+bridlewise
+bridoon
+brie
+brierroot
+brigalow
+brighouse
+brightside
+brinell
+brinjal
+brinny
+briony
+brittonic
+britzka
+brix
+broadbill
+broadmoor
+broca
+broch
+brocken
+broddle
+broderie
+broederbond
+brogan
+brolga
+bromal
+brome
+bromeosin
+bromoform
+bromsgrove
+bronchia
+bronchiectasis
+bronchopneumonia
+bronchoscope
+brookite
+brooklet
+brooklime
+brookweed
+broomgrove
+broomhill
+broonzy
+brose
+browband
+broz
+brubeck
+brucine
+bruges
+bruin
+brumal
+brumby
+brume
+brummell
+brummie
+brundisium
+brunel
+brunelleschi
+brunhild
+brusa
+brushless
+brutify
+brynhild
+bryology
+bryony
+bryozoan
+btu
+bub
+bubal
+bubaline
+buber
+bubonocele
+bucaramanga
+buccinator
+bucentaur
+buchan
+buchner
+buchu
+buckeen
+buckhound
+buckish
+buckjumper
+buckra
+buckram
+bucovina
+budgerigar
+budgetted
+budgetting
+budweis
+buffon
+buganda
+bugbane
+bugong
+buhl
+buibui
+buitenzorg
+bukavu
+bukhara
+bukharin
+bukovina
+bul
+bulawayo
+bulbiferous
+bulganin
+bulimia
+bulle
+bullpen
+bullroarer
+bulnbuln
+bumbailiff
+bumf
+bummaree
+bumph
+bumsucking
+bunche
+buncombe
+bundelkhand
+bundesrat
+bundh
+bundobust
+bunin
+bunraku
+buntal
+bunyip
+buonaparte
+buonarroti
+buoyage
+buprestid
+bur
+buran
+buraydah
+burbage
+burbot
+burgas
+burghley
+burgomaster
+burgomasters
+burgrave
+burhel
+burk
+burka
+burleigh
+burnet
+burney
+burnley
+buroo
+burrawang
+bursarial
+bursiform
+burstone
+buryat
+busbar
+busera
+bushbaby
+bushcraft
+bushhammer
+bushido
+bushie
+bushpig
+bushranger
+bushtit
+bushveld
+bushwheel
+busoni
+busra
+bustee
+busuuti
+butanone
+butat
+butcherbird
+butenedioic
+butskellism
+butskellite
+butterbur
+butterine
+buttonmould
+butung
+butyrin
+buzzsaw
+byelovo
+byng
+byrnie
+byssinosis
+byssus
+bytom
+cabanatuan
+cabbageworm
+cabezon
+cabimas
+cabob
+cabochon
+cabora
+cabral
+cabretta
+cabrilla
+cachexia
+cachinnate
+cachucha
+cacique
+caciquism
+cacodyl
+cacoepy
+cacoethes
+cacology
+cacomistle
+cadaster
+cadelle
+cadi
+caecilian
+caecum
+caen
+caenozoic
+caeoma
+caerleon
+caernarfon
+caesalpiniaceous
+caesaraugusta
+caesarea
+caesium
+caespitose
+caesura
+caetano
+cafard
+caff
+cagliari
+cagliostro
+cagmag
+cagney
+cagoule
+cagoules
+caiaphas
+cainogenesis
+cainozoic
+caird
+cairngorm
+caithness
+caius
+cajeput
+cajuput
+calabria
+calalu
+calamanco
+calamondin
+calandria
+calathus
+calaverite
+calcar
+calcariferous
+calceiform
+calces
+calchas
+calcicole
+calciferol
+calcitonin
+calcsinter
+calculational
+caldarium
+calefacient
+calefactory
+cali
+calices
+caliche
+calicle
+califate
+caligula
+calimere
+calipash
+calipee
+calisaya
+calix
+callais
+callao
+callicrates
+callimachus
+callipash
+callipygian
+callisthenics
+calor
+caloyer
+calpe
+caltanissetta
+calutron
+calvaria
+calvities
+calx
+calyces
+calycine
+calycle
+calyptra
+calyptrogen
+camail
+camass
+cambay
+camberwell
+cambist
+camboose
+cambrai
+cambrel
+cambria
+cambyses
+cameral
+camerlengo
+camiknickers
+camisado
+camoodi
+campagna
+campania
+campanulaceous
+campeche
+campestral
+campina
+campinas
+campo
+camus
+camwood
+canaigre
+canakin
+canaletto
+canaliculus
+canara
+canarese
+canaster
+candia
+candleberry
+candlefish
+candlelit
+candlenut
+candlewood
+candyfloss
+candytuft
+canea
+canella
+cangue
+canikin
+cannabin
+cannae
+cannelloni
+cannelure
+cannes
+cannock
+cannula
+cannulate
+canoewood
+canonicate
+canonry
+canoodle
+canova
+canso
+cantal
+cantala
+cantatrice
+cantharides
+cantilena
+cantorial
+cantoris
+cantrip
+canula
+canzona
+canzone
+canzonet
+capabilites
+caparison
+capelin
+capercaillie
+capillaceous
+caplin
+caporetto
+capote
+cappadocia
+capparidaceous
+cappie
+cappuccino
+capreolate
+capric
+capriccioso
+caprifig
+caprifoliaceous
+caproic
+capsaicin
+capsid
+capua
+capuche
+caput
+caracal
+caracalla
+caracara
+caracul
+carageen
+caramba
+carangid
+caratacus
+caravanserai
+carbamate
+carbamic
+carbamidine
+carbanion
+carbene
+carbineer
+carbonade
+carbonado
+carboxylase
+carburation
+carburetted
+carburetter
+carby
+carbylamine
+carcajou
+carcanet
+carcassonne
+carchemish
+carcinomatosis
+cardin
+cardinalate
+cardiod
+carditis
+cardoon
+carduaceous
+carducci
+caretaking
+carew
+carfax
+carfuffle
+caria
+caribbees
+cariboo
+caries
+carifta
+carillon
+carillonneur
+carina
+carinate
+carinthia
+cariocan
+cariogenic
+carline
+carlota
+carlow
+carmagnole
+carmarthen
+carminative
+carnarvon
+carnassial
+carnatic
+carnauba
+carnet
+carnify
+carniola
+carnot
+carnotite
+carny
+carolus
+carotenoid
+carotid
+carpel
+carpentaria
+carpentier
+carpogonium
+carpology
+carpometacarpus
+carpophagous
+carpophore
+carrack
+carrycot
+carryng
+carse
+carstensz
+cartagena
+carteret
+cartful
+carthorse
+cartouche
+cartulary
+cartwright
+caruncle
+carvel
+cary
+caryatid
+caryophyllaceous
+caryopsis
+carzey
+casablanca
+casals
+casaubon
+cascabel
+cascarilla
+casease
+casebound
+casefy
+caseload
+caseloads
+caseose
+caserta
+caseworm
+casimere
+cassareep
+cassata
+cassation
+cassatt
+cassel
+cassimere
+cassini
+cassiodorus
+cassirer
+cassiterite
+cassoulet
+cassowary
+castellammare
+castellan
+castellany
+castellated
+castiglione
+castile
+castries
+casuist
+catabasis
+catacaustic
+cataclasis
+cataclinal
+catalase
+catalo
+cataloguers
+catalonia
+catalyzed
+catamenia
+catamite
+catania
+catanzaro
+cataphoresis
+cataphyll
+cataplasia
+catarrhine
+catastrophism
+catchfly
+catchweight
+catechol
+catechu
+catechumen
+catenane
+catenoid
+catfall
+cathar
+cathepsin
+catholicon
+catiline
+catling
+catmint
+cato
+cattalo
+cattegat
+cattermole
+cattery
+catullus
+cauca
+caucasia
+caudad
+caudex
+caudine
+caulis
+causalgia
+cauterant
+cauvery
+cavafy
+cavalla
+cavan
+cavatina
+caveator
+cavefish
+cavicorn
+cavie
+cavite
+cavy
+cecity
+cecum
+cedi
+ceefax
+ceilidh
+celaya
+celestite
+cella
+celle
+cellini
+cellobiose
+celloidin
+cellulase
+cellulitis
+cellulous
+celom
+cembalo
+cementum
+cenacle
+cenesthesia
+cenis
+cenogenesis
+cenote
+centimetric
+centipoise
+centisecond
+centiseconds
+centrefold
+centreing
+centrobaric
+centroclinal
+centurial
+ceorl
+cep
+cephalalgia
+cephalin
+cephalochordate
+cephalometer
+cephalonia
+cephalopod
+cephalothorax
+ceram
+ceramal
+cerargyrite
+cerastes
+ceratoid
+cercaria
+cercopithecoid
+cercus
+cerebrospinal
+cerecloth
+ceresin
+ceria
+ceric
+cermet
+cero
+cerography
+ceroplastic
+ceroplastics
+cerotic
+cerotype
+cerous
+cerro
+cert
+cerussite
+cervelat
+cervicitis
+cervid
+cervin
+cesena
+cespitose
+cess
+cesser
+cessionary
+cestode
+cestoid
+cestus
+cesura
+cetane
+cetatea
+ceteris
+cetinje
+cetology
+ceuta
+chabazite
+chabrol
+chacma
+chaconne
+chadic
+chaeronea
+chaeta
+chaetognath
+chaetopod
+chaffinch
+chagall
+chagres
+chainman
+chainplate
+chairborne
+chalaza
+chalcanthite
+chalcidice
+chalcography
+chalcolithic
+chalcopyrite
+chaldea
+chaliapin
+chalicothere
+chalkpit
+chalkstone
+challah
+challis
+chalybeate
+chamade
+chamaephyte
+chambord
+chamonix
+champac
+champignon
+champollion
+chandernagore
+chandigarh
+chandragupta
+chanel
+changan
+changchiakow
+changchow
+changchun
+changsha
+changteh
+chanterelle
+chanukah
+chaoan
+chaochow
+chaparejos
+chapatti
+chappal
+chappie
+chapstick
+chapterhouse
+charas
+charcot
+chardin
+charente
+charivari
+charkha
+charladies
+charlady
+charleroi
+charlock
+charminar
+charollais
+charpoy
+charqui
+charr
+charterage
+charterhouse
+chartless
+chartography
+chasuble
+chauffer
+chaulmoogra
+chaunt
+chausses
+chavannes
+chayote
+cheb
+cheboksary
+checkbits
+checkerbloom
+checky
+cheddite
+cheekpiece
+cheerlead
+cheeseboard
+cheesemonger
+cheesewood
+chefoo
+cheiron
+cheju
+chekiang
+chela
+chelicera
+chelicerate
+cheliform
+cheloid
+chelp
+chemin
+chemisette
+chemmy
+chemnitz
+chemometrics
+chemosmosis
+chemosphere
+chemostat
+chemosynthesis
+chemotaxis
+chemotropism
+chempaduk
+chemulpo
+chemurgy
+chenab
+chenopod
+cheribon
+chersonese
+chervonets
+cheshunt
+chetah
+chevet
+chevrette
+chewa
+chewie
+chiack
+chiapas
+chiastic
+chiastolite
+chiat
+chiba
+chibouk
+chicane
+chiccory
+chichagof
+chichen
+chichester
+chichewa
+chichihaerh
+chickabiddy
+chickenpox
+chiclayo
+chiffchaff
+chifley
+chigetai
+chigwell
+chihli
+childbear
+childcare
+childminder
+childminders
+childminding
+chiliad
+chiliasm
+chilkoot
+chilli
+chillon
+chillum
+chilopod
+chilpancingo
+chilung
+chimb
+chimborazo
+chimbote
+chimkent
+chimneypot
+chinaberry
+chinagraph
+chinan
+chincapin
+chincherinchee
+chindit
+chindwin
+ching
+chinghai
+chingtao
+chinkapin
+chinkiang
+chino
+chinwag
+chios
+chipolata
+chippewa
+chippy
+chirac
+chirau
+chirico
+chirm
+chirurgeon
+chishima
+chisimaio
+chital
+chitarrone
+chittagong
+chiv
+chivaree
+chlamydate
+chlamydeous
+chlamydospore
+chlodwig
+chloracne
+chlorambucil
+chloramine
+chloramphenicol
+chlorenchyma
+chloroacetic
+chloropicrin
+chloroprene
+chloroquine
+chlorosis
+chlorothiazide
+chlorotic
+chlorous
+chlorpromazine
+chlorpropamide
+chlortetracycline
+choanocyte
+chogyal
+choiseul
+chokebore
+chokecherry
+chokedamp
+choko
+cholecalciferol
+cholecyst
+cholecystectomy
+choli
+cholic
+cholla
+chollers
+cholon
+cholula
+chon
+chondrify
+chondriosome
+chondroma
+chondrule
+choof
+chook
+choom
+chopine
+choplogic
+choragus
+chordophone
+chorea
+choreodrama
+choriamb
+chorley
+choroid
+chorology
+chorusmaster
+chota
+chott
+chough
+choux
+chrematistic
+chresard
+chrism
+chrismatory
+chrisom
+chromatology
+chromatolysis
+chromatophore
+chromogen
+chromogenic
+chromolithograph
+chromolithography
+chromomere
+chromonema
+chromophore
+chromoplast
+chromoprotein
+chromous
+chromyl
+chronaxie
+chronobiology
+chronon
+chrysalid
+chrysarobin
+chryselephantine
+chrysoberyl
+chrysoprase
+chrysostom
+chrysotile
+chthonian
+chubb
+chubbyness
+chudskoye
+chufa
+chukar
+chukka
+chukker
+chunder
+chunderous
+chunnel
+chunter
+chupatti
+chupattis
+chuppah
+chur
+churchgo
+churchwarden
+churchwardens
+churidars
+churinga
+churr
+chuttie
+chyack
+chyle
+chyme
+chymosin
+chymotrypsin
+chymotrypsinogen
+cibber
+ciborium
+cic
+cicala
+cicatricle
+cicatrix
+cicerone
+cichlid
+cichlids
+cienfuegos
+cig
+cii
+cil
+cilice
+cilicia
+ciliolate
+cilium
+cimabue
+cimex
+cimon
+cinchonidine
+cinchonine
+cinchonism
+cine
+cineaste
+cinematheque
+cinematographs
+cineol
+cinerarium
+cinereous
+cinerin
+cingulum
+cinna
+cinnamic
+cinquain
+cinque
+cinquecento
+cinzano
+cipolin
+circassia
+circlorama
+circumbendibus
+circummartian
+circumnutate
+circumsolar
+cirenaica
+cirencester
+cirrate
+cirri
+cirripede
+cirrocumulus
+cirrose
+cirrostratus
+cirsoid
+ciscaucasia
+cisco
+ciskei
+cispadane
+cissoid
+cistaceous
+cisterna
+cistron
+cithara
+cither
+citole
+citreous
+citriculture
+citrin
+citrine
+citrulline
+cittern
+citterns
+ciudad
+civ
+civism
+clachan
+clackmannan
+clactonian
+cladded
+cladoceran
+cladode
+cladophyll
+clairaudience
+clamworm
+clamworms
+clapperboard
+clapperboards
+clapperclaw
+clarino
+claro
+clarts
+clary
+classis
+clastic
+clathrate
+claudication
+clavate
+clavicembalo
+clavicorn
+claviform
+clavius
+claymore
+claypan
+claystone
+cleanskin
+cleanthes
+clearcole
+clearstory
+clearway
+clearways
+clearwing
+cleck
+cleek
+cleethorpes
+cleg
+cleidoic
+cleisthenes
+cleistogamy
+clem
+clemenceau
+cleon
+clepsydra
+cleptomania
+clerestory
+clerihew
+clerkess
+cleruchy
+cleveite
+clianthus
+clichy
+cliffhang
+clii
+clinandrium
+clingfish
+clinkstone
+clinostat
+clinquant
+clippie
+clishmaclaver
+clisthenes
+clitellum
+clitic
+cliv
+clix
+clockmaker
+clomb
+clonus
+closedown
+cloudberry
+cloudscape
+clouet
+clough
+clovis
+clubhaul
+clubland
+clubman
+clucky
+clueless
+clumber
+cluny
+clupeid
+clupeoid
+clustan
+clusterability
+clusterable
+clvi
+clvii
+clwyd
+clxi
+clxii
+clxiv
+clxix
+clxvi
+clxvii
+clydebank
+clype
+clypeus
+clyster
+cnidarian
+cnidoblast
+cnidus
+cnossus
+cnut
+coacervate
+coachwood
+coadjutant
+coagulum
+coahuila
+coalface
+coalfield
+coalfields
+coalfish
+coalmine
+coalmines
+coalport
+coaming
+coatee
+coati
+cobaltite
+cobaltous
+cobber
+cobden
+cobnut
+coburg
+coccid
+coccidioidomycosis
+cocciferous
+coccolith
+coccyx
+cochabamba
+cochleate
+cockalorum
+cockatiel
+cockayne
+cockboat
+cockchafer
+cockcroft
+cockleboat
+cockloft
+cockneyfy
+cocksfoot
+cockspur
+cockswain
+cockup
+cocopan
+cocotte
+cocoyam
+cocteau
+codasyl
+codder
+codicology
+codominate
+codominated
+codominates
+codominating
+codswallop
+coedit
+coelacanth
+coelenterate
+coelenteron
+coeliac
+coelom
+coelostat
+coenacle
+coenobite
+coenocyte
+coenurus
+coercibility
+coessential
+coetaneous
+coeur
+coexecutor
+coextend
+coff
+cofferdam
+coggan
+coglike
+cogon
+cohabitee
+cohabitees
+cohesional
+cohobate
+cohune
+coimbatore
+coimbra
+coir
+coire
+coit
+cokuloris
+colbert
+colcannon
+colchester
+colchicine
+colcothar
+colectomy
+colemanite
+coleopteran
+coleoptile
+coleorhiza
+coles
+colet
+colewort
+coley
+colicroot
+colicweed
+coligny
+collapsar
+collarette
+collectanea
+collembolan
+collenchyma
+collisionless
+collocutor
+colloid
+collop
+collotype
+colluvium
+collywobbles
+colmar
+colocynth
+colombes
+colonitis
+colonsay
+coloquintida
+colorate
+colossae
+colossians
+colotomy
+colpitis
+colporteur
+colquhoun
+colubrid
+colubrine
+colugo
+colum
+columbarium
+columbic
+columbite
+columbium
+columbous
+columella
+columnwise
+colure
+coly
+comaneci
+comate
+comatulid
+combe
+comecon
+comedo
+comenius
+comfrey
+comines
+comitia
+commeasure
+commedia
+commendam
+commines
+commis
+commo
+commodus
+commonable
+communicatie
+comnenus
+como
+comorin
+comoro
+comp
+compadre
+compander
+companders
+compilability
+complect
+compony
+compossible
+compostela
+compotation
+comprador
+comstockery
+comte
+conan
+conation
+conative
+conatus
+concelebrate
+concensus
+concent
+concertino
+concha
+conchie
+conchiferous
+conchiolin
+conchobar
+conchoid
+conchoidal
+conchology
+condillac
+condottiere
+condyle
+condyloid
+condyloma
+confessant
+configurationism
+confirmand
+confiteor
+confiture
+conformability
+congeneric
+congius
+conglobate
+conglutinant
+congou
+congrats
+congruential
+congruentially
+conidiophore
+conidium
+coniine
+coniology
+conjuction
+connacht
+connaught
+connemara
+connexions
+conodont
+conoid
+conoscenti
+conquian
+conscionably
+consentient
+conservatoire
+conservatorium
+consett
+consocies
+consolute
+constantan
+constatation
+contactor
+contango
+contemn
+continously
+conto
+contradance
+contrasuggestible
+contrate
+contravallation
+contrayerva
+contredanse
+controllee
+controllees
+conure
+convertite
+convolvulaceous
+cooee
+cookhouse
+coolabah
+coolgardie
+coom
+cooncan
+coontie
+cooperativity
+coopt
+coordinal
+cootch
+copaiba
+copal
+copalm
+copepod
+copita
+copley
+coprolalia
+coprology
+coprophagous
+coprophilia
+coprophilous
+copygraph
+copyread
+coquelicot
+coquilla
+coquito
+coraciiform
+coracle
+coracoid
+corallite
+coralloid
+coralroot
+coranto
+corban
+corbeil
+corbicula
+corbie
+corbusier
+corby
+corcyra
+corday
+cordeliers
+cordierite
+cordillera
+cordilleras
+cordoba
+cordova
+corella
+corelli
+corf
+corfam
+corfu
+corgi
+coriaceous
+corinthians
+coriolis
+corium
+corkage
+corkwood
+cormel
+cormophyte
+corncockle
+corncrake
+corneille
+cornel
+cornelian
+cornetcy
+cornett
+cornflakes
+cornflour
+cornhusk
+corniculate
+cornmonger
+corno
+cornstone
+cornu
+cornute
+corody
+corollaceous
+coromandel
+coronach
+corot
+corozo
+correggio
+corregidor
+correlator
+corrida
+corrientes
+corrival
+corrodent
+corrody
+corrugator
+corsac
+corselet
+corsetry
+corticosterone
+corticotrophin
+cortisol
+cortot
+corunna
+corves
+corvine
+corymb
+coryphaeus
+coryza
+cosa
+cosecant
+cosech
+coseismal
+cosenza
+cosgrave
+cosignatory
+cosmine
+cosmodrome
+cosmoid
+cosmopolis
+cosmotron
+cospar
+coss
+cossie
+costard
+costate
+costermonger
+costotomy
+costrel
+cotan
+cotemporary
+cotenant
+coterminosity
+coth
+cothurnus
+cotidal
+cotonou
+cotopaxi
+cotquean
+cotswold
+cotswolds
+cottbus
+cottian
+cottonade
+cottonweed
+cotyloid
+coucal
+couchant
+couchette
+coulee
+coulibiaca
+couloir
+coulometer
+coulometers
+coumarin
+coumarone
+counterattraction
+counterblast
+countercharge
+counterculture
+counterfactual
+counterglow
+counterinsurgency
+counterposition
+counterproof
+countershade
+countershaded
+countershades
+countershading
+countersubject
+countertype
+counterweigh
+counterword
+counterwork
+courante
+courantyne
+courbet
+courbevoie
+coureur
+courgette
+courlan
+coursework
+courtelle
+courtrai
+couthie
+couvade
+coverdale
+coverley
+coversed
+covin
+cowberry
+cowbind
+cowes
+cowfish
+cowherb
+cowitch
+cowk
+cowley
+cowpat
+cowper
+cowskin
+coxa
+coxalgia
+coxcombry
+coxsackie
+coxswain
+coyotillo
+coz
+crabbe
+crabmeat
+crabstick
+crackbrain
+crackbrained
+cracket
+crackjaw
+cracknel
+cracksman
+cracow
+craddock
+cradlesong
+craigie
+craiova
+crake
+crambo
+cramoisy
+cran
+cranach
+cranage
+cranesbill
+craniology
+craniometer
+craniometry
+craniotomy
+cranko
+crankpin
+cranmer
+crannog
+cranwell
+crapaud
+crapulent
+craquelure
+crashable
+crashaw
+crasis
+crassulaceous
+crassus
+cratch
+craunch
+crawley
+cray
+creamcups
+creamlaid
+creatine
+creatinine
+credendum
+creel
+creels
+creepie
+cremator
+cremona
+crenel
+creodont
+creophagous
+crepitus
+cressy
+cresylic
+creuse
+crewe
+cribellum
+cricoid
+crikey
+crim
+crimmer
+crimple
+crimplene
+cringle
+crinite
+crinkleroot
+criollo
+cripes
+crippen
+cripps
+criseyde
+crispate
+crispation
+crispbread
+crispi
+crissum
+crista
+cristate
+cristobalite
+croce
+crocein
+crocidolite
+crocoite
+croesus
+crombec
+cromlech
+cronk
+cronus
+crosier
+crossbeam
+crosscheck
+crosse
+crossfire
+crosshead
+crossjack
+crossopterygian
+crosspool
+crossruff
+crosstabulate
+crosstabulation
+crosstie
+crossties
+crotone
+crotonic
+croute
+crowboot
+crownpiece
+crownwork
+croze
+crozier
+cru
+cruces
+crucian
+cruck
+cruiserweight
+cruiseway
+crumhorn
+crummock
+crunode
+crura
+crural
+crus
+crusado
+cruse
+cruyff
+cruzado
+cruzeiro
+crwth
+cryer
+cryocable
+cryohydrate
+cryometer
+cryophyte
+cryoplankton
+cryptaesthesia
+cryptanalyze
+cryptoclastic
+cryptocrystalline
+cryptogam
+cryptozoic
+cryptozoite
+crystallographica
+ctenidium
+ctenoid
+ctenophore
+ctesiphon
+cubane
+cubeb
+cubiculum
+cubital
+cucking
+cuckooflower
+cuckoopint
+cuculiform
+cudbear
+cudgerie
+cudweed
+cuenca
+cuernavaca
+cuesta
+cufic
+cuirass
+cuirassier
+cuisse
+culch
+culebra
+culet
+culicid
+cullet
+cullis
+culloden
+cully
+culm
+culmiferous
+cultrate
+culverin
+cum
+cumae
+cumber
+cumbernauld
+cumbria
+cummerbund
+cumquat
+cumshaw
+cumulet
+cumuliform
+cumulonimbus
+cumulostratus
+cunaxa
+cuneal
+cuneo
+cunjevoi
+cupel
+cuppa
+cuprum
+curacy
+curare
+curarine
+curassow
+curch
+curiosa
+curitiba
+curlpaper
+currajong
+currawong
+currycomb
+curtin
+curzon
+cusco
+cusec
+cush
+cushat
+cusk
+cuso
+customable
+custos
+custumal
+cutcherry
+cuticula
+cutin
+cutis
+cuttack
+cuttle
+cutty
+cuvette
+cuxhaven
+cuyp
+cuzco
+cwmbran
+cyan
+cyanamide
+cyanine
+cyanite
+cyanocobalamin
+cyanogen
+cyanohydrin
+cyanosis
+cyanotype
+cybele
+cyber
+cybernate
+cyclamen
+cyclicity
+cycloalkane
+cyclograph
+cycloheptatrienyl
+cyclohexane
+cyclohexyl
+cyclonite
+cycloparaffin
+cyclopedia
+cyclopentadienyl
+cyclopentane
+cycloplegia
+cyclopropane
+cyclosis
+cyclostome
+cyclostyle
+cyclothymia
+cyclotomy
+cyder
+cydnus
+cylindroid
+cylix
+cyma
+cymar
+cymatium
+cymbalo
+cyme
+cymene
+cymogene
+cymograph
+cymoid
+cymophane
+cymose
+cymru
+cynghanedd
+cyperaceous
+cyprinid
+cyprinodont
+cyprinoid
+cypsela
+cyrenaica
+cyrene
+cystectomy
+cysticercoid
+cystine
+cystitis
+cystocarp
+cystocele
+cystoid
+cystolith
+cystoscope
+cystotomy
+cythera
+cytidine
+cytochemical
+cytochemically
+cytochrome
+cytogenesis
+cytogenetics
+cytokinesis
+cyton
+cytoplast
+cytotaxonomy
+cyzicus
+czardas
+czarevna
+dabchick
+dabster
+dace
+dacha
+dachau
+dachsund
+dacia
+dacoit
+dacoity
+dacron
+dactylogram
+dactylography
+dactylology
+dado
+dadra
+dagan
+dagga
+daggerboard
+dagoba
+dagon
+daguerre
+dahna
+daimyo
+dairen
+daisycutter
+dak
+dal
+daladier
+dalai
+dalasi
+dalesman
+dalhousie
+dallapiccola
+dalmatia
+damietta
+damodar
+dampcourse
+dampier
+damselfish
+dandie
+dandiprat
+daraf
+darbies
+dardanelles
+dardanus
+daresbury
+darfur
+darg
+dargah
+daric
+dario
+dariole
+darkend
+darlan
+darmstadt
+darnel
+darnley
+darogha
+dartboard
+dasheen
+dashiki
+dashpot
+dassie
+dasyure
+databank
+datary
+datatype
+datcha
+dato
+datolite
+datuk
+daube
+daubery
+daubigny
+daudet
+daugava
+daugavpils
+daumier
+davao
+daw
+dawes
+dayak
+dayan
+dayboy
+dayfile
+dayflower
+dayfly
+dayspring
+deaconry
+deadstarting
+deakin
+dealfish
+dearchive
+dearchived
+dearchives
+dearchiving
+deary
+deassignment
+deathtrap
+debag
+debarred
+debe
+debrecen
+debs
+debus
+debye
+decanal
+decane
+decanedioic
+decani
+decanoic
+decapolis
+decarboxylation
+decastyle
+deccan
+decelerometer
+decemvirate
+decenary
+decentralist
+decern
+decimetric
+decisionmaker
+declinometer
+declog
+declogged
+declogging
+declogs
+decluster
+declustered
+declustering
+declusters
+declutch
+declutched
+declutches
+declutching
+decoke
+decompound
+deconstruct
+decreet
+decubitus
+decurion
+decurrent
+decury
+dedal
+deek
+deemster
+deergrass
+deerhound
+deferable
+defilade
+definiendum
+definiens
+deflocculate
+degassed
+degasses
+deglutinate
+deglutition
+degression
+degust
+dehisce
+dehiscent
+dehorn
+dehra
+dehydrogenase
+dehydrogenate
+dehydroretinol
+deianira
+deicide
+deictic
+deific
+deiform
+deil
+deipnosophist
+deixis
+dejecta
+dekker
+dekko
+delacroix
+delagoa
+delaine
+delaunay
+dele
+deledda
+delegatory
+delgado
+delimeter
+delimeters
+deliquescence
+delitescence
+deltiology
+demavend
+deme
+dement
+demerara
+demesne
+demeter
+demibastion
+demicanton
+demilune
+demimondaine
+demimonde
+demirel
+demirelief
+demirep
+demisemiquaver
+demist
+demivierge
+demivolt
+demob
+democritus
+demoiselle
+demonism
+demonolater
+demonolatry
+demould
+demoulded
+demoulding
+demoulds
+dempster
+demulsify
+demy
+denarius
+denary
+dendral
+dendrochronologist
+dendrochronologists
+dendrochronology
+dendrogram
+dendrograms
+dengue
+denitrate
+deniz
+denning
+dentex
+dentilabial
+dentilingual
+dentoid
+denudate
+deodand
+deodar
+deontic
+deoxygenate
+departmentalism
+depasture
+dependant
+dependants
+depicture
+deplume
+depressomotor
+depside
+depurative
+deraign
+derailleur
+derain
+derbent
+deregister
+deregulatory
+derestrict
+derisible
+dermatitis
+dermatogen
+dermatoglyphics
+dermatome
+dermatophyte
+dermatophytosis
+dermatoplasty
+dermis
+dermoid
+dero
+derringer
+derry
+derv
+derwent
+derwentwater
+desai
+desalinate
+deschamps
+deschool
+descriptional
+descriptivism
+deselect
+deselected
+deselecting
+deselection
+deselections
+deselects
+desicate
+designational
+desinence
+deskill
+deskilled
+deskilling
+desman
+desmid
+desmoid
+desmoulins
+despenser
+despoilation
+despoliation
+despumate
+desquamate
+dessalines
+dessau
+dessertspoon
+dessiatine
+dessicator
+dessicators
+deterge
+detmold
+detrend
+detrended
+detrending
+detrends
+detrition
+detrude
+detruncate
+deurne
+deuteragonist
+deuteranope
+deuteride
+deuterogamy
+deutoplasm
+deutsch
+deva
+devanagari
+deventer
+devi
+devilfish
+dewan
+dewberry
+dewclaw
+dewsbury
+dextran
+dextrin
+dextroamphetamine
+dextroglucose
+dextrogyrate
+dextrorotation
+dextrorse
+dezhnev
+dhahran
+dhak
+dharna
+dhaulagiri
+dhobi
+dhole
+dhoti
+dhow
+diablerie
+diabolo
+diacaustic
+diacetylmorphine
+diacid
+diacidic
+diactinic
+diadelphous
+diadic
+diaeresis
+diagenesis
+diageotropism
+diaghilev
+diagraph
+diallage
+dialogism
+diamantine
+diamegnetism
+diamine
+diamondback
+diandrous
+dianetics
+dianoetic
+dianoia
+diapedesis
+diapente
+diaphoresis
+diaphoretic
+diaphototropism
+diaphysis
+diapir
+diarch
+dias
+diascope
+diastalsis
+diastase
+diastasis
+diastema
+diastyle
+diatessaron
+diathermancy
+diazine
+diazo
+diazole
+diazomethane
+diazonium
+dibasic
+dibbuk
+dibranchiate
+dibromide
+dicarbonyl
+dicast
+dicephalous
+dichasium
+dichlamydeous
+dichloroethanol
+dichromaticism
+dichromic
+dichroscope
+diclinous
+dicuss
+dicynodont
+diderot
+didgeridoo
+didymium
+didymous
+didynamous
+dieback
+diecious
+diefenbaker
+dien
+diencephalon
+dieppe
+diesis
+diestock
+diestrus
+diffusivity
+digamy
+digestant
+digged
+dight
+digitalism
+digitiform
+digitoxin
+digitron
+dihydric
+dihydrofolate
+dikkop
+diktat
+dilatancy
+dilatant
+dilly
+dimashq
+dimenhydrinate
+dimercaprol
+dimethylformamide
+dimethylpropane
+dimethylsulphoxide
+dimetric
+dimissory
+dimity
+dimorph
+dinar
+dineric
+dinge
+dinitrobenzene
+dinitrogen
+dink
+dinkum
+dinky
+dinoflagellate
+dinothere
+dio
+diodorus
+dioestrus
+diol
+diomede
+diomedes
+dionysius
+diophantus
+diopside
+dioptase
+dior
+dioxan
+dipeptide
+dipetalous
+diphenylamine
+diphenylhydantoin
+diphosgene
+diphyletic
+diphyllous
+diphyodont
+diplegia
+diploblastic
+diplocardiac
+diplococcus
+diplont
+diplopia
+diplopod
+diplosis
+diplostemonous
+dipnoan
+dippy
+diprotodont
+dipteral
+dipteran
+dipterocarpaceous
+dipterous
+diriment
+dirk
+dirndl
+disaccredit
+disafforest
+disbranch
+disbud
+discalced
+disciplinant
+disciplinarianism
+disclimax
+discobolus
+discommodity
+discommon
+disconsider
+discotheque
+discovert
+disembogue
+disembroil
+disenable
+disentail
+disentitle
+disentomb
+disentwine
+disepalous
+disforest
+dishpan
+dishtowel
+disject
+disjunctor
+disjunctors
+disoperation
+dispend
+dispermous
+dispersability
+dispersable
+dispersity
+dispersoid
+displayable
+disproven
+dissappear
+disseminule
+dissentious
+dissepiment
+distich
+distichous
+distrainee
+distringas
+distrito
+distrubuted
+disulfiram
+disulphate
+disulphide
+disulphuric
+dita
+ditheism
+dithionite
+dithionous
+dithyramb
+dithyrambic
+dittander
+dittany
+dittography
+diu
+diuresis
+diuretic
+div
+divaricator
+diversiform
+diverticulitis
+diverticulosis
+diverticulum
+divi
+divinylbenzene
+divisibly
+divulgate
+diyarbakir
+dizen
+djailolo
+djaja
+djajapura
+djambi
+djebel
+djerba
+djinni
+djokjakarta
+doab
+dobby
+dobla
+dobro
+dobruja
+dobsonfly
+dockland
+docklands
+doddle
+dodecagon
+dodecanese
+dodecanoic
+dodecaphonic
+dodecasyllable
+dodgem
+dodoma
+doek
+doenitz
+doeskin
+dogfishs
+dogger
+doggo
+dogman
+dogsbody
+dogvane
+dogy
+doh
+doha
+dojo
+dolabriform
+dolby
+dolerite
+dolichocephalic
+doline
+dollarbird
+dollarfish
+dollfuss
+dolman
+dolmas
+dolmen
+dolmetsch
+dolorimetry
+doloroso
+dom
+domett
+dominee
+dominie
+dominium
+dominoes
+donatello
+donatus
+donau
+donbass
+donga
+donjon
+donne
+donnert
+donny
+doodah
+doorframe
+doorn
+doornik
+dopa
+dordogne
+dordrecht
+dormobile
+dornbirn
+dornick
+dorp
+dorpat
+dorsad
+dorsiferous
+dorsigrade
+dorsiventral
+dorsoventral
+dorsum
+dort
+dorty
+dory
+dosshouse
+dost
+dotation
+dottle
+douai
+douala
+douay
+doublure
+doubs
+douc
+douceur
+doukhobors
+doum
+doura
+dourine
+douro
+douroucouli
+dovap
+dowable
+dowding
+dowery
+downcome
+downcomer
+downhole
+downpatrick
+downpipe
+downthrow
+downwash
+downweight
+downweighted
+downweighting
+downwell
+dowsabel
+doxastic
+doxographer
+doxology
+doxy
+doyen
+doyley
+drabbet
+draff
+draggletailed
+draghound
+dragoman
+dragonnade
+dragonroot
+dragrope
+drail
+dramatis
+drammen
+drancy
+drava
+drayhorse
+dree
+dreggy
+dreich
+dreiser
+drenthe
+dresden
+drillstock
+drin
+drinkwater
+dripstone
+drogheda
+drogue
+droit
+dromond
+drongo
+drongos
+droob
+dropsonde
+droshky
+druffen
+drunkeness
+drupelet
+dryopithecine
+drysdale
+drystone
+dubai
+dubbin
+dubrovnik
+dubuffet
+duccio
+duchamp
+dudeen
+duello
+duero
+dufy
+duhamel
+duiker
+duka
+dukhobors
+dulciana
+dulia
+dulosis
+dumas
+dumbell
+dumbells
+dumfries
+dumortierite
+dumyat
+duna
+dunaj
+dunant
+dundalk
+dundee
+dunfermline
+dungas
+dungeness
+dunite
+duniwassal
+dunkerque
+dunlin
+dunnage
+dunnakin
+dunnite
+dunno
+dunnock
+dunny
+dunois
+dunoon
+dunsany
+dunsinane
+dunstable
+dunstan
+dunt
+duntroon
+dunwoody
+duodenary
+duodenitis
+duotone
+dup
+duparc
+dupatta
+dupleix
+duplet
+dupondius
+duppy
+duque
+duramen
+durative
+durazzo
+durbar
+durex
+durgah
+durian
+durmast
+duro
+durra
+durst
+durum
+durzi
+dushanbe
+dustability
+dustable
+dustcart
+dustcarts
+dustmen
+dustsheet
+dustsheets
+duumvir
+duumvirate
+duvalier
+duvet
+dux
+dwale
+dybbuk
+dyfed
+dykes
+dynameter
+dynamicism
+dynamoelectric
+dyscrasia
+dysgraphia
+dysmenorrhoea
+dysphemism
+dyspnoea
+dysteleology
+dysthymia
+dysuria
+dytiscid
+dyula
+ealdorman
+ealing
+eanes
+earbash
+earhart
+earlap
+earless
+earom
+earthlight
+earthman
+earthmove
+earthnut
+earthrise
+eastmost
+eatage
+eblis
+ebon
+ebonite
+ebracteate
+ebullioscopy
+eburnation
+ecbatana
+ecbolic
+ecce
+ecchymosis
+ecclesall
+ecclesia
+ecclesiolatry
+eccrinology
+ecdysone
+ecevit
+echard
+echinate
+echinococcus
+echinoid
+echinus
+echoism
+echolalia
+echopraxia
+echovirus
+eck
+eckhart
+eclampsia
+eclipsis
+eclogite
+ecocide
+ecowas
+ecstacy
+ecthyma
+ectocrine
+ectoenzyme
+ectophyte
+ectopia
+ectoproct
+ectosarc
+ectype
+edale
+edam
+eddo
+eddystone
+ede
+edessa
+edgehill
+edgeworth
+edile
+edirne
+edom
+educatory
+educt
+eelpout
+eelworm
+eff
+effable
+effendi
+efficency
+effusiometer
+efta
+eftsoons
+egest
+egesta
+egis
+eigenfrequencies
+eigenfrequency
+eigenstructure
+eigensystem
+eigensystems
+eiger
+eightsome
+eirenic
+eirenicon
+eisegesis
+eisk
+elaeoptene
+elagabalus
+elam
+eland
+elasmobranch
+elasmosaur
+elastance
+elasticate
+elasticated
+elasticates
+elasticating
+elastoplast
+elat
+elaterid
+elaterin
+elaterium
+elbe
+elbrus
+elburz
+eld
+eldo
+eldritch
+elea
+elecampane
+electrochemist
+electrochemists
+electrograph
+electromerism
+electronvolt
+electrophone
+electrostriction
+electrotechnology
+electrotonus
+electrovalency
+electroviscous
+eleemosynary
+eleia
+elemi
+elenchus
+eleoptene
+eleusis
+elevon
+elflock
+elgon
+elidible
+elis
+elkhound
+eloign
+elsan
+elusion
+elyot
+embolectomy
+embolus
+embow
+embrectomy
+embryectomy
+embus
+emden
+emesis
+emetine
+emf
+emiscan
+emmen
+emmenagogue
+emmer
+emmetropia
+emotivism
+empale
+empassion
+empedocles
+emphasing
+empolder
+empyema
+empyrean
+empyreuma
+emulsoid
+enantiomorph
+enarthrosis
+enate
+encaenia
+enceladus
+encephalin
+encephalograph
+encephalography
+encephaloma
+encephalomyelitis
+enchiridion
+enchondroma
+enchorial
+encomiast
+encrinite
+enculturation
+enderby
+endo
+endocarditis
+endocardium
+endocarp
+endocentric
+endocranium
+endoneurium
+endopeptidase
+endosome
+endostosis
+endothecium
+endothelioma
+endothelium
+endover
+endplate
+endplay
+energid
+energumen
+enface
+enfeoff
+enfilade
+enforcable
+engadine
+engrail
+eniwetok
+ennage
+ennead
+enneagon
+enneahedron
+ennerdale
+ennervation
+ennis
+enniskillen
+ennius
+enosis
+enounce
+enow
+enphytotic
+enschede
+ensor
+entasis
+entebbe
+entelechy
+entellus
+enteritis
+enterogastrone
+enterokinase
+enteron
+enterostomy
+enterotomy
+enterovirus
+enthetic
+enthymeme
+entoblast
+entomic
+entomostracan
+entophyte
+entopic
+entozoic
+entozoon
+entrammel
+entrechat
+entremets
+entresol
+entryism
+entryist
+entryists
+entryname
+entrynames
+entrypoint
+entrypoints
+enugu
+enure
+enuresis
+enver
+enwomb
+enwreath
+enzed
+enzootic
+enzymolysis
+eobiont
+eogene
+eolian
+eolic
+eolipile
+eolith
+eolithic
+eonian
+eos
+eosin
+eosinophil
+epact
+epaminondas
+eparch
+eparchy
+epencephalon
+epenthesis
+epergne
+epexegesis
+ephah
+ephebe
+ephemeron
+ephesians
+ephod
+ephor
+epiblast
+epiboly
+epicalyx
+epicanthus
+epicedium
+epiclesis
+epicontinental
+epicotyl
+epicrisis
+epicritic
+epictetus
+epicycloidal
+epidaurus
+epideictic
+epidiascope
+epididymis
+epidote
+epidural
+epifocal
+epigastrium
+epigeal
+epigene
+epigenous
+epigeous
+epiglottis
+epigone
+epigynous
+epilate
+epileptoid
+epilimnion
+epimere
+epimerism
+epimorphosis
+epimysium
+epinasty
+epinephrine
+epineurium
+epiphenomenalism
+epiphenomenon
+epiphragm
+epiphytotic
+epirogeny
+epirus
+episcopacy
+episematic
+epispastic
+epistasis
+epistaxis
+episternum
+epithalamium
+epithelioma
+epizoic
+epizoon
+epizootic
+eponym
+eponymy
+epos
+epoxide
+epping
+eprom
+eproms
+epyllion
+equifrequent
+equifrequently
+equilibrant
+equimolecular
+equipartition
+equites
+equuleus
+eradiate
+erciyas
+erebus
+eremite
+erepsin
+erethism
+erevan
+erfurt
+ergastoplasm
+ergatocracy
+erhard
+ericaceous
+eridanus
+erinaceous
+eringo
+erinyes
+eris
+eristic
+erith
+erivan
+erk
+erlang
+erlangen
+erlanger
+erlking
+erne
+erotema
+erotology
+erotomania
+errhine
+errupt
+erruptive
+erst
+erubescence
+eruct
+erumpent
+erymanthus
+eryngo
+erysipelas
+erysipeloid
+erythema
+erythrism
+erythrite
+erythritol
+erythroblast
+erythroblastosis
+erythrocyte
+erythrocytometer
+erythromycin
+erythropoiesis
+erzgebirge
+erzurum
+esaki
+esau
+esbjerg
+escalope
+escaut
+eschalot
+escharotic
+eschatology
+escoffier
+escolar
+escribe
+escuage
+escudo
+escurial
+esdraelon
+eserine
+esher
+esky
+espalier
+esparto
+espoo
+esquimau
+esro
+essaouira
+essequibo
+essonite
+essonne
+estancia
+este
+esterase
+esterify
+esthonia
+estienne
+estipulate
+estival
+estivate
+estivation
+estoppel
+estovers
+estrade
+estradiol
+estragon
+estreat
+estremadura
+estrin
+estriol
+etaerio
+etalon
+etamine
+etaoin
+etchant
+eteocles
+eterne
+etesian
+ethene
+etherege
+etherify
+ethmoid
+ethnarch
+ethnobotany
+ethnogeny
+ethonone
+ethoxide
+ethoxyethane
+ethylbenzene
+ethyne
+etiolate
+etna
+etymon
+etzel
+eubacteria
+euboea
+eucaine
+eucalyptol
+euchlorine
+euchromatin
+eucken
+eudemon
+eudemonia
+eudemonics
+eudiometer
+eudoxus
+eugenol
+eulachon
+eulogia
+eupatrid
+eupen
+eupepsia
+euphausiid
+euphonic
+euphorbiaceous
+euphoriant
+euphrasy
+euphroe
+euploid
+eupnoea
+euratom
+eure
+eurhythmy
+euripus
+eurypterid
+eurythermal
+eurytropic
+eusebius
+eusporangiate
+eutectoid
+euxenite
+evacuant
+evaginate
+evanish
+evaporable
+evaporimeter
+evaporimeters
+evite
+exanthema
+exarate
+exarch
+exarchate
+excaudate
+exclaustration
+exeat
+executability
+exedra
+exemplum
+exequatur
+exequies
+exergue
+exigible
+eximious
+exine
+exitance
+exo
+exocarp
+exocentric
+exoderm
+exodontics
+exonym
+exopeptidase
+exophthalmic
+exophthalmos
+exoplasm
+exorable
+exosystem
+exosystems
+exotoxin
+expellant
+experientialism
+explicite
+explicitely
+explicity
+explictly
+exponible
+expressivity
+expresso
+exsanguine
+exsect
+exstrophy
+extention
+extentions
+extine
+extinguishant
+extracanonical
+extrados
+extraposition
+extremadura
+exuviae
+exuviate
+eyas
+eyebath
+eyeblack
+eyehook
+eyeleteer
+eyetie
+eyot
+eyots
+eyra
+eyrir
+eysenck
+fab
+fabaceous
+fabians
+fabius
+fabliau
+fabre
+facebar
+facetiae
+facia
+facilties
+faculae
+fadden
+fadge
+faecal
+faeces
+faenza
+faeroes
+faeroese
+faff
+fagaceous
+fahlband
+faial
+faille
+fairbanks
+fairweather
+fairyfloss
+faiyum
+falbala
+falchion
+falconiform
+falconine
+faldstool
+falerii
+fallal
+fallfish
+falseties
+falsety
+falsework
+falsies
+falster
+faltboat
+falun
+famagusta
+familist
+famulus
+fanagalo
+fandangle
+fanfani
+fanfaronade
+fangio
+fango
+fankle
+fanon
+fantail
+fantasm
+fantast
+fantoccini
+fantom
+faqir
+faradic
+faradism
+farandole
+farci
+farcy
+fard
+fardel
+farinaceous
+farinose
+farl
+farrier
+farriery
+farside
+fart
+fasciate
+fascine
+fash
+fashoda
+fastback
+fastigiate
+fatah
+fatidic
+faucal
+fauces
+faugh
+faunus
+fauteuil
+fauve
+faveolate
+favrile
+favus
+fayalite
+fayum
+feal
+fearnought
+featheredge
+featherstitch
+feaze
+febricity
+febrifacient
+febrifuge
+fechner
+feck
+fecula
+fedayee
+feedbag
+feeze
+feininger
+felafel
+fellmonger
+felloe
+felo
+felucca
+fencible
+fenestella
+fenestra
+fennelflower
+feoff
+feoffee
+feoffment
+ferbam
+fere
+feretory
+fergana
+feria
+fermanagh
+fernandel
+ferrari
+ferreous
+ferricyanic
+ferricyanide
+ferritin
+ferrocene
+ferrochromium
+ferroconcrete
+ferrocyanic
+ferrocyanide
+ferrofluid
+ferrol
+ferromagnesian
+ferromanganese
+ferrosilicon
+ferula
+ferule
+fesse
+festal
+festschrift
+fetial
+feticide
+fetiparous
+fetterlock
+feverfew
+feverwort
+feydeau
+fiacre
+fibrefill
+fibriform
+fibrinogen
+fibrinolysin
+fibrinolysis
+fibrinous
+fibro
+fibroblast
+fibrocement
+fibroid
+fibroin
+fibroma
+fibrositis
+fichte
+ficino
+ficticious
+fid
+fiddlewood
+fideicommissary
+fideicommissum
+fidelism
+fidge
+fidus
+fieldmouse
+fieldpiece
+fieldsman
+fieri
+fiesole
+fifa
+figuline
+figurant
+figwort
+filable
+filariasis
+filecard
+filefish
+filespace
+filestore
+filiate
+filicide
+fillagree
+fillmore
+filmset
+filmsetting
+filoplume
+filose
+filoselle
+fimble
+finable
+finalism
+finchley
+fineable
+finfoot
+fingerbreadth
+fingermark
+fingermarked
+fingermarking
+fingermarks
+fingerstall
+fingerstalls
+fingo
+finisterre
+finitary
+finnan
+finner
+finney
+finnmark
+fino
+finochio
+fiorin
+fipple
+firdausi
+fireback
+firebomb
+firebrat
+firecrest
+firedog
+firedrake
+firenze
+firepan
+firestorm
+firethorn
+firewarden
+firewater
+firkin
+firry
+fishbolt
+fishfinger
+fishgig
+fishskin
+fissipalmate
+fissiped
+fissirostral
+fistmele
+fistula
+fistulous
+fitchew
+fittipaldi
+fitzsimmons
+fiume
+fivepenny
+fivepins
+fizgig
+flabellum
+flagelliform
+flagellum
+flaggy
+flagrante
+flagstad
+flambeau
+flamborough
+flamelet
+flamelets
+flamingoes
+flamininus
+flaminius
+flamsteed
+flanch
+flannelette
+flashcube
+flashcubes
+flasket
+flatette
+flatfish
+flatfishes
+flatlet
+flatlets
+flatling
+flatmate
+flatmates
+flatways
+flaubert
+flaunch
+flavescent
+flavin
+flavine
+flavone
+flavoprotein
+flavopurpurin
+flavorous
+flaxman
+fleabite
+fleabites
+fleam
+fleapit
+fleapits
+fledgy
+flense
+fleurette
+fleury
+flexitime
+flexo
+fley
+fleysome
+flinders
+flitch
+flite
+floccose
+flocculant
+flocculants
+flocculent
+flocculus
+floccus
+flodden
+flong
+floreated
+flores
+florey
+floribunda
+florilegium
+florio
+flory
+flos
+flotow
+flowability
+flowerbed
+flowerless
+fluorene
+fluoric
+fluorometer
+fluorophore
+fluoroscope
+fluoroscopy
+fluorosis
+fluorosulphuric
+fluviomarine
+fluxmeter
+fluxmeters
+flyback
+flyblow
+flybook
+flyleaves
+flyte
+flytrap
+flytraps
+foch
+fock
+foehn
+foetal
+foetation
+foeticide
+foetor
+fogbow
+fogbows
+fogdog
+foggia
+foie
+foin
+folacin
+foliar
+folie
+foliolate
+foliose
+foliot
+foliots
+folium
+folkestone
+folketing
+folkmoot
+folliculin
+folsom
+fonda
+fondant
+fondants
+fonseca
+fontanelle
+fonteyn
+footpaths
+footplate
+footplates
+footsie
+footslogged
+footslogging
+footstalk
+footstock
+footworn
+foramen
+foraminifer
+forasmuch
+forby
+forcemeat
+fordone
+forecourse
+forecourt
+forecourts
+foredo
+foredoom
+foredoomed
+forefend
+foregut
+forehock
+foreshock
+forespent
+forestaysail
+foretooth
+foretop
+foretriangle
+forewent
+forewind
+forewing
+forfar
+forficate
+forgat
+forint
+forme
+formfeed
+formfeeds
+formicary
+formicate
+formication
+formulism
+formwork
+fornenst
+fornix
+forsee
+forseen
+forspeak
+forster
+forsterite
+fortaleza
+fortepiano
+fortis
+fortissimo
+fortuitism
+fortuna
+forwhy
+forzando
+fosbury
+fossa
+fosse
+fossette
+fossick
+fotheringhay
+foucault
+foucquet
+foulard
+fourpence
+fourpenny
+foveola
+fowey
+fowliang
+foxfire
+foyboat
+fractocumulus
+fractostratus
+frae
+fraenum
+fragonard
+fraise
+fraktur
+framboesia
+francolin
+franger
+frangipane
+frankalmoign
+frass
+fratchy
+fraxinella
+freebie
+freedomites
+freelance
+freemartin
+freemason
+freesheet
+freesheets
+freightliner
+fremantle
+fremitus
+frenulum
+frenum
+friarbird
+fricasee
+fringilline
+frippet
+frisket
+froe
+froebel
+frogfish
+frogged
+frogging
+froghopper
+frogmarch
+frogmouth
+frogspawn
+froissart
+frome
+fromenty
+fromm
+fronde
+frondescence
+frons
+frontenac
+frontlet
+frontogenesis
+frontolysis
+frontrunner
+frontwards
+frore
+froude
+frow
+frowst
+fructiferous
+frugivorous
+fruitarian
+frumentaceous
+frumenty
+frunze
+frustule
+frutescent
+fuad
+fubsy
+fuchsin
+fuckwit
+fucoid
+fugacious
+fugard
+fugato
+fugger
+fugio
+fukien
+fukuda
+fukuoka
+fukushima
+fula
+fulani
+fulgurite
+fulmar
+fulminic
+fulminous
+fulvous
+fumaric
+fumatorium
+fumatory
+fumitory
+funchal
+fundi
+fundus
+fundy
+funfair
+fungistat
+funicle
+furan
+furfur
+furfuraceous
+furfuraldehyde
+furfuran
+furioso
+furmenty
+furnivall
+furphy
+furred
+fusain
+fuscous
+fushih
+fushun
+fusionism
+fustanella
+fustic
+futtock
+futurist
+futurists
+futurology
+fuzzily
+fyke
+fylde
+fylfot
+fyn
+fyrd
+gabar
+gabelle
+gaberlunzie
+gabion
+gabionade
+gablet
+gabo
+gabor
+gaborone
+gaby
+gaddafi
+gadhelic
+gadid
+gadoid
+gadolinite
+gadroon
+gadsden
+gaea
+gaekwar
+gaffsail
+gagauzi
+gahnite
+gaikwar
+gaillard
+gaiseric
+gaitskell
+gaius
+galactagogue
+galactometer
+galactopoietic
+galah
+galangal
+galantine
+galanty
+galashiels
+galata
+galatians
+galba
+galbanum
+galbraith
+galea
+galileo
+galimatias
+galingale
+galiot
+galipot
+galle
+galleass
+gallfly
+gallia
+galliambic
+galliard
+gallice
+galligaskins
+gallimaufry
+gallinacean
+gallinaceous
+gallinas
+galliot
+gallipoli
+gallipot
+galliwasp
+gallnut
+galloglass
+galloon
+galloot
+gallous
+galoot
+galop
+galsworthy
+galvani
+galvanoscope
+galvanostat
+galvanotropism
+galvo
+galyak
+gama
+gamba
+gambado
+gambrel
+gambrinus
+gamelan
+gamesman
+gametangium
+gametocyte
+gametogenesis
+gametophore
+gametophyte
+gammadion
+gammer
+gamogenesis
+gamopetalous
+gamophyllous
+gamosepalous
+gamp
+gan
+gance
+gand
+gandalf
+gandhi
+gandy
+gandzha
+ganesa
+gangbang
+gangrel
+gangtok
+gangue
+ganister
+ganja
+ganof
+ganoid
+gansey
+gapeworm
+gapped
+garam
+garand
+garbanzo
+garbo
+garboard
+garboil
+gard
+garda
+gardant
+garderobe
+gardiner
+garfish
+garganey
+garget
+garnierite
+garonne
+garpike
+garrick
+gasconade
+gaselier
+gasiform
+gaskell
+gaskin
+gasman
+gasohol
+gasometry
+gasteropod
+gastralgia
+gastroenteric
+gastroenteritis
+gastroenterology
+gastroenterostomy
+gastrolith
+gastrology
+gastropod
+gastroscope
+gastrostomy
+gastrotomy
+gastrotrich
+gastrovascular
+gastrula
+gatehouse
+gatekeep
+gateshead
+gath
+gatling
+gatt
+gauffer
+gaugeing
+gauhati
+gaumless
+gauntry
+gaup
+gaussmeter
+gautama
+gautier
+gavage
+gavial
+gawp
+gaya
+gayomart
+gazankulu
+gazehound
+gaziantep
+gazump
+gdynia
+gean
+geanticline
+gearwheel
+geber
+gec
+gedact
+gedanken
+geelong
+gefilte
+gehlenite
+gelada
+gelatinoid
+gelibolu
+gell
+gelligaer
+gelt
+gemeinschaft
+gemmiparous
+gemmulation
+gemmule
+gemology
+gemot
+gen
+genappe
+generalism
+generalissimo
+genet
+genip
+genipap
+genitor
+genitourinary
+genizah
+genk
+genro
+gens
+genseric
+genstat
+gentianaceous
+gentianella
+genu
+geodynamics
+geognosy
+geoid
+geomechanics
+geometrid
+geophagy
+geosphere
+geostatic
+geostatics
+geosyncline
+geotaxis
+geotectonic
+gera
+gerah
+geraniaceous
+geranial
+geraniol
+geratology
+gerent
+gerenuk
+gerfalcon
+gerlachovka
+germander
+germanicus
+germanous
+germinant
+germiston
+gerona
+geronimo
+gerontological
+gers
+geryon
+gesellschaft
+gesso
+gest
+gestatorial
+gesualdo
+gey
+geyserite
+gezira
+ghat
+ghats
+gibberellic
+gibbsite
+gibeon
+gibli
+gibran
+gid
+gide
+gidgee
+gie
+giftwrap
+gifu
+gigabit
+gigabyte
+gigabytes
+gigaherz
+gigantomachy
+gigli
+gigue
+gilet
+gilgai
+gilgamesh
+gillies
+gillion
+gillray
+gillyflower
+gilolo
+gilsonite
+gilthead
+gimcrack
+gimel
+gimme
+gingiva
+gingivitis
+gink
+ginnel
+giorgione
+giotto
+gip
+gipon
+giraldus
+girandole
+girdlecake
+girgenti
+gironde
+gironny
+girosol
+gisarme
+gish
+gissing
+gittern
+giusto
+glabella
+glabrous
+glacialist
+gladbeck
+gladdon
+gladiate
+gladrags
+glaikit
+glair
+glaive
+glamorgan
+glandule
+glarus
+glaser
+glassman
+glastonbury
+glauce
+glauconite
+glebe
+gleeman
+gleet
+gleiwitz
+glencoe
+glendower
+glenoid
+glenrothes
+gley
+glia
+gliadin
+glissando
+glister
+gliwice
+globate
+globeflower
+globin
+globoid
+globose
+globuliferous
+glochidium
+glockenspiel
+glogg
+glomerate
+glomeration
+glomerule
+glomerulus
+glomma
+glossa
+glossator
+glossectomy
+glosseme
+glossitis
+glossography
+glossology
+glossopharyngeal
+glottic
+glottochronology
+gloze
+glucagon
+glucinum
+glucocorticord
+gluconeogenesis
+glucoprotein
+glucoside
+glucosuria
+glume
+gluon
+glutathione
+glutelin
+gluteus
+glyceric
+glycerophosphate
+glycogenesis
+glycolic
+glycolysis
+glyconeogenesis
+glycoside
+glycosuria
+glyoxaline
+glyphography
+glyptal
+glyptic
+glyptics
+glyptodont
+glyptography
+gnatcatcher
+gnathic
+gnathion
+gnathite
+gnathonic
+gnocchi
+gnosis
+gnotobiotics
+goalmouth
+goanna
+goatfish
+goatherd
+goatsbeard
+goatskin
+goatsucker
+gobbet
+gobi
+gobioid
+gobo
+gobstopper
+goby
+godard
+godavari
+godefroy
+goderich
+godown
+godroon
+gogga
+gogglebox
+goglet
+gogol
+gogra
+goldarn
+goldcrest
+goldeye
+goldilocks
+goldoni
+goldschmidt
+goldthread
+goliard
+goliardery
+golliwog
+gollop
+goloshes
+gombroon
+gomel
+gomorrah
+gompers
+gomphosis
+gomulka
+gomuti
+gonadotropin
+goncourt
+gondar
+gonfalon
+gonfalonier
+gongola
+gonidium
+goniometer
+gonk
+gonna
+gonococcus
+gonocyte
+gonof
+gonophore
+gonopore
+googly
+gook
+goole
+gooney
+goosander
+goosefoot
+goosegog
+goosegrass
+goosy
+gopak
+gorakhpur
+goral
+gorbals
+gorblimey
+goreng
+gorgerin
+gorgias
+gorgoneion
+gorica
+gorizia
+gormless
+gorsedd
+gosport
+gosse
+gossipmonger
+gossipmongers
+gossoon
+goster
+gotama
+gotta
+gouache
+gourami
+gourmont
+goutweed
+gowan
+gower
+gowk
+gowon
+goy
+gracile
+gracioso
+graduand
+gradus
+graecism
+graffito
+grahame
+graiae
+grainger
+grallatorial
+grama
+gramarye
+gramercy
+gramineous
+graminivorous
+grammatology
+grampian
+grampus
+granada
+granadilla
+granados
+grandaunt
+grandmaster
+grandmasters
+granduncle
+granduncles
+grangemouth
+granicus
+graniteware
+granitite
+granodiorite
+granolith
+granophyre
+granta
+granuloma
+granulose
+graphomotor
+grappa
+grappelli
+graptolite
+grasmere
+grassfinch
+grasshook
+grassquit
+grassroot
+gratian
+grattan
+gratulate
+graupel
+grav
+gravamen
+gravenhage
+gravettian
+gravimetrical
+graz
+gree
+greegree
+greeley
+greenaway
+greenbottle
+greenbrier
+greenfinch
+greenfly
+greengage
+greenhead
+greenheart
+greenock
+greenockite
+greensand
+greenshank
+greensickness
+greenstick
+greenstone
+greenstuff
+greige
+gremial
+gressorial
+greuze
+greyback
+greybeard
+greyhen
+greystones
+greywacke
+gribble
+griddlecake
+gridfile
+gridfiles
+grillparzer
+grilse
+grimalkin
+grimsby
+grindelwald
+grindery
+grisaille
+griseofulvin
+griseous
+grisette
+grishun
+griskin
+grisons
+grivation
+grivet
+grockle
+grodno
+grogram
+gromyko
+groningen
+gropius
+gros
+groschen
+grosgrain
+grosseteste
+grosswardein
+grosz
+grot
+grote
+grotius
+groundage
+groundsill
+groundsman
+groundspeed
+groundswell
+groupwork
+grouty
+grovet
+groyne
+grozing
+grozny
+grugru
+grumous
+grundy
+grysbok
+guacharo
+guaco
+guadalajara
+guadalcanal
+guadalquivir
+guadiana
+guaiacum
+guan
+guanabara
+guanaco
+guanajuato
+guanase
+guanosine
+guardafui
+guarneri
+guayaquil
+guayule
+gubbins
+gudeance
+gudrun
+guelders
+guenon
+guesthouse
+guidon
+guienne
+guilloche
+guipure
+guiscard
+guitarfish
+guizot
+gujranwala
+gulag
+gulags
+gular
+gulbenkian
+gulden
+gulfweed
+gumma
+gummite
+gummosis
+gummous
+gumshield
+gumtree
+gunge
+gunnel
+gunpaper
+gunstock
+gunter
+guntur
+gunwale
+gunyah
+gur
+gurdwara
+gurgitation
+gurglet
+gurjun
+gurkhali
+gurnard
+gustavo
+gutbucket
+guthrun
+gutta
+guv
+guyenne
+guyot
+gwalior
+gwelo
+gwent
+gwynedd
+gwyniad
+gyani
+gybe
+gymnasiarch
+gymnasiast
+gymslip
+gynaeceum
+gynaecocracy
+gynaecoid
+gynaecomastia
+gynandrous
+gynarchy
+gynecium
+gyniatrics
+gynophore
+gyronny
+gyrose
+gyrostatic
+gyrostatics
+gyve
+habu
+hachure
+hackamore
+hackbut
+hadaway
+hadhramaut
+hadj
+hadji
+hadrosaur
+hae
+haecceity
+haeckel
+haem
+haemachrome
+haemacytometer
+haemagglutinate
+haemagglutinin
+haemagogue
+haemal
+haematein
+haematemesis
+haematic
+haematin
+haematinic
+haematite
+haematoblast
+haematocele
+haematocrit
+haematocryal
+haematogenesis
+haematogenous
+haematoid
+haematological
+haematology
+haematolysis
+haematoma
+haematopoiesis
+haematosis
+haematothermal
+haematoxylin
+haematozoon
+haematuria
+haemic
+haemin
+haemochrome
+haemocoel
+haemocyanin
+haemocyte
+haemocytometer
+haemodialysis
+haemoflagellate
+haemoglobin
+haemoglobinuria
+haemoid
+haemolysin
+haemolysis
+haemophile
+haemophilia
+haemophiliac
+haemophilic
+haemopoiesis
+haemoptysis
+haemorrhage
+haemorrhagic
+haemorrhoidectomy
+haemorrhoids
+haemostasis
+haemostat
+haemostatic
+haeres
+haftarah
+hagar
+hagbut
+hagfish
+haggadah
+haggai
+hagiarchy
+hagiocracy
+hagiographer
+hagiolatry
+hagiology
+hagioscope
+hahnemann
+haidar
+haig
+haik
+haile
+hainaut
+haiphong
+hairball
+hairgrip
+hairif
+hairnet
+hairtail
+hairweaving
+hairworm
+hajj
+hake
+hakim
+hakluyt
+hakodate
+halafian
+halakah
+halal
+halation
+halberd
+halcyone
+haldane
+haleakala
+halesowen
+halfbeak
+halfwit
+halicarnassus
+hallah
+hallam
+hallel
+hallux
+halm
+halmahera
+halmstad
+halobiont
+haloid
+halophyte
+halothane
+hals
+haltemprice
+hama
+hamadryad
+hamadryas
+hamamatsu
+hamamelidaceous
+hambletonian
+hame
+hamelin
+hameln
+hamersley
+hamhung
+hamilcar
+hamm
+hammerfest
+hammersmith
+hammerstein
+hammurabi
+hampden
+hampstead
+hamshackle
+hamsun
+hamulus
+hamza
+hanaper
+hanau
+handbarrow
+handbell
+handbrake
+handfeed
+handleability
+handstroke
+hangbird
+hangchow
+hankerchief
+hankow
+hannover
+hanratty
+hapax
+haphtarah
+haplite
+haplography
+haplosis
+hapten
+hapteron
+haptic
+hapto
+haptotropism
+harakiri
+harald
+harambee
+harappa
+harar
+hardecanute
+hardhack
+hardicanute
+hardie
+hardily
+harebell
+hargeisa
+haricot
+harijan
+harikari
+harmattan
+harmonist
+harmonograph
+harmonographs
+harmotome
+harney
+harpenden
+harquebus
+harquebusier
+harrar
+harrogate
+harslet
+hartal
+harte
+hartebeest
+harthacanute
+hartlepool
+hartnell
+hartree
+hartshead
+harun
+haruspex
+harvestmen
+harwell
+harwich
+haryana
+harz
+hasa
+hasdrubal
+hashemite
+hask
+haslet
+hassan
+hasselt
+hatchback
+hatpin
+hatshepsut
+haubergeon
+hauberk
+haugh
+haulm
+hauraki
+haustellum
+haustorium
+havant
+havel
+havelock
+havildar
+havre
+hawes
+hawfinch
+hawhaw
+hawkbill
+hawksbill
+hawkweed
+haworth
+hawse
+hawsehole
+hawsepipe
+haybox
+hazelhen
+hazlitt
+headlamp
+headrace
+headrail
+headreach
+headscarf
+headsquare
+headward
+headwards
+heald
+healds
+hearths
+heartworm
+heathberry
+heathfowl
+heaume
+hebbel
+hebephrenia
+hebetate
+hebetic
+heckelphone
+hectocotylus
+hedjaz
+heehaw
+heelpost
+heenan
+heerlen
+heffer
+hegira
+hegumen
+heh
+heiduc
+heilbronn
+heilungkiang
+heirdom
+heitiki
+heitler
+hejira
+hekate
+hekla
+hel
+helichrysum
+helicline
+helicograph
+heliolithic
+heliotherapy
+heliotropin
+heliotype
+hellbent
+helle
+hellery
+helles
+helmand
+helminth
+helminthiasis
+helminthic
+helminthology
+helmont
+helpmann
+helsingborg
+helvellyn
+hemel
+hemelytron
+hemeralopia
+hemialgia
+hemianopsia
+hemicellulose
+hemichordate
+hemicycle
+hemidemisemiquaver
+hemielytron
+hemiola
+hemipode
+hemipteran
+hemipterous
+hemispheroid
+hemistich
+hemiterpene
+hemstitch
+henbit
+hencoop
+hendecagon
+hendecahedron
+henge
+hengelo
+hengist
+henhouse
+hepcat
+hepplewhite
+hepta
+heptad
+heptadecanoic
+heptahedron
+heptamerous
+heptangular
+heptarchy
+heptastich
+heptatriene
+heptavalent
+heptose
+hepworth
+heraclea
+heracles
+herakleion
+herby
+hercegovina
+herculaneum
+hereat
+heredes
+hereditable
+hereditist
+hereinto
+heresiarch
+hereward
+heriot
+herisau
+herl
+herm
+hermannstadt
+hermon
+hermosillo
+hermoupolis
+herne
+herniorrhaphy
+herod
+herodias
+herophilus
+herrick
+herriot
+herstmonceux
+hesiod
+hesperidin
+hesperidium
+hestia
+hetaera
+hetaerism
+heterocercal
+heterochromatic
+heterochromatin
+heterochromatins
+heterochromosome
+heterochromous
+heteroclite
+heterodactyl
+heterodont
+heterogenous
+heterography
+heterogynous
+heterolecithal
+heterologous
+heteromerous
+heteronym
+heteroplasty
+heterosporous
+heterostyly
+heterotaxis
+heterothallic
+heterotopia
+heth
+hevelius
+hevesy
+hexachloroethane
+hexachlorophene
+hexachord
+hexacosanoic
+hexadecane
+hexaemeron
+hexamerous
+hexangular
+hexanoic
+hexapla
+hexapody
+hexastich
+hexastyle
+hexavalent
+hexene
+hexone
+hexosan
+hexose
+hexyl
+hexylresorcinol
+heyduck
+heyerdahl
+hibernaculum
+hic
+hiddenite
+hiemal
+hieracosphinx
+hierocracy
+hierodule
+hierogram
+hierology
+hierophant
+highchair
+highjack
+highlife
+highveld
+hijaz
+hijinks
+hilla
+hillery
+hillfort
+hilliard
+hillingdon
+hilus
+hilversum
+himachal
+himalayas
+himeji
+himmler
+hin
+hinckley
+hindgut
+hindoo
+hindustan
+hinny
+hinshelwood
+hipparch
+hipparchus
+hippolyta
+hiragana
+hircine
+hiri
+hirohito
+hiroshige
+hirundine
+hispid
+histiocyte
+histogen
+histogenesis
+histoid
+histone
+historiated
+hitparade
+hmso
+hoactzin
+hoad
+hoarhound
+hoatching
+hoatzin
+hobbema
+hochhuth
+hockney
+hodden
+hodeida
+hodman
+hodometer
+hoek
+hofei
+hofmannsthal
+hofuf
+hogarth
+hogg
+hogged
+hogmanay
+hognosed
+hogtie
+hogue
+hogweed
+hohenlinden
+hohenlohe
+hohenstaufen
+hoick
+hoicks
+hoiden
+hokkaido
+hokku
+hokusai
+holarctic
+holbein
+holinshed
+holkar
+holmic
+holocaine
+holoenzyme
+holofernes
+holoplankton
+holothurian
+holp
+holpen
+hols
+holyhead
+holyoake
+holytide
+homebuild
+homecome
+homecraft
+homeopaths
+homeown
+homocentric
+homochromous
+homocyclic
+homodont
+homogenous
+homophobe
+homophobes
+homotaxis
+homothermal
+honan
+honecker
+honegger
+honewort
+honeybunch
+honeysucker
+honiara
+hoo
+hoofbound
+hoogh
+hooghly
+hooke
+hooknose
+hoopoe
+hoopoes
+hoovered
+hoovering
+hoovers
+hopeh
+hoplology
+hoppus
+hopsack
+horae
+horal
+hordein
+horeb
+horme
+hormuz
+hornbook
+hornby
+hornfels
+hornstone
+horologe
+horologium
+horoscopy
+horripilation
+horsa
+horsebox
+horseboxs
+horseleech
+horseleeches
+horseriding
+horst
+horta
+horthy
+horticulturalist
+hortus
+hosea
+hosier
+hospitalet
+hospitaller
+hospodar
+hosteller
+hostelling
+hostie
+hotien
+hotplate
+hotpot
+hotspur
+hottie
+houdon
+houmous
+hounslow
+housebuilding
+housecarl
+housel
+houseleek
+houseleeks
+houseline
+housemaster
+housemasters
+housman
+houting
+hovercraft
+hoverport
+hovertrain
+hovertrains
+howdah
+howitzer
+howlet
+howrah
+howtowdie
+hoxha
+hoylake
+hradec
+hrvatska
+hsi
+hsian
+hsiang
+hsining
+hsinking
+hua
+huambo
+huang
+hubble
+hubli
+huckel
+huckle
+hucklebone
+huelva
+huesca
+hufuf
+huggermugger
+hughie
+huhehot
+hula
+hulme
+humber
+humberside
+humblebee
+hunan
+hungnam
+huns
+huntingdon
+hunyadi
+huon
+hupeh
+huppah
+hurds
+hurstmonceux
+hus
+husain
+husein
+hushaby
+huss
+hussein
+husserl
+hutchie
+hutment
+hutu
+huygens
+huysmans
+hwang
+hwyl
+hyaluronic
+hydantoin
+hydathode
+hydatid
+hyderabad
+hydnocarpate
+hydnocarpic
+hydracid
+hydrastinine
+hydrazoic
+hydria
+hydriodic
+hydrobromic
+hydrocele
+hydrocellulose
+hydrocoral
+hydrocortisone
+hydrogenolysis
+hydrogenous
+hydrograph
+hydrolyte
+hydromedusa
+hydromel
+hydrometallurgy
+hydrometeor
+hydronaut
+hydrophilous
+hydropower
+hydroquinone
+hydrostat
+hydrosulphate
+hydrosulphide
+hydrosulphurous
+hydrotaxis
+hydrotherapeutics
+hydroxonium
+hydroxylamine
+hyetograph
+hyetography
+hygristor
+hygrophilous
+hygrostat
+hyksos
+hylomorphism
+hylophagous
+hylotheism
+hylozoism
+hymenopteran
+hymenopterous
+hymettus
+hymnist
+hyoid
+hyoscyamine
+hypabyssal
+hypaesthesia
+hypaethral
+hypallage
+hypanthium
+hyperaemia
+hyperbaton
+hypercatalectic
+hypercorrect
+hypercorrection
+hyperdulia
+hyperextension
+hyperfocal
+hyperglycaemia
+hyperinsulinism
+hyperion
+hyperkinesia
+hypermarket
+hyperpnoea
+hyperpyrexia
+hyperstability
+hyperstable
+hypersthene
+hyperterm
+hyperterms
+hypervitaminosis
+hypesthesia
+hypethral
+hyphae
+hypnology
+hypnopaedia
+hypnopompic
+hypoacidity
+hypoblast
+hypochondrium
+hypocotyl
+hypoderm
+hypoeutectic
+hypogastrium
+hypogeal
+hypogene
+hypogenous
+hypogeous
+hypogeum
+hypoglossal
+hypoglycaemia
+hypognathous
+hypogynous
+hypoid
+hypolimnion
+hypomania
+hyponasty
+hyponitrite
+hyponitrous
+hypophosphate
+hypophosphite
+hypophosphoric
+hypophosphorous
+hypophyge
+hypophysis
+hypopituitarism
+hypoplasia
+hypoploid
+hypopnoea
+hyposthenia
+hypostyle
+hyposulphite
+hyposulphurous
+hypotaxis
+hypothec
+hypoxanthine
+hyracoid
+hyrax
+hyrcania
+hyssop
+hysterogenic
+hysteroid
+hysterotomy
+hystricomorph
+iamb
+iata
+iatric
+ibadan
+ibarruri
+ibert
+ibibio
+ibiza
+ichang
+ichinomiya
+ichnography
+ichnology
+ichor
+ichthyic
+ichthyoid
+ichthyolite
+ichthyology
+ichthyophagous
+ichthyosaur
+ichthyosis
+iconium
+iconomatic
+iconostasis
+icterus
+ictinus
+ictus
+ide
+ideatum
+identifers
+identikit
+ideosyncrasies
+ideosyncrasy
+idioblast
+idiopathy
+idiophone
+idiosyncracies
+idiosyncracy
+idocrase
+idolum
+idun
+ieper
+ieyasu
+ife
+igbo
+igdrasil
+igfet
+ignis
+ignitability
+ignoratio
+ignotum
+igraine
+ihram
+ikan
+ikebana
+ikeja
+ikhnaton
+ilea
+ileac
+ileitis
+ileostomy
+ilesha
+ileus
+ilex
+ilia
+iliamna
+iligan
+ilion
+ilium
+ilkley
+illampu
+illawarra
+illich
+illimani
+illinium
+illocution
+illude
+illyria
+illyricum
+ilmen
+iloilo
+ilorin
+imagen
+imbros
+iminourea
+immersionism
+immobilism
+immortelle
+immoveables
+immunoassay
+immunoglobulin
+immunomicrosphere
+immunoreaction
+impanation
+imparipinnate
+imparisyllabic
+impaste
+impasto
+impearl
+impeccant
+impedimenta
+impennate
+imperium
+imperscriptible
+impetigo
+imphal
+impi
+implacental
+impolder
+impolicy
+imponderabilia
+imponent
+imposable
+impostume
+impower
+impresa
+imprescriptible
+impressure
+imprest
+improbity
+imroz
+inappellable
+inapprehensive
+inarch
+inartificial
+inbeing
+incaparina
+incapsulate
+incardinate
+incensory
+inchmeal
+inchon
+incipit
+incisure
+incluse
+incomprehensive
+incrementation
+incunabula
+indaba
+indeces
+indene
+indetermine
+indexation
+indigestive
+indigoid
+indiscernability
+indo
+indoleacetic
+indolebutyric
+indomethacin
+indophenol
+indore
+indorsee
+indoxyl
+indra
+indre
+induna
+induplicate
+indusium
+indy
+inearth
+inequable
+inerrable
+inescutcheon
+inessive
+inextirpable
+infallibilism
+infante
+infare
+infeudation
+infibulate
+infight
+infill
+infold
+infracostal
+infralapsarian
+infulae
+infundibuliform
+infundibulum
+infuscate
+infusionism
+inge
+ingeminate
+ingenerate
+ingesta
+ingleborough
+inglenook
+ingoing
+ingolstadt
+ingraft
+ingravescent
+ingres
+ingulf
+inhambane
+inhaul
+inhesion
+inkberry
+inkblot
+inlace
+inmesh
+inmigrant
+inniskilling
+innoxious
+innsbruck
+innumerate
+innutrition
+inoculable
+inodorous
+inofficious
+inqilab
+insalivate
+inscape
+insectarium
+inshrine
+insipience
+insnare
+insomuch
+instalation
+installant
+inswing
+intarsia
+integrant
+integratable
+intendancy
+interagency
+interbedded
+interchannel
+interconnectable
+interconsole
+interflow
+interfluent
+interfluve
+intergranal
+interjacent
+interlaken
+interlap
+interlay
+interlocation
+interlunation
+intermesh
+intermigration
+intermittency
+interosculate
+interpage
+interparticle
+interpellant
+interphone
+interpolant
+interprete
+interpretes
+interradial
+interrex
+interrobang
+interrogable
+interstratify
+intersystem
+intertexture
+intertrigo
+intracoastal
+intranational
+intranuclear
+intrasocietal
+intratelluric
+intravasation
+intuc
+intuitivism
+intwine
+inuit
+inurbane
+invercargill
+involucel
+involutory
+invultuation
+inwrap
+inyala
+iodism
+iodometry
+iolite
+iona
+ionone
+ionopause
+iontophoresis
+iphigenia
+ipoh
+ipsambul
+ipsus
+ipswich
+iqbal
+iquique
+iquitos
+iracund
+irade
+irbid
+irbil
+irenicon
+irian
+iridectomy
+irido
+iridotomy
+iritis
+ironbark
+ironfounding
+irradiant
+irrelievable
+irremissible
+irretentive
+irriguous
+irtysh
+isagoge
+isagogics
+isallobar
+isar
+isarithmic
+isatin
+isauria
+ischaemia
+ischia
+ischium
+isentropically
+isherwood
+islay
+ismailia
+iso
+isoamyl
+isobath
+isocept
+isochor
+isochroous
+isocracy
+isocrates
+isocyanic
+isocyanide
+isodiametric
+isodiaphere
+isodimorphism
+isodynamic
+isoelectric
+isoelectronic
+isoenergetic
+isogamete
+isogenous
+isogeotherm
+isogloss
+isogon
+isogonic
+isohel
+isohyet
+isolecithal
+isoleucine
+isolex
+isoline
+isologous
+isophone
+isopod
+isoprene
+isopropyl
+isorhythmic
+isosceles
+isoseismal
+isosmotic
+isospondylous
+isostasy
+isosteric
+isotactic
+isothere
+isotone
+isotron
+isotropical
+israfil
+issachar
+issus
+istana
+isthmian
+istle
+istria
+itacolumite
+itaconic
+italicity
+italicy
+ithunn
+ithyphallic
+iulus
+iviza
+ixtle
+iyar
+iyeyasu
+izmir
+izmit
+iznik
+izzard
+jacamar
+jacdaw
+jackeroo
+jackfish
+jackfruit
+jackshaft
+jacksmelt
+jacksnipe
+jackstay
+jackstraws
+jaconet
+jadeite
+jael
+jaffa
+jaffna
+jaguarondi
+jahveh
+jahweh
+jailhouse
+jaipur
+jalap
+jalapa
+jalisco
+jambeau
+jambi
+jambo
+jammu
+jammy
+jamnagar
+jampan
+jamshedpur
+jamshid
+jana
+janata
+janina
+jarl
+jarp
+jarrah
+jarrow
+jarry
+jarvey
+jassy
+jato
+javari
+jawan
+jawara
+jawbreak
+jaxartes
+jayawardena
+jaywalk
+jebel
+jedda
+jefe
+jehad
+jehol
+jehoshaphat
+jehu
+jekyll
+jellaba
+jellicoe
+jellify
+jellybean
+jemadar
+jemappes
+jembe
+jequirity
+jerba
+jerbil
+jerboa
+jerez
+jerid
+jerreed
+jevons
+jewelfish
+jewfish
+jhansi
+jhelum
+jibbons
+jibouti
+jidda
+jiggermast
+jihad
+jillaroo
+jillion
+jilolo
+jinghis
+jinja
+jinnah
+jipijapa
+jissom
+jitterbugger
+jitterbugging
+jiujitsu
+jobcentre
+jobcentres
+jobname
+jocko
+jodhpuri
+jodrell
+joffre
+jogged
+jogjakarta
+johore
+jokjakarta
+jollify
+jolo
+jongleur
+jonnock
+jook
+joppa
+jordaens
+jorum
+jos
+josquin
+jota
+jotter
+jotun
+joual
+journalled
+jowett
+joypop
+juba
+jubbah
+jube
+judezmo
+judicative
+judicator
+judogi
+judoka
+jugal
+jugfet
+juggins
+juglandaceous
+jugulate
+jugum
+jugurtha
+juiz
+jullundur
+jumbuck
+jumna
+juncaceous
+jungfrau
+junkman
+jupon
+juratory
+juryman
+jus
+justiceship
+justiciary
+justle
+juvenal
+kabalega
+kabaragoya
+kabbala
+kabob
+kachang
+kachina
+kadi
+kadiyevka
+kaduna
+kaffirs
+kafiristan
+kagera
+kagoshima
+kagu
+kaiak
+kaieteur
+kaif
+kaifeng
+kail
+kailyard
+kain
+kainogenesis
+kairouan
+kaka
+kakapo
+kakemono
+kaki
+kalat
+kalends
+kaleyard
+kalgan
+kalgoorlie
+kali
+kalian
+kalidasa
+kalif
+kalimantan
+kalinin
+kaliningrad
+kalisz
+kaliyuga
+kalmar
+kalong
+kalpa
+kalpak
+kalsomine
+kaluga
+kama
+kamakura
+kamala
+kamasutra
+kame
+kamerun
+kamet
+kami
+kampong
+kampuchea
+kamseen
+kana
+kanamycin
+kananga
+kanara
+kanazawa
+kanchenjunga
+kanchipuram
+kandahar
+kandy
+kanga
+kangwane
+kannada
+kano
+kanpur
+kansu
+kantar
+kanu
+kanzu
+kaohsiung
+kaolack
+kaoliang
+kaon
+kapellmeister
+kaph
+karabiner
+karafuto
+karaganda
+karakoram
+karakorum
+karamanlis
+karbala
+karelia
+kariba
+karnataka
+karoo
+kaross
+kart
+karyogamy
+karyokinesis
+karyolymph
+karyolysis
+karyoplasm
+karyosome
+karyotin
+karyotype
+kasai
+kasbah
+kasher
+kashgar
+kashmir
+kassa
+kassala
+kassel
+kat
+katabasis
+katabolism
+katakana
+katanga
+katar
+kathak
+katharevusa
+katharsis
+kathiawar
+katmai
+katsina
+kattegat
+katzenjammer
+kauai
+kaunas
+kaunda
+kauri
+kaveri
+kawasaki
+kayseri
+kazachok
+kazakh
+kazan
+kazantzakis
+kazbek
+kea
+kean
+kearney
+keble
+keck
+ked
+kedah
+kedge
+kedgeree
+kediri
+kedron
+keef
+keelung
+keepnet
+kef
+keffiyeh
+kegler
+keister
+keitel
+keitloa
+kekkonen
+kelantan
+keloid
+kelpie
+kelt
+kelter
+kemal
+kemble
+kemerovo
+kempe
+kempis
+kempt
+kenaf
+kendal
+kendo
+kenogenesis
+kenosis
+kenspeckle
+kente
+kentledge
+kenyatta
+keos
+kep
+kerala
+keramic
+keramics
+keratin
+keratitis
+keratogenous
+keratoid
+keratoplasty
+keratose
+keratosis
+kerb
+kerbaya
+kerbela
+kerbing
+kerbstone
+kerch
+kerf
+kerguelen
+kerkrade
+kerman
+kermes
+kermis
+kermits
+kero
+kerouac
+kersey
+kerseymere
+kesselring
+kesteven
+ketonuria
+ketoxime
+kevel
+kew
+kewpie
+kex
+keytop
+keytops
+kickdown
+kicksorter
+kicktail
+kidd
+kiddle
+kidron
+kief
+kike
+kilung
+kimberley
+kimberlite
+kina
+kinabalu
+kinase
+kincardine
+kinchinjunga
+kincob
+kinematograph
+kingbolt
+kingcraft
+kingcup
+kingwana
+kinin
+kino
+kioto
+kirtle
+kitbag
+kitbags
+kitchenless
+kitenge
+kithara
+kittiwake
+kitwe
+kiushu
+klaipeda
+klepht
+klieg
+klong
+klootchman
+klopstock
+knackwurst
+knag
+knap
+knar
+knawel
+knickpoint
+kniferest
+knop
+knossos
+knotgrass
+knotwork
+knurly
+koa
+koan
+kob
+kobarid
+kobe
+kobold
+kochi
+kodok
+koel
+kofta
+koftgar
+kofu
+kokura
+kolar
+kolding
+koniology
+konya
+koodoo
+koph
+korfball
+koto
+kurchatovium
+kyanite
+kylin
+kylix
+kyloe
+kymograph
+kymric
+kymry
+kyphosis
+kythera
+labarum
+labe
+labefaction
+labiche
+labionasal
+labiovelar
+lablab
+labret
+labroid
+labrum
+labuan
+labyrinthodont
+laccolith
+lacedaemon
+lacerant
+lacertilian
+lachlan
+lachryma
+lachrymatory
+laclos
+laconia
+lactalbumin
+lactam
+lactary
+lactescent
+lactiferous
+lactoflavin
+lactometer
+lactophenol
+lactoprotein
+lactoscope
+ladislaus
+ladoga
+ladrone
+ladyfy
+ladysmith
+ladysnow
+laertes
+laevogyrate
+laevorotatory
+laevulin
+laevulose
+laforgue
+lagan
+lagena
+lagerkvist
+lah
+laik
+lairy
+laius
+lala
+lalang
+lalapalooza
+lallans
+lallation
+lamartine
+lambdacism
+lambdoid
+lambkin
+lambrequin
+lamellicorn
+lamellirostral
+lamina
+laminitis
+lammergeier
+lampas
+lampedusa
+lampern
+lampeter
+lampholder
+lampion
+lamppost
+lampposts
+lamprophyre
+lampshade
+lampshades
+lanark
+lanate
+lancejack
+lancelot
+lancewood
+lanchow
+landammann
+landeshauptmann
+landgrave
+landgraviate
+landgravine
+landloper
+landor
+landowska
+landrace
+landscapist
+landscapists
+landseer
+landshark
+landshut
+landsknecht
+landtag
+landwaiter
+lanfranc
+langlauf
+langouste
+langrage
+langres
+langsyne
+langue
+languedoc
+languet
+laniard
+laniary
+laniferous
+lankester
+lanner
+lanneret
+lanose
+lansquenet
+lanthorn
+lanugo
+laoag
+laodicea
+laomedon
+laotze
+lapidate
+lapidify
+lapillus
+lapis
+lapsus
+laptev
+lardon
+largen
+larine
+larisa
+larmor
+larn
+larnax
+larousse
+larrigan
+larrikin
+larrup
+larum
+larwood
+laryngotomy
+lascaux
+lashio
+lashkar
+lasker
+lasket
+lassa
+lassalle
+lassus
+lat
+lateroversion
+lathi
+lathy
+latifundium
+latimer
+latium
+latria
+lattermost
+lauda
+lauraceous
+laurasia
+lauric
+laurier
+laurustinus
+lauryl
+lautrec
+lav
+laval
+lavolta
+lawbreak
+lawes
+lawgive
+lawks
+lawmake
+laxey
+layamon
+layard
+laycock
+layshaft
+lazaretto
+lazio
+lazuli
+lazulite
+lazurite
+leadbelly
+leadwort
+leafcutter
+leafletting
+leakey
+leal
+leaseback
+leat
+leatherhead
+leatherjacket
+leatherwood
+leavis
+leben
+lebkuchen
+leblanc
+lebowa
+lebrun
+lecce
+lech
+lecky
+leconte
+lector
+lecythus
+leet
+leeuwarden
+lefthand
+lefthanded
+leftwing
+leftwinger
+leftwingers
+legaspi
+legnica
+legumin
+lehmann
+lehmbruck
+lehr
+leiria
+leishmaniasis
+leister
+leitrim
+leix
+lek
+lekker
+lely
+leman
+lemniscate
+lemnos
+lempira
+lemuroid
+lenglen
+lengthman
+lentamente
+lentic
+lenticel
+lentigo
+leoben
+lepaya
+lepidopteran
+lepidote
+lepidus
+lepontine
+leporid
+leporine
+leprosarium
+leprose
+leptophyllous
+leptosome
+leptospirosis
+leptotene
+lesbos
+lesseps
+letchworth
+letterset
+leucas
+leuco
+leucocratic
+leucocyte
+leucocytosis
+leucoderma
+leucomaine
+leucopenia
+leucoplast
+leucopoiesis
+leucorrhoea
+leucotomy
+leuctra
+leukas
+leuven
+levalloisian
+leverrier
+leviable
+levkas
+lewes
+lexeme
+lexicology
+lexigraphy
+lexis
+liard
+liase
+liason
+libau
+libava
+libeccio
+liberec
+liberticide
+libia
+lichenin
+lichenology
+lichi
+liddell
+lidice
+liebig
+liebknecht
+liegeman
+liegnitz
+lienal
+lientery
+liestal
+lietuva
+liffey
+liftboy
+liftoff
+ligan
+liger
+ligeti
+ligniform
+lignocaine
+ligroin
+ligula
+liguria
+lii
+likasi
+liklihood
+likuta
+lilburne
+liliaceous
+lilienthal
+liliuokalani
+lille
+lilo
+lilongwe
+limacine
+limassol
+limbate
+limewater
+limicoline
+limicolous
+limitarian
+limoges
+limousin
+linacre
+linalool
+linares
+lincrusta
+linctus
+lindane
+lindesnes
+lindisfarne
+lindwall
+lineate
+lineations
+linefeed
+linefeeds
+linenumber
+linestyle
+linewidth
+lingam
+lingayen
+lingcod
+linguiform
+linguini
+linhay
+linkwork
+linlithgow
+linn
+linnaeus
+linnet
+linnhe
+lino
+linocut
+linolenic
+linstock
+lintwhite
+linz
+lionfish
+lipari
+lipase
+lipchitz
+lipography
+lipoid
+lipoma
+lipophilic
+lipoprotein
+lippe
+lippi
+lippie
+liquefacient
+liquesce
+liquidus
+liquorish
+liripipe
+lisieux
+literae
+lithoid
+lithomarge
+lithometeor
+lithotrity
+littoria
+liu
+livingstone
+livonia
+livorno
+livraison
+livy
+lix
+lixivium
+loadstar
+loadstone
+loanda
+lobengula
+lobito
+lobola
+lobworm
+lochia
+lockyer
+locl
+locoman
+locris
+locum
+lod
+lodi
+lodicule
+loewi
+lofoten
+loganberry
+loganiaceous
+logaoedic
+logicism
+loglog
+logoff
+logography
+logopaedics
+lohengrin
+loiret
+lollapalooza
+lomax
+lombok
+lombroso
+loment
+lomond
+londrina
+longan
+longcase
+longcloth
+longe
+longicorn
+longinus
+longlasting
+longleaf
+longship
+longshore
+longueuil
+longueur
+longus
+longways
+longyearbyen
+loofah
+lookin
+loopy
+loosebox
+lophobranch
+lophophore
+lor
+lordy
+lorentz
+lorica
+lorient
+lorikeet
+lorimer
+lorrain
+lorris
+losey
+lothair
+lothario
+lothian
+lothians
+lothringen
+lotic
+louche
+loudish
+loudspeak
+louth
+louvain
+louvar
+lovage
+lovat
+lovell
+lovey
+lowan
+lowerclassman
+lowestoft
+lowveld
+loyang
+lozengy
+lozi
+lualaba
+luanda
+luang
+luau
+lublin
+lubra
+lubumbashi
+lucarne
+lucca
+luce
+luciferin
+lucilius
+lucullus
+lud
+ludhiana
+ludo
+luff
+luffed
+luffing
+luffs
+lugo
+lugsail
+lugworm
+luichow
+luik
+lumberjacket
+lumbricalis
+lumbricoid
+lumiere
+lumisterol
+lumme
+lumpenproletariat
+lumumba
+luna
+lunarian
+lungan
+lungi
+lungki
+lungworm
+lungwort
+lunik
+luns
+lunula
+lunulate
+lupin
+lurdan
+lurex
+lusatia
+lusus
+luteolin
+lutestring
+luthern
+luthuli
+lutine
+lutist
+luxor
+luxulianite
+lvi
+lvii
+lxi
+lxii
+lxiv
+lxix
+lxvi
+lxvii
+lyallpur
+lyautey
+lycanthrope
+lycaon
+lycaonia
+lycia
+lycopod
+lycurgus
+lydda
+lyddite
+lydgate
+lyell
+lyly
+lymphangial
+lymphangitis
+lymphoadenoma
+lyncean
+lynchet
+lysias
+lysippus
+lysol
+lyssa
+lytic
+lytta
+lytton
+mabela
+mabuse
+macaco
+maccaroni
+macebearer
+macedoine
+machado
+machan
+machel
+machin
+machmeter
+machree
+machu
+macroclimate
+macroencephaly
+macrograph
+macrophysics
+macroprocessor
+macropterous
+macrosporangium
+macrospore
+macrosystem
+macruran
+macula
+macumba
+madafu
+madhya
+madina
+madre
+madrepore
+madura
+madurai
+maduro
+madwort
+maebashi
+maenad
+maestoso
+maestricht
+maewo
+mafeking
+maffick
+mag
+magallanes
+magdalena
+mage
+magen
+maggiore
+magilp
+maginot
+magistery
+magnetochemistry
+magnetopause
+magnetosheath
+magnificats
+magnoliaceous
+magnus
+magot
+magritte
+maguey
+mahabharata
+mahalla
+mahanadi
+maharashtra
+mahewu
+mahjong
+mahometan
+mahratta
+mahseer
+maidan
+maidstone
+maiduguri
+maigre
+maihem
+maikop
+mailcoach
+maillol
+maimonides
+mainbrace
+maintenence
+maintopsail
+mainz
+maiolica
+majunga
+makalu
+makarios
+makeyevka
+makhachkala
+makkah
+makurdi
+makuta
+malabo
+malachi
+malacophyllous
+malacopterygian
+maladdress
+malam
+malang
+malassimilation
+malatesta
+malatya
+maldon
+maleable
+malebranche
+maleic
+malevich
+malherbe
+malihini
+malimprinted
+malines
+malinke
+malkin
+mallam
+mallee
+mallenders
+malleolus
+mallorca
+malm
+malonic
+malonylurea
+malory
+malpighi
+malpighiaceous
+maltha
+malthus
+maltman
+maluku
+malvaceous
+malvern
+malwa
+mamaguy
+mamba
+mamelon
+mamilla
+mamillate
+mammee
+mammet
+mammiferous
+mammilla
+mampara
+manado
+managerialism
+manakin
+manassas
+manasseh
+manaus
+manche
+manchineel
+manchukuo
+manchuria
+mandatorily
+mandi
+mandir
+manet
+mangabey
+mangalore
+manganin
+mangelwurzel
+mangonel
+mangosteen
+mani
+manichaeus
+manilla
+manille
+maninke
+maniple
+manipur
+manisa
+manitoulin
+manizales
+manky
+mannar
+manolete
+manresa
+mansart
+mansholt
+manteau
+mantegna
+mantelletta
+manteltree
+mantilla
+mantinea
+mantoux
+mantova
+manufacturable
+manuka
+manukau
+manus
+manutius
+manyplies
+manzanilla
+manzoni
+maoism
+maputo
+maquette
+mara
+marabunta
+maraca
+maracanda
+maracay
+maraging
+marasca
+marat
+maravedi
+marcasite
+marcellus
+marcescent
+marche
+marcos
+marcuse
+marduk
+mardy
+maremma
+marg
+margaric
+margarite
+margate
+margravate
+margrave
+margravine
+margrethe
+marianao
+maribor
+mariculture
+mariposa
+maritage
+maritain
+maritsa
+marlite
+marmara
+marmite
+marmolada
+maroc
+marocain
+maroquin
+maros
+marprelate
+marquand
+marquesas
+marquessate
+marram
+marrano
+marriageability
+marron
+marryat
+marsilius
+marsipobranch
+martaban
+martagon
+martel
+martellato
+martello
+martineau
+marvell
+marxists
+masaccio
+masan
+masaryk
+masbate
+mascarene
+mascle
+mascon
+masharbrum
+mashhad
+mashie
+masinissa
+masjid
+maskanonge
+masqat
+massa
+massachuset
+massasauga
+massasoit
+massine
+massinissa
+massorete
+massotherapy
+mastaba
+mastigophoran
+mastitis
+masuria
+masurium
+matadi
+matamoros
+matanzas
+matapan
+matchbox
+matchmark
+matchstick
+mathura
+matlo
+matlock
+mato
+matoke
+matopo
+matozinhos
+matrass
+matriclinous
+matrilocal
+matroclinous
+matronage
+matsu
+matsuyama
+mattamore
+matterhorn
+matthias
+mattins
+mattoid
+mattrass
+matzoon
+maubeuge
+mauby
+maui
+maulana
+maulmain
+maulstick
+maumet
+mauna
+maund
+maunder
+maundy
+maungy
+maupassant
+maupertuis
+mauretania
+mauriac
+maurois
+maury
+maurya
+mawger
+mawkin
+mawsie
+maximin
+maximus
+maxint
+maxisingle
+maxixe
+mayday
+mayence
+mayon
+mazard
+mazarin
+mazuma
+mazzini
+mealworm
+meany
+meatus
+mecamylamine
+mechanotherapy
+mechelen
+meck
+meconium
+medan
+medawar
+mediastinum
+medway
+mee
+meed
+meerkat
+meerut
+mega
+megacephaly
+megadeath
+megaflop
+megaflops
+megalocardia
+megalocephaly
+megalosaur
+megapode
+megara
+megaron
+megathere
+megger
+meghalaya
+megiddo
+megilp
+mehemet
+meilhac
+meiny
+meir
+meitner
+mekka
+melanchthon
+melanous
+melaphyre
+melba
+melchior
+meliaceous
+melilla
+melilot
+melinite
+melisma
+melodeon
+meloid
+melos
+meltage
+mem
+memel
+memling
+memoire
+memorex
+memphremagog
+memsahib
+menadione
+menado
+menai
+menam
+menander
+menaquinone
+mencius
+menderes
+mendips
+menes
+mengistu
+meningocele
+menispermaceous
+meno
+menology
+menomini
+menon
+menotti
+mensa
+mentalism
+menuhin
+mepacrine
+meperidine
+meprobamate
+merano
+merbromin
+merca
+mercaptan
+mercaptide
+mercaptopurine
+merchet
+mercia
+mercians
+merengue
+mergui
+meristem
+meristic
+merkin
+merlon
+meroplankton
+merozoite
+merrymake
+merse
+mersin
+merthyr
+mesarch
+mesencephalon
+mesenchyme
+mesenteritis
+mesentery
+meshach
+meshuga
+mesitylene
+mesnalty
+mesobenthos
+mesocephalic
+mesocratic
+mesogastrium
+mesoglea
+mesognathous
+mesolithic
+mesolonghi
+mesomeric
+mesophyll
+mesophyte
+mesothelioma
+mesothelium
+messalina
+messene
+messenia
+messiaen
+messina
+messmate
+messmates
+mestee
+mester
+mestranol
+metacentres
+metacharacter
+metacharacters
+metachromatism
+metacinnabarite
+metafemale
+metagnathous
+metalline
+metallocene
+metallophone
+metamale
+metamer
+metanotion
+metanotions
+metaperiodate
+metaphosphoric
+metaphrase
+metaphrast
+metapolitics
+metaproduction
+metaproductions
+metasymbol
+metasymbols
+metasyntax
+metasyntaxes
+metatheory
+metatherian
+metathorax
+metaxylem
+metchnikoff
+metempirical
+metempirics
+metestrus
+methacrylic
+methaemoglobin
+methenamine
+metho
+methodius
+methotrexate
+methoxide
+meths
+methylcyclohexane
+methyldopa
+methylphthalate
+methylthionine
+metic
+metoestrus
+metonic
+metopic
+metricate
+metrify
+metritis
+metronidazole
+metronymic
+metrorrhagia
+metz
+meu
+meung
+meuse
+mezcal
+mezcaline
+mezereon
+mezereum
+mho
+miaou
+miaul
+micawber
+michelozzo
+mick
+mickery
+mickiewicz
+mickle
+microbalance
+microbalances
+microbarographs
+microbodies
+microbody
+microbrailler
+microchip
+microchips
+microconcrete
+microcrack
+microcracked
+microcracking
+microcracks
+microdetector
+microdont
+microdot
+microfabric
+microgel
+micrographs
+microkink
+microkinking
+micromixing
+micropalaeontology
+microphyte
+micropyrometer
+microsporophyll
+microstomatous
+microswitch
+microswitches
+microsystem
+microsystems
+microtherm
+microtomy
+microwatt
+microwatts
+microwriter
+microwriters
+micrurgy
+middlebreaker
+middlemost
+mideast
+midheaven
+midian
+midinette
+midiron
+midlothian
+mieres
+miffy
+mihrab
+milage
+milazzo
+mileometer
+miletus
+milkfish
+milkhouse
+milkwort
+millais
+millefleurs
+millepede
+millepore
+milli
+milligan
+millrun
+millwheel
+millwheels
+millwork
+milne
+milo
+milometer
+milometers
+milreis
+miltiades
+mimas
+mimetite
+mimir
+mimosaceous
+minacious
+minas
+minch
+mindoro
+mindszenty
+minelayer
+mineralocorticoid
+mineworker
+mineworkers
+minge
+mingus
+minho
+minibike
+minicab
+minicabs
+minimus
+minipill
+ministerialist
+ministerium
+minitab
+minivet
+minna
+minnesinger
+mintoff
+miombo
+mirabeau
+miracidium
+mirador
+miraflores
+mirepoix
+mirk
+mirza
+misallocate
+misallocated
+misallocates
+misallocating
+misallocation
+misapplys
+miscarrys
+misdeclared
+misdefined
+mise
+miseno
+misericord
+miskolc
+mislaid
+misplead
+misposition
+mispositioned
+mispositioning
+mispositions
+missal
+missals
+missel
+missis
+mississauga
+mississipi
+missolonghi
+misspelt
+missus
+mistal
+mistassini
+misti
+mistigris
+mistle
+mistral
+mistrals
+mither
+mithgarthr
+mithridate
+mithridates
+mithridatism
+miticide
+mitis
+mitrailleuse
+mitrewort
+mixolydian
+mizoram
+mizzen
+moa
+moab
+mobutu
+modena
+moderne
+modge
+modigliani
+modillion
+mofette
+mog
+mogador
+mogen
+moho
+mohole
+mohs
+mohur
+moidore
+moirai
+moke
+mokha
+mokpo
+molina
+molise
+mollah
+mollescent
+mollusc
+molluscoid
+molluscs
+mollweide
+molopo
+moltke
+molybdenous
+mombasa
+momism
+monacid
+monadelphous
+monadnock
+monaghan
+monal
+monanthous
+monas
+monaxial
+monazite
+monck
+monecious
+moneme
+monetarist
+moneychanger
+mong
+moniliform
+monkeypot
+monkfish
+monkshood
+monnet
+monoatomic
+monobasic
+monocarp
+monocarpellary
+monocarpic
+monocausal
+monochasium
+monochloride
+monochloroethanol
+monochord
+monoclinous
+monodispersity
+monody
+monohull
+monohydrate
+monohydric
+monohydroxy
+monoicous
+monolatry
+monoliths
+monomark
+monomerous
+mononucleosis
+monopetalous
+monophagous
+monophobia
+monophyllous
+monoplegia
+monopode
+monopodium
+monopteros
+monosemy
+monosepalous
+monosized
+monosodium
+monosome
+monospermous
+monostich
+monostichous
+monostome
+monostrophe
+monostylous
+monothetic
+monotower
+monotropism
+mons
+monsignor
+montagnard
+montagu
+montagues
+montale
+montane
+montauban
+montbretia
+montcalm
+montefiore
+montego
+monteith
+montenegro
+montero
+monterrey
+montesquieu
+montessori
+montfort
+montgolfier
+montherlant
+montmorillonite
+montparnasse
+montpellier
+montreuil
+montreux
+montrose
+monza
+monzonite
+moog
+moolvie
+moonfish
+moonflower
+moonraker
+moonshot
+moonwort
+moorfowl
+moorhen
+moorwort
+mopboard
+mopoke
+moquette
+mor
+mora
+moraceous
+morar
+morava
+morbific
+morbihan
+morbilli
+morcha
+mordecai
+mordred
+morea
+moreau
+morecambe
+moreen
+moreish
+morelia
+morello
+morelos
+morepork
+moresco
+morish
+mornay
+moroni
+morphallaxis
+morphogenesis
+morphophoneme
+morphosis
+morphotype
+morphotypes
+morphy
+morro
+mors
+morula
+morwong
+mos
+mosasaur
+moschatel
+moseley
+moshav
+moshesh
+moskva
+mosley
+mosotho
+mossbunker
+mossie
+mosso
+mosstrooper
+motherfucker
+motherwell
+motherwort
+mothy
+motmot
+motocross
+motorable
+motorbicycle
+motorbus
+motorcoach
+motown
+motte
+motu
+mouflon
+moujik
+mouldboard
+mouldy
+moulmein
+mousebird
+mousetail
+mousseline
+mouthbrooder
+mouthwash
+mouthwatering
+movietone
+moviola
+mowburnt
+moxa
+mucin
+muckamuck
+muckle
+mucksweat
+muckworm
+mucoid
+mucopolysaccharide
+mucoprotein
+mucopurulent
+mucro
+mucronate
+mudcat
+mudfish
+mudir
+mudlark
+mudpack
+mudra
+mudskipper
+mudskippers
+muenster
+muesli
+mufulira
+mugabe
+muggins
+mugwort
+muhammadan
+mujik
+muldoon
+muleta
+muleteer
+mulga
+mulhouse
+mulki
+mulley
+mulliken
+mullock
+mulloway
+multan
+multangular
+multeity
+multicide
+multidrop
+multifid
+multifile
+multiflora
+multifoil
+multifoliate
+multigravida
+multihop
+multihull
+multihulls
+multikey
+multikeys
+multilateralist
+multilateralists
+multimembered
+multinuclear
+multipacket
+multipara
+multiped
+multiplane
+multiplepoinding
+multipunch
+multipunched
+multireel
+multirole
+multiscreen
+multispectral
+multistorey
+multisubject
+multivariable
+multivibrator
+multivocal
+multiway
+multiword
+multure
+mumbo
+mumchance
+munga
+mungo
+muniment
+muniments
+munnion
+munro
+munsell
+munster
+munt
+muntin
+muntjac
+muntz
+murage
+murasaki
+murat
+murcia
+mure
+murex
+muricate
+murine
+murman
+murra
+murrelet
+murrhine
+murrumbidgee
+murther
+musaceous
+muscadel
+muscae
+muscarine
+muscid
+muscleman
+musclemen
+muscovado
+museology
+musil
+musjid
+muskeg
+muso
+musquash
+musset
+mustafa
+mustee
+musteline
+musth
+mutch
+mutchkin
+mutism
+mutsuhito
+muttonhead
+muttra
+mutule
+muzorewa
+muzz
+myalgia
+myalism
+myall
+myasthenia
+mycelium
+mycetoma
+mycetozoan
+mycin
+mycostatin
+mydriasis
+mydriatic
+myelencephalon
+myelin
+myelitis
+myeloma
+myiasis
+mylonite
+myna
+myocardiograph
+myogenic
+myograph
+myology
+myoma
+myope
+myrmecology
+myrmecophagous
+myrmecophile
+myrobalan
+myrtaceous
+mysia
+mystagogue
+mythopoeia
+mytilene
+myxoedema
+myxoma
+myxomatosis
+myxomycete
+myxovirus
+mzee
+mzungu
+nabis
+nabla
+nablas
+nablus
+nabob
+naboth
+nacre
+nae
+naevus
+nagor
+naha
+nailbrush
+nailfile
+nailhead
+nainsook
+naira
+nairn
+naissant
+naker
+nakhichevan
+nakuru
+nalchik
+nalgo
+namangan
+namas
+namelist
+namelists
+namen
+nametape
+namhoi
+namur
+nanak
+nanchang
+nanda
+nanga
+nankeen
+nanning
+nanometric
+nanoplankton
+nanterre
+nantes
+nantung
+naphtali
+naphthyl
+napiform
+nappa
+nara
+narbada
+narceine
+narcoanalysis
+narcosynthesis
+narcotism
+nardoo
+nares
+narial
+nark
+narmada
+narthex
+narva
+narvik
+naseberry
+naseby
+nashe
+nasho
+nasion
+nasofrontal
+nasopharynx
+nasser
+nastase
+natheless
+natrium
+natrolite
+natron
+natsopa
+natter
+natterjack
+naturism
+naturopathy
+nauch
+naucratis
+naumachia
+nauplius
+naur
+nautch
+nautiloid
+navar
+navarin
+navarino
+navarre
+navew
+navicert
+navratilova
+navvy
+naxalite
+naxos
+naze
+ndola
+neagh
+neap
+nearside
+neb
+nebo
+nebuchadnezzar
+neckar
+neckband
+neckcloth
+neckpiece
+neckwear
+necrobiosis
+necrolatry
+necromania
+necrophobia
+necrose
+necrotomy
+neddy
+needlecord
+needlecraft
+needlefish
+needleful
+neep
+nefertiti
+negev
+negresses
+negrillo
+negritude
+negropont
+negros
+neisse
+nek
+nekton
+neman
+nemathelminth
+nemea
+nemertean
+nemery
+nene
+neoarsphenamine
+neocolonialism
+neoconservative
+neoimpressionism
+neoplasty
+neoscholasticism
+neper
+nephogram
+nephograph
+nephology
+nephralgia
+nephridium
+nephrite
+nephritic
+nephritis
+nephron
+nephrosis
+nephrotomy
+nepos
+neral
+nereus
+neritic
+nernst
+neroli
+neruda
+nerva
+nerval
+nervate
+nervine
+nervure
+nesh
+nesselrode
+nessus
+nestorius
+netaji
+netball
+neto
+netsuke
+nett
+neume
+neurasthenia
+neurectomy
+neurilemma
+neuro
+neuroblast
+neurocoele
+neurogram
+neurohypophysis
+neurolemma
+neuroma
+neuropath
+neuropsychiatry
+neuropteran
+neuropterous
+neurotomy
+neurotransmitter
+neurotransmitters
+neurovascular
+neusatz
+neuss
+neustria
+neutretto
+newshawk
+newspeak
+ney
+nez
+niblick
+nicknack
+nickpoint
+nicotinism
+nictheroy
+nictitate
+nictitating
+nidaros
+niddering
+nide
+nidicolous
+nidify
+nidus
+niebuhr
+niello
+niemen
+nieve
+niff
+nightlife
+nightrider
+nightspot
+nightwear
+nigrescent
+nigrify
+nigritude
+nihon
+niigata
+nilgai
+nilgiri
+nim
+nimblewit
+nimonic
+ningsia
+ninus
+niobic
+niobous
+niort
+nipa
+nipigon
+nipplewort
+nippur
+nishinomiya
+nisus
+niton
+nitramine
+nitrobacteria
+nitrochloroform
+nitrohydrochloric
+nitrometer
+nitromethane
+nitroso
+nitrosyl
+nival
+nivation
+niven
+niveous
+nivernais
+nixie
+nizhni
+njord
+nkomo
+nkrumah
+nobbut
+nobiliary
+noctilucent
+noctuid
+noctule
+noesis
+nofretete
+noh
+noil
+noisette
+nolde
+nolle
+nomarch
+nomarchy
+nombles
+nombril
+nome
+nomen
+nomism
+nomocracy
+nonactive
+nonaggression
+nonaligned
+nonanalytic
+nonanoic
+nonappearance
+nonblank
+nonblanks
+noncausal
+noncomputable
+noncontributory
+noncritical
+nondirected
+nondispersive
+noneffective
+nonego
+nonet
+nonevent
+nonexecutable
+nong
+nonharmonic
+nonhierarchic
+nonhierarchical
+nonhuman
+nonidentical
+noninteger
+noninvertible
+nonnumeric
+nono
+nonowner
+nonowners
+nonparametrical
+nonparous
+nonparty
+nonproliferation
+nonrecursive
+nonrecursively
+nonredundant
+nonrelevance
+nonrelevant
+nonsequenced
+nonsmoker
+nonsmokers
+nonstarter
+nonstative
+nonstick
+nonstriated
+nonsuch
+nonsuit
+nonunionism
+nonvocal
+nonvoter
+nonvoting
+noordbrabant
+nopal
+nord
+nordau
+norepinephrine
+norge
+noria
+noricum
+norite
+nork
+norodom
+northmost
+noseband
+nosography
+nostology
+notelet
+noticeboard
+noticeboards
+notifiable
+notitia
+notochord
+notum
+noumenon
+novalis
+novara
+novation
+novaya
+novelese
+novello
+novercal
+nowel
+nowhence
+nowt
+nox
+noyade
+noyau
+noyon
+nubecula
+nubians
+nucha
+nuddy
+nudicaul
+nudum
+nuevo
+nuggar
+nuggety
+nuissance
+nuke
+nukus
+nullah
+nullarbor
+nullifidian
+nullipara
+numantia
+numbat
+numberplate
+numbfish
+numbles
+numdah
+numen
+numerary
+numidia
+nummary
+nummulite
+numnah
+nunatak
+nunc
+nuncio
+nuncle
+nunhood
+nunny
+nureyev
+nuri
+nuristan
+nurmi
+nusa
+nutant
+nutbrown
+nutcase
+nutgall
+nuthouse
+nutlet
+nutter
+nutwood
+nyala
+nyanza
+nyasa
+nyctaginaceous
+nyctalopia
+nyctinasty
+nyctitropism
+nyctophobia
+nye
+nyeman
+nyerere
+nylghau
+nympha
+nymphaeaceous
+nympho
+nystatin
+nyx
+oakum
+oarfish
+oarlock
+oast
+oates
+oba
+oban
+obasanjo
+obconic
+obedientiary
+oblanceolate
+obligato
+obmutescence
+obolus
+obote
+obreption
+obscurum
+obsecrate
+obsequent
+obstipation
+obvolute
+oca
+occasionalism
+occular
+occultate
+oceanid
+oceanus
+ochlophobia
+ochone
+ochrea
+ockeghem
+ocker
+ocode
+octachord
+octad
+octahedrite
+octamerous
+octanedioic
+octangle
+octangular
+octarchy
+octaroon
+octavalent
+octavo
+octocentenary
+octonary
+octu
+octuple
+octylphenylether
+ocularist
+oddfellow
+odense
+odoacer
+odontalgia
+odontoblast
+odontograph
+odontoid
+odontophore
+odovacar
+odra
+odyl
+oecology
+oenone
+oestrin
+oestrogen
+oestrone
+oestrous
+oestrus
+ofay
+offa
+offaly
+offcut
+offcuts
+officinal
+offline
+ogaden
+ogasawara
+ogbomosho
+ogdoad
+ogee
+ogun
+oho
+oilbird
+oilcup
+oilfield
+oilfired
+oise
+oita
+oka
+okavango
+oke
+okta
+oldwife
+oleaceous
+olecranon
+olefine
+olefinic
+oleic
+olein
+oleograph
+oleoresin
+oleum
+olibanum
+olid
+oligopsony
+oligotrophic
+oliguria
+olio
+oliphant
+olivaceous
+olivary
+olivenite
+olivier
+olla
+olm
+ology
+olomouc
+oloroso
+olszyn
+omadhaun
+omagh
+omar
+omasum
+omayyad
+ombre
+omdurman
+ommatidium
+ommatophore
+omnicompetent
+omnific
+omophagia
+omphale
+omphalos
+omuta
+onager
+onagraceous
+onassis
+ondes
+ondo
+ondograph
+ondometer
+onega
+onitsha
+onlook
+onomasiology
+onychophoran
+onymous
+oof
+oogamy
+oogenesis
+oogonium
+ooh
+oolite
+oology
+oolong
+oomiak
+oompah
+oont
+oophorectomy
+oophoritis
+oophyte
+oose
+oosperm
+oosphere
+oospore
+oostende
+ootheca
+ootid
+opah
+opalesce
+ope
+opencast
+operose
+ophicleide
+ophir
+ophthalmia
+ophthalmitis
+opisometer
+opisthobranch
+opisthognathous
+opiumism
+oppidan
+oppilate
+oppugnant
+opsimath
+optacon
+optacons
+optoelectronic
+optometer
+oracy
+oradea
+oran
+orc
+orcein
+orchestrina
+orchidaceous
+orchil
+orchitis
+orcinol
+orczy
+ordinator
+ordinators
+ordonnance
+ordzhonikidze
+oread
+orectic
+orel
+orense
+orfe
+orfray
+organogenesis
+organography
+organoleptic
+organology
+organon
+organotherapy
+organum
+organza
+organzine
+orgeat
+oribi
+oriel
+oriente
+origen
+orinasal
+orissa
+orizaba
+orjonikidze
+orkneys
+orle
+orlon
+orlop
+ormer
+ormolu
+ormuz
+orne
+ornis
+ornithischian
+ornithomancy
+ornithopod
+ornithopter
+ornithoscopy
+ornithosis
+orobanchaceous
+oroide
+orometer
+orontes
+orozco
+orpharion
+orphrey
+orpiment
+orpine
+orrery
+orris
+orsini
+ortegal
+orthohydrogen
+orthophosphoric
+orthophosphorous
+orthopter
+orthopterous
+orthoptic
+orthoptics
+orthostichy
+orthotone
+ortles
+oruro
+oryol
+oscitancy
+osculant
+oscular
+osman
+osmious
+ossa
+ossein
+ossetia
+ossie
+ossietzky
+ossiferous
+osso
+osteal
+ostend
+ostensory
+osteoclasis
+osteogenesis
+osteomalacia
+osteomyelitis
+osteotome
+osteotomy
+ostia
+ostinato
+ostiole
+ostium
+ostler
+ostmark
+ostosis
+ostracoderm
+ostracon
+ostrava
+ostwald
+otalgia
+othergates
+othman
+otho
+otic
+otitis
+otocyst
+otolaryngology
+otology
+otoscope
+otranto
+ottar
+ottava
+otterburn
+otway
+ouachita
+ouananiche
+oubangui
+oudh
+ouessant
+oujda
+oulu
+ouse
+ousel
+outasight
+outdate
+outjockey
+outlist
+outman
+outrunner
+outrush
+outswing
+outwash
+outwith
+ovenproof
+ovenproofed
+ovenproofing
+ovenproofs
+ovenware
+overachieve
+overachieved
+overachiever
+overachieves
+overachieving
+overarch
+overblouse
+overboot
+overcheck
+overcloud
+overcompetence
+overconsolidate
+overconsolidated
+overconsolidates
+overconsolidating
+overconsolidation
+overcrop
+overdetermine
+overdetermines
+overdetermining
+overdye
+overfold
+overground
+overhype
+overhyped
+overhypes
+overhyping
+overleaf
+overlive
+overmantel
+overmatter
+overnice
+overpitch
+overrunning
+overscale
+overscore
+overset
+oversew
+overside
+oversleeve
+overspent
+overstaff
+overstaffed
+overstaffing
+overstaffs
+overstepped
+overstress
+overstressed
+overstruck
+overtask
+overtype
+overtyping
+oviedo
+oviferous
+ovisac
+owelty
+owerri
+owt
+oxenstierna
+oxhide
+oxidimetry
+oxime
+oxon
+oxonium
+oxpecker
+oxter
+oxtongue
+oxus
+oxyacetylene
+oxyacid
+oxycephaly
+oxychloride
+oxyhaemoglobin
+oxysalt
+oxysulphide
+oxytetracycline
+oxytocic
+oxytocin
+oxytone
+oyer
+oyez
+oyo
+oystercatcher
+ozalid
+ozonolysis
+ozs
+pabulum
+paca
+paceway
+pacha
+pachalic
+pachuca
+pachuco
+padang
+padauk
+paddlefish
+pademelon
+paderborn
+padishah
+padma
+padouk
+padova
+padsaw
+padua
+paduasoy
+paederast
+paediatrician
+paediatrics
+paedogenesis
+paedology
+paedomorphosis
+paedophilia
+paeony
+pageful
+pagefuls
+pagurian
+pah
+pahang
+pahsien
+paigle
+paillasse
+paillette
+painkiller
+paintbox
+paisa
+paisano
+pakeha
+paki
+palaeanthropic
+palaeethnology
+palaeoanthropology
+palaeobotany
+palaeoclimatology
+palaeoecological
+palaeoecology
+palaeoethnobotany
+palaeogene
+palaeography
+palaeolith
+palaeolithic
+palaeomagnetism
+palaeontography
+palaeozoology
+palais
+palawan
+palea
+palembang
+palencia
+palestra
+palestrina
+paletot
+paley
+palikar
+palimpsest
+palindromicity
+palk
+palladic
+palladio
+palladous
+pallete
+palma
+palmaceous
+palmira
+palolo
+palooka
+palos
+palour
+palpebrate
+palsgrave
+palstave
+pamirs
+pampero
+pamphrey
+pamphylia
+pamplona
+panada
+panatella
+panatellas
+panay
+panchax
+panchayat
+panchen
+pancosmism
+pancreatin
+pandanaceous
+pandore
+pandour
+pandowdy
+pandurate
+pandy
+pandybat
+panellist
+panellists
+panettone
+panga
+panicmonger
+paniculate
+panjim
+pankhurst
+panmixia
+panmunjom
+pannage
+panne
+pannikin
+pannonia
+panocha
+panoptic
+pansophy
+pantechnicon
+pantelleria
+pantihose
+panto
+pantoum
+paoting
+paotow
+papadopoulos
+papain
+papandreou
+papaveraceous
+papaverine
+papaya
+papeete
+paperbark
+paperclip
+paperclips
+paperknife
+paperknives
+paperless
+paperthrow
+papeterie
+paphlagonia
+paphos
+papier
+papilionaceous
+pappus
+papule
+papyraceous
+papyrology
+parabasis
+parablast
+parabrake
+paracasein
+paracetamol
+parachronism
+paraclete
+paradrop
+paraesthesia
+paraformaldehyde
+paragoge
+parahydrogen
+paralanguage
+paraldehyde
+paralipomena
+paramaribo
+paramatta
+paramo
+paramorph
+paramorphine
+paramorphism
+parang
+parapraxis
+parashah
+parasitology
+parastichy
+parasyntheton
+parcae
+parcheesi
+parclose
+pardalote
+pardubice
+pareira
+parergon
+paresis
+paresthesia
+pareu
+pareve
+parfleche
+parget
+parhelic
+parhelion
+paripinnate
+parishad
+parison
+parisyllabic
+parkin
+parky
+parlando
+parleyvoo
+parliamentarianism
+parm
+parmenides
+parmentier
+parmigianino
+parnell
+paroicous
+parotic
+parotoid
+parousia
+parramatta
+parrel
+parrotfish
+parthia
+particlar
+partita
+partlet
+parturifacient
+parulis
+parzival
+pasargadae
+pasay
+pase
+pash
+pashalik
+pashka
+pashm
+pasionaria
+pasolini
+pasqueflower
+pasquinade
+passacaglia
+passade
+passant
+passepied
+passifloraceous
+passionflower
+pastis
+pasto
+patagium
+patellate
+pathfind
+pathic
+pathlength
+pathognomy
+patiala
+paticularly
+patin
+patisserie
+patmore
+patna
+paton
+patras
+patrial
+patriclinous
+patrilocal
+patroclus
+patrology
+pau
+paua
+paucal
+pauldron
+pauling
+paumotu
+pausanias
+pav
+pavage
+pavane
+pavis
+pavlodar
+pavlova
+pavonine
+pawky
+pawnees
+paxwax
+paynim
+peag
+peake
+pean
+pearlwort
+pearmain
+peart
+peary
+peasouper
+peau
+peavey
+pechora
+peckinpah
+peckish
+pectase
+pecten
+peculium
+pedalo
+pedate
+pedatifid
+pedi
+pedicular
+pediform
+pedunculate
+peebles
+peen
+peened
+peening
+peens
+peepshow
+peepul
+peetweet
+peewit
+pegmatite
+pegu
+peipus
+peiraeus
+peirce
+pejoration
+pekan
+peke
+pelagius
+pelargonic
+pelargonium
+pelerine
+pelf
+pelion
+pelisse
+pelite
+pella
+pelles
+pelletier
+pellicle
+pelmet
+peloponnese
+peltast
+peltier
+pemba
+pemphigus
+penang
+penchi
+pendente
+penderecki
+pendragon
+peneplain
+peneus
+pengpu
+penillion
+peninsulate
+penki
+pennine
+pennines
+penninite
+pennon
+pennoncel
+pennycress
+pennyweight
+pennywort
+pennyworth
+penrith
+penstemon
+penstock
+penta
+pentachlorophenol
+pentangular
+pentanoic
+pentaprism
+pentastich
+pentatomic
+pentelikon
+pentene
+penthesileia
+pentheus
+pentimento
+pentlandite
+pentose
+pentothal
+pentoxide
+pentyl
+pentylenetetrazol
+penuchle
+penza
+penzance
+pepin
+peplos
+peplum
+pepo
+pepperwort
+pepsinate
+pera
+peracid
+peraea
+perak
+perborate
+perchloric
+perchloride
+percoid
+perdido
+perdu
+pereira
+perfin
+pergamum
+pergolesi
+peri
+perianth
+periapt
+periblem
+periclase
+periclinal
+pericline
+pericope
+periglacial
+perigon
+perigordian
+perinephrium
+perineuritis
+perineurium
+periodate
+perionychium
+periosteum
+periostitis
+peripteral
+perique
+perisarc
+perisperm
+perispomenon
+perissodactyl
+peristalsis
+peristome
+peristyle
+perithecium
+peritoneum
+peritrack
+periwig
+perlis
+perlocution
+permanganate
+permanganic
+pernambuco
+pernickety
+pernik
+pernod
+perogative
+peroxysulphuric
+perpignan
+perrault
+perrin
+perron
+persalt
+perse
+persephone
+persepolis
+persiennes
+personalty
+perspectivism
+perspex
+persulphate
+persulphuric
+pertussis
+perugia
+perugino
+peruke
+perutz
+peruzzi
+perv
+pes
+pesade
+pesaro
+pescadores
+pescara
+peseta
+pesewa
+peshawar
+peshitta
+pestalozzi
+pesthole
+pesthouse
+petaliferous
+petalody
+petechia
+pethidine
+petrarch
+petrodollar
+petrograd
+petrolic
+petsamo
+pettifogging
+pettitoes
+petuntse
+pevsner
+pewit
+phagedaena
+phagomania
+phagophobia
+phalangeal
+phanerocrystalline
+phanerophyte
+phanerozoic
+pharmacophore
+pharmacophores
+pharmacophoric
+pharsalus
+pharyngology
+pharyngoscope
+pharyngotomy
+phatic
+pheidippides
+phelloderm
+phellogen
+phenacaine
+phenacetin
+phenacite
+phenanthrene
+phenazine
+phenetic
+phenformin
+phenix
+phenolphthalein
+phenomenom
+phenylamine
+phenylketonuria
+phew
+phidias
+phidippides
+philae
+philby
+philemon
+philhellene
+philibeg
+philippi
+philippics
+philippopolis
+philips
+philistines
+phillips
+phillumenist
+philomel
+phimosis
+phiz
+phlebosclerosis
+phlogopite
+phlyctena
+phnom
+phocaea
+phocine
+phocis
+phocomelia
+phoebus
+phoenicians
+phomvihane
+phonendoscope
+phonetist
+phonometer
+phonoscope
+phonotactics
+phonotype
+phonotypes
+phonotypy
+phooey
+phosgenite
+phosophoric
+phosphatase
+phosphaturia
+phosphino
+phosphonium
+phosphoprotein
+phosphorate
+phosphoroscope
+phossy
+phot
+photoactinic
+photoactive
+photochronograph
+photoconduction
+photoelastic
+photoelasticity
+photoelectrotype
+photofit
+photonasty
+photoneutron
+photophysical
+photophysics
+photopolymer
+photoselected
+photoselection
+phototherapy
+photothermic
+phototonus
+phototopography
+phototransistor
+phototype
+phototypeset
+photozincography
+phrasal
+phrenitis
+phrixus
+phrygia
+phthalein
+phthalic
+phthalocyanine
+phthiriasis
+phthisic
+phthisis
+phut
+phyfe
+phyllite
+phylloquinone
+phyllotaxis
+physicochemical
+physiocrat
+physoclistous
+physostomous
+phytogenesis
+phytohormone
+phytolith
+phytoliths
+phytotoxin
+phytotron
+piacenza
+piacular
+piaf
+piaffe
+piaget
+piave
+piaza
+picardy
+piccanin
+piccaninny
+piccard
+pichiciego
+pickerelweed
+pickin
+pico
+picong
+picot
+picotee
+picrate
+picric
+picrite
+picrotoxin
+pictogram
+pictor
+picts
+picul
+piddock
+piedmontite
+pieman
+piemonte
+pieria
+pieridine
+piero
+piezo
+piezochemistry
+pigface
+pigfaced
+pigfish
+piggin
+piggledy
+piggott
+pigmeat
+pignut
+pigswill
+pigweed
+pika
+pikelet
+pikeperch
+pilatus
+pilau
+pilch
+pilcomayo
+pileous
+pili
+piliferous
+piliform
+pilliwinks
+pillwort
+pilocarpine
+pilose
+pimiento
+pimpernel
+pinaceous
+pinchpenny
+pinckney
+pindar
+pindus
+pinero
+pinfeather
+pinfish
+pinguid
+pinite
+pinnatifid
+pinnatipartite
+pinnatiped
+pinnatisect
+pinny
+pinochet
+pinole
+pintadera
+pinturicchio
+pinwork
+pinworm
+piny
+piolet
+pipa
+pipeclay
+pipefitting
+piperaceous
+pipewort
+pipistrelle
+pipsqueak
+piragua
+pirandello
+piranesi
+pirhouette
+pirn
+pirog
+pirozhki
+piscary
+piscatorial
+pisgah
+pish
+pishogue
+pishpek
+pisistratus
+pissarro
+pistareen
+piste
+pistoia
+pitapat
+pitchometer
+pitchometers
+pithos
+pitot
+pitsaw
+pituri
+pityriasis
+piura
+pix
+pize
+pizzle
+placet
+placoderm
+placoid
+plafond
+plagioclimax
+plagiotropism
+plainchant
+plainsong
+planchette
+planform
+planimetry
+plano
+planogamete
+planometer
+plantagenet
+plantigrade
+plantocracy
+plash
+plashy
+plasmodesma
+plasmosome
+plassey
+plastometer
+plata
+plataea
+platan
+platelayer
+platelayers
+platemark
+platemarks
+plath
+platiniferous
+platiniridium
+platinocyanic
+platinocyanide
+platinoid
+platinotype
+platy
+platyhelminth
+platyrrhine
+plauen
+playgroup
+playgroups
+playlet
+playschool
+pleach
+pleasance
+pleb
+plebby
+plectognath
+pled
+pleiad
+pleiocene
+pleiotropism
+pleochroism
+pleomorphism
+pleonasm
+pleopod
+plesiosaur
+plessor
+plethysmograph
+pleurodynia
+pleuron
+pleuropneumonia
+pleurotomy
+pleuston
+pleven
+plexor
+plica
+plicate
+ploat
+plodge
+plonk
+plonko
+plotinus
+plottable
+ploughboys
+ploughmen
+ploughs
+ploughstaff
+plumate
+plumbaginaceous
+plumbicon
+plumbum
+pluriliteral
+pluripresence
+plutus
+pluviometer
+pluvious
+pma
+pneuma
+pneumobacillus
+pneumoconiosis
+pneumodynamics
+pneumogastric
+pneumograph
+pneumonectomy
+pneumonitis
+pneumothorax
+pnom
+poaceous
+pochard
+pococurante
+pocus
+poddy
+podesta
+podgorica
+podophyllin
+podsol
+poenology
+pogey
+pogge
+pogy
+pohai
+pohutukawa
+poind
+pointsman
+poitiers
+poitou
+pokeberry
+pokelogan
+pokeweed
+pokie
+pola
+polacre
+poleaxe
+polemarch
+polemoniaceous
+polenta
+poleyn
+pollaiuolo
+pollan
+pollinosis
+polliwog
+polony
+poltava
+poly
+polyadelphous
+polyamide
+polyatomic
+polybasic
+polybius
+polyconic
+polycrates
+polydemic
+polydeuces
+polydipsia
+polydisperse
+polydispersity
+polyembryony
+polygalaceous
+polygnotus
+polygonaceous
+polyhydric
+polyisoprene
+polymerous
+polynices
+polyoxyethene
+polyphosphoric
+polyphyodont
+polypod
+polyprotodont
+polypus
+polysulphide
+polysyllogism
+polythetic
+polythionic
+polyvinylidene
+polyxena
+pom
+pombal
+pombe
+pomfret
+pomiculture
+pommern
+pommy
+pomorze
+pompidou
+pondicherry
+pondokkie
+pondweed
+pone
+pongee
+pongid
+poniard
+ponta
+pontchartrain
+pontefract
+pontevedra
+pontianak
+pontifex
+pontil
+pontormo
+pontus
+pontypool
+pontypridd
+pooftah
+poon
+poona
+poonce
+poove
+popedom
+popeyed
+poppadom
+popsicle
+popsy
+porbeagle
+pori
+porirua
+porism
+porkpie
+pornocracy
+poromeric
+porosimeter
+porphyrogenite
+porsena
+portadown
+portfire
+portlaoise
+portobello
+portulacaceous
+posho
+posology
+poss
+possie
+postcava
+postcode
+postcodes
+postexilian
+posticous
+postie
+postil
+postimpressionism
+postliminy
+postmeridian
+postrider
+potamic
+potamology
+potatory
+potch
+potentiostat
+pothecary
+potherb
+potiche
+potiphar
+potman
+potoroo
+potyomkin
+pouncet
+powan
+powys
+poyang
+pozsony
+pozzuolana
+pozzuoli
+pozzy
+pracharak
+pradesh
+praemunire
+praenomen
+praetor
+praetorius
+pragmat
+pragmats
+praha
+prajna
+pralltriller
+prang
+prat
+prato
+prau
+praxiteles
+preadamite
+precall
+precatory
+precedential
+preceed
+precis
+precompile
+precompiled
+precompiles
+precompiling
+preconnected
+preconnection
+preconsolidate
+preconsolidated
+preconsolidates
+preconsolidating
+preconsolidation
+predella
+predeterminate
+predial
+predicant
+predikant
+prednisone
+predrilled
+prefill
+prefilled
+prefilling
+prefills
+preglacial
+preincubate
+preincubated
+preincubates
+preincubating
+prelacy
+prelatism
+prelect
+prelexical
+prelims
+premaxilla
+premedication
+premiership
+premultiplied
+premultiply
+premultiplying
+premultiplys
+prenomen
+prenominal
+preopened
+preoxidation
+prepositor
+prerelease
+presa
+prescan
+prescriptible
+prescriptivism
+presentationism
+pression
+prestel
+prestonpans
+prestwich
+preterhuman
+pretonic
+pretor
+pretorius
+previse
+priapism
+pribilof
+priestcraft
+prill
+primaeval
+primaquine
+primatives
+primigravida
+primine
+primordium
+primulaceous
+prisage
+proc
+procarp
+proceleusmatic
+prochronism
+proclus
+procopius
+proctoscope
+procuratory
+producable
+proem
+profiterole
+progenitive
+proleg
+prolegomenon
+prolepsis
+promethazine
+promycelium
+propanoic
+propenamide
+propene
+propertius
+propionic
+propjet
+propontis
+propylaeum
+propylite
+proserpina
+prostheses
+prostyle
+protagoras
+protandrous
+protanopia
+proters
+protestantism
+protoactinium
+protochordate
+protogynous
+protomorphic
+protosemitic
+prototherian
+protoxide
+protrusile
+protuberate
+protude
+protudes
+protuding
+protyle
+proudhon
+proustite
+prout
+proventriculus
+provo
+provocate
+provocations
+proxima
+prudentius
+prunelle
+prut
+prynne
+prytaneum
+psammite
+psephite
+pseudaxis
+pseudepigrapha
+pseudocarp
+pseudocode
+pseudomorph
+pseudomutuality
+pseudopodium
+pseudorandom
+pshaw
+psilocybin
+psilomelane
+psittacine
+psittacosis
+psoas
+psoriasis
+psst
+psychasthenia
+psychohistory
+psychomimetic
+psychotechnics
+ptah
+pteridology
+pteridophyte
+pteridosperm
+pteropod
+pterosaur
+pterygoid
+pteryla
+ptisan
+ptochocracy
+ptolemaeus
+ptosis
+ptyalin
+ptyalism
+pudsey
+puebla
+puerilism
+puffbird
+puffbirds
+puget
+puglia
+pugwash
+pula
+pullorum
+pulsatile
+pulsejet
+pulvinate
+punakha
+punce
+punchable
+punchbowl
+punchbowls
+pune
+punjab
+punka
+punnet
+punnets
+punta
+purana
+puri
+purim
+purpurin
+pushkin
+pushrod
+pushrods
+pushto
+putamen
+putto
+putumayo
+puvis
+puy
+pya
+pyaemia
+pydna
+pye
+pyelography
+pylorectomy
+pylos
+pym
+pyogenesis
+pyoid
+pyosis
+pyramus
+pyranometer
+pyrazole
+pyrenees
+pyroconductivity
+pyrogallate
+pyrognostics
+pyrographic
+pyrography
+pyrolysed
+pyrolysing
+pyromagnetic
+pyrone
+pyrophosphoric
+pyrophotometer
+pyrophyllite
+pyrostat
+pyrosulphate
+pyrosulphuric
+pyrrha
+pyrrho
+pyrrolidine
+pyrruvic
+pythias
+qaboos
+qaddafi
+qaddish
+qadi
+qairwan
+qattara
+qeshm
+qibla
+qintar
+qishm
+qoph
+quadragenarian
+quadragesimal
+quadraplegic
+quadrella
+quadriga
+quadrinomial
+quadriplegia
+quadrophonics
+quadrumanous
+quadruplex
+quaere
+quagga
+quaggy
+quaky
+quale
+quango
+quangos
+quaquaversal
+quare
+quarrian
+quarterlight
+quarterlights
+quartersaw
+quashi
+quasicontinuous
+quasiorder
+quasiperiodic
+quasistationary
+quass
+quathlamba
+quatre
+quebracho
+queencake
+queensberry
+quelpart
+quelquechose
+quemoy
+queneau
+quenelle
+quercetin
+quercine
+quesnay
+quetta
+quetzalcoatl
+quiberon
+quidnunc
+quillet
+quillon
+quilmes
+quim
+quinacrine
+quinary
+quinate
+quincentenary
+quindecagon
+quindecaplet
+quindecennial
+quinic
+quinnat
+quinol
+quinone
+quinonoid
+quinquagenarian
+quinquecentenary
+quinquefoliate
+quinquepartite
+quinquereme
+quinsy
+quintan
+quintana
+quintero
+quintilian
+quinze
+quipu
+quire
+quirinus
+quist
+quiverful
+qum
+qumran
+quokka
+quotha
+rabato
+rabaul
+rabbath
+rabbitfish
+rabbitoh
+racecard
+racecards
+racegoer
+racegoers
+raceme
+rachmanism
+rada
+radicel
+radiguet
+radioactivate
+radiocommunication
+radioligand
+radioluminescence
+radiomicrometer
+radiophonic
+radioscope
+radiotelegram
+radiotelemetry
+radioteletype
+radiothermy
+radiotoxic
+radom
+raeburn
+raf
+raffinate
+ragbolt
+ragusa
+ragworm
+ragworms
+ragwort
+rahman
+railcar
+railcars
+railwayman
+rainband
+rainbird
+raincheck
+rainforest
+rainout
+raison
+rajab
+rajahs
+rajasthan
+rajkot
+rajputana
+rajya
+rakata
+rakehell
+raki
+rallentando
+ralline
+rallycross
+ramachandra
+ramakrishna
+ramat
+ramayana
+rambert
+rambutan
+rameau
+ramjet
+ramjets
+rammish
+rampur
+ramsay
+ramsgate
+ramsons
+ramtil
+ramulose
+rancagua
+rance
+rancherie
+ranchero
+ranchi
+randan
+randers
+ranee
+rangefinder
+rani
+ranjit
+ranmoor
+ransome
+ranunculaceous
+rapacki
+rapeseed
+raphe
+raphide
+rapparee
+rara
+raree
+rareripe
+rarotonga
+rasbora
+rase
+rasht
+rask
+raspatory
+rasputin
+rasse
+ratan
+ratatouille
+ratbag
+ratbaggery
+ratbite
+rateen
+ratfink
+ratfish
+ratha
+rathenau
+ratiometer
+ratisbon
+ratite
+ratlam
+rato
+ratsbane
+rattigan
+rattish
+rattlebox
+rattoon
+ravelin
+ravenna
+ravin
+rawalpindi
+rawsthorne
+raylet
+razee
+razoo
+razzia
+razzle
+reade
+readonly
+readwrite
+realgar
+reallot
+reallotment
+reapplied
+reapplies
+reapply
+rearguard
+rearguards
+reassertion
+reassociation
+reast
+rebato
+rebec
+rebell
+rebellow
+rebid
+rebond
+rebonded
+rebonding
+rec
+recalesce
+recaption
+receiptor
+recept
+recipience
+recluster
+reclustering
+recodified
+recodifies
+recodify
+recodifying
+recognizee
+recompilation
+reconsolidate
+reconsolidating
+recrement
+rectillinear
+rectocele
+recuperator
+recurrency
+recursivity
+recurvate
+recurve
+redan
+redback
+redbrick
+redbug
+redcurrant
+redd
+redditch
+reddle
+redeye
+redfin
+rediffusion
+redingote
+redon
+redose
+redowa
+reductionalist
+redware
+reebok
+reedling
+reen
+reflate
+reflated
+reflates
+reflating
+reflet
+regelate
+reger
+reggae
+reggio
+regin
+regiomontanus
+rego
+regrate
+regulable
+reigate
+reims
+reinsertion
+reintroduction
+reinvoke
+reinvoking
+reith
+rejig
+rejuvenesce
+relatum
+relearn
+religionism
+reluct
+remainderman
+remittee
+remix
+remixes
+remixing
+remontant
+remontoir
+remora
+remould
+remoulded
+remoulding
+removalist
+remscheid
+rendzina
+renegado
+reni
+rennes
+renvoi
+reorientate
+reorientated
+reorientates
+reorientating
+repassivation
+repechage
+replevy
+replicable
+replicator
+replicators
+repoint
+repone
+repot
+reprocessor
+reprography
+reptant
+resample
+resampling
+resaturate
+resaturating
+resaturation
+rescissible
+reseat
+reseau
+reselection
+resequence
+resettle
+residentiary
+resiniferous
+resipiscence
+resistencia
+resit
+resnais
+resnatron
+respecifies
+respecify
+resrict
+restiform
+restorationism
+restransmit
+resubmission
+resurrectionism
+rete
+retene
+retension
+retensioned
+retentionist
+retiary
+retinite
+retro
+retroact
+retrochoir
+retrodiction
+retroject
+reuchlin
+reus
+reuter
+reutlingen
+reval
+revanchism
+revelationist
+reverberator
+reversi
+reverso
+revoice
+rewire
+rewiring
+rexine
+reynaud
+reynosa
+rhabdomyoma
+rhachis
+rhaetia
+rhee
+rhein
+rheobase
+rheotaxis
+rheotropism
+rhetic
+rheydt
+rhigolene
+rhinology
+rhinoplasty
+rhizomorph
+rhodic
+rhodinal
+rhodos
+rhotacism
+rhotic
+rhumbatron
+rhynchocephalian
+rhyton
+ria
+ribbentrop
+ribble
+ribbonfish
+ribbonwood
+ribera
+ribwort
+ribworts
+ricardo
+riccio
+ricercare
+richelieu
+richthofen
+ricinoleic
+rickettsial
+rident
+ridgetree
+ridgeway
+ridley
+riefenstahl
+riempie
+rienzi
+rightable
+righthand
+righthanded
+rightish
+righto
+rightwinger
+rightwingers
+rigi
+rigil
+rimester
+rimu
+rinforzando
+ringgit
+ringhals
+ringinglow
+ringster
+ripcord
+ripon
+ripplet
+rissole
+risus
+ritardando
+ritenuto
+ritornello
+rivage
+rizal
+rizzio
+roadholding
+roadroller
+roadrollers
+robben
+robbia
+roborant
+roca
+rocaille
+rockery
+rockweed
+rodomontade
+roentgenopaque
+roeselare
+rogatory
+roget
+rollaway
+rollbar
+rollmop
+rollmops
+rollneck
+rollway
+rone
+roneo
+ronggeng
+roo
+rooinek
+rootle
+ropable
+roquefort
+roquet
+roraima
+rorschach
+rort
+rosace
+rosario
+rosarium
+roscius
+roscoe
+roscommon
+roseberry
+rosehip
+rosewall
+rosh
+rosinante
+roskilde
+rospa
+rossetti
+rossiya
+rostand
+rostock
+roti
+rotorua
+roucou
+rouget
+roulers
+roumelia
+rowntree
+roxas
+rubbra
+rubby
+rubefy
+rubescent
+rubiaceous
+rubinstein
+rubrician
+rubstone
+rudderhead
+rudish
+ruisdael
+rumelia
+runcible
+runcorn
+ruthenia
+ruthful
+rutilated
+ruwenzori
+ruysdael
+ruyter
+ryazan
+rydal
+ryobu
+ryokan
+ryot
+sabadell
+sabah
+sabatier
+sabayon
+sabretache
+sabulous
+saccharic
+saccharoid
+sacco
+sadat
+saddlebill
+sade
+sadhu
+sadi
+sadiron
+sadowa
+saffian
+safid
+sagamore
+saghalien
+sagitta
+saguache
+saguenay
+saguia
+sagunto
+saharanpur
+sahitya
+saida
+saiga
+sainsbury
+saipan
+sakhalin
+saktas
+sakti
+salade
+saladin
+salado
+salamanca
+salambria
+salchow
+salduba
+salep
+salet
+salicaceous
+salicional
+salicylic
+saliferous
+salify
+salique
+sallee
+sallust
+salmanazar
+salonika
+saloop
+salop
+salopette
+salpicon
+salpingectomy
+salpingitis
+salpinx
+salta
+saltant
+saltchuck
+saltchucker
+saltfish
+saltigrade
+saltillo
+salto
+saltpan
+saltus
+salvatorian
+salween
+salyut
+salzgitter
+samarang
+samaria
+sambre
+samekh
+samfoo
+samiel
+samiti
+samizdat
+samnium
+samos
+samothrace
+samsara
+samshu
+samsun
+sanctitude
+sandakan
+sandfly
+sandgrouse
+sandhi
+sandpit
+sandwort
+sandworts
+sango
+sangre
+sangria
+sanies
+sankey
+sankt
+sanmicheli
+santalaceous
+santana
+santander
+saorstat
+sapajou
+sapanwood
+sapele
+saphena
+sapiential
+sapindaceous
+sapir
+sapotaceous
+sappanwood
+sapphira
+sapporo
+sapraemia
+sapropel
+sapwood
+saragossa
+sarawak
+sarcocarp
+sarcous
+sardar
+sardegna
+sarmatia
+sarmentose
+sarnen
+sarnia
+saronic
+saros
+sarpanch
+sarpedon
+sarraceniaceous
+sarraute
+sarre
+sarrusophone
+sarthe
+sarto
+sartor
+sarum
+sarvodaya
+sasebo
+sasin
+sassaby
+sassari
+sassoon
+sastruga
+satai
+satellitium
+satinflower
+satinpod
+satrap
+satrapy
+saturnism
+satyagraha
+satyagrahi
+saurischian
+saury
+saussure
+sav
+sava
+savaii
+savannahs
+savas
+saveloy
+savoie
+savoir
+savona
+sawbill
+sawder
+sawhorse
+sawn
+saxicolous
+saxifragaceous
+saxo
+saxons
+sayan
+sazerac
+scafell
+scaldfish
+scaleboard
+scalenus
+scaliger
+scall
+scaloppine
+scammel
+scandaroon
+scanderbeg
+scandic
+scansorial
+scapa
+scapewheel
+scaphopod
+scarabaeus
+scarcement
+scarificator
+scarlatina
+scarron
+scattergram
+scatterplot
+scatterplots
+scend
+schappe
+scheel
+scheele
+scheelite
+scheldt
+scherzando
+schiaparelli
+schickard
+schilling
+schizogenesis
+schizophyceous
+schizopod
+schizothymia
+schlegel
+schmo
+schmooze
+schnook
+schnorkle
+schnorrer
+schnozzle
+schola
+schongauer
+schoolie
+schorl
+schottische
+schouten
+schrodinger
+schul
+schwa
+schwaben
+schwann
+schwarzwald
+schweinfurt
+schweiz
+schwerin
+schwitters
+schwyz
+sciaenid
+sciamachy
+scienter
+scilly
+scincoid
+sciomachy
+scipio
+scire
+scissel
+scissure
+sciurine
+sciuroid
+sclera
+sclerenchyma
+scleritis
+sclerodermatous
+scleroid
+scleroma
+sclerometer
+sclerophyll
+scleroprotein
+sclerotomy
+sclerous
+scolopendrid
+scop
+scopas
+scorify
+scorpaenoid
+scorper
+scotopia
+scotswomen
+scotus
+scramb
+scran
+scraperboard
+scraperboards
+scrapheap
+scrapheaps
+scrimshank
+scrobiculate
+scroop
+scrophulariaceous
+scrump
+scrumpy
+scry
+scudo
+scullin
+scuncheon
+scunge
+scungy
+scunthorpe
+scut
+scuta
+scutage
+scutate
+scutch
+scutcheon
+scute
+scutellation
+scutellum
+scutiform
+scyphiform
+scyphistoma
+scyphozoan
+scyphus
+scyros
+seaborg
+seacock
+seakale
+seami
+seanad
+seasonality
+seato
+seawan
+seaworthyness
+sebacic
+sebiferous
+secam
+secern
+sech
+sectoral
+secundine
+secundines
+seddon
+seferis
+seg
+seif
+seise
+seismism
+seismometer
+seismoscope
+selah
+selangor
+selectedly
+selenodont
+selenomorphology
+seleucia
+seleucus
+selfheal
+sellotape
+selsyn
+selva
+semanteme
+semarang
+sematology
+semele
+sememe
+semeru
+semibituminous
+semibold
+semicompile
+semination
+seminumerical
+semipalmate
+semivitreous
+semivocal
+sempach
+sena
+senarmontite
+sendai
+sendal
+sendoff
+senegambia
+senghor
+sennacherib
+sennar
+senussi
+sepaloid
+seppuku
+septarium
+septavalent
+septenary
+septennium
+septet
+septicaemia
+septilateral
+septime
+septivalent
+septuagesima
+septuple
+septuplet
+septuplicate
+seq
+sequestrant
+serajevo
+seram
+serang
+sercq
+serdab
+serein
+seremban
+serenata
+sergipe
+seriema
+seringa
+seringapatam
+serjeant
+serotine
+serpigo
+serpulid
+serriform
+serrulate
+serrulation
+sertorius
+servetus
+servia
+servicewoman
+servicewomen
+servient
+sesotho
+sesquialtera
+sesquioxide
+sestos
+setiferous
+setiform
+sett
+settable
+sevan
+sewan
+sewell
+sexangular
+sexcentenary
+sexennial
+sexivalent
+sexpartite
+sextain
+sextan
+sextile
+seyfert
+seyhan
+sfax
+sforza
+sfumato
+sgraffito
+shaba
+shabbat
+shadrach
+shaduf
+shadwell
+shaef
+shaftesbury
+shaftsbury
+shahaptin
+shahjahanpur
+shakhty
+shamash
+shamba
+shameface
+shamo
+shangaan
+shango
+shanny
+shantow
+sharefarmer
+sharefarmers
+shareown
+sharksucker
+sharrow
+shavuot
+sheading
+shearlegs
+shearling
+sheba
+shechina
+sheene
+sheepcote
+sheepdog
+sheepwalk
+sheerlegs
+shellbark
+shelta
+shem
+shema
+shembe
+shenyang
+sherbrooke
+sheria
+sherwani
+shes
+shetlands
+shewbread
+shewn
+shiai
+shicker
+shickered
+shihchiachuang
+shikoku
+shillyshally
+shily
+shinar
+shinkin
+shinty
+shipka
+shiralee
+shirtsleeve
+shithead
+shittah
+shittim
+shiva
+shive
+shizuoka
+shockheaded
+shockstall
+shoeshine
+shoetree
+shofar
+sholapur
+shoogle
+shool
+shopfloor
+shopfloors
+shophar
+shopsoiled
+shopwalker
+shopwork
+shopworker
+shoreless
+shortlist
+shortlisted
+shortlisting
+shortlists
+shortlived
+shoshone
+shote
+shott
+shouse
+showd
+showerproof
+showgirl
+showjumping
+shrewdie
+shrewmouse
+shrieval
+shufty
+shufu
+shuggy
+shushan
+shuteye
+shypoo
+sialkot
+sialoid
+siang
+siangtan
+sibiu
+sicilia
+sickbay
+sickert
+sickie
+sicyon
+siddons
+sidechain
+sidechains
+sideffect
+sideffects
+sideplate
+sideplates
+siderophilin
+siderosis
+siderostat
+sidesman
+sidewheel
+sidewheeler
+sidi
+sidon
+sidra
+siegbahn
+siegler
+sieglinde
+sienkiewicz
+sifaka
+sightscreen
+sigil
+sigismund
+sigla
+siglos
+sigmate
+sigmoidoscope
+signac
+signore
+signorelli
+sigurd
+sikang
+silastic
+sile
+siliciferous
+silicium
+siliculose
+siliqua
+siloam
+silurid
+silverpoint
+silvertail
+simar
+simaroubaceous
+simchath
+simitar
+simla
+simoniac
+simonides
+simplicidentate
+simplon
+simsim
+simula
+simulant
+sinanthropus
+sinarquist
+sinatra
+singultus
+sinhailien
+sinistrodextral
+sinn
+sint
+siple
+siqueiros
+sirdar
+siret
+sisera
+sismondi
+sitar
+sitcom
+sitella
+sitfast
+sithole
+sitology
+sitsang
+situla
+sitwell
+sitz
+sitzkrieg
+sitzmark
+sixain
+sixte
+sjambok
+skagerrak
+skara
+skatepark
+skatole
+skaw
+skean
+skelf
+skelly
+skelmersdale
+sken
+skerrick
+sket
+skewwhiff
+skiamachy
+skibob
+skidlid
+skidpan
+skidproof
+skidway
+skillion
+skilly
+skiplane
+skippet
+skirret
+skite
+skydive
+skylab
+skyscape
+slade
+slaister
+slapshot
+slaughterman
+slaughtermen
+slavs
+sleave
+sleezy
+slezsko
+slickenside
+sligo
+slimmed
+slingback
+slipnoose
+slipperwort
+slipsheet
+slipway
+sloot
+sloughs
+slowcoach
+slowworm
+slubberdegullion
+slype
+smallage
+smallboy
+smallclothes
+smallholding
+smallmouth
+smallsword
+smaltite
+smalto
+smaragd
+smaragdite
+smarm
+smarmy
+smatch
+smew
+smilacaceous
+smit
+smokeho
+smokejack
+smoko
+smoodge
+smriti
+snackette
+sned
+snib
+snicket
+snipefish
+snog
+snorri
+snowberry
+snowbird
+snowblink
+snowdon
+snowdonia
+snowplough
+snuck
+snye
+soakaway
+soapberry
+soapolallie
+soares
+sobeit
+soche
+socinus
+sociobiology
+socman
+socred
+sodamide
+soddy
+soekarno
+soemba
+soembawa
+soenda
+soerabaja
+sofar
+softa
+sogat
+sogdiana
+soh
+soho
+soilage
+soissons
+sokoto
+sokotra
+solan
+solander
+solarimeter
+solarism
+soldo
+solent
+soleure
+solfeggio
+solferino
+soli
+solidary
+solifidian
+solihull
+soliman
+sollicker
+solonchak
+solothurn
+solum
+solvay
+solway
+solyman
+somewise
+somme
+somniloquy
+somnus
+sondage
+songkok
+soniferous
+sonobuoy
+soo
+soochow
+sook
+soong
+sophistocated
+sorata
+sorbefacient
+sorbic
+sorbitol
+soredium
+sorn
+sorocaba
+sororicide
+sorosis
+sorrento
+sosnowiec
+sotto
+soudan
+soult
+soundbox
+soundpost
+soupfin
+sourdine
+southmost
+soutine
+sozzled
+spacewalk
+spadefish
+spadiceous
+spagyric
+spalato
+spalpeen
+spam
+spancel
+sparable
+sparce
+sparerib
+sparid
+sparoid
+sparrowhawk
+sparry
+spatchcock
+spatterdash
+spearwort
+spectrobolometer
+speedo
+speedwriting
+speight
+spelaean
+spelk
+spellican
+speos
+spermatorrhoea
+spermic
+spermine
+spermogonium
+spermophyte
+spermous
+spey
+speyer
+sphenic
+sphenogram
+spheroidicity
+sphingomyelin
+sphragistics
+sphygmic
+sphygmoid
+spiderman
+spif
+spiffing
+spiflicate
+spignel
+spina
+spindlelegs
+spiniferous
+spinose
+spiritus
+spirketting
+spiroid
+spironolactone
+spitchcock
+spithead
+spitsticker
+spiv
+splake
+splanchnic
+splashback
+splashbacks
+splenitis
+splodge
+spock
+spode
+spoilfive
+spondulix
+spongin
+spongioblast
+sponsion
+spoonbill
+sporades
+sporocyte
+sporran
+sportscast
+sportswrite
+sporule
+sprag
+sprechgesang
+sprechstimme
+springhalt
+springhead
+springhouse
+springlet
+springvale
+spruik
+spue
+spuggy
+spumescent
+squacco
+squalane
+squarrose
+squattocracy
+squeteague
+squireen
+squirrelfish
+squit
+squiz
+srinagar
+stableboy
+stabroek
+stackframe
+stacte
+staddlestone
+stadholder
+stadiometer
+staffa
+staffman
+stagflation
+staggard
+stagira
+staines
+stairhead
+stambul
+staminode
+standalone
+standfast
+stane
+stanniferous
+stannite
+stannum
+stanovoi
+stans
+staphyloplasty
+staphylorrhaphy
+stara
+starflower
+startc
+starwort
+statius
+stauroscope
+staysail
+steakhouse
+steamie
+steamtight
+stearoptene
+steatorrhoea
+stecher
+stedfast
+stellarator
+stelliferous
+stellular
+stemhead
+stendhal
+stenopetalous
+stenophyllous
+stenotropic
+stepdame
+stercoricolous
+sterculiaceous
+stereochrome
+stereochromy
+stereometry
+stereotaxis
+stereotomy
+stereovision
+sterlitamak
+sterne
+stevenage
+stevengraph
+steyr
+sthenic
+stheno
+stibium
+stich
+stichometry
+stickybeak
+stilicho
+stillage
+stillicide
+stilliform
+stingo
+stinko
+stitchwort
+stiver
+stoa
+stob
+stockfish
+stockjobber
+stomack
+stomatic
+stomatoplasty
+stoneboat
+stonecast
+stonechat
+stonefish
+stonefly
+stoneground
+stonk
+stonkered
+stook
+stoppard
+storeyed
+storiated
+stormproof
+stornoway
+storr
+storrs
+stoss
+stot
+stotinka
+stotious
+stotter
+stound
+stoup
+stour
+stoush
+strabo
+strabotomy
+strachey
+strandloper
+strategem
+strategems
+stratificational
+stratigraphical
+stratigraphically
+stratopause
+strawworm
+streamy
+streetlight
+strepitous
+stretchy
+striction
+strigiform
+strimon
+strine
+strobic
+strobilaceous
+stroganoff
+strokefinder
+stromboli
+strongman
+strongyle
+strontian
+stroppy
+stroy
+strychnic
+stubbs
+studdingsail
+studwork
+sturmer
+sty
+stylostixis
+stypsis
+styracaceous
+styria
+suakin
+subacetate
+subah
+subangular
+subapostolic
+subaqua
+subarid
+subassemblage
+subassemblages
+subastral
+subauricular
+subaxillary
+subbass
+subcalibre
+subcartilaginous
+subception
+subchannels
+subcluster
+subclusters
+subdelirium
+subduct
+subelement
+subelements
+subepidermis
+subequatorial
+suberic
+suberin
+suberose
+subfloor
+subfusc
+subinstance
+subinstances
+subjectify
+sublanguage
+sublanguages
+sublapsarianism
+submental
+subordinary
+subordinationism
+subotica
+subpanel
+subpanels
+subparameter
+subparameters
+subprocessor
+subscan
+subscans
+subscapular
+subsocial
+subsolar
+substantialism
+substomatal
+subtangent
+subternatural
+subtorrid
+subtreasury
+subufd
+subufds
+suburbicarian
+subvene
+subzero
+succentor
+succeptibility
+successsive
+succinic
+succoth
+succursal
+succuss
+suckerfish
+sudarium
+sudbury
+sudd
+sudetes
+sudor
+suetonius
+sufferage
+suffiency
+sufflate
+suffruticose
+suffumigate
+sufu
+suggestibly
+suharto
+suisse
+sukarnapura
+sukhumi
+sukkoth
+suleiman
+sulla
+sulphadiazine
+sulphanilamide
+sulphathiazole
+sulphide
+sulphinyl
+sulphisoxazole
+sulphite
+sulphonamide
+sulphonate
+sulphonated
+sulphone
+sulphonic
+sulphonium
+sulphonmethane
+sulphonyl
+sulphurate
+sulphuret
+sulphuretted
+sulphuryl
+summerweight
+sump
+sumpter
+sumy
+sunbake
+sundog
+sundress
+sundresses
+sundsvall
+sungari
+sungkiang
+sunglow
+sungrebe
+sunhat
+sunray
+sunstar
+suntrap
+suo
+superaltar
+superbazaar
+supercede
+superceded
+supercedes
+supercolumnar
+supercomputing
+superconduction
+supercurrent
+superdense
+supererogate
+superfemale
+superfuse
+superglacial
+superhero
+superhet
+superhigh
+superhumeral
+superlanguage
+superload
+supermale
+supermodel
+supermodels
+supermundane
+supernational
+superorganic
+superoxide
+supersex
+superstruct
+suplex
+supralapsarian
+suprematism
+supremo
+suqutra
+sur
+sura
+surakarta
+sural
+surat
+surculose
+surd
+surfbird
+surfbirds
+surfcasting
+surfie
+surgeoncy
+surgeonfish
+suribachi
+suricate
+surrebuttal
+sursum
+susa
+susah
+suseptible
+suslik
+suss
+susso
+susurrate
+sutlej
+sutler
+suva
+sverige
+svizzera
+swacked
+swanage
+swaraj
+sward
+swarf
+sweelinck
+sweetiewife
+sweetman
+sweetmeal
+sweptback
+sweptwing
+sweven
+sweyn
+swiftie
+swiftlet
+swindon
+swinepox
+swingboat
+swingle
+swingometer
+swingometers
+switchgirl
+swob
+swordbill
+swordcraft
+swordsmen
+swordstick
+swordsticks
+swound
+swounds
+swy
+sybaris
+sydneysider
+syene
+syktyvkar
+syllabism
+syllabogram
+syllabography
+sylva
+sylvanus
+sympathectomy
+symphile
+sympodium
+symposiac
+synarchy
+syncarp
+synchrocyclotron
+synchrometer
+synclastic
+synclinorium
+syncom
+syncrisis
+syndactyl
+synecious
+synovia
+syntagma
+synthetism
+sypher
+syphiloma
+syr
+syssarcosis
+systematology
+sytactic
+syzran
+taata
+tabaret
+tabescent
+tachograph
+tachylyte
+tachymetry
+tachyphylaxis
+tacket
+tacmahack
+tadmor
+taegu
+taejon
+tael
+taenia
+taeniafuge
+taffrail
+tafia
+tafilelt
+taganrog
+taggers
+tagliatelle
+tagmeme
+tagmemics
+tagore
+tagus
+tahina
+tahr
+tahsil
+tahsildar
+taig
+tailpipe
+tailplane
+tailskid
+tailstock
+taimyr
+tain
+taine
+taiyuan
+taj
+tajo
+taka
+takahe
+takamatsu
+takao
+takeaway
+takin
+takoradi
+talapoin
+talaria
+talavera
+talbot
+talca
+talcahuano
+taliesin
+taligrade
+taliped
+tallinn
+tallis
+talos
+taluk
+talweg
+tamasha
+tamatave
+tamaulipas
+tambac
+tambora
+tamburlaine
+tamis
+tammerfors
+tammuz
+tammy
+tampere
+tampico
+tana
+tanana
+tancred
+tandjungpriok
+tandoori
+tanga
+tangleberry
+tangshan
+tanguy
+tanis
+tanist
+tanjore
+tanta
+tantalous
+tanto
+tantrism
+tapadera
+tapemark
+tapemarks
+taphouse
+tarabulus
+taradiddle
+taramasalata
+tarantass
+tarantella
+taranto
+tarawa
+tarbes
+tarentum
+tarim
+tarnal
+tarnation
+tarnishs
+tarpan
+tarradiddle
+tarragona
+tarrasa
+tarshish
+tarsia
+tarsometatarsus
+tartarous
+tartu
+tashi
+tashkent
+tasimeter
+tasman
+tasset
+tassie
+tassle
+tatchell
+tati
+tatouay
+tatra
+taupo
+tauranga
+tauromachy
+tav
+tavel
+tawney
+taxaceous
+taxiplane
+taxiplanes
+teacake
+teashop
+technocommercial
+technography
+tectorial
+tecumseh
+tedder
+teesside
+teet
+tef
+teg
+tegular
+tehuantepec
+teide
+teilhard
+tejo
+tela
+telanaipura
+telautograph
+telecom
+telecomunications
+telega
+telegenic
+telegnosis
+telegonus
+telemachus
+telescopy
+telescript
+telespectroscope
+telestereoscope
+telestich
+teletext
+teletranscription
+teletube
+teletypesetter
+televideo
+telewriter
+telexed
+telexes
+telexing
+telfer
+telferage
+tellurate
+tellurion
+tellus
+telpherage
+temuco
+tenaille
+tenedos
+teng
+tengri
+teniafuge
+teniers
+tenner
+tenniel
+tenno
+tenorite
+tenorrhaphy
+tenotomy
+tensible
+tentation
+tenzing
+tepal
+tepefy
+tephrite
+tepic
+teratism
+teratoid
+terbia
+terceira
+terephthalic
+tereshkova
+terminosity
+termor
+terne
+terni
+ternion
+terotechnology
+terrestial
+terrine
+territorian
+tertial
+tertium
+tertullian
+teruel
+terylene
+terza
+terzetto
+tesla
+tesseract
+tessin
+testbed
+testiculate
+testudinal
+tetrabrach
+tetrabutylammonium
+tetrachlorethylene
+tetracyclic
+tetragram
+tetraphenyl
+tetraplegia
+tetrapody
+tetrapterous
+tetrastich
+tetrastichous
+tetrasyllable
+tetrazzini
+tetroxide
+tetzel
+teutoburger
+tevere
+tevet
+textualism
+teyde
+tezel
+thackeray
+thaddeus
+thadentsonyane
+thales
+thalweg
+thammuz
+thanatopsis
+thanet
+thanjavur
+thapsus
+thatcherism
+thaumatology
+thaumatrope
+theaceous
+theanthropism
+thearchy
+thebaine
+thegn
+theine
+themistocles
+thenardite
+theocrasy
+theocritus
+theodorakis
+theomachy
+theomancy
+theomania
+theomorphic
+theopathy
+theophagy
+theophobia
+theophrastus
+theorbo
+theravada
+therezina
+therfore
+therianthropic
+thermaesthesia
+thermobarograph
+thermobarometer
+thermoelectricity
+thermogenesis
+thermomotor
+thermophysical
+thermoregularity
+thermostatical
+thermotensile
+thermotherapy
+theroid
+theropod
+thersitical
+thesauri
+thespis
+thickleaf
+thimblewit
+thingumabob
+thioalcohol
+thiofuran
+thionine
+thionyl
+thiopentone
+thiophen
+thiosinamine
+thiosulphate
+thiosulphuric
+thirdstream
+thirlage
+thirlmere
+thisbe
+tholos
+thonburi
+thoracoplasty
+thornbill
+thoron
+thoroughpaced
+thorp
+thorshavn
+thrave
+threadneedle
+threadworm
+threap
+throatlash
+thrombogen
+thrombose
+thumbnut
+thumbstall
+thummim
+thun
+thunderbox
+thundery
+thuner
+thuya
+thymelaeaceous
+thyristor
+tia
+tiberias
+tibesti
+tibiotarsus
+tibullus
+tibur
+ticino
+tiddler
+tiddly
+tidewaiter
+tiebreaker
+tiepolo
+tierra
+tiffin
+tiflis
+tightknit
+tiglic
+tigrinya
+tihwa
+tikoloshe
+tiliaceous
+tillicum
+timaru
+timberyard
+timbuktu
+timecard
+timescale
+timescales
+timeslice
+timeslices
+timestamp
+timestamped
+timestamping
+timestamps
+tindal
+tineid
+tinpot
+tintinnabulum
+tipcat
+tiptop
+tipu
+tiran
+tiresias
+tirich
+tiro
+tiros
+tirpitz
+tirso
+tisza
+titanite
+titanosaur
+titanothere
+titfer
+tithonus
+titicaca
+titman
+titubation
+tiu
+tiv
+toadeater
+toadeater's
+toadeaters
+toadfish
+toadfish's
+toadfishes
+toadflax
+toadstone
+toadstone's
+toadstones
+tobit
+tobol
+tocantins
+tocology
+toea
+toecap
+toey
+toheroa
+tolpuddle
+toluyl
+tolylphosphine
+tomalley
+toman
+tombola
+tombouctou
+tomograph
+tonle
+tonsillotomy
+toowoomba
+toparch
+topazolite
+topotype
+topspin
+torbay
+torc
+torchier
+toric
+torii
+torino
+torose
+torquay
+torquemada
+torre
+torrefy
+torres
+torricelli
+torsibility
+tortelier
+tortellini
+tortile
+tortola
+tortuga
+toscana
+toscanini
+toul
+toulon
+touraine
+tourane
+tourcoing
+touristy
+tournai
+tourneur
+toussaint
+touzle
+towbar
+towkay
+townhall
+townscape
+townshend
+toxaemia
+toxalbumin
+toyama
+trabzon
+tracasserie
+tracheostomy
+tracksuit
+tractile
+trad
+tradeability
+traditor
+traducianism
+trafalgar
+traherne
+trailblaze
+trajan
+tralee
+trammie
+tranformed
+tranmission
+tranmitted
+trannie
+transcalent
+transculturation
+transcurrent
+transformism
+transgranular
+transilient
+transkei
+transliterator
+translunar
+transmigrant
+transmittancy
+transmundane
+transpadane
+transpassive
+transpond
+transponders
+transportaion
+transput
+transputer
+transputers
+transshipped
+tranverse
+trapan
+trapani
+trapes
+trapeziform
+trappean
+trasimene
+travancore
+traymobile
+trebizond
+treen
+treename
+treenames
+treenware
+tref
+trehala
+treitschke
+trengganu
+trente
+trento
+tressure
+tret
+trevally
+trevithick
+triac
+triazole
+tribade
+triblet
+tribromoethanol
+tricarbonyl
+tricentenary
+trichinopoly
+trichloro
+trichloroethanol
+trichloroethylene
+trichology
+trichosis
+trichroism
+tricktrack
+tricostate
+tricritical
+tricriticality
+tricrotic
+tricyclohexyl
+tridactyl
+tridentate
+tridentum
+triecious
+trieste
+trifold
+trihedron
+trihydrate
+trihydric
+triiodomethane
+trike
+trilateration
+trilemma
+trilithon
+trimethadione
+trimetric
+trimolecular
+trimurti
+trinacria
+trincomalee
+trinitrobenzene
+trinitrocresol
+trinitroglycerin
+trinitrophenol
+trioecious
+triolein
+tripalmitin
+tripersonal
+triphenyl
+tripody
+tripolitania
+tripterous
+triptolemus
+triptyque
+tripura
+tripwire
+triserial
+triskaidekaphobia
+trismegistus
+tristich
+tristichous
+trisulphide
+tritanopia
+tritiate
+triunitarian
+trivandrum
+troas
+troat
+trobriand
+trocar
+trochelminth
+trode
+trog
+troilism
+troilus
+trois
+trollope
+tromba
+tropaeolin
+trophoplasm
+tropicbird
+tropine
+tropophyte
+troppo
+tropylium
+trossachs
+trotskyist
+trotyl
+troubador
+trouse
+troyes
+trucial
+truckie
+trudgen
+trug
+trugs
+truk
+trumeau
+tryma
+tryptophanyl
+tsade
+tsana
+tsarevitch
+tsarevna
+tsaritsyn
+tselinograd
+tshiluba
+tshombe
+tsinan
+tsinghai
+tsingtao
+tsingyuan
+tso
+tsonga
+tsotsi
+tsugaru
+tsukahara
+tsushima
+tsutsugamushi
+tswana
+tuart
+tuatara
+tubate
+tubman
+tubuai
+tubuliflorous
+tucotuco
+tugela
+tugrik
+tuileries
+tula
+tularaemia
+tull
+tully
+tumblehome
+tumefacient
+tumefy
+tumular
+tumulose
+tungstous
+tungting
+tunguska
+tunnage
+tupamaro
+tuppenny
+tupungato
+turaco
+turbary
+turbogenerator
+turdine
+turenne
+turgenev
+turgent
+turgite
+turgot
+turishcheva
+turkestan
+turku
+turncock
+turnround
+turpeth
+turpin
+tusculum
+tussaud
+tussis
+tutankhamen
+tutiorism
+tutsan
+tutsi
+tutty
+tutuila
+tuva
+tuxtla
+tver
+twat
+twattle
+twayblade
+twee
+tweeddale
+tweedledum
+tweedsmuir
+tweeny
+twelvemo
+twite
+tychism
+tycho
+tye
+tylopod
+tylosis
+tympanist
+tympanitis
+tyndall
+tyndareus
+tynemouth
+tyneside
+typebar
+typhlitis
+typhlology
+typhoeus
+typhogenic
+typhoidin
+typothetae
+tyr
+tyumen
+tzekung
+tzetze
+ubbelohde
+ubiety
+ucayali
+ucca
+uccello
+udaipur
+udal
+udine
+udmurt
+udo
+udometer
+uele
+ufa
+ufd
+ufo
+ufology
+ugali
+ugaritic
+ugli
+uhlan
+uintathere
+ulfilas
+ulmaceous
+ulpian
+ultramicrometer
+ultramicrometers
+ultramicroscopic
+ultramundane
+ultrared
+ultrathin
+ultravirus
+ultrawet
+umayyad
+umbellule
+umberto
+umbles
+umbo
+umbria
+umiak
+umpy
+umrcc
+umtali
+unaesthetic
+unallocateed
+unamuno
+unaneled
+unaskable
+unassign
+unban
+unbelt
+unbirthday
+unbonnet
+unchurch
+unclad
+unco
+uncodeable
+unconservative
+uncontroversial
+undated
+undefine
+underachieve
+underbuy
+undercart
+underclay
+undercroft
+undercutting
+underdevelop
+underemphasis
+underfelt
+underfilled
+underfloor
+underfur
+undergrown
+underhung
+underletting
+underlinen
+undermentioned
+undernourish
+underpainting
+underpay
+underpinned
+underpitch
+underpitched
+underpitches
+underpitching
+underprice
+underpriced
+underprices
+underpricing
+underprop
+underquote
+underseal
+underset
+undersheriff
+undersmooth
+undersmoothed
+undersmoothing
+undersmooths
+underspent
+understaff
+underthrust
+undertint
+undertrump
+undertype
+undialectical
+undirectional
+undro
+undset
+unenforcable
+unexcited
+unforced
+unforseen
+ungaretti
+ungava
+unguiculate
+unguinous
+unguis
+ungula
+unguligrade
+uni
+unibus
+unicef
+unicolour
+unicostate
+unidirection
+uniformally
+unilateralist
+unilateralists
+uniliteral
+unimak
+unimodular
+uninfluential
+uninterruptable
+unipersonal
+unipod
+uniseptate
+uniserial
+uniterm
+unlead
+unlettable
+unmodeled
+unmusical
+unpaddable
+unpolitic
+unprepossessing
+unreactive
+unreckonable
+unreligious
+unrepair
+unrwa
+unskilful
+unspecifed
+unspecify
+unsteel
+unsuggestive
+unsupportive
+unterwalden
+untravelled
+untypical
+unwarrant
+upanishad
+upcountry
+uphroe
+upolu
+upperbound
+upperbounds
+uppsala
+uprouse
+upsadaisy
+upsala
+upstand
+upstretched
+upswell
+upto
+uranalysis
+uranism
+uranite
+uredosorus
+uredospore
+uretic
+urey
+urfa
+urga
+urim
+urinant
+uriniferous
+urmia
+urogenous
+uroscopy
+urquhart
+urticaceous
+uruapan
+urumchi
+urundi
+username
+ushant
+ushas
+usnach
+uspallata
+usquebaugh
+ussher
+ussuri
+ustashi
+ustulation
+ustyurt
+usumbura
+utamaro
+utgard
+uther
+utriculitis
+utrillo
+uttar
+uvedale
+uvulitis
+uxmal
+vacherin
+vadodara
+vadose
+vagal
+vaginate
+vaginectomy
+vaginismus
+vaginitis
+vagotonia
+vagus
+vahana
+vaisya
+valais
+valdai
+valdemar
+valdivia
+valencies
+valency
+valens
+valera
+valerianaceous
+valeric
+valeta
+valetta
+valgus
+valladolid
+vallation
+vallecula
+vallombrosa
+valona
+valonia
+valuta
+valvate
+valvule
+valvulitis
+vambrace
+vanadate
+vanadic
+vanadinite
+vanadous
+vanaspati
+vanbrugh
+vang
+vansittart
+vanua
+vanzetti
+vaporescence
+vaporetto
+vaporific
+vaporimeter
+vara
+varactor
+varanasi
+vardar
+vardon
+varec
+varese
+vargas
+varia
+variablity
+varicella
+varicellate
+varicelloid
+varicocele
+varicosis
+varicotomy
+variola
+variolate
+variole
+variolite
+variscite
+varityper
+varna
+varro
+vas
+vasari
+vasco
+vashti
+vasoinhibitor
+vasoregulatory
+vaticide
+vauban
+vaucluse
+vaud
+vav
+vavasor
+vedette
+veg
+vegan
+veii
+veinstone
+veinule
+vela
+velate
+velcro
+veldskoen
+veleta
+veliger
+velites
+vellicate
+vellore
+vena
+venenose
+venepuncture
+venlo
+venose
+venosity
+ventris
+verbenaceous
+vercelli
+vercingetorix
+verderer
+verdun
+verecund
+vereeniging
+vergeboard
+verglas
+verifiably
+verkrampte
+verlaine
+verligte
+vermeer
+vermination
+vermis
+vermivorous
+verny
+verrazano
+verrocchio
+verruca
+verrucae
+verrucose
+versabraille
+versant
+versatec
+verst
+vert
+verticillaster
+verticillate
+vertu
+verulamium
+vervain
+vervet
+verwoerd
+vesalius
+vespasian
+vespertilionine
+vespucci
+vesuvius
+vetiver
+viareggio
+viator
+vibraculum
+vibronic
+vicenary
+vicenza
+vico
+vicomte
+victoriana
+videlicet
+videotex
+vidhan
+vienne
+viewport
+viewport's
+viewports
+viewscan
+vignola
+vigny
+vigo
+villous
+vimineous
+vina
+vinasse
+vinegarette
+vinificator
+vinnitsa
+violoncello
+violone
+viren
+virial
+virtu
+viscoid
+vistula
+vitaceous
+vitaphone
+vitascope
+vitoria
+vitrain
+vitrescence
+vitrescent
+vitric
+vitriform
+vitruvius
+vitta
+vittle
+vituline
+viverrine
+viyella
+vocate
+voidage
+voiotia
+voir
+voix
+vojvodina
+volitant
+vologda
+volost
+volsung
+volsunga
+voltaism
+voltammeter
+volturno
+volvulus
+vomer
+voortrekker
+vorster
+vosges
+vostok
+vouge
+vox
+vuillard
+vulgaris
+vulvovaginitis
+vyborg
+wabble
+wabbled
+wabbles
+wabbling
+wace
+wadai
+wadmal
+wadset
+wagram
+wagtail
+waistcloth
+walfish
+walhalla
+walkable
+walkley
+wallah
+wallasey
+wame
+wanderoo
+wandoo
+wanganui
+wanhsien
+wank
+wankel
+wankie
+wanna
+waratah
+wardian
+wardle
+wardmote
+warhorse
+warhorses
+warrigal
+warsle
+warta
+washaway
+washday
+washdays
+washerwomen
+washery
+washin
+washwomen
+wassermann
+wasteweir
+watap
+watchstrap
+waterage
+waterbrain
+waterbuck
+waterspout
+watertower
+wattlebird
+waul
+waveband
+wavebands
+wavefunction
+wavefunctions
+wavellite
+wavemeter
+waveoff
+waw
+wawa
+wawl
+waxberry
+waxbill
+waxplant
+wayzgoose
+waziristan
+weakfish
+weald
+weaponeer
+wearproof
+weasand
+weaverbird
+webbs
+webwheel
+weddell
+wedekind
+wedeling
+weedkiller
+weelkes
+ween
+weeny
+weighbridge
+weighbridges
+weightlifter
+weightlifting
+weihai
+weka
+welkom
+welland
+wellesz
+wellies
+welterweight
+welwyn
+wentletrap
+wernerite
+wersh
+weser
+wesker
+wessex
+westmost
+whacko
+whangarei
+whare
+wharfie
+wharve
+whatsit
+whaup
+wheatworm
+whereafter
+wherrit
+wheyface
+whidah
+whimbrel
+whin
+whinchat
+whinge
+whipstall
+whipworm
+whirlabout
+whitby
+whitebeam
+whitedamp
+whitefly
+whitethorn
+whitewood
+who've
+wholefood
+wholemeal
+wholism
+whortleberry
+whyalla
+whydah
+wicketkeeper
+wicketkeepers
+wicketkeeping
+wickthing
+wicopy
+widdershins
+widgery
+widgie
+widnes
+widukind
+wien
+wikiup
+wildcard
+wildcarded
+wildcarding
+wildcards
+wilde
+wilhelmshaven
+wilhelmstrasse
+willemstad
+willowherb
+wilmslow
+wilno
+wincey
+windbound
+windcheater
+windcheaters
+windchill
+windermere
+windflower
+windgall
+windhoek
+windhover
+windlestraw
+windrow
+windsail
+windsock
+winebibber
+winkelried
+winnipegosis
+winterfeed
+winterthur
+winterweight
+wipo
+wirepuller
+wiretapping
+wirewalker
+wirra
+wirral
+wis
+wishlist
+wishlists
+wislany
+wismar
+wist
+witan
+witchetty
+wite
+witenagemot
+withershins
+wittol
+wivern
+woad
+woaded
+woadwaxen
+woald
+wodge
+wodges
+wog
+woggle
+wolfbane
+wolfenden
+wolffish
+wolfit
+wolframite
+wolfsbane
+wollastonite
+wolly
+wolsey
+wolve
+wolver
+womera
+wonsan
+woodborer
+woodcarving
+woodchat
+woodgrouse
+woodhook
+woodlark
+woodlouse
+woodrush
+woodscrew
+woodseats
+woodwaxen
+woodworm
+woolf
+woolfell
+woolgrower
+woolley
+woollybutt
+woop
+woorali
+workaday
+workbag
+workfile
+workfiles
+workgroup
+workgroups
+workmate
+workmates
+workperson
+workshy
+worksop
+wormcast
+wormseed
+wormwood
+worsley
+wot
+wran
+wrapover
+wrapround
+wreckfish
+wreckful
+wrekin
+wroclaw
+wrongdo
+wrongdoers
+wroth
+wrybill
+wryneck
+wuchang
+wuhsien
+wuhu
+wulfenite
+wulfila
+wundt
+wuppertal
+wurley
+wurst
+wus
+wusih
+wuthering
+wutsin
+wycherley
+wycliffe
+wye
+wynd
+wyvern
+xanthein
+xanthippe
+xanthochroid
+xanthochroism
+xanthoma
+xanthophyll
+xanthous
+xanthus
+xci
+xcii
+xciv
+xcix
+xcvi
+xcvii
+xenakis
+xenocrates
+xenocryst
+xenogamy
+xenogenesis
+xenoglossia
+xenolith
+xenomorphic
+xenophanes
+xenophon
+xeroderma
+xeromorphic
+xerophthalmia
+xerophyte
+xerosere
+xerosis
+xhosa
+xiphisternum
+xiphoid
+xiphosuran
+xuthus
+xxi
+xxii
+xxiii
+xxiv
+xxix
+xxv
+xxvi
+xxvii
+xxviii
+xxx
+xxxi
+xxxii
+xxxiii
+xxxiv
+xxxix
+xxxv
+xxxvi
+xxxvii
+xxxviii
+xylan
+xylidine
+xylocarp
+xylograph
+xylography
+xyloid
+xylol
+xylophagous
+xylyl
+xyst
+xyster
+yabber
+yabby
+yaffle
+yafo
+yagi
+yahata
+yamagata
+yamani
+yamashita
+yammer
+yanina
+yapok
+yapon
+yarwood
+yataghan
+yate
+yauld
+yaunde
+yaup
+yaupon
+yautia
+yawata
+yawp
+yazd
+yean
+yeanling
+yegg
+yeld
+yelk
+yellowbark
+yellowbird
+yellowhammer
+yellowlegs
+yellowtail
+yellowweed
+yellowwood
+yenan
+yentai
+yerevan
+yestreen
+yeti
+yezd
+ygerne
+yike
+yingkow
+yippee
+yirr
+ylem
+ymir
+yob
+yod
+yodle
+yogh
+yohimbine
+yoicks
+yokefellow
+yola
+yom
+yoni
+yonne
+yonnie
+ytterbia
+ytterbite
+yttria
+yttriferous
+yuk
+yulan
+yurt
+yvelines
+ywis
+zacynthus
+zaffer
+zagazig
+zagreus
+zagros
+zama
+zamindar
+zamindari
+zamora
+zante
+zanu
+zapata
+zaporozhye
+zappa
+zapu
+zaqaziq
+zaragoza
+zarathustra
+zaratite
+zareba
+zarf
+zarga
+zaria
+zarzuela
+zastruga
+zayin
+zeami
+zebec
+zebedee
+zebrawood
+zebu
+zebulun
+zecchino
+zechariah
+zed
+zedekiah
+zedoary
+zee
+zein
+zeist
+zemindar
+zenana
+zener
+zephaniah
+zephyrus
+zeugma
+zeuxis
+zia
+ziaur
+zibeline
+zibet
+ziff
+ziggurat
+zigzagger
+zila
+zilpah
+zinciferous
+zincite
+zinckenite
+zincograph
+zincography
+zingiberaceous
+zinjanthropus
+zinkenite
+zipangu
+zircalloy
+ziska
+zlatoust
+zoaea
+zoan
+zoea
+zoffany
+zohar
+zola
+zond
+zonk
+zonking
+zonks
+zonule
+zoochemistry
+zoochore
+zoogloea
+zoography
+zooid
+zoolatry
+zoometry
+zoomorphism
+zoophile
+zoophilia
+zoophilism
+zoophobia
+zooplasty
+zoosperm
+zoosporangium
+zootomy
+zootoxin
+zootoxins
+zorilla
+zorrilla
+zoster
+zoug
+zsigmondy
+zucchetto
+zugzwang
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement with Recursion.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement with Recursion.xml
new file mode 100644
index 00000000000..d2b2fd22b38
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement with Recursion.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://www.w3.org/2001/XMLSchema" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:Title>SRS</o:Title><o:Author>Ryan D. Brooks</o:Author><o:LastAuthor>Ryan D. Brooks</o:LastAuthor><o:Revision>7</o:Revision><o:TotalTime>4</o:TotalTime><o:LastPrinted>2007-03-22T22:27:00Z</o:LastPrinted><o:Created>2007-04-21T15:49:00Z</o:Created><o:LastSaved>2007-05-30T23:44:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>7</o:Words><o:Characters>46</o:Characters><o:Company>The Boeing Company</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>52</o:CharactersWithSpaces><o:Version>11.8134</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Helvetica"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="20007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/></w:font><w:font w:name="Courier"><w:panose-1 w:val="02070409020205020404"/><w:charset w:val="00"/><w:family w:val="Modern"/><w:notTrueType/><w:pitch w:val="fixed"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="61007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000101FF" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="003A6350"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F89E6E26"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:pStyle w:val="APPENDIX1"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="APPENDIX2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="APPENDIX3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="APPENDIX4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="APPENDIX5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="APPENDIX6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="APPENDIX7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="APPENDIX8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="APPENDIX9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="016D5431"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="98C65BCE"/><w:lvl w:ilvl="0" w:tplc="94D2C566"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="0C4D206D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="4B543E40"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="10AF29E5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="7520DAAE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="4"><w:lsid w:val="15EB1725"/><w:plt w:val="Multilevel"/><w:tmpl w:val="D902A83E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="5"><w:lsid w:val="1C970BBA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EB82E3A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="6"><w:lsid w:val="1D6C5FCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E710F038"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="APPENDIX %1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="0" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="720" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1440" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="7"><w:lsid w:val="1D753DB7"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="8"><w:lsid w:val="1EC51BCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="9"><w:lsid w:val="256F5D56"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="10"><w:lsid w:val="290A1130"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="11"><w:lsid w:val="299E4F07"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="46E2B8B2"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="12"><w:lsid w:val="29C240FD"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="FCA4DC08"/><w:lvl w:ilvl="0" w:tplc="B5146A3E"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl2"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1224"/></w:tabs><w:ind w:left="1224" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="13"><w:lsid w:val="29CA5728"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="D00252C6"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="14"><w:lsid w:val="2A5411A0"/><w:plt w:val="Multilevel"/><w:tmpl w:val="C40CB9EC"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="Heading1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="2"/><w:pStyle w:val="Heading2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="24"/><w:pStyle w:val="Heading3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="Heading4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="Heading5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="Heading6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="Heading7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="Heading8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="Heading9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="15"><w:lsid w:val="2B1C06F5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3B98963A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="16"><w:lsid w:val="2B477730"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="33801DC4"/><w:lvl w:ilvl="0" w:tplc="2D8A4B4C"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl3"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3024"/></w:tabs><w:ind w:left="3024" w:hanging="2016"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2448"/></w:tabs><w:ind w:left="2448" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3168"/></w:tabs><w:ind w:left="3168" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3888"/></w:tabs><w:ind w:left="3888" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4608"/></w:tabs><w:ind w:left="4608" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5328"/></w:tabs><w:ind w:left="5328" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6048"/></w:tabs><w:ind w:left="6048" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6768"/></w:tabs><w:ind w:left="6768" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="7488"/></w:tabs><w:ind w:left="7488" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="17"><w:lsid w:val="2B5B6B3C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5CC8E874"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:first-line="763"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="18"><w:lsid w:val="2D6545A6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3F227848"/><w:name w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1296"/></w:tabs><w:ind w:left="1296" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:caps w:val="off"/><w:strike w:val="off"/><w:dstrike w:val="off"/><w:outline w:val="off"/><w:shadow w:val="off"/><w:emboss w:val="off"/><w:imprint w:val="off"/><w:vanish w:val="off"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:vertAlign w:val="baseline"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="listlvl2"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="-31680"/></w:tabs><w:ind w:left="1656" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl3"/><w:lvlText w:val="(%3)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2016"/></w:tabs><w:ind w:left="2016" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="listlvl4"/><w:lvlText w:val="(%4)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2376"/></w:tabs><w:ind w:left="2376" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl5"/><w:lvlText w:val="%5)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2736"/></w:tabs><w:ind w:left="2736" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="listlvl6"/><w:lvlText w:val="%6)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3096"/></w:tabs><w:ind w:left="3096" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:sz w:val="22"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl7"/><w:lvlText w:val="[%7]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3456"/></w:tabs><w:ind w:left="3456" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="[%8]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="19"><w:lsid w:val="308239DA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="20"><w:lsid w:val="31A252E6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="A9D83578"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="21"><w:lsid w:val="3B97448F"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart2"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="22"><w:lsid w:val="3C165F4A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79A06FE6"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="23"><w:lsid w:val="42BB3748"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="DBE464B0"/><w:lvl w:ilvl="0" w:tplc="26BAF6B0"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl1"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="648"/></w:tabs><w:ind w:left="648" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3960" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4680" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5400" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="6120" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6840"/></w:tabs><w:ind w:left="6840" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="24"><w:lsid w:val="5A401749"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CD8E61CE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="25"><w:lsid w:val="5A802BC9"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="26"><w:lsid w:val="5C3B1B76"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="27"><w:lsid w:val="5E371EBB"/><w:plt w:val="Multilevel"/><w:tmpl w:val="DA56D440"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="28"><w:lsid w:val="60B71688"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EA20814"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="29"><w:lsid w:val="6389497B"/><w:plt w:val="Multilevel"/><w:tmpl w:val="AC5A6410"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="listlvl10"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="360" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1080" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="1800" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2520" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3240" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="3960" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="4680" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5400" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6120" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="30"><w:lsid w:val="6469691A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E5D02024"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="31"><w:lsid w:val="74BA49AE"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart"/><w:styleLink w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="32"><w:lsid w:val="751E50EA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79E6FEDC"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="33"><w:lsid w:val="7D9D3B47"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="34"><w:lsid w:val="7F0F313D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F8FC63EE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="35"><w:lsid w:val="7F633FB7"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5F5A52E8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="23"/></w:list><w:list w:ilfo="2"><w:ilst w:val="12"/></w:list><w:list w:ilfo="3"><w:ilst w:val="18"/></w:list><w:list w:ilfo="4"><w:ilst w:val="14"/></w:list><w:list w:ilfo="5"><w:ilst w:val="5"/></w:list><w:list w:ilfo="6"><w:ilst w:val="25"/></w:list><w:list w:ilfo="7"><w:ilst w:val="4"/></w:list><w:list w:ilfo="8"><w:ilst w:val="13"/></w:list><w:list w:ilfo="9"><w:ilst w:val="29"/></w:list><w:list w:ilfo="10"><w:ilst w:val="6"/></w:list><w:list w:ilfo="11"><w:ilst w:val="18"/></w:list><w:list w:ilfo="12"><w:ilst w:val="26"/></w:list><w:list w:ilfo="13"><w:ilst w:val="34"/></w:list><w:list w:ilfo="14"><w:ilst w:val="2"/></w:list><w:list w:ilfo="15"><w:ilst w:val="27"/></w:list><w:list w:ilfo="16"><w:ilst w:val="17"/></w:list><w:list w:ilfo="17"><w:ilst w:val="30"/></w:list><w:list w:ilfo="18"><w:ilst w:val="3"/></w:list><w:list w:ilfo="19"><w:ilst w:val="20"/></w:list><w:list w:ilfo="20"><w:ilst w:val="15"/></w:list><w:list w:ilfo="21"><w:ilst w:val="35"/></w:list><w:list w:ilfo="22"><w:ilst w:val="22"/></w:list><w:list w:ilfo="23"><w:ilst w:val="24"/></w:list><w:list w:ilfo="24"><w:ilst w:val="32"/></w:list><w:list w:ilfo="25"><w:ilst w:val="0"/></w:list><w:list w:ilfo="26"><w:ilst w:val="31"/></w:list><w:list w:ilfo="27"><w:ilst w:val="21"/></w:list><w:list w:ilfo="28"><w:ilst w:val="16"/></w:list><w:list w:ilfo="29"><w:ilst w:val="19"/></w:list><w:list w:ilfo="30"><w:ilst w:val="18"/><w:lvlOverride w:ilvl="0"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="1"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="2"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="3"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="4"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="5"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="6"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="7"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="8"><w:startOverride w:val="1"/></w:lvlOverride></w:list><w:list w:ilfo="31"><w:ilst w:val="11"/></w:list><w:list w:ilfo="32"><w:ilst w:val="1"/></w:list><w:list w:ilfo="33"><w:ilst w:val="33"/></w:list><w:list w:ilfo="34"><w:ilst w:val="8"/></w:list><w:list w:ilfo="35"><w:ilst w:val="28"/></w:list><w:list w:ilfo="36"><w:ilst w:val="14"/></w:list><w:list w:ilfo="37"><w:ilst w:val="10"/></w:list><w:list w:ilfo="38"><w:ilst w:val="9"/></w:list><w:list w:ilfo="39"><w:ilst w:val="7"/></w:list><w:ilfoMacAtCleanup w:val="5"/></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><wx:uiName wx:val="Heading 1"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading1"/><w:keepNext/><w:keepLines/><w:pageBreakBefore/><w:listPr><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:kern w:val="28"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><wx:uiName wx:val="Heading 2"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading2"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><wx:uiName wx:val="Heading 3"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading3"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="900"/></w:tabs><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading4"><w:name w:val="heading 4"/><wx:uiName wx:val="Heading 4"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading4"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="3"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading5"><w:name w:val="heading 5"/><wx:uiName wx:val="Heading 5"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading5"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="4"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading6"><w:name w:val="heading 6"/><wx:uiName wx:val="Heading 6"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading6"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="5"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading7"><w:name w:val="heading 7"/><wx:uiName wx:val="Heading 7"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading7"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1620"/></w:tabs><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="6"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading8"><w:name w:val="heading 8"/><wx:uiName wx:val="Heading 8"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading8"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="7"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="7"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading9"><w:name w:val="heading 9"/><wx:uiName wx:val="Heading 9"/><w:next w:val="paranormal"/><w:rsid w:val="00F4596F"/><w:pPr><w:pStyle w:val="Heading9"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="8"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="8"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="paranormal"><w:name w:val="para:normal"/><w:link w:val="paranormalChar"/><w:rsid w:val="009E6B3D"/><w:pPr><w:pStyle w:val="paranormal"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="64" w:after="80" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl3"><w:name w:val="list:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl3"/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="2088"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang1"><w:name w:val="req lang:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Header"><w:name w:val="header"/><wx:uiName wx:val="Header"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A134C3"/><w:pPr><w:pStyle w:val="Header"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs><w:spacing w:before="20" w:after="0" w:line="180" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="proprietarycontd"><w:name w:val="proprietary:cont'd"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="proprietarycontd"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="200" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="16"/><w:sz-cs w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paracentered"><w:name w:val="para:centered"/><w:autoRedefine/><w:rsid w:val="00B43482"/><w:pPr><w:pStyle w:val="paracentered"/><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="80" w:after="80" w:line="240" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent2"><w:name w:val="para:indent2"/><w:autoRedefine/><w:rsid w:val="004417BE"/><w:pPr><w:pStyle w:val="paraindent2"/><w:tabs><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent3"><w:name w:val="para:indent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent3"/><w:tabs><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/><w:tab w:val="left" w:pos="9720"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Caption"><w:name w:val="caption"/><wx:uiName wx:val="Caption"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="0085234B"/><w:pPr><w:pStyle w:val="Caption"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9720"/><w:tab w:val="left" w:pos="10800"/><w:tab w:val="left" w:pos="11880"/><w:tab w:val="left" w:pos="12960"/><w:tab w:val="left" w:pos="14040"/><w:tab w:val="left" w:pos="15120"/><w:tab w:val="left" w:pos="16200"/><w:tab w:val="left" w:pos="17280"/><w:tab w:val="left" w:pos="18360"/><w:tab w:val="left" w:pos="19440"/><w:tab w:val="left" w:pos="20520"/><w:tab w:val="left" w:pos="21600"/><w:tab w:val="left" w:pos="22680"/><w:tab w:val="left" w:pos="23760"/><w:tab w:val="left" w:pos="24840"/><w:tab w:val="left" w:pos="25920"/><w:tab w:val="left" w:pos="27000"/><w:tab w:val="left" w:pos="28080"/><w:tab w:val="left" w:pos="29160"/><w:tab w:val="left" w:pos="30240"/><w:tab w:val="left" w:pos="31320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent1"><w:name w:val="para:indent1"/><w:autoRedefine/><w:rsid w:val="007D424E"/><w:pPr><w:pStyle w:val="paraindent1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Footer"><w:name w:val="footer"/><wx:uiName wx:val="Footer"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="Footer"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl4"><w:name w:val="list:lvl 4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl4"/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="11"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead"><w:name w:val="RowHead"/><w:basedOn w:val="Heading1"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:spacing w:before="100" w:after="100"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11"><w:name w:val="TableText11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOAHeading"><w:name w:val="toa heading"/><wx:uiName wx:val="TOA Heading"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOAHeading"/><w:spacing w:before="240" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:caps/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHeadL"><w:name w:val="RowHeadL"/><w:basedOn w:val="RowHead"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHeadL"/><w:spacing w:before="60" w:after="60"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11B"><w:name w:val="TableText11B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText11B"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofAuthorities"><w:name w:val="table of authorities"/><wx:uiName wx:val="Table of Authorities"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofAuthorities"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="8640"/></w:tabs><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofFigures"><w:name w:val="table of figures"/><wx:uiName wx:val="Table of Figures"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofFigures"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="60" w:after="60"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="Hyperlink"><w:name w:val="Hyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00721F21"/><w:rPr><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="PageNumber"><w:name w:val="page number"/><wx:uiName wx:val="Page Number"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00D90577"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:dstrike w:val="off"/><w:sz w:val="20"/><w:sz-cs w:val="20"/><w:vertAlign w:val="baseline"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead11"><w:name w:val="RowHead11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead11"/><w:listPr><w:ilvl w:val="12"/></w:listPr><w:spacing w:before="80" w:after="80"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11C"><w:name w:val="TableText11C"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11C"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman"/><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl1"><w:name w:val="list:lvl 1"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl1"/><w:listPr><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl5"><w:name w:val="list:lvl 5"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl5"/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="left" w:pos="3384"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl2"><w:name w:val="list:lvl 2"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="AppendixTitle"><w:name w:val="Appendix Title"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="AppendixTitle"/><w:pageBreakBefore/><w:spacing w:before="120" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead10"><w:name w:val="RowHead10"/><w:basedOn w:val="RowHead11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC1"><w:name w:val="toc 1"/><wx:uiName wx:val="TOC 1"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC1"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="540"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="240"/><w:ind w:left="547" w:hanging="547"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC2"><w:name w:val="toc 2"/><wx:uiName wx:val="TOC 2"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC2"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="900"/><w:tab w:val="right" w:leader="dot" w:pos="9360"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="907" w:hanging="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC3"><w:name w:val="toc 3"/><wx:uiName wx:val="TOC 3"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC3"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1260"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1260" w:hanging="900"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC4"><w:name w:val="toc 4"/><wx:uiName wx:val="TOC 4"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC4"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1620"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1620" w:hanging="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC5"><w:name w:val="toc 5"/><wx:uiName wx:val="TOC 5"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC5"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1980"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1980" w:hanging="1260"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC6"><w:name w:val="toc 6"/><wx:uiName wx:val="TOC 6"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC6"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2340"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2340" w:hanging="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC7"><w:name w:val="toc 7"/><wx:uiName wx:val="TOC 7"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC7"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2700"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="0" w:after="0" w:line="240" w:line-rule="auto"/><w:ind w:left="2700" w:hanging="1620"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC8"><w:name w:val="toc 8"/><wx:uiName wx:val="TOC 8"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC8"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2970"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2970" w:hanging="1710"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC9"><w:name w:val="toc 9"/><wx:uiName wx:val="TOC 9"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC9"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="3330"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="3330" w:hanging="1890"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HeadingUnnumbered"><w:name w:val="Heading Unnumbered"/><w:next w:val="paranormal"/><w:autoRedefine/><w:rsid w:val="00107AA6"/><w:pPr><w:pStyle w:val="HeadingUnnumbered"/><w:keepNext/><w:keepLines/><w:spacing w:before="240" w:after="80"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="24"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10"><w:name w:val="TableText10"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableTextBCentered"><w:name w:val="TableTextB Centered"/><w:basedOn w:val="Normal"/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableTextBCentered"/><w:spacing w:line="220" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10C"><w:name w:val="TableText10C"/><w:basedOn w:val="TableText11C"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10C"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10B"><w:name w:val="TableText10B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText10B"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="acronym"><w:name w:val="acronym"/><w:autoRedefine/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="acronym"/><w:tabs><w:tab w:val="left" w:pos="2160"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="40"/><w:ind w:left="2160" w:hanging="2160"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl6"><w:name w:val="list:lvl 6"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl6"/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="clear" w:pos="4320"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr1L"><w:name w:val="hdr1L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr1L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr2L"><w:name w:val="hdr2L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr2L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="0" w:line="180" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl1"><w:name w:val="bullet:lvl 1"/><w:basedOn w:val="Normal"/><w:link w:val="bulletlvl1CharChar"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl1"/><w:listPr><w:ilfo w:val="1"/></w:listPr><w:spacing w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl2"><w:name w:val="bullet:lvl 2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilfo w:val="2"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="1224"/><w:tab w:val="left" w:pos="648"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1728" w:hanging="1080"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent4"><w:name w:val="para:indent4"/><w:basedOn w:val="paraindent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent4"/><w:ind w:left="1440"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl7"><w:name w:val="list:lvl 7"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl7"/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="left" w:pos="3024"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCfiguretitle"><w:name w:val="TOC:figure title"/><w:basedOn w:val="Caption"/><w:autoRedefine/><w:rsid w:val="00894991"/><w:pPr><w:pStyle w:val="TOCfiguretitle"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="006E0AB6"/><w:pPr><w:pStyle w:val="note"/><w:spacing w:before="80" w:after="80"/><w:ind w:left="1656" w:right="720" w:hanging="936"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang2"><w:name w:val="req lang:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang2"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang3"><w:name w:val="req lang:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang4"><w:name w:val="req lang:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang4"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang5"><w:name w:val="req lang:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang5"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1800"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang6"><w:name w:val="req lang:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang6"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="2160"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="statedef"><w:name w:val="state def"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DE6BA0"/><w:pPr><w:pStyle w:val="statedef"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="80" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps/><w:color w:val="00FF00"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="intentblank"><w:name w:val="intent:blank"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="000B79E8"/><w:pPr><w:pStyle w:val="intentblank"/><w:spacing w:before="6480" w:after="0"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="code"><w:name w:val="code"/><w:basedOn w:val="Normal"/><w:rsid w:val="006D4514"/><w:pPr><w:pStyle w:val="code"/><w:spacing w:before="80" w:after="80" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="parapage"><w:name w:val="para:page"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00DD22A9"/><w:pPr><w:pStyle w:val="parapage"/><w:pageBreakBefore/><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCtabletitle"><w:name w:val="TOC:table title"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00B869CD"/><w:pPr><w:pStyle w:val="TOCtabletitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRitem"><w:name w:val="RCR:item"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="007A1F4F"/><w:pPr><w:pStyle w:val="RCRitem"/><w:tabs><w:tab w:val="left" w:pos="1800"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="1800" w:right="720" w:hanging="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRheader"><w:name w:val="RCR:header"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006D781E"/><w:pPr><w:pStyle w:val="RCRheader"/><w:tabs><w:tab w:val="left" w:pos="792"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="right" w:leader="underscore" w:pos="8640"/></w:tabs><w:spacing w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="line"><w:name w:val="line"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006B63C2"/><w:pPr><w:pStyle w:val="line"/><w:spacing w:before="0" w:line="40" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="12"/><w:sz-cs w:val="12"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang7"><w:name w:val="req lang: 7"/><w:basedOn w:val="reqlang6"/><w:rsid w:val="00C0337E"/><w:pPr><w:pStyle w:val="reqlang7"/><w:ind w:left="2520"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang70"><w:name w:val="req lang:7"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang70"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang8"><w:name w:val="req lang:8"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang8"/><w:ind w:left="2880"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang9"><w:name w:val="req lang:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="007534C9"/><w:pPr><w:pStyle w:val="reqlang9"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="3240"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="DocumentMap"><w:name w:val="Document Map"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00AF20CB"/><w:pPr><w:pStyle w:val="DocumentMap"/><w:shd w:val="clear" w:color="auto" w:fill="000080"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment1"><w:name w:val="comment:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment1"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment2"><w:name w:val="comment:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment2"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="720"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment3"><w:name w:val="comment:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1080"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment4"><w:name w:val="comment:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment4"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1440"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment5"><w:name w:val="comment:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment5"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment6"><w:name w:val="comment:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment6"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2160"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment7"><w:name w:val="comment:7"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment7"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2520"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment8"><w:name w:val="comment:8"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment8"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2880"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment9"><w:name w:val="comment:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment9"/><w:spacing w:after="80"/><w:ind w:left="3240"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlheader"><w:name w:val="dl:header"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlheader"/><w:spacing w:before="240" w:after="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier" w:h-ansi="Courier"/><wx:font wx:val="Courier"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlbody"><w:name w:val="dl:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlbody"/><w:spacing w:before="0"/><w:ind w:left="360"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocheader"><w:name w:val="dl_proc:header"/><w:basedOn w:val="dlbody"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocheader"/><w:spacing w:before="240"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocbody"><w:name w:val="dl_proc:body"/><w:basedOn w:val="dlprocheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocbody"/><w:spacing w:before="0"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dldescription"><w:name w:val="dl:description"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dldescription"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapheader"><w:name w:val="bitmap:header"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapheader"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapbody"><w:name w:val="bitmap:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapbody"/><w:spacing w:before="0"/></w:pPr><w:rPr><wx:font wx:val="Courier"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX1"><w:name w:val="APPENDIX 1"/><w:basedOn w:val="Normal"/><w:next w:val="paranormal"/><w:rsid w:val="004978C4"/><w:pPr><w:pStyle w:val="APPENDIX1"/><w:listPr><w:ilfo w:val="25"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="152" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX2"><w:name w:val="APPENDIX 2"/><w:basedOn w:val="APPENDIX1"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX2"/><w:listPr><w:ilvl w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX3"><w:name w:val="APPENDIX 3"/><w:basedOn w:val="APPENDIX2"/><w:next w:val="paranormal"/><w:rsid w:val="00E904D2"/><w:pPr><w:pStyle w:val="APPENDIX3"/><w:listPr><w:ilvl w:val="2"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage18pt"><w:name w:val="Title Page 18pt"/><w:basedOn w:val="Normal"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage18pt"/><w:spacing w:before="0" w:after="60" w:line="240" w:line-rule="auto"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz w:val="36"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage16pt"><w:name w:val="Title Page 16pt"/><w:basedOn w:val="TitlePage18pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage16pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="32"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage14pt"><w:name w:val="Title Page 14pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage14pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10pt"><w:name w:val="para 10pt"/><w:basedOn w:val="Normal"/><w:link w:val="para10ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para10pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10ptnospacing"><w:name w:val="para 10pt no spacing"/><w:basedOn w:val="para10pt"/><w:rsid w:val="004A1CCA"/><w:pPr><w:pStyle w:val="para10ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10nospacing"><w:name w:val="TableText10 no spacing"/><w:basedOn w:val="TableText10"/><w:rsid w:val="00D72507"/><w:pPr><w:pStyle w:val="TableText10nospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8pt"><w:name w:val="para 8pt"/><w:basedOn w:val="Normal"/><w:link w:val="para8ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para8pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="16"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paranormalChar"><w:name w:val="para:normal Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="paranormal"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="bulletlvl1CharChar"><w:name w:val="bullet:lvl 1 Char Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="bulletlvl1"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ParagraphText"><w:name w:val="ParagraphText"/><w:basedOn w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:pStyle w:val="ParagraphText"/><w:spacing w:before="0" w:after="120" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman"/><wx:font wx:val="Times New Roman"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl10"><w:name w:val="list lvl 1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl10"/><w:listPr><w:ilfo w:val="9"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/></w:tabs><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX4"><w:name w:val="APPENDIX 4"/><w:basedOn w:val="APPENDIX3"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX4"/><w:listPr><w:ilvl w:val="3"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX5"><w:name w:val="APPENDIX 5"/><w:basedOn w:val="APPENDIX4"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX5"/><w:listPr><w:ilvl w:val="4"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX6"><w:name w:val="APPENDIX 6"/><w:basedOn w:val="APPENDIX5"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX6"/><w:listPr><w:ilvl w:val="5"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX7"><w:name w:val="APPENDIX 7"/><w:basedOn w:val="APPENDIX6"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX7"/><w:listPr><w:ilvl w:val="6"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX8"><w:name w:val="APPENDIX 8"/><w:basedOn w:val="APPENDIX7"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX8"/><w:listPr><w:ilvl w:val="7"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX9"><w:name w:val="APPENDIX 9"/><w:basedOn w:val="APPENDIX8"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX9"/><w:listPr><w:ilvl w:val="8"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="BalloonText"><w:name w:val="Balloon Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00B47E5D"/><w:pPr><w:pStyle w:val="BalloonText"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="list" w:styleId="listreset"><w:name w:val="listreset"/><w:basedOn w:val="NoList"/><w:rsid w:val="00D25E39"/><w:pPr><w:listPr><w:ilfo w:val="26"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl3"><w:name w:val="bullet:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00EF5226"/><w:pPr><w:pStyle w:val="bulletlvl3"/><w:listPr><w:ilfo w:val="28"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="3024"/><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1368" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="CommentReference"><w:name w:val="annotation reference"/><wx:uiName wx:val="Comment Reference"/><w:basedOn w:val="DefaultParagraphFont"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:rPr><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentText"><w:name w:val="annotation text"/><wx:uiName wx:val="Comment Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentText"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentSubject"><w:name w:val="annotation subject"/><wx:uiName wx:val="Comment Subject"/><w:basedOn w:val="CommentText"/><w:next w:val="CommentText"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentSubject"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage22pt"><w:name w:val="Title Page 22pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="005F35C4"/><w:pPr><w:pStyle w:val="TitlePage22pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para"><w:name w:val="para"/><w:basedOn w:val="Normal"/><w:link w:val="paraChar"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="para"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paraChar"><w:name w:val="para Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="para"/><w:rsid w:val="0057061B"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl20"><w:name w:val="list lvl 2"/><w:basedOn w:val="ListNumber3"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="listlvl20"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber3"><w:name w:val="List Number 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="ListNumber3"/><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/><w:rsid w:val="008B1AB7"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblBorders><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="character" w:styleId="para8ptChar"><w:name w:val="para 8pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para8pt"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptunderline"><w:name w:val="para 8pt underline"/><w:basedOn w:val="para8pt"/><w:link w:val="para8ptunderlineChar"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptunderline"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="para8ptunderlineChar"><w:name w:val="para 8pt underline Char"/><w:basedOn w:val="para8ptChar"/><w:link w:val="para8ptunderline"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptnospacing"><w:name w:val="para 8pt no spacing"/><w:basedOn w:val="para8pt"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl0"><w:name w:val="list lvl 0"/><w:basedOn w:val="ListNumber"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="listlvl0"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber"><w:name w:val="List Number"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="ListNumber"/><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="para10ptChar"><w:name w:val="para 10pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para10pt"/><w:rsid w:val="0015054E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="FollowedHyperlink"><w:name w:val="FollowedHyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00B8047C"/><w:rPr><w:color w:val="800080"/><w:u w:val="single"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="21506"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:bordersDontSurroundHeader/><w:bordersDontSurroundFooter/><w:attachedTemplate w:val=""/><w:stylePaneFormatFilter w:val="3001"/><w:defaultTabStop w:val="720"/><w:doNotHyphenateCaps/><w:drawingGridHorizontalSpacing w:val="120"/><w:drawingGridVerticalSpacing w:val="120"/><w:displayHorizontalDrawingGridEvery w:val="0"/><w:displayVerticalDrawingGridEvery w:val="3"/><w:useMarginsForDrawingGridOrigin/><w:doNotShadeFormData/><w:punctuationKerning/><w:characterSpacingControl w:val="CompressPunctuation"/><w:optimizeForBrowser/><w:validateAgainstSchema w:val="off"/><w:saveInvalidXML/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:hdrShapeDefaults><o:shapedefaults v:ext="edit" spidmax="21506"/></w:hdrShapeDefaults><w:footnotePr><w:footnote w:type="separator"><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/></w:footnote><w:footnote w:type="continuation-separator"><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/></w:footnote></w:footnotePr><w:endnotePr><w:endnote w:type="separator"><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/></w:endnote><w:endnote w:type="continuation-separator"><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/><w:p wsp:rsidR="007F203B" wsp:rsidRDefault="007F203B"/></w:endnote></w:endnotePr><w:compat><w:footnoteLayoutLikeWW8/><w:shapeLayoutLikeWW8/><w:alignTablesRowByRow/><w:forgetLastTabAlignment/><w:doNotUseHTMLParagraphAutoSpacing/><w:layoutRawTableWidth/><w:layoutTableRowsApart/><w:useWord97LineBreakingRules/><w:dontAllowFieldEndSelect/><w:useWord2002TableStyleRules/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="00244327"/><wsp:rsid wsp:val="00003D10"/><wsp:rsid wsp:val="000125BB"/><wsp:rsid wsp:val="000165BA"/><wsp:rsid wsp:val="00017C15"/><wsp:rsid wsp:val="00024B16"/><wsp:rsid wsp:val="00027A6E"/><wsp:rsid wsp:val="00032693"/><wsp:rsid wsp:val="00037361"/><wsp:rsid wsp:val="000427F3"/><wsp:rsid wsp:val="00043F58"/><wsp:rsid wsp:val="0004616A"/><wsp:rsid wsp:val="00050360"/><wsp:rsid wsp:val="0005699B"/><wsp:rsid wsp:val="00056B3D"/><wsp:rsid wsp:val="00066FED"/><wsp:rsid wsp:val="00071300"/><wsp:rsid wsp:val="00072A3E"/><wsp:rsid wsp:val="00081116"/><wsp:rsid wsp:val="00090CB1"/><wsp:rsid wsp:val="00093E61"/><wsp:rsid wsp:val="000B3E61"/><wsp:rsid wsp:val="000B5C9D"/><wsp:rsid wsp:val="000B79E8"/><wsp:rsid wsp:val="000C04F3"/><wsp:rsid wsp:val="000C05CF"/><wsp:rsid wsp:val="000C6D2C"/><wsp:rsid wsp:val="000F209F"/><wsp:rsid wsp:val="000F221B"/><wsp:rsid wsp:val="000F5854"/><wsp:rsid wsp:val="00103B80"/><wsp:rsid wsp:val="00105F3F"/><wsp:rsid wsp:val="00107AA6"/><wsp:rsid wsp:val="00111B46"/><wsp:rsid wsp:val="00114E7C"/><wsp:rsid wsp:val="00115FC4"/><wsp:rsid wsp:val="00131579"/><wsp:rsid wsp:val="00132503"/><wsp:rsid wsp:val="0013768E"/><wsp:rsid wsp:val="00140E78"/><wsp:rsid wsp:val="00143D5A"/><wsp:rsid wsp:val="0015054E"/><wsp:rsid wsp:val="00151E8B"/><wsp:rsid wsp:val="00153670"/><wsp:rsid wsp:val="00185657"/><wsp:rsid wsp:val="001B21D8"/><wsp:rsid wsp:val="001D1983"/><wsp:rsid wsp:val="00200F8F"/><wsp:rsid wsp:val="002036EB"/><wsp:rsid wsp:val="00206FCA"/><wsp:rsid wsp:val="002127E8"/><wsp:rsid wsp:val="00222FBE"/><wsp:rsid wsp:val="00233CC2"/><wsp:rsid wsp:val="00243928"/><wsp:rsid wsp:val="00244327"/><wsp:rsid wsp:val="002535D0"/><wsp:rsid wsp:val="0025482E"/><wsp:rsid wsp:val="00256734"/><wsp:rsid wsp:val="0026648E"/><wsp:rsid wsp:val="00282EC4"/><wsp:rsid wsp:val="00283D14"/><wsp:rsid wsp:val="00295554"/><wsp:rsid wsp:val="00297956"/><wsp:rsid wsp:val="002A1E33"/><wsp:rsid wsp:val="002A4FCB"/><wsp:rsid wsp:val="002B0604"/><wsp:rsid wsp:val="002B798B"/><wsp:rsid wsp:val="002C5706"/><wsp:rsid wsp:val="002D7289"/><wsp:rsid wsp:val="002D7290"/><wsp:rsid wsp:val="002E125A"/><wsp:rsid wsp:val="002E4219"/><wsp:rsid wsp:val="002E6DCE"/><wsp:rsid wsp:val="002F6CB4"/><wsp:rsid wsp:val="00306F02"/><wsp:rsid wsp:val="003116D6"/><wsp:rsid wsp:val="0031593E"/><wsp:rsid wsp:val="0033641C"/><wsp:rsid wsp:val="0033770F"/><wsp:rsid wsp:val="003534DB"/><wsp:rsid wsp:val="00357B2F"/><wsp:rsid wsp:val="00370D17"/><wsp:rsid wsp:val="003724C6"/><wsp:rsid wsp:val="0037392F"/><wsp:rsid wsp:val="003739E6"/><wsp:rsid wsp:val="0038257D"/><wsp:rsid wsp:val="003850AB"/><wsp:rsid wsp:val="003877FD"/><wsp:rsid wsp:val="003A0770"/><wsp:rsid wsp:val="003A15E9"/><wsp:rsid wsp:val="003A1FEA"/><wsp:rsid wsp:val="003B0842"/><wsp:rsid wsp:val="003B5319"/><wsp:rsid wsp:val="003D263A"/><wsp:rsid wsp:val="003D26BD"/><wsp:rsid wsp:val="003D41C1"/><wsp:rsid wsp:val="003D4E9C"/><wsp:rsid wsp:val="003D5B32"/><wsp:rsid wsp:val="003E5A4F"/><wsp:rsid wsp:val="003F40D2"/><wsp:rsid wsp:val="003F6F30"/><wsp:rsid wsp:val="00411140"/><wsp:rsid wsp:val="00423163"/><wsp:rsid wsp:val="004417BE"/><wsp:rsid wsp:val="0044516A"/><wsp:rsid wsp:val="00453B86"/><wsp:rsid wsp:val="004546FC"/><wsp:rsid wsp:val="00465A78"/><wsp:rsid wsp:val="00470A7A"/><wsp:rsid wsp:val="0048363C"/><wsp:rsid wsp:val="00485EEE"/><wsp:rsid wsp:val="00493774"/><wsp:rsid wsp:val="00496AA5"/><wsp:rsid wsp:val="004978C4"/><wsp:rsid wsp:val="004A1CCA"/><wsp:rsid wsp:val="004B1050"/><wsp:rsid wsp:val="004B2F10"/><wsp:rsid wsp:val="004C0A1F"/><wsp:rsid wsp:val="004C603C"/><wsp:rsid wsp:val="004D5379"/><wsp:rsid wsp:val="004E3337"/><wsp:rsid wsp:val="004E7C5F"/><wsp:rsid wsp:val="00515AE0"/><wsp:rsid wsp:val="00517693"/><wsp:rsid wsp:val="00522250"/><wsp:rsid wsp:val="005244FF"/><wsp:rsid wsp:val="00530C0F"/><wsp:rsid wsp:val="00533D4D"/><wsp:rsid wsp:val="005605D4"/><wsp:rsid wsp:val="00564BC0"/><wsp:rsid wsp:val="00567343"/><wsp:rsid wsp:val="005675B7"/><wsp:rsid wsp:val="0057061B"/><wsp:rsid wsp:val="0057555E"/><wsp:rsid wsp:val="005A4B03"/><wsp:rsid wsp:val="005C3E15"/><wsp:rsid wsp:val="005C6185"/><wsp:rsid wsp:val="005D1A0D"/><wsp:rsid wsp:val="005D3587"/><wsp:rsid wsp:val="005E02BA"/><wsp:rsid wsp:val="005E122B"/><wsp:rsid wsp:val="005E4376"/><wsp:rsid wsp:val="005E702A"/><wsp:rsid wsp:val="005F2993"/><wsp:rsid wsp:val="005F35C4"/><wsp:rsid wsp:val="006015D6"/><wsp:rsid wsp:val="00605260"/><wsp:rsid wsp:val="00605417"/><wsp:rsid wsp:val="006111D3"/><wsp:rsid wsp:val="00614ED8"/><wsp:rsid wsp:val="006238C9"/><wsp:rsid wsp:val="00624582"/><wsp:rsid wsp:val="00627F1F"/><wsp:rsid wsp:val="00630722"/><wsp:rsid wsp:val="0063262E"/><wsp:rsid wsp:val="0066654A"/><wsp:rsid wsp:val="00667C3D"/><wsp:rsid wsp:val="006724F7"/><wsp:rsid wsp:val="00672BD3"/><wsp:rsid wsp:val="006A108F"/><wsp:rsid wsp:val="006A4CFB"/><wsp:rsid wsp:val="006A7BEF"/><wsp:rsid wsp:val="006B5B71"/><wsp:rsid wsp:val="006B63C2"/><wsp:rsid wsp:val="006C04E9"/><wsp:rsid wsp:val="006C4F00"/><wsp:rsid wsp:val="006D1536"/><wsp:rsid wsp:val="006D4514"/><wsp:rsid wsp:val="006D781E"/><wsp:rsid wsp:val="006E0AB6"/><wsp:rsid wsp:val="006E7077"/><wsp:rsid wsp:val="00711F77"/><wsp:rsid wsp:val="00712309"/><wsp:rsid wsp:val="00712933"/><wsp:rsid wsp:val="0071606D"/><wsp:rsid wsp:val="00720FFD"/><wsp:rsid wsp:val="00721F21"/><wsp:rsid wsp:val="007323A9"/><wsp:rsid wsp:val="00737D1B"/><wsp:rsid wsp:val="00743F40"/><wsp:rsid wsp:val="007534C9"/><wsp:rsid wsp:val="007600B1"/><wsp:rsid wsp:val="007613A0"/><wsp:rsid wsp:val="00784378"/><wsp:rsid wsp:val="00786AF0"/><wsp:rsid wsp:val="00790080"/><wsp:rsid wsp:val="007921D3"/><wsp:rsid wsp:val="0079466A"/><wsp:rsid wsp:val="00797E6B"/><wsp:rsid wsp:val="007A0657"/><wsp:rsid wsp:val="007A1F4F"/><wsp:rsid wsp:val="007A205B"/><wsp:rsid wsp:val="007B53FB"/><wsp:rsid wsp:val="007B59CC"/><wsp:rsid wsp:val="007D424E"/><wsp:rsid wsp:val="007D6EDC"/><wsp:rsid wsp:val="007E31BB"/><wsp:rsid wsp:val="007E5E91"/><wsp:rsid wsp:val="007F1309"/><wsp:rsid wsp:val="007F203B"/><wsp:rsid wsp:val="0080762D"/><wsp:rsid wsp:val="00810CB8"/><wsp:rsid wsp:val="00816887"/><wsp:rsid wsp:val="0082049F"/><wsp:rsid wsp:val="0083682F"/><wsp:rsid wsp:val="0085234B"/><wsp:rsid wsp:val="00853836"/><wsp:rsid wsp:val="00855CE1"/><wsp:rsid wsp:val="00861D13"/><wsp:rsid wsp:val="00861DB8"/><wsp:rsid wsp:val="00865ED8"/><wsp:rsid wsp:val="00866395"/><wsp:rsid wsp:val="00866BDD"/><wsp:rsid wsp:val="008671A8"/><wsp:rsid wsp:val="00867409"/><wsp:rsid wsp:val="008674EE"/><wsp:rsid wsp:val="00870B65"/><wsp:rsid wsp:val="008715D1"/><wsp:rsid wsp:val="0087335F"/><wsp:rsid wsp:val="00876E52"/><wsp:rsid wsp:val="00890422"/><wsp:rsid wsp:val="00893064"/><wsp:rsid wsp:val="00894991"/><wsp:rsid wsp:val="008A40B7"/><wsp:rsid wsp:val="008B1AB7"/><wsp:rsid wsp:val="008B37D0"/><wsp:rsid wsp:val="008B659F"/><wsp:rsid wsp:val="008D332B"/><wsp:rsid wsp:val="008D5BBD"/><wsp:rsid wsp:val="008F1DB8"/><wsp:rsid wsp:val="008F3E64"/><wsp:rsid wsp:val="008F5B9A"/><wsp:rsid wsp:val="00903436"/><wsp:rsid wsp:val="00905D37"/><wsp:rsid wsp:val="00907A2F"/><wsp:rsid wsp:val="009102A3"/><wsp:rsid wsp:val="00912FED"/><wsp:rsid wsp:val="00913874"/><wsp:rsid wsp:val="009204ED"/><wsp:rsid wsp:val="0092416A"/><wsp:rsid wsp:val="00925A21"/><wsp:rsid wsp:val="00932F0F"/><wsp:rsid wsp:val="00944F35"/><wsp:rsid wsp:val="009544BE"/><wsp:rsid wsp:val="009550E3"/><wsp:rsid wsp:val="00964929"/><wsp:rsid wsp:val="009661A9"/><wsp:rsid wsp:val="00972C6E"/><wsp:rsid wsp:val="00975A17"/><wsp:rsid wsp:val="00976AA6"/><wsp:rsid wsp:val="00983D28"/><wsp:rsid wsp:val="00996ED0"/><wsp:rsid wsp:val="009A0C0A"/><wsp:rsid wsp:val="009B116B"/><wsp:rsid wsp:val="009B1EF0"/><wsp:rsid wsp:val="009B7093"/><wsp:rsid wsp:val="009C2B94"/><wsp:rsid wsp:val="009C7319"/><wsp:rsid wsp:val="009D7FD5"/><wsp:rsid wsp:val="009E38A9"/><wsp:rsid wsp:val="009E66AD"/><wsp:rsid wsp:val="009E6B3D"/><wsp:rsid wsp:val="009F21AE"/><wsp:rsid wsp:val="009F4F9E"/><wsp:rsid wsp:val="00A134C3"/><wsp:rsid wsp:val="00A233DA"/><wsp:rsid wsp:val="00A2428A"/><wsp:rsid wsp:val="00A30F20"/><wsp:rsid wsp:val="00A318E6"/><wsp:rsid wsp:val="00A34FAA"/><wsp:rsid wsp:val="00A476C0"/><wsp:rsid wsp:val="00A652E0"/><wsp:rsid wsp:val="00A7660E"/><wsp:rsid wsp:val="00A81E8C"/><wsp:rsid wsp:val="00AA6DC4"/><wsp:rsid wsp:val="00AB4731"/><wsp:rsid wsp:val="00AC346F"/><wsp:rsid wsp:val="00AD5D6E"/><wsp:rsid wsp:val="00AE1F8F"/><wsp:rsid wsp:val="00AE452F"/><wsp:rsid wsp:val="00AF20CB"/><wsp:rsid wsp:val="00AF2830"/><wsp:rsid wsp:val="00AF6A43"/><wsp:rsid wsp:val="00B022E7"/><wsp:rsid wsp:val="00B13D46"/><wsp:rsid wsp:val="00B32AC1"/><wsp:rsid wsp:val="00B43482"/><wsp:rsid wsp:val="00B47E5D"/><wsp:rsid wsp:val="00B70B4F"/><wsp:rsid wsp:val="00B72055"/><wsp:rsid wsp:val="00B7611A"/><wsp:rsid wsp:val="00B8047C"/><wsp:rsid wsp:val="00B86259"/><wsp:rsid wsp:val="00B869CD"/><wsp:rsid wsp:val="00BA1260"/><wsp:rsid wsp:val="00BA666C"/><wsp:rsid wsp:val="00BB22AA"/><wsp:rsid wsp:val="00BB4C86"/><wsp:rsid wsp:val="00BE0FE1"/><wsp:rsid wsp:val="00BF138E"/><wsp:rsid wsp:val="00BF17C1"/><wsp:rsid wsp:val="00BF47F1"/><wsp:rsid wsp:val="00C005E5"/><wsp:rsid wsp:val="00C00EDA"/><wsp:rsid wsp:val="00C0337E"/><wsp:rsid wsp:val="00C05637"/><wsp:rsid wsp:val="00C07C88"/><wsp:rsid wsp:val="00C25428"/><wsp:rsid wsp:val="00C31C57"/><wsp:rsid wsp:val="00C33FA2"/><wsp:rsid wsp:val="00C3559C"/><wsp:rsid wsp:val="00C40EDF"/><wsp:rsid wsp:val="00C43DDD"/><wsp:rsid wsp:val="00C44610"/><wsp:rsid wsp:val="00C55E2F"/><wsp:rsid wsp:val="00C57BFE"/><wsp:rsid wsp:val="00C65CD1"/><wsp:rsid wsp:val="00C66826"/><wsp:rsid wsp:val="00C734BB"/><wsp:rsid wsp:val="00C7476A"/><wsp:rsid wsp:val="00C779E8"/><wsp:rsid wsp:val="00C93CA3"/><wsp:rsid wsp:val="00CA3B63"/><wsp:rsid wsp:val="00CA5EA3"/><wsp:rsid wsp:val="00CB3924"/><wsp:rsid wsp:val="00CB6076"/><wsp:rsid wsp:val="00CC1D8D"/><wsp:rsid wsp:val="00CC312A"/><wsp:rsid wsp:val="00CE03B8"/><wsp:rsid wsp:val="00D01E28"/><wsp:rsid wsp:val="00D127B6"/><wsp:rsid wsp:val="00D25E39"/><wsp:rsid wsp:val="00D3420B"/><wsp:rsid wsp:val="00D42F1D"/><wsp:rsid wsp:val="00D445A4"/><wsp:rsid wsp:val="00D54D3F"/><wsp:rsid wsp:val="00D72507"/><wsp:rsid wsp:val="00D7397C"/><wsp:rsid wsp:val="00D90577"/><wsp:rsid wsp:val="00D930D4"/><wsp:rsid wsp:val="00D94335"/><wsp:rsid wsp:val="00DA6F39"/><wsp:rsid wsp:val="00DB5F49"/><wsp:rsid wsp:val="00DB68B8"/><wsp:rsid wsp:val="00DC5116"/><wsp:rsid wsp:val="00DD07A9"/><wsp:rsid wsp:val="00DD22A9"/><wsp:rsid wsp:val="00DD3A90"/><wsp:rsid wsp:val="00DD508F"/><wsp:rsid wsp:val="00DD6B4F"/><wsp:rsid wsp:val="00DD7FC5"/><wsp:rsid wsp:val="00DE6BA0"/><wsp:rsid wsp:val="00E068E6"/><wsp:rsid wsp:val="00E1199B"/><wsp:rsid wsp:val="00E11BC7"/><wsp:rsid wsp:val="00E214AD"/><wsp:rsid wsp:val="00E239DA"/><wsp:rsid wsp:val="00E34311"/><wsp:rsid wsp:val="00E40969"/><wsp:rsid wsp:val="00E41F48"/><wsp:rsid wsp:val="00E441DF"/><wsp:rsid wsp:val="00E63377"/><wsp:rsid wsp:val="00E67580"/><wsp:rsid wsp:val="00E81372"/><wsp:rsid wsp:val="00E81F18"/><wsp:rsid wsp:val="00E875DA"/><wsp:rsid wsp:val="00E904D2"/><wsp:rsid wsp:val="00E92628"/><wsp:rsid wsp:val="00E96E7A"/><wsp:rsid wsp:val="00EA278B"/><wsp:rsid wsp:val="00EB18F7"/><wsp:rsid wsp:val="00EB2F20"/><wsp:rsid wsp:val="00EB4F31"/><wsp:rsid wsp:val="00EB62B7"/><wsp:rsid wsp:val="00EC7E43"/><wsp:rsid wsp:val="00ED6DE0"/><wsp:rsid wsp:val="00EE4A91"/><wsp:rsid wsp:val="00EF1639"/><wsp:rsid wsp:val="00EF5226"/><wsp:rsid wsp:val="00EF72A1"/><wsp:rsid wsp:val="00F04531"/><wsp:rsid wsp:val="00F11E7D"/><wsp:rsid wsp:val="00F24A08"/><wsp:rsid wsp:val="00F2536C"/><wsp:rsid wsp:val="00F25A7A"/><wsp:rsid wsp:val="00F3497B"/><wsp:rsid wsp:val="00F34A89"/><wsp:rsid wsp:val="00F457C0"/><wsp:rsid wsp:val="00F4596F"/><wsp:rsid wsp:val="00F72F61"/><wsp:rsid wsp:val="00F812EB"/><wsp:rsid wsp:val="00F832CA"/><wsp:rsid wsp:val="00F85495"/><wsp:rsid wsp:val="00F86BB3"/><wsp:rsid wsp:val="00FA22D9"/><wsp:rsid wsp:val="00FA2ADE"/><wsp:rsid wsp:val="00FA4AF6"/><wsp:rsid wsp:val="00FC17CF"/><wsp:rsid wsp:val="00FC55FB"/><wsp:rsid wsp:val="00FC7758"/><wsp:rsid wsp:val="00FD64E8"/><wsp:rsid wsp:val="00FD7577"/></wsp:rsids></w:docPr><w:body><wx:sect><ns0:Artifact><w:p wsp:rsidR="00FA2ADE" wsp:rsidRDefault="00140E78" wsp:rsidP="00FA2ADE"><Set_Name><w:r wsp:rsidR="00FA2ADE"><w:t>Default</w:t></w:r></Set_Name><Outline><HeadingAttribute><w:r wsp:rsidR="00FA2ADE"><w:t>Name</w:t></w:r></HeadingAttribute><RecurseChildren><w:r wsp:rsidR="007E5E91"><w:t>true</w:t></w:r></RecurseChildren></Outline><Attribute><Name><w:r wsp:rsidR="00FA2ADE"><w:t>Word Formatted Content</w:t></w:r></Name></Attribute></w:p></ns0:Artifact><w:p wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidRDefault="00AD5D6E" wsp:rsidP="00DB5F49"/><w:sectPr wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidSect="004978C4"><w:hdr w:type="odd"><w:p wsp:rsidR="003B0842" wsp:rsidRDefault="003B0842" wsp:rsidP="00DB5F49"><w:pPr><w:pStyle w:val="Header"/><w:jc w:val="left"/></w:pPr></w:p></w:hdr><w:pgSz w:w="12240" w:h="15840" w:code="1"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="432" w:footer="432" w:gutter="0"/><w:pgNumType w:start="1"/><w:cols w:space="475"/><w:noEndnote/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement.xml
new file mode 100644
index 00000000000..4cf2fd8cbc2
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Software Requirement.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://www.w3.org/2001/XMLSchema" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:Title>SRS</o:Title><o:Author>Ryan D. Brooks</o:Author><o:LastAuthor>b1565043</o:LastAuthor><o:Revision>7</o:Revision><o:TotalTime>8</o:TotalTime><o:LastPrinted>2007-03-22T22:27:00Z</o:LastPrinted><o:Created>2007-04-21T15:49:00Z</o:Created><o:LastSaved>2007-11-28T01:13:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>8</o:Words><o:Characters>46</o:Characters><o:Company>The Boeing Company</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>53</o:CharactersWithSpaces><o:Version>11.8134</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Helvetica"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:notTrueType/><w:pitch w:val="variable"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Courier"><w:panose-1 w:val="02070409020205020404"/><w:charset w:val="00"/><w:family w:val="Modern"/><w:notTrueType/><w:pitch w:val="fixed"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="61007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000101FF" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="003A6350"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F89E6E26"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:pStyle w:val="APPENDIX1"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="APPENDIX2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="APPENDIX3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="APPENDIX4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="APPENDIX5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="APPENDIX6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="APPENDIX7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="APPENDIX8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="APPENDIX9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="016D5431"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="98C65BCE"/><w:lvl w:ilvl="0" w:tplc="94D2C566"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="0C4D206D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="4B543E40"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="0DE40F2C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="4"><w:lsid w:val="10AF29E5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="7520DAAE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="5"><w:lsid w:val="15EB1725"/><w:plt w:val="Multilevel"/><w:tmpl w:val="D902A83E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="6"><w:lsid w:val="1C970BBA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EB82E3A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="7"><w:lsid w:val="1D6C5FCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E710F038"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="APPENDIX %1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="0" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="720" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1440" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="8"><w:lsid w:val="1EC51BCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="9"><w:lsid w:val="256F5D56"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="10"><w:lsid w:val="290A1130"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="11"><w:lsid w:val="299E4F07"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="46E2B8B2"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="12"><w:lsid w:val="29C240FD"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="FCA4DC08"/><w:lvl w:ilvl="0" w:tplc="B5146A3E"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl2"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1224"/></w:tabs><w:ind w:left="1224" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="13"><w:lsid w:val="29CA5728"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="D00252C6"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="14"><w:lsid w:val="2A5411A0"/><w:plt w:val="Multilevel"/><w:tmpl w:val="2660867C"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="Heading1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="Heading2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="Heading3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="Heading4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="Heading5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="Heading6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="Heading7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="Heading8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="Heading9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="15"><w:lsid w:val="2B1C06F5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3B98963A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="16"><w:lsid w:val="2B477730"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="33801DC4"/><w:lvl w:ilvl="0" w:tplc="2D8A4B4C"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl3"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3024"/></w:tabs><w:ind w:left="3024" w:hanging="2016"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2448"/></w:tabs><w:ind w:left="2448" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3168"/></w:tabs><w:ind w:left="3168" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3888"/></w:tabs><w:ind w:left="3888" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4608"/></w:tabs><w:ind w:left="4608" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5328"/></w:tabs><w:ind w:left="5328" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6048"/></w:tabs><w:ind w:left="6048" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6768"/></w:tabs><w:ind w:left="6768" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="7488"/></w:tabs><w:ind w:left="7488" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="17"><w:lsid w:val="2B5B6B3C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5CC8E874"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:first-line="763"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="18"><w:lsid w:val="2D6545A6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3F227848"/><w:name w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1296"/></w:tabs><w:ind w:left="1296" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:caps w:val="off"/><w:strike w:val="off"/><w:dstrike w:val="off"/><w:outline w:val="off"/><w:shadow w:val="off"/><w:emboss w:val="off"/><w:imprint w:val="off"/><w:vanish w:val="off"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:vertAlign w:val="baseline"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="listlvl2"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="-31680"/></w:tabs><w:ind w:left="1656" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl3"/><w:lvlText w:val="(%3)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2016"/></w:tabs><w:ind w:left="2016" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="listlvl4"/><w:lvlText w:val="(%4)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2376"/></w:tabs><w:ind w:left="2376" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl5"/><w:lvlText w:val="%5)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2736"/></w:tabs><w:ind w:left="2736" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="listlvl6"/><w:lvlText w:val="%6)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3096"/></w:tabs><w:ind w:left="3096" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:sz w:val="22"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl7"/><w:lvlText w:val="[%7]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3456"/></w:tabs><w:ind w:left="3456" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="[%8]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="19"><w:lsid w:val="308239DA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="20"><w:lsid w:val="31A252E6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="A9D83578"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="21"><w:lsid w:val="3B97448F"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart2"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="22"><w:lsid w:val="3C165F4A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79A06FE6"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="23"><w:lsid w:val="42BB3748"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="DBE464B0"/><w:lvl w:ilvl="0" w:tplc="26BAF6B0"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl1"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="648"/></w:tabs><w:ind w:left="648" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3960" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4680" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5400" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="6120" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6840"/></w:tabs><w:ind w:left="6840" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="24"><w:lsid w:val="47E309C3"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="25"><w:lsid w:val="5A401749"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CD8E61CE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="26"><w:lsid w:val="5A802BC9"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="27"><w:lsid w:val="5C3B1B76"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="28"><w:lsid w:val="5E371EBB"/><w:plt w:val="Multilevel"/><w:tmpl w:val="DA56D440"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="29"><w:lsid w:val="60B71688"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EA20814"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="30"><w:lsid w:val="6389497B"/><w:plt w:val="Multilevel"/><w:tmpl w:val="AC5A6410"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="listlvl10"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="360" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1080" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="1800" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2520" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3240" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="3960" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="4680" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5400" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6120" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="31"><w:lsid w:val="6469691A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E5D02024"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="32"><w:lsid w:val="69A642CA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="33"><w:lsid w:val="74BA49AE"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart"/><w:styleLink w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="34"><w:lsid w:val="751E50EA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79E6FEDC"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="35"><w:lsid w:val="7D9D3B47"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="36"><w:lsid w:val="7F0F313D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F8FC63EE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="37"><w:lsid w:val="7F633FB7"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5F5A52E8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="23"/></w:list><w:list w:ilfo="2"><w:ilst w:val="12"/></w:list><w:list w:ilfo="3"><w:ilst w:val="18"/></w:list><w:list w:ilfo="4"><w:ilst w:val="14"/></w:list><w:list w:ilfo="5"><w:ilst w:val="6"/></w:list><w:list w:ilfo="6"><w:ilst w:val="26"/></w:list><w:list w:ilfo="7"><w:ilst w:val="5"/></w:list><w:list w:ilfo="8"><w:ilst w:val="13"/></w:list><w:list w:ilfo="9"><w:ilst w:val="30"/></w:list><w:list w:ilfo="10"><w:ilst w:val="7"/></w:list><w:list w:ilfo="11"><w:ilst w:val="18"/></w:list><w:list w:ilfo="12"><w:ilst w:val="27"/></w:list><w:list w:ilfo="13"><w:ilst w:val="36"/></w:list><w:list w:ilfo="14"><w:ilst w:val="2"/></w:list><w:list w:ilfo="15"><w:ilst w:val="28"/></w:list><w:list w:ilfo="16"><w:ilst w:val="17"/></w:list><w:list w:ilfo="17"><w:ilst w:val="31"/></w:list><w:list w:ilfo="18"><w:ilst w:val="4"/></w:list><w:list w:ilfo="19"><w:ilst w:val="20"/></w:list><w:list w:ilfo="20"><w:ilst w:val="15"/></w:list><w:list w:ilfo="21"><w:ilst w:val="37"/></w:list><w:list w:ilfo="22"><w:ilst w:val="22"/></w:list><w:list w:ilfo="23"><w:ilst w:val="25"/></w:list><w:list w:ilfo="24"><w:ilst w:val="34"/></w:list><w:list w:ilfo="25"><w:ilst w:val="0"/></w:list><w:list w:ilfo="26"><w:ilst w:val="33"/></w:list><w:list w:ilfo="27"><w:ilst w:val="21"/></w:list><w:list w:ilfo="28"><w:ilst w:val="16"/></w:list><w:list w:ilfo="29"><w:ilst w:val="19"/></w:list><w:list w:ilfo="30"><w:ilst w:val="18"/><w:lvlOverride w:ilvl="0"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="1"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="2"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="3"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="4"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="5"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="6"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="7"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="8"><w:startOverride w:val="1"/></w:lvlOverride></w:list><w:list w:ilfo="31"><w:ilst w:val="11"/></w:list><w:list w:ilfo="32"><w:ilst w:val="1"/></w:list><w:list w:ilfo="33"><w:ilst w:val="35"/></w:list><w:list w:ilfo="34"><w:ilst w:val="8"/></w:list><w:list w:ilfo="35"><w:ilst w:val="29"/></w:list><w:list w:ilfo="36"><w:ilst w:val="14"/></w:list><w:list w:ilfo="37"><w:ilst w:val="10"/></w:list><w:list w:ilfo="38"><w:ilst w:val="9"/></w:list><w:list w:ilfo="39"><w:ilst w:val="3"/></w:list><w:list w:ilfo="40"><w:ilst w:val="24"/></w:list><w:list w:ilfo="41"><w:ilst w:val="32"/></w:list><w:ilfoMacAtCleanup w:val="5"/></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><wx:uiName wx:val="Heading 1"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading1"/><w:keepNext/><w:keepLines/><w:pageBreakBefore/><w:listPr><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:kern w:val="28"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><wx:uiName wx:val="Heading 2"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading2"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><wx:uiName wx:val="Heading 3"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading3"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="900"/></w:tabs><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading4"><w:name w:val="heading 4"/><wx:uiName wx:val="Heading 4"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading4"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="3"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading5"><w:name w:val="heading 5"/><wx:uiName wx:val="Heading 5"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading5"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="4"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading6"><w:name w:val="heading 6"/><wx:uiName wx:val="Heading 6"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading6"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="5"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading7"><w:name w:val="heading 7"/><wx:uiName wx:val="Heading 7"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading7"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1620"/></w:tabs><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="6"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading8"><w:name w:val="heading 8"/><wx:uiName wx:val="Heading 8"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading8"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="7"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="7"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading9"><w:name w:val="heading 9"/><wx:uiName wx:val="Heading 9"/><w:next w:val="paranormal"/><w:rsid w:val="009776CC"/><w:pPr><w:pStyle w:val="Heading9"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="8"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="8"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="paranormal"><w:name w:val="para:normal"/><w:link w:val="paranormalChar"/><w:rsid w:val="009E6B3D"/><w:pPr><w:pStyle w:val="paranormal"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="64" w:after="80" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl3"><w:name w:val="list:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl3"/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="2088"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang1"><w:name w:val="req lang:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Header"><w:name w:val="header"/><wx:uiName wx:val="Header"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A134C3"/><w:pPr><w:pStyle w:val="Header"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs><w:spacing w:before="20" w:after="0" w:line="180" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="proprietarycontd"><w:name w:val="proprietary:cont'd"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="proprietarycontd"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="200" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="16"/><w:sz-cs w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paracentered"><w:name w:val="para:centered"/><w:autoRedefine/><w:rsid w:val="00B43482"/><w:pPr><w:pStyle w:val="paracentered"/><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="80" w:after="80" w:line="240" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent2"><w:name w:val="para:indent2"/><w:autoRedefine/><w:rsid w:val="004417BE"/><w:pPr><w:pStyle w:val="paraindent2"/><w:tabs><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent3"><w:name w:val="para:indent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent3"/><w:tabs><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/><w:tab w:val="left" w:pos="9720"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Caption"><w:name w:val="caption"/><wx:uiName wx:val="Caption"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="0085234B"/><w:pPr><w:pStyle w:val="Caption"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9720"/><w:tab w:val="left" w:pos="10800"/><w:tab w:val="left" w:pos="11880"/><w:tab w:val="left" w:pos="12960"/><w:tab w:val="left" w:pos="14040"/><w:tab w:val="left" w:pos="15120"/><w:tab w:val="left" w:pos="16200"/><w:tab w:val="left" w:pos="17280"/><w:tab w:val="left" w:pos="18360"/><w:tab w:val="left" w:pos="19440"/><w:tab w:val="left" w:pos="20520"/><w:tab w:val="left" w:pos="21600"/><w:tab w:val="left" w:pos="22680"/><w:tab w:val="left" w:pos="23760"/><w:tab w:val="left" w:pos="24840"/><w:tab w:val="left" w:pos="25920"/><w:tab w:val="left" w:pos="27000"/><w:tab w:val="left" w:pos="28080"/><w:tab w:val="left" w:pos="29160"/><w:tab w:val="left" w:pos="30240"/><w:tab w:val="left" w:pos="31320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent1"><w:name w:val="para:indent1"/><w:autoRedefine/><w:rsid w:val="007D424E"/><w:pPr><w:pStyle w:val="paraindent1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Footer"><w:name w:val="footer"/><wx:uiName wx:val="Footer"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="Footer"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl4"><w:name w:val="list:lvl 4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl4"/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="11"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead"><w:name w:val="RowHead"/><w:basedOn w:val="Heading1"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:spacing w:before="100" w:after="100"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11"><w:name w:val="TableText11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOAHeading"><w:name w:val="toa heading"/><wx:uiName wx:val="TOA Heading"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOAHeading"/><w:spacing w:before="240" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:caps/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHeadL"><w:name w:val="RowHeadL"/><w:basedOn w:val="RowHead"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHeadL"/><w:spacing w:before="60" w:after="60"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11B"><w:name w:val="TableText11B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText11B"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofAuthorities"><w:name w:val="table of authorities"/><wx:uiName wx:val="Table of Authorities"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofAuthorities"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="8640"/></w:tabs><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofFigures"><w:name w:val="table of figures"/><wx:uiName wx:val="Table of Figures"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofFigures"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="60" w:after="60"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="Hyperlink"><w:name w:val="Hyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00721F21"/><w:rPr><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="PageNumber"><w:name w:val="page number"/><wx:uiName wx:val="Page Number"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00D90577"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:dstrike w:val="off"/><w:sz w:val="20"/><w:sz-cs w:val="20"/><w:vertAlign w:val="baseline"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead11"><w:name w:val="RowHead11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead11"/><w:listPr><w:ilvl w:val="12"/></w:listPr><w:spacing w:before="80" w:after="80"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11C"><w:name w:val="TableText11C"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11C"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman"/><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl1"><w:name w:val="list:lvl 1"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl1"/><w:listPr><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl5"><w:name w:val="list:lvl 5"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl5"/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="left" w:pos="3384"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl2"><w:name w:val="list:lvl 2"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="AppendixTitle"><w:name w:val="Appendix Title"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="AppendixTitle"/><w:pageBreakBefore/><w:spacing w:before="120" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead10"><w:name w:val="RowHead10"/><w:basedOn w:val="RowHead11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC1"><w:name w:val="toc 1"/><wx:uiName wx:val="TOC 1"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC1"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="540"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="240"/><w:ind w:left="547" w:hanging="547"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC2"><w:name w:val="toc 2"/><wx:uiName wx:val="TOC 2"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC2"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="900"/><w:tab w:val="right" w:leader="dot" w:pos="9360"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="907" w:hanging="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC3"><w:name w:val="toc 3"/><wx:uiName wx:val="TOC 3"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC3"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1260"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1260" w:hanging="900"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC4"><w:name w:val="toc 4"/><wx:uiName wx:val="TOC 4"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC4"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1620"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1620" w:hanging="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC5"><w:name w:val="toc 5"/><wx:uiName wx:val="TOC 5"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC5"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1980"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1980" w:hanging="1260"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC6"><w:name w:val="toc 6"/><wx:uiName wx:val="TOC 6"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC6"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2340"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2340" w:hanging="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC7"><w:name w:val="toc 7"/><wx:uiName wx:val="TOC 7"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC7"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2700"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="0" w:after="0" w:line="240" w:line-rule="auto"/><w:ind w:left="2700" w:hanging="1620"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC8"><w:name w:val="toc 8"/><wx:uiName wx:val="TOC 8"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC8"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2970"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2970" w:hanging="1710"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC9"><w:name w:val="toc 9"/><wx:uiName wx:val="TOC 9"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC9"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="3330"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="3330" w:hanging="1890"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HeadingUnnumbered"><w:name w:val="Heading Unnumbered"/><w:next w:val="paranormal"/><w:autoRedefine/><w:rsid w:val="00107AA6"/><w:pPr><w:pStyle w:val="HeadingUnnumbered"/><w:keepNext/><w:keepLines/><w:spacing w:before="240" w:after="80"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="24"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10"><w:name w:val="TableText10"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableTextBCentered"><w:name w:val="TableTextB Centered"/><w:basedOn w:val="Normal"/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableTextBCentered"/><w:spacing w:line="220" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10C"><w:name w:val="TableText10C"/><w:basedOn w:val="TableText11C"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10C"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10B"><w:name w:val="TableText10B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText10B"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="acronym"><w:name w:val="acronym"/><w:autoRedefine/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="acronym"/><w:tabs><w:tab w:val="left" w:pos="2160"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="40"/><w:ind w:left="2160" w:hanging="2160"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl6"><w:name w:val="list:lvl 6"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl6"/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="clear" w:pos="4320"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr1L"><w:name w:val="hdr1L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr1L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr2L"><w:name w:val="hdr2L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr2L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="0" w:line="180" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl1"><w:name w:val="bullet:lvl 1"/><w:basedOn w:val="Normal"/><w:link w:val="bulletlvl1CharChar"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl1"/><w:listPr><w:ilfo w:val="1"/></w:listPr><w:spacing w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl2"><w:name w:val="bullet:lvl 2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilfo w:val="2"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="1224"/><w:tab w:val="left" w:pos="648"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1728" w:hanging="1080"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent4"><w:name w:val="para:indent4"/><w:basedOn w:val="paraindent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent4"/><w:ind w:left="1440"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl7"><w:name w:val="list:lvl 7"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl7"/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="left" w:pos="3024"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCfiguretitle"><w:name w:val="TOC:figure title"/><w:basedOn w:val="Caption"/><w:autoRedefine/><w:rsid w:val="00894991"/><w:pPr><w:pStyle w:val="TOCfiguretitle"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="006E0AB6"/><w:pPr><w:pStyle w:val="note"/><w:spacing w:before="80" w:after="80"/><w:ind w:left="1656" w:right="720" w:hanging="936"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang2"><w:name w:val="req lang:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang2"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang3"><w:name w:val="req lang:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang4"><w:name w:val="req lang:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang4"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang5"><w:name w:val="req lang:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang5"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1800"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang6"><w:name w:val="req lang:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang6"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="2160"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="statedef"><w:name w:val="state def"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DE6BA0"/><w:pPr><w:pStyle w:val="statedef"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="80" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps/><w:color w:val="00FF00"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="intentblank"><w:name w:val="intent:blank"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="000B79E8"/><w:pPr><w:pStyle w:val="intentblank"/><w:spacing w:before="6480" w:after="0"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="code"><w:name w:val="code"/><w:basedOn w:val="Normal"/><w:rsid w:val="006D4514"/><w:pPr><w:pStyle w:val="code"/><w:spacing w:before="80" w:after="80" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="parapage"><w:name w:val="para:page"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00DD22A9"/><w:pPr><w:pStyle w:val="parapage"/><w:pageBreakBefore/><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCtabletitle"><w:name w:val="TOC:table title"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00B869CD"/><w:pPr><w:pStyle w:val="TOCtabletitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRitem"><w:name w:val="RCR:item"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="007A1F4F"/><w:pPr><w:pStyle w:val="RCRitem"/><w:tabs><w:tab w:val="left" w:pos="1800"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="1800" w:right="720" w:hanging="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRheader"><w:name w:val="RCR:header"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006D781E"/><w:pPr><w:pStyle w:val="RCRheader"/><w:tabs><w:tab w:val="left" w:pos="792"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="right" w:leader="underscore" w:pos="8640"/></w:tabs><w:spacing w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="line"><w:name w:val="line"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006B63C2"/><w:pPr><w:pStyle w:val="line"/><w:spacing w:before="0" w:line="40" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="12"/><w:sz-cs w:val="12"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang7"><w:name w:val="req lang: 7"/><w:basedOn w:val="reqlang6"/><w:rsid w:val="00C0337E"/><w:pPr><w:pStyle w:val="reqlang7"/><w:ind w:left="2520"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang70"><w:name w:val="req lang:7"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang70"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang8"><w:name w:val="req lang:8"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang8"/><w:ind w:left="2880"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang9"><w:name w:val="req lang:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="007534C9"/><w:pPr><w:pStyle w:val="reqlang9"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="3240"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="DocumentMap"><w:name w:val="Document Map"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00AF20CB"/><w:pPr><w:pStyle w:val="DocumentMap"/><w:shd w:val="clear" w:color="auto" w:fill="000080"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment1"><w:name w:val="comment:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment1"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment2"><w:name w:val="comment:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment2"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="720"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment3"><w:name w:val="comment:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1080"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment4"><w:name w:val="comment:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment4"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1440"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment5"><w:name w:val="comment:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment5"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment6"><w:name w:val="comment:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment6"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2160"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment7"><w:name w:val="comment:7"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment7"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2520"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment8"><w:name w:val="comment:8"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment8"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2880"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment9"><w:name w:val="comment:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment9"/><w:spacing w:after="80"/><w:ind w:left="3240"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlheader"><w:name w:val="dl:header"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlheader"/><w:spacing w:before="240" w:after="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier" w:h-ansi="Courier"/><wx:font wx:val="Courier"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlbody"><w:name w:val="dl:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlbody"/><w:spacing w:before="0"/><w:ind w:left="360"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocheader"><w:name w:val="dl_proc:header"/><w:basedOn w:val="dlbody"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocheader"/><w:spacing w:before="240"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocbody"><w:name w:val="dl_proc:body"/><w:basedOn w:val="dlprocheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocbody"/><w:spacing w:before="0"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dldescription"><w:name w:val="dl:description"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dldescription"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapheader"><w:name w:val="bitmap:header"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapheader"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapbody"><w:name w:val="bitmap:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapbody"/><w:spacing w:before="0"/></w:pPr><w:rPr><wx:font wx:val="Courier"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX1"><w:name w:val="APPENDIX 1"/><w:basedOn w:val="Normal"/><w:next w:val="paranormal"/><w:rsid w:val="004978C4"/><w:pPr><w:pStyle w:val="APPENDIX1"/><w:listPr><w:ilfo w:val="25"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="152" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX2"><w:name w:val="APPENDIX 2"/><w:basedOn w:val="APPENDIX1"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX2"/><w:listPr><w:ilvl w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX3"><w:name w:val="APPENDIX 3"/><w:basedOn w:val="APPENDIX2"/><w:next w:val="paranormal"/><w:rsid w:val="00E904D2"/><w:pPr><w:pStyle w:val="APPENDIX3"/><w:listPr><w:ilvl w:val="2"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage18pt"><w:name w:val="Title Page 18pt"/><w:basedOn w:val="Normal"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage18pt"/><w:spacing w:before="0" w:after="60" w:line="240" w:line-rule="auto"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz w:val="36"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage16pt"><w:name w:val="Title Page 16pt"/><w:basedOn w:val="TitlePage18pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage16pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="32"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage14pt"><w:name w:val="Title Page 14pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage14pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10pt"><w:name w:val="para 10pt"/><w:basedOn w:val="Normal"/><w:link w:val="para10ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para10pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10ptnospacing"><w:name w:val="para 10pt no spacing"/><w:basedOn w:val="para10pt"/><w:rsid w:val="004A1CCA"/><w:pPr><w:pStyle w:val="para10ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10nospacing"><w:name w:val="TableText10 no spacing"/><w:basedOn w:val="TableText10"/><w:rsid w:val="00D72507"/><w:pPr><w:pStyle w:val="TableText10nospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8pt"><w:name w:val="para 8pt"/><w:basedOn w:val="Normal"/><w:link w:val="para8ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para8pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="16"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paranormalChar"><w:name w:val="para:normal Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="paranormal"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="bulletlvl1CharChar"><w:name w:val="bullet:lvl 1 Char Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="bulletlvl1"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ParagraphText"><w:name w:val="ParagraphText"/><w:basedOn w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:pStyle w:val="ParagraphText"/><w:spacing w:before="0" w:after="120" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman"/><wx:font wx:val="Times New Roman"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl10"><w:name w:val="list lvl 1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl10"/><w:listPr><w:ilfo w:val="9"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/></w:tabs><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX4"><w:name w:val="APPENDIX 4"/><w:basedOn w:val="APPENDIX3"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX4"/><w:listPr><w:ilvl w:val="3"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX5"><w:name w:val="APPENDIX 5"/><w:basedOn w:val="APPENDIX4"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX5"/><w:listPr><w:ilvl w:val="4"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX6"><w:name w:val="APPENDIX 6"/><w:basedOn w:val="APPENDIX5"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX6"/><w:listPr><w:ilvl w:val="5"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX7"><w:name w:val="APPENDIX 7"/><w:basedOn w:val="APPENDIX6"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX7"/><w:listPr><w:ilvl w:val="6"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX8"><w:name w:val="APPENDIX 8"/><w:basedOn w:val="APPENDIX7"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX8"/><w:listPr><w:ilvl w:val="7"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX9"><w:name w:val="APPENDIX 9"/><w:basedOn w:val="APPENDIX8"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX9"/><w:listPr><w:ilvl w:val="8"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="BalloonText"><w:name w:val="Balloon Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00B47E5D"/><w:pPr><w:pStyle w:val="BalloonText"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="list" w:styleId="listreset"><w:name w:val="listreset"/><w:basedOn w:val="NoList"/><w:rsid w:val="00D25E39"/><w:pPr><w:listPr><w:ilfo w:val="26"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl3"><w:name w:val="bullet:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00EF5226"/><w:pPr><w:pStyle w:val="bulletlvl3"/><w:listPr><w:ilfo w:val="28"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="3024"/><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1368" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="CommentReference"><w:name w:val="annotation reference"/><wx:uiName wx:val="Comment Reference"/><w:basedOn w:val="DefaultParagraphFont"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:rPr><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentText"><w:name w:val="annotation text"/><wx:uiName wx:val="Comment Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentText"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentSubject"><w:name w:val="annotation subject"/><wx:uiName wx:val="Comment Subject"/><w:basedOn w:val="CommentText"/><w:next w:val="CommentText"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentSubject"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage22pt"><w:name w:val="Title Page 22pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="005F35C4"/><w:pPr><w:pStyle w:val="TitlePage22pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para"><w:name w:val="para"/><w:basedOn w:val="Normal"/><w:link w:val="paraChar"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="para"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paraChar"><w:name w:val="para Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="para"/><w:rsid w:val="0057061B"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl20"><w:name w:val="list lvl 2"/><w:basedOn w:val="ListNumber3"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="listlvl20"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber3"><w:name w:val="List Number 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="ListNumber3"/><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/><w:rsid w:val="008B1AB7"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblBorders><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="character" w:styleId="para8ptChar"><w:name w:val="para 8pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para8pt"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptunderline"><w:name w:val="para 8pt underline"/><w:basedOn w:val="para8pt"/><w:link w:val="para8ptunderlineChar"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptunderline"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="para8ptunderlineChar"><w:name w:val="para 8pt underline Char"/><w:basedOn w:val="para8ptChar"/><w:link w:val="para8ptunderline"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptnospacing"><w:name w:val="para 8pt no spacing"/><w:basedOn w:val="para8pt"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl0"><w:name w:val="list lvl 0"/><w:basedOn w:val="ListNumber"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="listlvl0"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber"><w:name w:val="List Number"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="ListNumber"/><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="para10ptChar"><w:name w:val="para 10pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para10pt"/><w:rsid w:val="0015054E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="FollowedHyperlink"><w:name w:val="FollowedHyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00B8047C"/><w:rPr><w:color w:val="800080"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="microart8"><w:name w:val="micro:art8"/><w:basedOn w:val="Normal"/><w:rsid w:val="00D1251A"/><w:pPr><w:pStyle w:val="microart8"/><w:spacing w:before="0" w:after="0" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="microart9"><w:name w:val="micro:art9"/><w:basedOn w:val="Normal"/><w:rsid w:val="00D1251A"/><w:pPr><w:pStyle w:val="microart9"/><w:spacing w:before="0" w:after="0" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="microart10"><w:name w:val="micro:art10"/><w:basedOn w:val="Normal"/><w:rsid w:val="00D1251A"/><w:pPr><w:pStyle w:val="microart10"/><w:spacing w:before="120" w:after="0" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="23554"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:bordersDontSurroundHeader/><w:bordersDontSurroundFooter/><w:attachedTemplate w:val=""/><w:stylePaneFormatFilter w:val="3001"/><w:defaultTabStop w:val="720"/><w:doNotHyphenateCaps/><w:drawingGridHorizontalSpacing w:val="120"/><w:drawingGridVerticalSpacing w:val="120"/><w:displayHorizontalDrawingGridEvery w:val="0"/><w:displayVerticalDrawingGridEvery w:val="3"/><w:useMarginsForDrawingGridOrigin/><w:doNotShadeFormData/><w:punctuationKerning/><w:characterSpacingControl w:val="CompressPunctuation"/><w:optimizeForBrowser/><w:validateAgainstSchema w:val="off"/><w:saveInvalidXML/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:hdrShapeDefaults><o:shapedefaults v:ext="edit" spidmax="23554"/></w:hdrShapeDefaults><w:footnotePr><w:footnote w:type="separator"><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/></w:footnote><w:footnote w:type="continuation-separator"><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/></w:footnote></w:footnotePr><w:endnotePr><w:endnote w:type="separator"><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/></w:endnote><w:endnote w:type="continuation-separator"><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/><w:p wsp:rsidR="0067307E" wsp:rsidRDefault="0067307E"/></w:endnote></w:endnotePr><w:compat><w:footnoteLayoutLikeWW8/><w:shapeLayoutLikeWW8/><w:alignTablesRowByRow/><w:forgetLastTabAlignment/><w:doNotUseHTMLParagraphAutoSpacing/><w:layoutRawTableWidth/><w:layoutTableRowsApart/><w:useWord97LineBreakingRules/><w:dontAllowFieldEndSelect/><w:useWord2002TableStyleRules/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="00244327"/><wsp:rsid wsp:val="00003D10"/><wsp:rsid wsp:val="000125BB"/><wsp:rsid wsp:val="000165BA"/><wsp:rsid wsp:val="00017C15"/><wsp:rsid wsp:val="00024B16"/><wsp:rsid wsp:val="00027A6E"/><wsp:rsid wsp:val="00032693"/><wsp:rsid wsp:val="00037361"/><wsp:rsid wsp:val="000427F3"/><wsp:rsid wsp:val="00043F58"/><wsp:rsid wsp:val="0004616A"/><wsp:rsid wsp:val="00050360"/><wsp:rsid wsp:val="0005699B"/><wsp:rsid wsp:val="00056B3D"/><wsp:rsid wsp:val="00066FED"/><wsp:rsid wsp:val="00071300"/><wsp:rsid wsp:val="00072A3E"/><wsp:rsid wsp:val="00081116"/><wsp:rsid wsp:val="00090CB1"/><wsp:rsid wsp:val="000B3E61"/><wsp:rsid wsp:val="000B5C9D"/><wsp:rsid wsp:val="000B79E8"/><wsp:rsid wsp:val="000C04F3"/><wsp:rsid wsp:val="000C05CF"/><wsp:rsid wsp:val="000C6D2C"/><wsp:rsid wsp:val="000F209F"/><wsp:rsid wsp:val="000F221B"/><wsp:rsid wsp:val="000F5854"/><wsp:rsid wsp:val="00103B80"/><wsp:rsid wsp:val="00105F3F"/><wsp:rsid wsp:val="00107AA6"/><wsp:rsid wsp:val="00111B46"/><wsp:rsid wsp:val="00114E7C"/><wsp:rsid wsp:val="00115FC4"/><wsp:rsid wsp:val="00131579"/><wsp:rsid wsp:val="00132503"/><wsp:rsid wsp:val="0013768E"/><wsp:rsid wsp:val="00143D5A"/><wsp:rsid wsp:val="0015054E"/><wsp:rsid wsp:val="00151E8B"/><wsp:rsid wsp:val="00153670"/><wsp:rsid wsp:val="00185657"/><wsp:rsid wsp:val="001B21D8"/><wsp:rsid wsp:val="001D1983"/><wsp:rsid wsp:val="00200F8F"/><wsp:rsid wsp:val="002036EB"/><wsp:rsid wsp:val="00206FCA"/><wsp:rsid wsp:val="002127E8"/><wsp:rsid wsp:val="00222FBE"/><wsp:rsid wsp:val="00233CC2"/><wsp:rsid wsp:val="00243928"/><wsp:rsid wsp:val="00244327"/><wsp:rsid wsp:val="002535D0"/><wsp:rsid wsp:val="0025482E"/><wsp:rsid wsp:val="00256734"/><wsp:rsid wsp:val="00260EC7"/><wsp:rsid wsp:val="0026648E"/><wsp:rsid wsp:val="00282EC4"/><wsp:rsid wsp:val="00283D14"/><wsp:rsid wsp:val="00295554"/><wsp:rsid wsp:val="00297956"/><wsp:rsid wsp:val="002A1E33"/><wsp:rsid wsp:val="002A4FCB"/><wsp:rsid wsp:val="002B0604"/><wsp:rsid wsp:val="002B798B"/><wsp:rsid wsp:val="002C5706"/><wsp:rsid wsp:val="002D4EF1"/><wsp:rsid wsp:val="002D7289"/><wsp:rsid wsp:val="002D7290"/><wsp:rsid wsp:val="002E125A"/><wsp:rsid wsp:val="002E4219"/><wsp:rsid wsp:val="002E6DCE"/><wsp:rsid wsp:val="002F6CB4"/><wsp:rsid wsp:val="00306F02"/><wsp:rsid wsp:val="003116D6"/><wsp:rsid wsp:val="0031593E"/><wsp:rsid wsp:val="0033641C"/><wsp:rsid wsp:val="0033770F"/><wsp:rsid wsp:val="003534DB"/><wsp:rsid wsp:val="00357B2F"/><wsp:rsid wsp:val="00370D17"/><wsp:rsid wsp:val="003724C6"/><wsp:rsid wsp:val="0037392F"/><wsp:rsid wsp:val="003739E6"/><wsp:rsid wsp:val="0038257D"/><wsp:rsid wsp:val="003850AB"/><wsp:rsid wsp:val="003877FD"/><wsp:rsid wsp:val="003A0770"/><wsp:rsid wsp:val="003A15E9"/><wsp:rsid wsp:val="003A1FEA"/><wsp:rsid wsp:val="003B0842"/><wsp:rsid wsp:val="003B5319"/><wsp:rsid wsp:val="003D263A"/><wsp:rsid wsp:val="003D26BD"/><wsp:rsid wsp:val="003D41C1"/><wsp:rsid wsp:val="003D4E9C"/><wsp:rsid wsp:val="003D5B32"/><wsp:rsid wsp:val="003E5A4F"/><wsp:rsid wsp:val="003F40D2"/><wsp:rsid wsp:val="003F6F30"/><wsp:rsid wsp:val="00411140"/><wsp:rsid wsp:val="00423163"/><wsp:rsid wsp:val="004417BE"/><wsp:rsid wsp:val="0044516A"/><wsp:rsid wsp:val="00453B86"/><wsp:rsid wsp:val="004546FC"/><wsp:rsid wsp:val="00465A78"/><wsp:rsid wsp:val="00470A7A"/><wsp:rsid wsp:val="0048363C"/><wsp:rsid wsp:val="00485EEE"/><wsp:rsid wsp:val="00493774"/><wsp:rsid wsp:val="00496AA5"/><wsp:rsid wsp:val="004978C4"/><wsp:rsid wsp:val="004A1CCA"/><wsp:rsid wsp:val="004B1050"/><wsp:rsid wsp:val="004B2F10"/><wsp:rsid wsp:val="004C0A1F"/><wsp:rsid wsp:val="004C603C"/><wsp:rsid wsp:val="004D5379"/><wsp:rsid wsp:val="004E3337"/><wsp:rsid wsp:val="004E7C5F"/><wsp:rsid wsp:val="00515AE0"/><wsp:rsid wsp:val="00517693"/><wsp:rsid wsp:val="00522250"/><wsp:rsid wsp:val="005244FF"/><wsp:rsid wsp:val="00530C0F"/><wsp:rsid wsp:val="00533D4D"/><wsp:rsid wsp:val="005605D4"/><wsp:rsid wsp:val="00564BC0"/><wsp:rsid wsp:val="00567343"/><wsp:rsid wsp:val="005675B7"/><wsp:rsid wsp:val="0057061B"/><wsp:rsid wsp:val="0057555E"/><wsp:rsid wsp:val="005A4B03"/><wsp:rsid wsp:val="005C3E15"/><wsp:rsid wsp:val="005C6185"/><wsp:rsid wsp:val="005D1A0D"/><wsp:rsid wsp:val="005D3587"/><wsp:rsid wsp:val="005E02BA"/><wsp:rsid wsp:val="005E122B"/><wsp:rsid wsp:val="005E4376"/><wsp:rsid wsp:val="005E702A"/><wsp:rsid wsp:val="005F2993"/><wsp:rsid wsp:val="005F35C4"/><wsp:rsid wsp:val="006015D6"/><wsp:rsid wsp:val="00605260"/><wsp:rsid wsp:val="00605417"/><wsp:rsid wsp:val="006111D3"/><wsp:rsid wsp:val="00614ED8"/><wsp:rsid wsp:val="006238C9"/><wsp:rsid wsp:val="00624582"/><wsp:rsid wsp:val="00627F1F"/><wsp:rsid wsp:val="00630722"/><wsp:rsid wsp:val="0063262E"/><wsp:rsid wsp:val="0066654A"/><wsp:rsid wsp:val="00667C3D"/><wsp:rsid wsp:val="006724F7"/><wsp:rsid wsp:val="00672BD3"/><wsp:rsid wsp:val="0067307E"/><wsp:rsid wsp:val="00697DBF"/><wsp:rsid wsp:val="006A108F"/><wsp:rsid wsp:val="006A4CFB"/><wsp:rsid wsp:val="006A7BEF"/><wsp:rsid wsp:val="006B5B71"/><wsp:rsid wsp:val="006B63C2"/><wsp:rsid wsp:val="006C04E9"/><wsp:rsid wsp:val="006C4F00"/><wsp:rsid wsp:val="006D1536"/><wsp:rsid wsp:val="006D4514"/><wsp:rsid wsp:val="006D781E"/><wsp:rsid wsp:val="006E0AB6"/><wsp:rsid wsp:val="006E7077"/><wsp:rsid wsp:val="00711F77"/><wsp:rsid wsp:val="00712309"/><wsp:rsid wsp:val="00712933"/><wsp:rsid wsp:val="0071606D"/><wsp:rsid wsp:val="00721F21"/><wsp:rsid wsp:val="007323A9"/><wsp:rsid wsp:val="00737D1B"/><wsp:rsid wsp:val="00743F40"/><wsp:rsid wsp:val="007534C9"/><wsp:rsid wsp:val="007600B1"/><wsp:rsid wsp:val="007613A0"/><wsp:rsid wsp:val="00784378"/><wsp:rsid wsp:val="00786AF0"/><wsp:rsid wsp:val="00790080"/><wsp:rsid wsp:val="007921D3"/><wsp:rsid wsp:val="00797E6B"/><wsp:rsid wsp:val="007A0657"/><wsp:rsid wsp:val="007A1F4F"/><wsp:rsid wsp:val="007A205B"/><wsp:rsid wsp:val="007B5153"/><wsp:rsid wsp:val="007B53FB"/><wsp:rsid wsp:val="007B59CC"/><wsp:rsid wsp:val="007D424E"/><wsp:rsid wsp:val="007D6EDC"/><wsp:rsid wsp:val="007E31BB"/><wsp:rsid wsp:val="007F1309"/><wsp:rsid wsp:val="0080762D"/><wsp:rsid wsp:val="00810CB8"/><wsp:rsid wsp:val="00816887"/><wsp:rsid wsp:val="0082049F"/><wsp:rsid wsp:val="0083682F"/><wsp:rsid wsp:val="0085234B"/><wsp:rsid wsp:val="00853836"/><wsp:rsid wsp:val="00855CE1"/><wsp:rsid wsp:val="00861D13"/><wsp:rsid wsp:val="00861DB8"/><wsp:rsid wsp:val="00865ED8"/><wsp:rsid wsp:val="00866395"/><wsp:rsid wsp:val="00866BDD"/><wsp:rsid wsp:val="008671A8"/><wsp:rsid wsp:val="00867409"/><wsp:rsid wsp:val="008674EE"/><wsp:rsid wsp:val="00870B65"/><wsp:rsid wsp:val="008715D1"/><wsp:rsid wsp:val="0087335F"/><wsp:rsid wsp:val="00876E52"/><wsp:rsid wsp:val="00890422"/><wsp:rsid wsp:val="00893064"/><wsp:rsid wsp:val="00894991"/><wsp:rsid wsp:val="008A40B7"/><wsp:rsid wsp:val="008A4558"/><wsp:rsid wsp:val="008B1AB7"/><wsp:rsid wsp:val="008B37D0"/><wsp:rsid wsp:val="008B659F"/><wsp:rsid wsp:val="008D332B"/><wsp:rsid wsp:val="008D5BBD"/><wsp:rsid wsp:val="008F1DB8"/><wsp:rsid wsp:val="008F3E64"/><wsp:rsid wsp:val="008F5B9A"/><wsp:rsid wsp:val="00903436"/><wsp:rsid wsp:val="00905D37"/><wsp:rsid wsp:val="00907A2F"/><wsp:rsid wsp:val="009102A3"/><wsp:rsid wsp:val="00912FED"/><wsp:rsid wsp:val="00913874"/><wsp:rsid wsp:val="009204ED"/><wsp:rsid wsp:val="0092416A"/><wsp:rsid wsp:val="00925A21"/><wsp:rsid wsp:val="00932F0F"/><wsp:rsid wsp:val="00944F35"/><wsp:rsid wsp:val="009544BE"/><wsp:rsid wsp:val="009550E3"/><wsp:rsid wsp:val="00964929"/><wsp:rsid wsp:val="009661A9"/><wsp:rsid wsp:val="00972C6E"/><wsp:rsid wsp:val="00975A17"/><wsp:rsid wsp:val="00976AA6"/><wsp:rsid wsp:val="009776CC"/><wsp:rsid wsp:val="00983D28"/><wsp:rsid wsp:val="00996ED0"/><wsp:rsid wsp:val="009A0C0A"/><wsp:rsid wsp:val="009A17F7"/><wsp:rsid wsp:val="009B116B"/><wsp:rsid wsp:val="009B1EF0"/><wsp:rsid wsp:val="009B7093"/><wsp:rsid wsp:val="009C2B94"/><wsp:rsid wsp:val="009C7319"/><wsp:rsid wsp:val="009D7FD5"/><wsp:rsid wsp:val="009E38A9"/><wsp:rsid wsp:val="009E66AD"/><wsp:rsid wsp:val="009E6B3D"/><wsp:rsid wsp:val="009F21AE"/><wsp:rsid wsp:val="009F4F9E"/><wsp:rsid wsp:val="00A134C3"/><wsp:rsid wsp:val="00A20E91"/><wsp:rsid wsp:val="00A233DA"/><wsp:rsid wsp:val="00A2428A"/><wsp:rsid wsp:val="00A30F20"/><wsp:rsid wsp:val="00A318E6"/><wsp:rsid wsp:val="00A34FAA"/><wsp:rsid wsp:val="00A476C0"/><wsp:rsid wsp:val="00A652E0"/><wsp:rsid wsp:val="00A7660E"/><wsp:rsid wsp:val="00A81E8C"/><wsp:rsid wsp:val="00AA6DC4"/><wsp:rsid wsp:val="00AB4731"/><wsp:rsid wsp:val="00AC346F"/><wsp:rsid wsp:val="00AD5D6E"/><wsp:rsid wsp:val="00AE1F8F"/><wsp:rsid wsp:val="00AE452F"/><wsp:rsid wsp:val="00AF20CB"/><wsp:rsid wsp:val="00AF2830"/><wsp:rsid wsp:val="00AF6A43"/><wsp:rsid wsp:val="00B022E7"/><wsp:rsid wsp:val="00B13D46"/><wsp:rsid wsp:val="00B32AC1"/><wsp:rsid wsp:val="00B43482"/><wsp:rsid wsp:val="00B47E5D"/><wsp:rsid wsp:val="00B70B4F"/><wsp:rsid wsp:val="00B72055"/><wsp:rsid wsp:val="00B7611A"/><wsp:rsid wsp:val="00B8047C"/><wsp:rsid wsp:val="00B86259"/><wsp:rsid wsp:val="00B869CD"/><wsp:rsid wsp:val="00BA1260"/><wsp:rsid wsp:val="00BA666C"/><wsp:rsid wsp:val="00BB22AA"/><wsp:rsid wsp:val="00BB4C86"/><wsp:rsid wsp:val="00BE0FE1"/><wsp:rsid wsp:val="00BF138E"/><wsp:rsid wsp:val="00BF17C1"/><wsp:rsid wsp:val="00BF47F1"/><wsp:rsid wsp:val="00C005E5"/><wsp:rsid wsp:val="00C00EDA"/><wsp:rsid wsp:val="00C0337E"/><wsp:rsid wsp:val="00C05637"/><wsp:rsid wsp:val="00C07C88"/><wsp:rsid wsp:val="00C25428"/><wsp:rsid wsp:val="00C31C57"/><wsp:rsid wsp:val="00C33FA2"/><wsp:rsid wsp:val="00C3559C"/><wsp:rsid wsp:val="00C40EDF"/><wsp:rsid wsp:val="00C43DDD"/><wsp:rsid wsp:val="00C44610"/><wsp:rsid wsp:val="00C55E2F"/><wsp:rsid wsp:val="00C57BFE"/><wsp:rsid wsp:val="00C65CD1"/><wsp:rsid wsp:val="00C66826"/><wsp:rsid wsp:val="00C734BB"/><wsp:rsid wsp:val="00C7476A"/><wsp:rsid wsp:val="00C779E8"/><wsp:rsid wsp:val="00C93CA3"/><wsp:rsid wsp:val="00CA3B63"/><wsp:rsid wsp:val="00CA5EA3"/><wsp:rsid wsp:val="00CB3924"/><wsp:rsid wsp:val="00CB6076"/><wsp:rsid wsp:val="00CC1D8D"/><wsp:rsid wsp:val="00CC312A"/><wsp:rsid wsp:val="00CE03B8"/><wsp:rsid wsp:val="00D01E28"/><wsp:rsid wsp:val="00D1251A"/><wsp:rsid wsp:val="00D127B6"/><wsp:rsid wsp:val="00D25E39"/><wsp:rsid wsp:val="00D3420B"/><wsp:rsid wsp:val="00D42F1D"/><wsp:rsid wsp:val="00D445A4"/><wsp:rsid wsp:val="00D54D3F"/><wsp:rsid wsp:val="00D72507"/><wsp:rsid wsp:val="00D7397C"/><wsp:rsid wsp:val="00D90577"/><wsp:rsid wsp:val="00D930D4"/><wsp:rsid wsp:val="00D94335"/><wsp:rsid wsp:val="00DA6F39"/><wsp:rsid wsp:val="00DB5F49"/><wsp:rsid wsp:val="00DB68B8"/><wsp:rsid wsp:val="00DC5116"/><wsp:rsid wsp:val="00DD07A9"/><wsp:rsid wsp:val="00DD22A9"/><wsp:rsid wsp:val="00DD3A90"/><wsp:rsid wsp:val="00DD508F"/><wsp:rsid wsp:val="00DD6B4F"/><wsp:rsid wsp:val="00DD7FC5"/><wsp:rsid wsp:val="00DE6BA0"/><wsp:rsid wsp:val="00E068E6"/><wsp:rsid wsp:val="00E1199B"/><wsp:rsid wsp:val="00E11BC7"/><wsp:rsid wsp:val="00E214AD"/><wsp:rsid wsp:val="00E239DA"/><wsp:rsid wsp:val="00E34311"/><wsp:rsid wsp:val="00E40969"/><wsp:rsid wsp:val="00E41F48"/><wsp:rsid wsp:val="00E441DF"/><wsp:rsid wsp:val="00E63377"/><wsp:rsid wsp:val="00E67580"/><wsp:rsid wsp:val="00E81372"/><wsp:rsid wsp:val="00E81F18"/><wsp:rsid wsp:val="00E875DA"/><wsp:rsid wsp:val="00E904D2"/><wsp:rsid wsp:val="00E92628"/><wsp:rsid wsp:val="00E96E7A"/><wsp:rsid wsp:val="00EA278B"/><wsp:rsid wsp:val="00EB18F7"/><wsp:rsid wsp:val="00EB2F20"/><wsp:rsid wsp:val="00EB4F31"/><wsp:rsid wsp:val="00EB62B7"/><wsp:rsid wsp:val="00EC7E43"/><wsp:rsid wsp:val="00ED6DE0"/><wsp:rsid wsp:val="00EE4A91"/><wsp:rsid wsp:val="00EF1639"/><wsp:rsid wsp:val="00EF5226"/><wsp:rsid wsp:val="00EF72A1"/><wsp:rsid wsp:val="00F04531"/><wsp:rsid wsp:val="00F11E7D"/><wsp:rsid wsp:val="00F24A08"/><wsp:rsid wsp:val="00F2536C"/><wsp:rsid wsp:val="00F25A7A"/><wsp:rsid wsp:val="00F3497B"/><wsp:rsid wsp:val="00F34A89"/><wsp:rsid wsp:val="00F457C0"/><wsp:rsid wsp:val="00F72F61"/><wsp:rsid wsp:val="00F812EB"/><wsp:rsid wsp:val="00F832CA"/><wsp:rsid wsp:val="00F85495"/><wsp:rsid wsp:val="00F86BB3"/><wsp:rsid wsp:val="00FA22D9"/><wsp:rsid wsp:val="00FA2ADE"/><wsp:rsid wsp:val="00FA4AF6"/><wsp:rsid wsp:val="00FC17CF"/><wsp:rsid wsp:val="00FC55FB"/><wsp:rsid wsp:val="00FC7758"/><wsp:rsid wsp:val="00FD64E8"/><wsp:rsid wsp:val="00FD7577"/></wsp:rsids></w:docPr><w:body><wx:sect><ns0:Artifact><w:p wsp:rsidR="00FA2ADE" wsp:rsidRDefault="00260EC7" wsp:rsidP="00FA2ADE"><Set_Name><w:r wsp:rsidR="00FA2ADE"><w:t>Default</w:t></w:r></Set_Name><Outline><HeadingAttribute><w:r wsp:rsidR="00FA2ADE"><w:t>Name</w:t></w:r></HeadingAttribute><RecurseChildren><w:r wsp:rsidR="00D127B6"><w:t>false</w:t></w:r></RecurseChildren></Outline><Attribute><Name><w:r wsp:rsidR="00FA2ADE"><w:t>Word Formatted Content</w:t></w:r></Name></Attribute></w:p></ns0:Artifact><w:p wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidRDefault="00AD5D6E" wsp:rsidP="00DB5F49"/><w:sectPr wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidSect="004978C4"><w:hdr w:type="odd"><w:p wsp:rsidR="003B0842" wsp:rsidRDefault="003B0842" wsp:rsidP="00DB5F49"><w:pPr><w:pStyle w:val="Header"/><w:jc w:val="left"/></w:pPr></w:p></w:hdr><w:pgSz w:w="12240" w:h="15840" w:code="1"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="432" w:footer="432" w:gutter="0"/><w:pgNumType w:start="1"/><w:cols w:space="475"/><w:noEndnote/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Subsystem Requirement.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Subsystem Requirement.xml
new file mode 100644
index 00000000000..2b0bbb97b75
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW Subsystem Requirement.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://www.w3.org/2001/XMLSchema" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:Title>PIDS</o:Title><o:LastAuthor>Ryan D. Brooks</o:LastAuthor><o:Revision>5</o:Revision><o:TotalTime>6</o:TotalTime><o:Created>2007-04-21T17:58:00Z</o:Created><o:LastSaved>2007-04-21T18:04:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>4</o:Words><o:Characters>50</o:Characters><o:Company>The Boeing Company</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>53</o:CharactersWithSpaces><o:Version>11.8125</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Helvetica"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="20007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="61007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000101FF" w:csb-1="00000000"/></w:font><w:font w:name="Palatino"><w:panose-1 w:val="00000000000000000000"/><w:charset w:val="00"/><w:family w:val="Roman"/><w:notTrueType/><w:pitch w:val="variable"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="FFFFFF7C"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="E996B4CA"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="FFFFFF7D"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="50505ECA"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="FFFFFF7E"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="BAEEE21A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="FFFFFF7F"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="B28C17EA"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="4"><w:lsid w:val="FFFFFF80"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="CAE0AB78"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="ï‚·"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="5"><w:lsid w:val="FFFFFF81"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="FE58316C"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="ï‚·"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="6"><w:lsid w:val="FFFFFF82"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="1DD018C6"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="ï‚·"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="7"><w:lsid w:val="FFFFFF83"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="803A9086"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="ï‚·"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="8"><w:lsid w:val="FFFFFF89"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="C088BAEC"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="ï‚·"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="9"><w:lsid w:val="087E70DB"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="5BD0CBD8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="ListNumber"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1944"/></w:tabs><w:ind w:left="1944" w:hanging="720"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="10"><w:lsid w:val="0D9B2B75"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="7DF248D8"/><w:lvl w:ilvl="0" w:tplc="8D92823C"><w:start w:val="1"/><w:pStyle w:val="list1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="11"><w:lsid w:val="2080797B"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="9176EC16"/><w:lvl w:ilvl="0" w:tplc="545CBCEA"><w:start w:val="1"/><w:nfc w:val="1"/><w:pStyle w:val="Caption"/><w:lvlText w:val="Table %1."/><w:lvlJc w:val="center"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="0" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="12"><w:lsid w:val="2DD050A8"/><w:plt w:val="Multilevel"/><w:tmpl w:val="7FF67434"/><w:styleLink w:val="OutlineList"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="13"><w:lsid w:val="529569FF"/><w:plt w:val="Multilevel"/><w:tmpl w:val="57C45F26"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="lista"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="14"><w:lsid w:val="60CB0B90"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:styleLink w:val="Outlinelist0"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="15"><w:lsid w:val="681B1731"/><w:plt w:val="Multilevel"/><w:tmpl w:val="638C7D82"/><w:styleLink w:val="CurrentList1"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1.0 "/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1170"/></w:tabs><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Space"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="0" w:first-line="0"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="16"><w:lsid w:val="688B6D0E"/><w:plt w:val="Multilevel"/><w:tmpl w:val="6CDEFB96"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="Heading1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.0 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="Heading2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="Heading3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1516" w:hanging="1516"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="Heading4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="Heading5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="Heading6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="Heading7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="Heading8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="Heading9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="16"/></w:list><w:list w:ilfo="2"><w:ilst w:val="11"/></w:list><w:list w:ilfo="3"><w:ilst w:val="10"/></w:list><w:list w:ilfo="4"><w:ilst w:val="9"/></w:list><w:list w:ilfo="5"><w:ilst w:val="13"/><w:lvlOverride w:ilvl="0"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="1"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="2"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="3"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="4"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="5"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="6"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="7"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="8"><w:startOverride w:val="1"/></w:lvlOverride></w:list><w:list w:ilfo="6"><w:ilst w:val="12"/></w:list><w:list w:ilfo="7"><w:ilst w:val="14"/></w:list><w:list w:ilfo="8"><w:ilst w:val="15"/></w:list><w:list w:ilfo="9"><w:ilst w:val="8"/></w:list><w:list w:ilfo="10"><w:ilst w:val="7"/></w:list><w:list w:ilfo="11"><w:ilst w:val="6"/></w:list><w:list w:ilfo="12"><w:ilst w:val="5"/></w:list><w:list w:ilfo="13"><w:ilst w:val="4"/></w:list><w:list w:ilfo="14"><w:ilst w:val="3"/></w:list><w:list w:ilfo="15"><w:ilst w:val="2"/></w:list><w:list w:ilfo="16"><w:ilst w:val="1"/></w:list><w:list w:ilfo="17"><w:ilst w:val="0"/></w:list><w:ilfoMacAtCleanup w:val="8"/></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><wx:uiName wx:val="Heading 1"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading1"/><w:keepNext/><w:listPr><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="864"/></w:tabs><w:spacing w:before="280" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:caps/><w:noProof/><w:kern w:val="28"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><wx:uiName wx:val="Heading 2"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading2"/><w:keepNext/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><wx:uiName wx:val="Heading 3"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading3"/><w:keepNext/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="864"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading4"><w:name w:val="heading 4"/><wx:uiName wx:val="Heading 4"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading4"/><w:keepNext/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1224"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="3"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading5"><w:name w:val="heading 5"/><wx:uiName wx:val="Heading 5"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading5"/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1368"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="4"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading6"><w:name w:val="heading 6"/><wx:uiName wx:val="Heading 6"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading6"/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="5"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading7"><w:name w:val="heading 7"/><wx:uiName wx:val="Heading 7"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading7"/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1584"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="6"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading8"><w:name w:val="heading 8"/><wx:uiName wx:val="Heading 8"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading8"/><w:listPr><w:ilvl w:val="7"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1728"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="7"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading9"><w:name w:val="heading 9"/><wx:uiName wx:val="Heading 9"/><w:next w:val="Normal"/><w:rsid w:val="005251ED"/><w:pPr><w:pStyle w:val="Heading9"/><w:listPr><w:ilvl w:val="8"/><w:ilfo w:val="1"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="2016"/></w:tabs><w:spacing w:before="240" w:after="120"/><w:ind w:left="0" w:first-line="0"/><w:outlineLvl w:val="8"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="TableofFigures"><w:name w:val="table of figures"/><wx:uiName wx:val="Table of Figures"/><w:basedOn w:val="Caption"/><w:next w:val="Normal"/><w:link w:val="CharChar"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableofFigures"/><w:listPr><w:ilfo w:val="0"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC1"><w:name w:val="toc 1"/><wx:uiName wx:val="TOC 1"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC1"/><w:spacing w:before="160" w:after="160"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="character" w:styleId="CharChar"><w:name w:val="Char Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="TableofFigures"/><w:rsid w:val="005930F6"/><w:rPr><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Caption"><w:name w:val="caption"/><wx:uiName wx:val="Caption"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Caption"/><w:listPr><w:ilfo w:val="2"/></w:listPr><w:spacing w:before="120" w:after="120"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC2"><w:name w:val="toc 2"/><wx:uiName wx:val="TOC 2"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC2"/><w:ind w:left="200"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Salutation"><w:name w:val="Salutation"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Salutation"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Title"><w:name w:val="Title"/><w:next w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Title"/><w:spacing w:before="120" w:after="60"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:caps/><w:kern w:val="28"/><w:sz w:val="28"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="SignatureApproved"><w:name w:val="Signature:Approved"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="SignatureApproved"/><w:tabs><w:tab w:val="left" w:pos="0"/></w:tabs><w:spacing w:after="38" w:line="245" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="SignaturePrepared"><w:name w:val="Signature:Prepared"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="SignaturePrepared"/><w:tabs><w:tab w:val="left" w:pos="0"/></w:tabs><w:spacing w:before="13" w:after="38" w:line="245" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="SignatureSignature"><w:name w:val="Signature:Signature"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="SignatureSignature"/><w:spacing w:before="13" w:after="38" w:line="245" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Header"><w:name w:val="header"/><wx:uiName wx:val="Header"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Header"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="date"><w:name w:val="date"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="date"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="specno"><w:name w:val="specno"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="specno"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:spacing w:line="220" w:line-rule="at-least"/><w:jc w:val="right"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="PageNumber"><w:name w:val="page number"/><wx:uiName wx:val="Page Number"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="paragraph" w:styleId="superseding"><w:name w:val="superseding"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="superseding"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:spacing w:before="58" w:line="220" w:line-rule="at-least"/><w:jc w:val="right"/></w:pPr><w:rPr><w:rFonts w:ascii="Palatino" w:h-ansi="Palatino"/><wx:font wx:val="Palatino"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Footer"><w:name w:val="footer"/><wx:uiName wx:val="Footer"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Footer"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Helvetica" w:h-ansi="Helvetica" w:cs="Arial"/><wx:font wx:val="Helvetica"/><w:sz w:val="16"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Legend"><w:name w:val="Legend"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Legend"/><w:spacing w:before="20"/></w:pPr><w:rPr><w:rFonts w:ascii="Helvetica" w:h-ansi="Helvetica" w:cs="Arial"/><wx:font wx:val="Helvetica"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="character" w:styleId="Hyperlink"><w:name w:val="Hyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/><w:rPr><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="normal-h1"><w:name w:val="normal-h1"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/><w:rPr><w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman" w:hint="default"/><w:sz w:val="22"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="FigureTitle"><w:name w:val="FigureTitle"/><w:basedOn w:val="Caption"/><w:next w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="FigureTitle"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableTitle"><w:name w:val="TableTitle"/><w:basedOn w:val="Caption"/><w:next w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableTitle"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="character" w:styleId="SecurityGraphic"><w:name w:val="Security Graphic"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="character" w:styleId="SecurityHeading"><w:name w:val="Security Heading"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="character" w:styleId="SecurityPage"><w:name w:val="Security Page"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="character" w:styleId="SecurityPara"><w:name w:val="Security Para"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="character" w:styleId="SecurityParaEnd"><w:name w:val="Security Para End"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="character" w:styleId="SecurityTable"><w:name w:val="Security Table"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="character" w:styleId="SecurityTitle"><w:name w:val="Security Title"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/></w:style><w:style w:type="paragraph" w:styleId="Date0"><w:name w:val="Date"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Date0"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Subtitle"><w:name w:val="Subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Subtitle"/><w:spacing w:after="60"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="24"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="codeident"><w:name w:val="codeident"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="codeident"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:spacing w:before="60" w:line="220" w:line-rule="at-least"/><w:jc w:val="right"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:snapToGrid w:val="off"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HCellStart"><w:name w:val="HCellStart"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="HCellStart"/><w:spacing w:before="20"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CellBody"><w:name w:val="CellBody"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CellBody"/><w:spacing w:before="60" w:after="60"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HCellEnd"><w:name w:val="HCellEnd"/><w:basedOn w:val="HCellStart"/><w:next w:val="CellBody"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="HCellEnd"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC3"><w:name w:val="toc 3"/><wx:uiName wx:val="TOC 3"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC3"/><w:ind w:left="400"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC4"><w:name w:val="toc 4"/><wx:uiName wx:val="TOC 4"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC4"/><w:ind w:left="600"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC5"><w:name w:val="toc 5"/><wx:uiName wx:val="TOC 5"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC5"/><w:ind w:left="800"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC6"><w:name w:val="toc 6"/><wx:uiName wx:val="TOC 6"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC6"/><w:ind w:left="1000"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC7"><w:name w:val="toc 7"/><wx:uiName wx:val="TOC 7"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC7"/><w:ind w:left="1200"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC8"><w:name w:val="toc 8"/><wx:uiName wx:val="TOC 8"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC8"/><w:ind w:left="1400"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC9"><w:name w:val="toc 9"/><wx:uiName wx:val="TOC 9"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TOC9"/><w:ind w:left="1600"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CellBodyCenter"><w:name w:val="CellBodyCenter"/><w:basedOn w:val="CellBody"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CellBodyCenter"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Notes"><w:name w:val="Notes"/><w:basedOn w:val="Title"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Notes"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Lista0"><w:name w:val="List:a"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Lista0"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="80" w:after="100" w:line="268" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style1"><w:name w:val="Style1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Style1"/><w:tabs><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3960"/></w:tabs><w:spacing w:before="40" w:after="80"/><w:ind w:left="3960" w:hanging="3960"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RefDoc"><w:name w:val="RefDoc"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="RefDoc"/><w:tabs><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3960"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="3960" w:hanging="3960"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="list1"><w:name w:val="list:1"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="list1"/><w:listPr><w:ilfo w:val="3"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="360"/></w:tabs><w:spacing w:before="60" w:after="100"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Note"><w:name w:val="Note"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Note"/><w:tabs><w:tab w:val="left" w:pos="720"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1080" w:hanging="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Acronym"><w:name w:val="Acronym"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Acronym"/><w:tabs><w:tab w:val="left" w:pos="2880"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="3600" w:hanging="2880"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CellTitle"><w:name w:val="CellTitle"/><w:basedOn w:val="CellBody"/><w:autoRedefine/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CellTitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="LegendTitle"><w:name w:val="LegendTitle"/><w:basedOn w:val="Legend"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="LegendTitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Helvetica"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="LegendCenterd"><w:name w:val="LegendCenterd"/><w:basedOn w:val="Legend"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="LegendCenterd"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Helvetica"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="LegendCenterdItalic"><w:name w:val="LegendCenterdItalic"/><w:basedOn w:val="LegendCenterd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="LegendCenterdItalic"/></w:pPr><w:rPr><wx:font wx:val="Helvetica"/><w:i/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofTables"><w:name w:val="Table of Tables"/><w:basedOn w:val="TableTitle"/><w:next w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableofTables"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="list10"><w:name w:val="list:1)"/><w:basedOn w:val="lista"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="list10"/><w:listPr><w:ilfo w:val="0"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="lista"><w:name w:val="list:a)"/><w:link w:val="listaChar"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="lista"/><w:listPr><w:ilfo w:val="5"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CellTitleCenter"><w:name w:val="CellTitleCenter"/><w:basedOn w:val="CellTitle"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CellTitleCenter"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HCellBody"><w:name w:val="HCellBody"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="HCellBody"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HCellBodyCenter"><w:name w:val="HCellBodyCenter"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="HCellBodyCenter"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithLinesRightJustify"><w:name w:val="TableWithLines:RightJustify"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithLinesRightJustify"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithLinesNotes"><w:name w:val="TableWithLines:Notes"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithLinesNotes"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithLinesLeftJustify"><w:name w:val="TableWithLines:LeftJustify"/><w:basedOn w:val="HCellEnd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithLinesLeftJustify"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Ltxt"><w:name w:val="Ltxt"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="Ltxt"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listaleadtab"><w:name w:val="list:a:leadtab"/><w:basedOn w:val="HCellEnd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="listaleadtab"/><w:ind w:left="720"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithLinesCenterJustify"><w:name w:val="TableWithLines:CenterJustify"/><w:basedOn w:val="HCellEnd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithLinesCenterJustify"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithoutLinesRightJustify"><w:name w:val="TableWithoutLines:RightJustify"/><w:basedOn w:val="HCellEnd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithoutLinesRightJustify"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithoutLinesLeftJustify"><w:name w:val="TableWithoutLines:LeftJustify"/><w:basedOn w:val="HCellEnd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithoutLinesLeftJustify"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b w:val="off"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithoutLinesCenterJustify"><w:name w:val="TableWithoutLines:CenterJustify"/><w:basedOn w:val="HCellEnd"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithoutLinesCenterJustify"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol"/><wx:font wx:val="Symbol"/><w:b w:val="off"/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithLineshdr"><w:name w:val="TableWithLines:hdr"/><w:basedOn w:val="Ltxt"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithLineshdr"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="lista1"><w:name w:val="list:a"/><w:basedOn w:val="Lista0"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="lista1"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableWithoutLineshdr"><w:name w:val="TableWithoutLines:hdr"/><w:basedOn w:val="Ltxt"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="TableWithoutLineshdr"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CenterNoSpaceAbove"><w:name w:val="CenterNoSpaceAbove"/><w:basedOn w:val="Ltxt"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CenterNoSpaceAbove"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="LeftNoSpaceAbove"><w:name w:val="LeftNoSpaceAbove"/><w:basedOn w:val="list1"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="LeftNoSpaceAbove"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="DetChg"><w:name w:val="DetChg"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="DetChg"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:snapToGrid w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="FigureTitle0"><w:name w:val="Figure Title"/><w:basedOn w:val="Caption"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="FigureTitle0"/><w:listPr><w:ilfo w:val="0"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="BalloonText"><w:name w:val="Balloon Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="BalloonText"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="character" w:styleId="CommentReference"><w:name w:val="annotation reference"/><wx:uiName wx:val="Comment Reference"/><w:basedOn w:val="DefaultParagraphFont"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:rPr><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentText"><w:name w:val="annotation text"/><wx:uiName wx:val="Comment Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CommentText"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentSubject"><w:name w:val="annotation subject"/><wx:uiName wx:val="Comment Subject"/><w:basedOn w:val="CommentText"/><w:next w:val="CommentText"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="CommentSubject"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:b-cs/></w:rPr></w:style><w:style w:type="character" w:styleId="FollowedHyperlink"><w:name w:val="FollowedHyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00A53204"/><w:rPr><w:color w:val="800080"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/><w:rsid w:val="00A53204"/><w:pPr><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblBorders><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber"><w:name w:val="List Number"/><w:basedOn w:val="List"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="ListNumber"/><w:listPr><w:ilfo w:val="4"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="6465"/></w:tabs><w:spacing w:before="120"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="Helvetica" w:h-ansi="Helvetica"/><wx:font wx:val="Helvetica"/><w:sz w:val="24"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="List"><w:name w:val="List"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="List"/><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="character" w:styleId="listaCharChar"><w:name w:val="list:a) Char Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="lista"/><w:rsid w:val="00AD390B"/><w:rPr><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="DocumentMap"><w:name w:val="Document Map"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="DocumentMap"/><w:shd w:val="clear" w:color="auto" w:fill="000080"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="list" w:styleId="OutlineList"><w:name w:val="OutlineList"/><w:basedOn w:val="NoList"/><w:rsid w:val="00A53204"/><w:pPr><w:listPr><w:ilfo w:val="6"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="MacroReq"><w:name w:val="MacroReq"/><w:basedOn w:val="RequirementText"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="MacroReq"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RequirementID"><w:name w:val="Requirement ID"/><w:basedOn w:val="Heading1"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="RequirementID"/><w:listPr><w:ilfo w:val="0"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RequirementText"><w:name w:val="Requirement Text"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="RequirementText"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RequirementText0"><w:name w:val="Requirement_Text"/><w:basedOn w:val="MacroReq"/><w:rsid w:val="00A53204"/><w:pPr><w:pStyle w:val="RequirementText0"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="list" w:styleId="Outlinelist0"><w:name w:val="Outlinelist"/><w:basedOn w:val="NoList"/><w:rsid w:val="00AD390B"/><w:pPr><w:listPr><w:ilfo w:val="7"/></w:listPr></w:pPr></w:style><w:style w:type="character" w:styleId="listaChar"><w:name w:val="list:a) Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="lista"/><w:rsid w:val="00A53204"/><w:rPr><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="MessageHeader"><w:name w:val="Message Header"/><w:basedOn w:val="Normal"/><w:rsid w:val="003D2D79"/><w:pPr><w:pStyle w:val="MessageHeader"/><w:pBdr><w:top w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/><w:left w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/><w:bottom w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/><w:right w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/></w:pBdr><w:shd w:val="pct-20" w:color="auto" w:fill="auto" wx:bgcolor="CCCCCC"/><w:ind w:left="1080" w:hanging="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="24"/><w:sz-cs w:val="24"/></w:rPr></w:style><w:style w:type="list" w:styleId="CurrentList1"><w:name w:val="Current List1"/><w:rsid w:val="00BD1A72"/><w:pPr><w:listPr><w:ilfo w:val="8"/></w:listPr></w:pPr></w:style></w:styles><w:divs><w:div w:id="1512641436"><w:bodyDiv w:val="on"/><w:marLeft w:val="0"/><w:marRight w:val="0"/><w:marTop w:val="0"/><w:marBottom w:val="0"/><w:divBdr><w:top w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/><w:left w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/><w:bottom w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/><w:right w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/></w:divBdr></w:div></w:divs><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="10242"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="6"/></o:shapelayout></w:shapeDefaults><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:doNotEmbedSystemFonts/><w:attachedTemplate w:val=""/><w:stylePaneFormatFilter w:val="0004"/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema w:val="off"/><w:saveInvalidXML/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:hdrShapeDefaults><o:shapedefaults v:ext="edit" spidmax="10242"/></w:hdrShapeDefaults><w:footnotePr><w:footnote w:type="separator"><w:p wsp:rsidR="009877DB" wsp:rsidRDefault="009877DB"><w:r><w:separator/></w:r></w:p></w:footnote><w:footnote w:type="continuation-separator"><w:p wsp:rsidR="009877DB" wsp:rsidRDefault="009877DB"><w:r><w:continuationSeparator/></w:r></w:p></w:footnote></w:footnotePr><w:endnotePr><w:endnote w:type="separator"><w:p wsp:rsidR="009877DB" wsp:rsidRDefault="009877DB"><w:r><w:separator/></w:r></w:p></w:endnote><w:endnote w:type="continuation-separator"><w:p wsp:rsidR="009877DB" wsp:rsidRDefault="009877DB"><w:r><w:continuationSeparator/></w:r></w:p></w:endnote></w:endnotePr><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="005930F6"/><wsp:rsid wsp:val="00031FA8"/><wsp:rsid wsp:val="001216A2"/><wsp:rsid wsp:val="0031395C"/><wsp:rsid wsp:val="00352BDC"/><wsp:rsid wsp:val="00370E65"/><wsp:rsid wsp:val="00374ACD"/><wsp:rsid wsp:val="003D2D79"/><wsp:rsid wsp:val="004C403B"/><wsp:rsid wsp:val="00514B92"/><wsp:rsid wsp:val="005251ED"/><wsp:rsid wsp:val="005456AA"/><wsp:rsid wsp:val="005930F6"/><wsp:rsid wsp:val="00596986"/><wsp:rsid wsp:val="006451DC"/><wsp:rsid wsp:val="006A0851"/><wsp:rsid wsp:val="007E37E3"/><wsp:rsid wsp:val="008E37A2"/><wsp:rsid wsp:val="009877DB"/><wsp:rsid wsp:val="009F64DC"/><wsp:rsid wsp:val="00A140CC"/><wsp:rsid wsp:val="00A53204"/><wsp:rsid wsp:val="00A67988"/><wsp:rsid wsp:val="00A83D79"/><wsp:rsid wsp:val="00AD390B"/><wsp:rsid wsp:val="00AF266B"/><wsp:rsid wsp:val="00BD1A72"/><wsp:rsid wsp:val="00BE7EB2"/><wsp:rsid wsp:val="00C21BA4"/><wsp:rsid wsp:val="00C84669"/><wsp:rsid wsp:val="00D514C2"/><wsp:rsid wsp:val="00D711EB"/><wsp:rsid wsp:val="00ED68A7"/></wsp:rsids></w:docPr><w:body><wx:sect><ns0:Artifact><w:p wsp:rsidR="00A67988" wsp:rsidRDefault="00A67988" wsp:rsidP="00A67988"><Set_Name><w:r><w:t>Default</w:t></w:r></Set_Name><Outline><HeadingAttribute><w:r><w:t>Name</w:t></w:r></HeadingAttribute><RecurseChildren><w:r><w:t>false</w:t></w:r></RecurseChildren></Outline><Attribute><Name><w:r><w:t>Word Formatted Content</w:t></w:r></Name></Attribute></w:p></ns0:Artifact><w:p wsp:rsidR="005456AA" wsp:rsidRPr="00031FA8" wsp:rsidRDefault="005456AA" wsp:rsidP="00031FA8"/><w:sectPr wsp:rsidR="005456AA" wsp:rsidRPr="00031FA8" wsp:rsidSect="00A83D79"><w:hdr w:type="even"><w:p wsp:rsidR="00E20D08" wsp:rsidRDefault="009877DB"/></w:hdr><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW default.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW default.xml
new file mode 100644
index 00000000000..2117dd79f01
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW default.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://www.w3.org/2001/XMLSchema" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:LastAuthor>Ryan D. Brooks</o:LastAuthor><o:Revision>10</o:Revision><o:TotalTime>17</o:TotalTime><o:Created>2007-04-21T18:06:00Z</o:Created><o:LastSaved>2007-05-31T03:23:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>7</o:Words><o:Characters>42</o:Characters><o:Company>The Boeing Company</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>48</o:CharactersWithSpaces><o:Version>11.8134</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="232A4700"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="2A5411A0"/><w:plt w:val="Multilevel"/><w:tmpl w:val="1BF010EA"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="Heading1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="2"/><w:pStyle w:val="Heading2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="24"/><w:pStyle w:val="Heading3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="Heading4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="Heading5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="Heading6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="Heading7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="Heading8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="Heading9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="1"/></w:list><w:list w:ilfo="2"><w:ilst w:val="1"/></w:list><w:list w:ilfo="3"><w:ilst w:val="1"/></w:list><w:list w:ilfo="4"><w:ilst w:val="1"/></w:list><w:list w:ilfo="5"><w:ilst w:val="1"/></w:list><w:list w:ilfo="6"><w:ilst w:val="1"/></w:list><w:list w:ilfo="7"><w:ilst w:val="1"/></w:list><w:list w:ilfo="8"><w:ilst w:val="1"/></w:list><w:list w:ilfo="9"><w:ilst w:val="1"/></w:list><w:list w:ilfo="10"><w:ilst w:val="0"/></w:list></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="00C06E0C"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><wx:uiName wx:val="Heading 1"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading1"/><w:keepNext/><w:keepLines/><w:pageBreakBefore/><w:listPr><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:kern w:val="28"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><wx:uiName wx:val="Heading 2"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading2"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><wx:uiName wx:val="Heading 3"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading3"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="9"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="900"/></w:tabs><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading4"><w:name w:val="heading 4"/><wx:uiName wx:val="Heading 4"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading4"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="3"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading5"><w:name w:val="heading 5"/><wx:uiName wx:val="Heading 5"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading5"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="4"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading6"><w:name w:val="heading 6"/><wx:uiName wx:val="Heading 6"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading6"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="5"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading7"><w:name w:val="heading 7"/><wx:uiName wx:val="Heading 7"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading7"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="9"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1620"/></w:tabs><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="6"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading8"><w:name w:val="heading 8"/><wx:uiName wx:val="Heading 8"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading8"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="7"/><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="7"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading9"><w:name w:val="heading 9"/><wx:uiName wx:val="Heading 9"/><w:next w:val="Normal"/><w:rsid w:val="00696A94"/><w:pPr><w:pStyle w:val="Heading9"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="8"/><w:ilfo w:val="9"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="8"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="HeadingUnnumbered"><w:name w:val="Heading Unnumbered"/><w:next w:val="Normal"/><w:autoRedefine/><w:rsid w:val="003B0570"/><w:pPr><w:pStyle w:val="HeadingUnnumbered"/><w:keepNext/><w:keepLines/><w:spacing w:before="240" w:after="80"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="24"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style></w:styles><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:proofState w:spelling="clean" w:grammar="clean"/><w:attachedTemplate w:val=""/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema w:val="off"/><w:saveInvalidXML/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="00542E2B"/><wsp:rsid wsp:val="00032983"/><wsp:rsid wsp:val="000B3338"/><wsp:rsid wsp:val="000D7B67"/><wsp:rsid wsp:val="00121DE1"/><wsp:rsid wsp:val="00140AA7"/><wsp:rsid wsp:val="001965DC"/><wsp:rsid wsp:val="001F44D7"/><wsp:rsid wsp:val="002417BF"/><wsp:rsid wsp:val="0026273B"/><wsp:rsid wsp:val="002662E3"/><wsp:rsid wsp:val="0026750B"/><wsp:rsid wsp:val="002E251C"/><wsp:rsid wsp:val="00385A5D"/><wsp:rsid wsp:val="003A0B4B"/><wsp:rsid wsp:val="003B0570"/><wsp:rsid wsp:val="003D33C7"/><wsp:rsid wsp:val="003E0161"/><wsp:rsid wsp:val="003E1784"/><wsp:rsid wsp:val="00402D48"/><wsp:rsid wsp:val="004201DB"/><wsp:rsid wsp:val="00420233"/><wsp:rsid wsp:val="00477F01"/><wsp:rsid wsp:val="004B03C0"/><wsp:rsid wsp:val="00502424"/><wsp:rsid wsp:val="00542E2B"/><wsp:rsid wsp:val="005463A4"/><wsp:rsid wsp:val="006141BE"/><wsp:rsid wsp:val="00696A94"/><wsp:rsid wsp:val="006E79F0"/><wsp:rsid wsp:val="00734816"/><wsp:rsid wsp:val="00763A67"/><wsp:rsid wsp:val="00791E6A"/><wsp:rsid wsp:val="007F3A83"/><wsp:rsid wsp:val="0081123D"/><wsp:rsid wsp:val="00820625"/><wsp:rsid wsp:val="008376DC"/><wsp:rsid wsp:val="00850AC3"/><wsp:rsid wsp:val="00872E7A"/><wsp:rsid wsp:val="00872F8E"/><wsp:rsid wsp:val="009317B9"/><wsp:rsid wsp:val="00A16EE3"/><wsp:rsid wsp:val="00A34EA3"/><wsp:rsid wsp:val="00A4305E"/><wsp:rsid wsp:val="00A51DE8"/><wsp:rsid wsp:val="00A540B8"/><wsp:rsid wsp:val="00A569AD"/><wsp:rsid wsp:val="00AF2E8E"/><wsp:rsid wsp:val="00B21FF0"/><wsp:rsid wsp:val="00B76177"/><wsp:rsid wsp:val="00B93554"/><wsp:rsid wsp:val="00C06E0C"/><wsp:rsid wsp:val="00CC1964"/><wsp:rsid wsp:val="00CD088E"/><wsp:rsid wsp:val="00D17844"/><wsp:rsid wsp:val="00D27C09"/><wsp:rsid wsp:val="00D30EC1"/><wsp:rsid wsp:val="00D35D56"/><wsp:rsid wsp:val="00DB754D"/><wsp:rsid wsp:val="00DC28CF"/><wsp:rsid wsp:val="00EA00A4"/><wsp:rsid wsp:val="00EB184C"/><wsp:rsid wsp:val="00F7158B"/><wsp:rsid wsp:val="00FC1791"/><wsp:rsid wsp:val="00FC7D67"/><wsp:rsid wsp:val="00FF16F2"/></wsp:rsids></w:docPr><w:body><wx:sect><ns0:Artifact><w:p wsp:rsidR="00820625" wsp:rsidRDefault="004B03C0"><Set_Name><w:proofErr w:type="spellStart"/><w:r wsp:rsidR="00FC7D67"><w:t>Default</w:t></w:r></Set_Name><Attribute><Name><w:r wsp:rsidR="00477F01" wsp:rsidRPr="00A34EA3"><w:t>Name</w:t></w:r></Name><Format><w:r wsp:rsidR="00A34EA3" wsp:rsidRPr="00A34EA3"><w:rPr><w:b/></w:rPr><w:t>x</w:t></w:r></Format></Attribute><Attribute><Name><w:r wsp:rsidR="00FC7D67"><w:t>Word</w:t></w:r><w:proofErr w:type="spellEnd"/><w:r wsp:rsidR="00FC7D67"><w:t> Formatted Content</w:t></w:r></Name></Attribute></w:p></ns0:Artifact><w:sectPr wsp:rsidR="00820625" wsp:rsidSect="00734816"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL.xml
new file mode 100644
index 00000000000..327eace8477
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://www.w3.org/2001/XMLSchema" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:Title>SRS</o:Title><o:Author>Ryan D. Brooks</o:Author><o:LastAuthor>b1565043</o:LastAuthor><o:Revision>9</o:Revision><o:TotalTime>1281</o:TotalTime><o:LastPrinted>2007-03-22T22:27:00Z</o:LastPrinted><o:Created>2007-04-21T15:49:00Z</o:Created><o:LastSaved>2007-11-27T23:00:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>4</o:Words><o:Characters>29</o:Characters><o:Company>The Boeing Company</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>32</o:CharactersWithSpaces><o:Version>11.8134</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Helvetica"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:notTrueType/><w:pitch w:val="variable"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Courier"><w:panose-1 w:val="02070409020205020404"/><w:charset w:val="00"/><w:family w:val="Modern"/><w:notTrueType/><w:pitch w:val="fixed"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="61007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000101FF" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="FFFFFF7C"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="D440384C"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="FFFFFF7D"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="6820FC02"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="FFFFFF7F"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="2B10698A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="FFFFFF80"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="F4645DBA"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="4"><w:lsid w:val="FFFFFF81"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="B29CAA58"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="5"><w:lsid w:val="FFFFFF82"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="6C206602"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="6"><w:lsid w:val="FFFFFF83"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="3ED012C8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="7"><w:lsid w:val="FFFFFF89"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="EE3C3A12"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="8"><w:lsid w:val="003A6350"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F89E6E26"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:pStyle w:val="APPENDIX1"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="APPENDIX2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="APPENDIX3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="APPENDIX4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="APPENDIX5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="APPENDIX6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="APPENDIX7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="APPENDIX8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="APPENDIX9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="9"><w:lsid w:val="016D5431"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="98C65BCE"/><w:lvl w:ilvl="0" w:tplc="94D2C566"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="10"><w:lsid w:val="0C4D206D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="4B543E40"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="11"><w:lsid w:val="0DE40F2C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="12"><w:lsid w:val="10AF29E5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="7520DAAE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="13"><w:lsid w:val="15EB1725"/><w:plt w:val="Multilevel"/><w:tmpl w:val="D902A83E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="14"><w:lsid w:val="1C970BBA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EB82E3A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="15"><w:lsid w:val="1D6C5FCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E710F038"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="APPENDIX %1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="0" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="720" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1440" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="16"><w:lsid w:val="1EC51BCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="17"><w:lsid w:val="256F5D56"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="18"><w:lsid w:val="27437854"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="19"><w:lsid w:val="290A1130"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="20"><w:lsid w:val="299E4F07"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="46E2B8B2"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="21"><w:lsid w:val="29C240FD"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="FCA4DC08"/><w:lvl w:ilvl="0" w:tplc="B5146A3E"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl2"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1224"/></w:tabs><w:ind w:left="1224" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="22"><w:lsid w:val="29CA5728"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="D00252C6"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="23"><w:lsid w:val="2A5411A0"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0D44492C"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="Heading1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="Heading2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="Heading3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="Heading4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="Heading5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="Heading6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="Heading7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="Heading8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="Heading9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="24"><w:lsid w:val="2B1C06F5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3B98963A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="25"><w:lsid w:val="2B477730"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="33801DC4"/><w:lvl w:ilvl="0" w:tplc="2D8A4B4C"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl3"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3024"/></w:tabs><w:ind w:left="3024" w:hanging="2016"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2448"/></w:tabs><w:ind w:left="2448" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3168"/></w:tabs><w:ind w:left="3168" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3888"/></w:tabs><w:ind w:left="3888" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4608"/></w:tabs><w:ind w:left="4608" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5328"/></w:tabs><w:ind w:left="5328" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6048"/></w:tabs><w:ind w:left="6048" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6768"/></w:tabs><w:ind w:left="6768" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="7488"/></w:tabs><w:ind w:left="7488" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="26"><w:lsid w:val="2B5B6B3C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5CC8E874"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:first-line="763"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="27"><w:lsid w:val="2D6545A6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3F227848"/><w:name w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1296"/></w:tabs><w:ind w:left="1296" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:caps w:val="off"/><w:strike w:val="off"/><w:dstrike w:val="off"/><w:outline w:val="off"/><w:shadow w:val="off"/><w:emboss w:val="off"/><w:imprint w:val="off"/><w:vanish w:val="off"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:vertAlign w:val="baseline"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="listlvl2"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="-31680"/></w:tabs><w:ind w:left="1656" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl3"/><w:lvlText w:val="(%3)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2016"/></w:tabs><w:ind w:left="2016" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="listlvl4"/><w:lvlText w:val="(%4)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2376"/></w:tabs><w:ind w:left="2376" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl5"/><w:lvlText w:val="%5)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2736"/></w:tabs><w:ind w:left="2736" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="listlvl6"/><w:lvlText w:val="%6)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3096"/></w:tabs><w:ind w:left="3096" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:sz w:val="22"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl7"/><w:lvlText w:val="[%7]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3456"/></w:tabs><w:ind w:left="3456" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="[%8]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="28"><w:lsid w:val="308239DA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="29"><w:lsid w:val="31A252E6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="A9D83578"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="30"><w:lsid w:val="37365033"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="31"><w:lsid w:val="3B97448F"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart2"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="32"><w:lsid w:val="3C165F4A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79A06FE6"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="33"><w:lsid w:val="42BB3748"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="DBE464B0"/><w:lvl w:ilvl="0" w:tplc="26BAF6B0"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl1"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="648"/></w:tabs><w:ind w:left="648" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3960" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4680" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5400" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="6120" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6840"/></w:tabs><w:ind w:left="6840" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="34"><w:lsid w:val="5A401749"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CD8E61CE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="35"><w:lsid w:val="5A802BC9"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="36"><w:lsid w:val="5C3B1B76"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="37"><w:lsid w:val="5E371EBB"/><w:plt w:val="Multilevel"/><w:tmpl w:val="DA56D440"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="38"><w:lsid w:val="60B71688"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EA20814"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="39"><w:lsid w:val="6389497B"/><w:plt w:val="Multilevel"/><w:tmpl w:val="AC5A6410"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="listlvl10"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="360" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1080" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="1800" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2520" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3240" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="3960" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="4680" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5400" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6120" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="40"><w:lsid w:val="6469691A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E5D02024"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="41"><w:lsid w:val="74BA49AE"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart"/><w:styleLink w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="42"><w:lsid w:val="751E50EA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79E6FEDC"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="43"><w:lsid w:val="7D9D3B47"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="44"><w:lsid w:val="7F0F313D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F8FC63EE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="45"><w:lsid w:val="7F633FB7"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5F5A52E8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="33"/></w:list><w:list w:ilfo="2"><w:ilst w:val="21"/></w:list><w:list w:ilfo="3"><w:ilst w:val="27"/></w:list><w:list w:ilfo="4"><w:ilst w:val="23"/></w:list><w:list w:ilfo="5"><w:ilst w:val="14"/></w:list><w:list w:ilfo="6"><w:ilst w:val="35"/></w:list><w:list w:ilfo="7"><w:ilst w:val="13"/></w:list><w:list w:ilfo="8"><w:ilst w:val="22"/></w:list><w:list w:ilfo="9"><w:ilst w:val="39"/></w:list><w:list w:ilfo="10"><w:ilst w:val="15"/></w:list><w:list w:ilfo="11"><w:ilst w:val="27"/></w:list><w:list w:ilfo="12"><w:ilst w:val="36"/></w:list><w:list w:ilfo="13"><w:ilst w:val="44"/></w:list><w:list w:ilfo="14"><w:ilst w:val="10"/></w:list><w:list w:ilfo="15"><w:ilst w:val="37"/></w:list><w:list w:ilfo="16"><w:ilst w:val="26"/></w:list><w:list w:ilfo="17"><w:ilst w:val="40"/></w:list><w:list w:ilfo="18"><w:ilst w:val="12"/></w:list><w:list w:ilfo="19"><w:ilst w:val="29"/></w:list><w:list w:ilfo="20"><w:ilst w:val="24"/></w:list><w:list w:ilfo="21"><w:ilst w:val="45"/></w:list><w:list w:ilfo="22"><w:ilst w:val="32"/></w:list><w:list w:ilfo="23"><w:ilst w:val="34"/></w:list><w:list w:ilfo="24"><w:ilst w:val="42"/></w:list><w:list w:ilfo="25"><w:ilst w:val="8"/></w:list><w:list w:ilfo="26"><w:ilst w:val="41"/></w:list><w:list w:ilfo="27"><w:ilst w:val="31"/></w:list><w:list w:ilfo="28"><w:ilst w:val="25"/></w:list><w:list w:ilfo="29"><w:ilst w:val="28"/></w:list><w:list w:ilfo="30"><w:ilst w:val="27"/><w:lvlOverride w:ilvl="0"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="1"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="2"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="3"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="4"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="5"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="6"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="7"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="8"><w:startOverride w:val="1"/></w:lvlOverride></w:list><w:list w:ilfo="31"><w:ilst w:val="20"/></w:list><w:list w:ilfo="32"><w:ilst w:val="9"/></w:list><w:list w:ilfo="33"><w:ilst w:val="43"/></w:list><w:list w:ilfo="34"><w:ilst w:val="16"/></w:list><w:list w:ilfo="35"><w:ilst w:val="38"/></w:list><w:list w:ilfo="36"><w:ilst w:val="23"/></w:list><w:list w:ilfo="37"><w:ilst w:val="19"/></w:list><w:list w:ilfo="38"><w:ilst w:val="17"/></w:list><w:list w:ilfo="39"><w:ilst w:val="11"/></w:list><w:list w:ilfo="40"><w:ilst w:val="7"/></w:list><w:list w:ilfo="41"><w:ilst w:val="6"/></w:list><w:list w:ilfo="42"><w:ilst w:val="5"/></w:list><w:list w:ilfo="43"><w:ilst w:val="4"/></w:list><w:list w:ilfo="44"><w:ilst w:val="3"/></w:list><w:list w:ilfo="45"><w:ilst w:val="2"/></w:list><w:list w:ilfo="46"><w:ilst w:val="1"/></w:list><w:list w:ilfo="47"><w:ilst w:val="0"/></w:list><w:list w:ilfo="48"><w:ilst w:val="30"/></w:list><w:list w:ilfo="49"><w:ilst w:val="18"/></w:list><w:ilfoMacAtCleanup w:val="5"/></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><wx:uiName wx:val="Heading 1"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading1"/><w:keepNext/><w:keepLines/><w:pageBreakBefore/><w:listPr><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:kern w:val="28"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><wx:uiName wx:val="Heading 2"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading2"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><wx:uiName wx:val="Heading 3"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading3"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="900"/></w:tabs><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading4"><w:name w:val="heading 4"/><wx:uiName wx:val="Heading 4"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading4"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="3"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading5"><w:name w:val="heading 5"/><wx:uiName wx:val="Heading 5"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading5"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="4"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading6"><w:name w:val="heading 6"/><wx:uiName wx:val="Heading 6"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading6"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="5"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading7"><w:name w:val="heading 7"/><wx:uiName wx:val="Heading 7"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading7"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1620"/></w:tabs><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="6"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading8"><w:name w:val="heading 8"/><wx:uiName wx:val="Heading 8"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading8"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="7"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="7"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading9"><w:name w:val="heading 9"/><wx:uiName wx:val="Heading 9"/><w:next w:val="paranormal"/><w:rsid w:val="00B64BB6"/><w:pPr><w:pStyle w:val="Heading9"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="8"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="8"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="paranormal"><w:name w:val="para:normal"/><w:link w:val="paranormalChar"/><w:rsid w:val="009E6B3D"/><w:pPr><w:pStyle w:val="paranormal"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="64" w:after="80" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl3"><w:name w:val="list:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl3"/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="2088"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang1"><w:name w:val="req lang:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Header"><w:name w:val="header"/><wx:uiName wx:val="Header"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A134C3"/><w:pPr><w:pStyle w:val="Header"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs><w:spacing w:before="20" w:after="0" w:line="180" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="proprietarycontd"><w:name w:val="proprietary:cont'd"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="proprietarycontd"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="200" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="16"/><w:sz-cs w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paracentered"><w:name w:val="para:centered"/><w:autoRedefine/><w:rsid w:val="00B43482"/><w:pPr><w:pStyle w:val="paracentered"/><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="80" w:after="80" w:line="240" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent2"><w:name w:val="para:indent2"/><w:autoRedefine/><w:rsid w:val="004417BE"/><w:pPr><w:pStyle w:val="paraindent2"/><w:tabs><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent3"><w:name w:val="para:indent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent3"/><w:tabs><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/><w:tab w:val="left" w:pos="9720"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Caption"><w:name w:val="caption"/><wx:uiName wx:val="Caption"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="0085234B"/><w:pPr><w:pStyle w:val="Caption"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9720"/><w:tab w:val="left" w:pos="10800"/><w:tab w:val="left" w:pos="11880"/><w:tab w:val="left" w:pos="12960"/><w:tab w:val="left" w:pos="14040"/><w:tab w:val="left" w:pos="15120"/><w:tab w:val="left" w:pos="16200"/><w:tab w:val="left" w:pos="17280"/><w:tab w:val="left" w:pos="18360"/><w:tab w:val="left" w:pos="19440"/><w:tab w:val="left" w:pos="20520"/><w:tab w:val="left" w:pos="21600"/><w:tab w:val="left" w:pos="22680"/><w:tab w:val="left" w:pos="23760"/><w:tab w:val="left" w:pos="24840"/><w:tab w:val="left" w:pos="25920"/><w:tab w:val="left" w:pos="27000"/><w:tab w:val="left" w:pos="28080"/><w:tab w:val="left" w:pos="29160"/><w:tab w:val="left" w:pos="30240"/><w:tab w:val="left" w:pos="31320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent1"><w:name w:val="para:indent1"/><w:autoRedefine/><w:rsid w:val="007D424E"/><w:pPr><w:pStyle w:val="paraindent1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Footer"><w:name w:val="footer"/><wx:uiName wx:val="Footer"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="Footer"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl4"><w:name w:val="list:lvl 4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl4"/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="11"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead"><w:name w:val="RowHead"/><w:basedOn w:val="Heading1"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:spacing w:before="100" w:after="100"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11"><w:name w:val="TableText11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOAHeading"><w:name w:val="toa heading"/><wx:uiName wx:val="TOA Heading"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOAHeading"/><w:spacing w:before="240" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:caps/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHeadL"><w:name w:val="RowHeadL"/><w:basedOn w:val="RowHead"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHeadL"/><w:spacing w:before="60" w:after="60"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11B"><w:name w:val="TableText11B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText11B"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofAuthorities"><w:name w:val="table of authorities"/><wx:uiName wx:val="Table of Authorities"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofAuthorities"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="8640"/></w:tabs><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofFigures"><w:name w:val="table of figures"/><wx:uiName wx:val="Table of Figures"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofFigures"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="60" w:after="60"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="Hyperlink"><w:name w:val="Hyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00721F21"/><w:rPr><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="PageNumber"><w:name w:val="page number"/><wx:uiName wx:val="Page Number"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00D90577"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:dstrike w:val="off"/><w:sz w:val="20"/><w:sz-cs w:val="20"/><w:vertAlign w:val="baseline"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead11"><w:name w:val="RowHead11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead11"/><w:listPr><w:ilvl w:val="12"/></w:listPr><w:spacing w:before="80" w:after="80"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11C"><w:name w:val="TableText11C"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11C"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman"/><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl1"><w:name w:val="list:lvl 1"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl1"/><w:listPr><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl5"><w:name w:val="list:lvl 5"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl5"/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="left" w:pos="3384"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl2"><w:name w:val="list:lvl 2"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="AppendixTitle"><w:name w:val="Appendix Title"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="AppendixTitle"/><w:pageBreakBefore/><w:spacing w:before="120" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead10"><w:name w:val="RowHead10"/><w:basedOn w:val="RowHead11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC1"><w:name w:val="toc 1"/><wx:uiName wx:val="TOC 1"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC1"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="540"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="240"/><w:ind w:left="547" w:hanging="547"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC2"><w:name w:val="toc 2"/><wx:uiName wx:val="TOC 2"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC2"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="900"/><w:tab w:val="right" w:leader="dot" w:pos="9360"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="907" w:hanging="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC3"><w:name w:val="toc 3"/><wx:uiName wx:val="TOC 3"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC3"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1260"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1260" w:hanging="900"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC4"><w:name w:val="toc 4"/><wx:uiName wx:val="TOC 4"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC4"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1620"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1620" w:hanging="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC5"><w:name w:val="toc 5"/><wx:uiName wx:val="TOC 5"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC5"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1980"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1980" w:hanging="1260"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC6"><w:name w:val="toc 6"/><wx:uiName wx:val="TOC 6"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC6"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2340"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2340" w:hanging="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC7"><w:name w:val="toc 7"/><wx:uiName wx:val="TOC 7"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC7"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2700"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="0" w:after="0" w:line="240" w:line-rule="auto"/><w:ind w:left="2700" w:hanging="1620"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC8"><w:name w:val="toc 8"/><wx:uiName wx:val="TOC 8"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC8"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2970"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2970" w:hanging="1710"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC9"><w:name w:val="toc 9"/><wx:uiName wx:val="TOC 9"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC9"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="3330"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="3330" w:hanging="1890"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HeadingUnnumbered"><w:name w:val="Heading Unnumbered"/><w:next w:val="paranormal"/><w:autoRedefine/><w:rsid w:val="00107AA6"/><w:pPr><w:pStyle w:val="HeadingUnnumbered"/><w:keepNext/><w:keepLines/><w:spacing w:before="240" w:after="80"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="24"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10"><w:name w:val="TableText10"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableTextBCentered"><w:name w:val="TableTextB Centered"/><w:basedOn w:val="Normal"/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableTextBCentered"/><w:spacing w:line="220" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10C"><w:name w:val="TableText10C"/><w:basedOn w:val="TableText11C"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10C"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10B"><w:name w:val="TableText10B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText10B"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="acronym"><w:name w:val="acronym"/><w:autoRedefine/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="acronym"/><w:tabs><w:tab w:val="left" w:pos="2160"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="40"/><w:ind w:left="2160" w:hanging="2160"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl6"><w:name w:val="list:lvl 6"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl6"/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="clear" w:pos="4320"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr1L"><w:name w:val="hdr1L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr1L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr2L"><w:name w:val="hdr2L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr2L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="0" w:line="180" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl1"><w:name w:val="bullet:lvl 1"/><w:basedOn w:val="Normal"/><w:link w:val="bulletlvl1CharChar"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl1"/><w:listPr><w:ilfo w:val="1"/></w:listPr><w:spacing w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl2"><w:name w:val="bullet:lvl 2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilfo w:val="2"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="1224"/><w:tab w:val="left" w:pos="648"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1728" w:hanging="1080"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent4"><w:name w:val="para:indent4"/><w:basedOn w:val="paraindent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent4"/><w:ind w:left="1440"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl7"><w:name w:val="list:lvl 7"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl7"/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="left" w:pos="3024"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCfiguretitle"><w:name w:val="TOC:figure title"/><w:basedOn w:val="Caption"/><w:autoRedefine/><w:rsid w:val="00894991"/><w:pPr><w:pStyle w:val="TOCfiguretitle"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="006E0AB6"/><w:pPr><w:pStyle w:val="note"/><w:spacing w:before="80" w:after="80"/><w:ind w:left="1656" w:right="720" w:hanging="936"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang2"><w:name w:val="req lang:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang2"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang3"><w:name w:val="req lang:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang4"><w:name w:val="req lang:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang4"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang5"><w:name w:val="req lang:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang5"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1800"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang6"><w:name w:val="req lang:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang6"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="2160"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="statedef"><w:name w:val="state def"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DE6BA0"/><w:pPr><w:pStyle w:val="statedef"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="80" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps/><w:color w:val="00FF00"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="intentblank"><w:name w:val="intent:blank"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="000B79E8"/><w:pPr><w:pStyle w:val="intentblank"/><w:spacing w:before="6480" w:after="0"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="code"><w:name w:val="code"/><w:basedOn w:val="Normal"/><w:rsid w:val="006D4514"/><w:pPr><w:pStyle w:val="code"/><w:spacing w:before="80" w:after="80" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="parapage"><w:name w:val="para:page"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00DD22A9"/><w:pPr><w:pStyle w:val="parapage"/><w:pageBreakBefore/><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCtabletitle"><w:name w:val="TOC:table title"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00B869CD"/><w:pPr><w:pStyle w:val="TOCtabletitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRitem"><w:name w:val="RCR:item"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="007A1F4F"/><w:pPr><w:pStyle w:val="RCRitem"/><w:tabs><w:tab w:val="left" w:pos="1800"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="1800" w:right="720" w:hanging="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRheader"><w:name w:val="RCR:header"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006D781E"/><w:pPr><w:pStyle w:val="RCRheader"/><w:tabs><w:tab w:val="left" w:pos="792"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="right" w:leader="underscore" w:pos="8640"/></w:tabs><w:spacing w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="line"><w:name w:val="line"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006B63C2"/><w:pPr><w:pStyle w:val="line"/><w:spacing w:before="0" w:line="40" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="12"/><w:sz-cs w:val="12"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang7"><w:name w:val="req lang: 7"/><w:basedOn w:val="reqlang6"/><w:rsid w:val="00C0337E"/><w:pPr><w:pStyle w:val="reqlang7"/><w:ind w:left="2520"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang70"><w:name w:val="req lang:7"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang70"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang8"><w:name w:val="req lang:8"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang8"/><w:ind w:left="2880"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang9"><w:name w:val="req lang:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="007534C9"/><w:pPr><w:pStyle w:val="reqlang9"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="3240"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="DocumentMap"><w:name w:val="Document Map"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00AF20CB"/><w:pPr><w:pStyle w:val="DocumentMap"/><w:shd w:val="clear" w:color="auto" w:fill="000080"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment1"><w:name w:val="comment:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment1"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment2"><w:name w:val="comment:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment2"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="720"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment3"><w:name w:val="comment:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1080"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment4"><w:name w:val="comment:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment4"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1440"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment5"><w:name w:val="comment:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment5"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment6"><w:name w:val="comment:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment6"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2160"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment7"><w:name w:val="comment:7"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment7"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2520"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment8"><w:name w:val="comment:8"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment8"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2880"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment9"><w:name w:val="comment:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment9"/><w:spacing w:after="80"/><w:ind w:left="3240"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlheader"><w:name w:val="dl:header"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlheader"/><w:spacing w:before="240" w:after="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier" w:h-ansi="Courier"/><wx:font wx:val="Courier"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlbody"><w:name w:val="dl:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlbody"/><w:spacing w:before="0"/><w:ind w:left="360"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocheader"><w:name w:val="dl_proc:header"/><w:basedOn w:val="dlbody"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocheader"/><w:spacing w:before="240"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocbody"><w:name w:val="dl_proc:body"/><w:basedOn w:val="dlprocheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocbody"/><w:spacing w:before="0"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dldescription"><w:name w:val="dl:description"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dldescription"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapheader"><w:name w:val="bitmap:header"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapheader"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapbody"><w:name w:val="bitmap:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapbody"/><w:spacing w:before="0"/></w:pPr><w:rPr><wx:font wx:val="Courier"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX1"><w:name w:val="APPENDIX 1"/><w:basedOn w:val="Normal"/><w:next w:val="paranormal"/><w:rsid w:val="004978C4"/><w:pPr><w:pStyle w:val="APPENDIX1"/><w:listPr><w:ilfo w:val="25"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="152" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX2"><w:name w:val="APPENDIX 2"/><w:basedOn w:val="APPENDIX1"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX2"/><w:listPr><w:ilvl w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX3"><w:name w:val="APPENDIX 3"/><w:basedOn w:val="APPENDIX2"/><w:next w:val="paranormal"/><w:rsid w:val="00E904D2"/><w:pPr><w:pStyle w:val="APPENDIX3"/><w:listPr><w:ilvl w:val="2"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage18pt"><w:name w:val="Title Page 18pt"/><w:basedOn w:val="Normal"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage18pt"/><w:spacing w:before="0" w:after="60" w:line="240" w:line-rule="auto"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz w:val="36"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage16pt"><w:name w:val="Title Page 16pt"/><w:basedOn w:val="TitlePage18pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage16pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="32"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage14pt"><w:name w:val="Title Page 14pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage14pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10pt"><w:name w:val="para 10pt"/><w:basedOn w:val="Normal"/><w:link w:val="para10ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para10pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10ptnospacing"><w:name w:val="para 10pt no spacing"/><w:basedOn w:val="para10pt"/><w:rsid w:val="004A1CCA"/><w:pPr><w:pStyle w:val="para10ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10nospacing"><w:name w:val="TableText10 no spacing"/><w:basedOn w:val="TableText10"/><w:rsid w:val="00D72507"/><w:pPr><w:pStyle w:val="TableText10nospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8pt"><w:name w:val="para 8pt"/><w:basedOn w:val="Normal"/><w:link w:val="para8ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para8pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="16"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paranormalChar"><w:name w:val="para:normal Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="paranormal"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="bulletlvl1CharChar"><w:name w:val="bullet:lvl 1 Char Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="bulletlvl1"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ParagraphText"><w:name w:val="ParagraphText"/><w:basedOn w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:pStyle w:val="ParagraphText"/><w:spacing w:before="0" w:after="120" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman"/><wx:font wx:val="Times New Roman"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl10"><w:name w:val="list lvl 1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl10"/><w:listPr><w:ilfo w:val="9"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/></w:tabs><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX4"><w:name w:val="APPENDIX 4"/><w:basedOn w:val="APPENDIX3"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX4"/><w:listPr><w:ilvl w:val="3"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX5"><w:name w:val="APPENDIX 5"/><w:basedOn w:val="APPENDIX4"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX5"/><w:listPr><w:ilvl w:val="4"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX6"><w:name w:val="APPENDIX 6"/><w:basedOn w:val="APPENDIX5"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX6"/><w:listPr><w:ilvl w:val="5"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX7"><w:name w:val="APPENDIX 7"/><w:basedOn w:val="APPENDIX6"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX7"/><w:listPr><w:ilvl w:val="6"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX8"><w:name w:val="APPENDIX 8"/><w:basedOn w:val="APPENDIX7"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX8"/><w:listPr><w:ilvl w:val="7"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX9"><w:name w:val="APPENDIX 9"/><w:basedOn w:val="APPENDIX8"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX9"/><w:listPr><w:ilvl w:val="8"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="BalloonText"><w:name w:val="Balloon Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00B47E5D"/><w:pPr><w:pStyle w:val="BalloonText"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="list" w:styleId="listreset"><w:name w:val="listreset"/><w:basedOn w:val="NoList"/><w:rsid w:val="00D25E39"/><w:pPr><w:listPr><w:ilfo w:val="26"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl3"><w:name w:val="bullet:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00EF5226"/><w:pPr><w:pStyle w:val="bulletlvl3"/><w:listPr><w:ilfo w:val="28"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="3024"/><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1368" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="CommentReference"><w:name w:val="annotation reference"/><wx:uiName wx:val="Comment Reference"/><w:basedOn w:val="DefaultParagraphFont"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:rPr><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentText"><w:name w:val="annotation text"/><wx:uiName wx:val="Comment Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentText"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentSubject"><w:name w:val="annotation subject"/><wx:uiName wx:val="Comment Subject"/><w:basedOn w:val="CommentText"/><w:next w:val="CommentText"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentSubject"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage22pt"><w:name w:val="Title Page 22pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="005F35C4"/><w:pPr><w:pStyle w:val="TitlePage22pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para"><w:name w:val="para"/><w:basedOn w:val="Normal"/><w:link w:val="paraChar"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="para"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paraChar"><w:name w:val="para Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="para"/><w:rsid w:val="0057061B"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl20"><w:name w:val="list lvl 2"/><w:basedOn w:val="ListNumber3"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="listlvl20"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber3"><w:name w:val="List Number 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="ListNumber3"/><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/><w:rsid w:val="008B1AB7"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblBorders><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="character" w:styleId="para8ptChar"><w:name w:val="para 8pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para8pt"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptunderline"><w:name w:val="para 8pt underline"/><w:basedOn w:val="para8pt"/><w:link w:val="para8ptunderlineChar"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptunderline"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="para8ptunderlineChar"><w:name w:val="para 8pt underline Char"/><w:basedOn w:val="para8ptChar"/><w:link w:val="para8ptunderline"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptnospacing"><w:name w:val="para 8pt no spacing"/><w:basedOn w:val="para8pt"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl0"><w:name w:val="list lvl 0"/><w:basedOn w:val="ListNumber"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="listlvl0"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber"><w:name w:val="List Number"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="ListNumber"/><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="para10ptChar"><w:name w:val="para 10pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para10pt"/><w:rsid w:val="0015054E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="FollowedHyperlink"><w:name w:val="FollowedHyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00B8047C"/><w:rPr><w:color w:val="800080"/><w:u w:val="single"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="25602"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:bordersDontSurroundHeader/><w:bordersDontSurroundFooter/><w:attachedTemplate w:val=""/><w:stylePaneFormatFilter w:val="3001"/><w:defaultTabStop w:val="720"/><w:doNotHyphenateCaps/><w:drawingGridHorizontalSpacing w:val="120"/><w:drawingGridVerticalSpacing w:val="120"/><w:displayHorizontalDrawingGridEvery w:val="0"/><w:displayVerticalDrawingGridEvery w:val="3"/><w:useMarginsForDrawingGridOrigin/><w:doNotShadeFormData/><w:punctuationKerning/><w:characterSpacingControl w:val="CompressPunctuation"/><w:optimizeForBrowser/><w:validateAgainstSchema w:val="off"/><w:saveInvalidXML/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:hdrShapeDefaults><o:shapedefaults v:ext="edit" spidmax="25602"/></w:hdrShapeDefaults><w:footnotePr><w:footnote w:type="separator"><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/></w:footnote><w:footnote w:type="continuation-separator"><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/></w:footnote></w:footnotePr><w:endnotePr><w:endnote w:type="separator"><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/></w:endnote><w:endnote w:type="continuation-separator"><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/><w:p wsp:rsidR="00AD0FEC" wsp:rsidRDefault="00AD0FEC"/></w:endnote></w:endnotePr><w:compat><w:footnoteLayoutLikeWW8/><w:shapeLayoutLikeWW8/><w:alignTablesRowByRow/><w:forgetLastTabAlignment/><w:doNotUseHTMLParagraphAutoSpacing/><w:layoutRawTableWidth/><w:layoutTableRowsApart/><w:useWord97LineBreakingRules/><w:dontAllowFieldEndSelect/><w:useWord2002TableStyleRules/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="00244327"/><wsp:rsid wsp:val="00003D10"/><wsp:rsid wsp:val="000125BB"/><wsp:rsid wsp:val="000165BA"/><wsp:rsid wsp:val="00017C15"/><wsp:rsid wsp:val="00024B16"/><wsp:rsid wsp:val="00027A6E"/><wsp:rsid wsp:val="00032693"/><wsp:rsid wsp:val="00037361"/><wsp:rsid wsp:val="000427F3"/><wsp:rsid wsp:val="00043F58"/><wsp:rsid wsp:val="0004616A"/><wsp:rsid wsp:val="00050360"/><wsp:rsid wsp:val="0005699B"/><wsp:rsid wsp:val="00056B3D"/><wsp:rsid wsp:val="00066FED"/><wsp:rsid wsp:val="00071300"/><wsp:rsid wsp:val="00072A3E"/><wsp:rsid wsp:val="00081116"/><wsp:rsid wsp:val="00090CB1"/><wsp:rsid wsp:val="000B3E61"/><wsp:rsid wsp:val="000B5C9D"/><wsp:rsid wsp:val="000B79E8"/><wsp:rsid wsp:val="000C04F3"/><wsp:rsid wsp:val="000C05CF"/><wsp:rsid wsp:val="000C6D2C"/><wsp:rsid wsp:val="000F209F"/><wsp:rsid wsp:val="000F221B"/><wsp:rsid wsp:val="000F5854"/><wsp:rsid wsp:val="00103B80"/><wsp:rsid wsp:val="00105F3F"/><wsp:rsid wsp:val="00107AA6"/><wsp:rsid wsp:val="00111B46"/><wsp:rsid wsp:val="00114E7C"/><wsp:rsid wsp:val="00115FC4"/><wsp:rsid wsp:val="00131579"/><wsp:rsid wsp:val="00132503"/><wsp:rsid wsp:val="0013768E"/><wsp:rsid wsp:val="00143D5A"/><wsp:rsid wsp:val="0015054E"/><wsp:rsid wsp:val="00151E8B"/><wsp:rsid wsp:val="00153670"/><wsp:rsid wsp:val="00185657"/><wsp:rsid wsp:val="001A6E05"/><wsp:rsid wsp:val="001B21D8"/><wsp:rsid wsp:val="001D1983"/><wsp:rsid wsp:val="00200F8F"/><wsp:rsid wsp:val="002036EB"/><wsp:rsid wsp:val="00206FCA"/><wsp:rsid wsp:val="002127E8"/><wsp:rsid wsp:val="00214CB2"/><wsp:rsid wsp:val="00222FBE"/><wsp:rsid wsp:val="00233CC2"/><wsp:rsid wsp:val="00243928"/><wsp:rsid wsp:val="00244327"/><wsp:rsid wsp:val="002535D0"/><wsp:rsid wsp:val="0025482E"/><wsp:rsid wsp:val="00256734"/><wsp:rsid wsp:val="0026648E"/><wsp:rsid wsp:val="00282EC4"/><wsp:rsid wsp:val="00283D14"/><wsp:rsid wsp:val="00295554"/><wsp:rsid wsp:val="00297956"/><wsp:rsid wsp:val="002A1E33"/><wsp:rsid wsp:val="002A4FCB"/><wsp:rsid wsp:val="002B0604"/><wsp:rsid wsp:val="002B798B"/><wsp:rsid wsp:val="002C5706"/><wsp:rsid wsp:val="002D4EF1"/><wsp:rsid wsp:val="002D7289"/><wsp:rsid wsp:val="002D7290"/><wsp:rsid wsp:val="002E125A"/><wsp:rsid wsp:val="002E4219"/><wsp:rsid wsp:val="002E6DCE"/><wsp:rsid wsp:val="002F6CB4"/><wsp:rsid wsp:val="00306F02"/><wsp:rsid wsp:val="003116D6"/><wsp:rsid wsp:val="0031593E"/><wsp:rsid wsp:val="0033641C"/><wsp:rsid wsp:val="0033770F"/><wsp:rsid wsp:val="003534DB"/><wsp:rsid wsp:val="00357B2F"/><wsp:rsid wsp:val="00370D17"/><wsp:rsid wsp:val="003724C6"/><wsp:rsid wsp:val="0037392F"/><wsp:rsid wsp:val="003739E6"/><wsp:rsid wsp:val="0038257D"/><wsp:rsid wsp:val="003850AB"/><wsp:rsid wsp:val="003877FD"/><wsp:rsid wsp:val="003A0770"/><wsp:rsid wsp:val="003A15E9"/><wsp:rsid wsp:val="003A1FEA"/><wsp:rsid wsp:val="003B0842"/><wsp:rsid wsp:val="003B5319"/><wsp:rsid wsp:val="003D263A"/><wsp:rsid wsp:val="003D26BD"/><wsp:rsid wsp:val="003D41C1"/><wsp:rsid wsp:val="003D4E9C"/><wsp:rsid wsp:val="003D5B32"/><wsp:rsid wsp:val="003E5A4F"/><wsp:rsid wsp:val="003F40D2"/><wsp:rsid wsp:val="003F6F30"/><wsp:rsid wsp:val="00411140"/><wsp:rsid wsp:val="00423163"/><wsp:rsid wsp:val="004417BE"/><wsp:rsid wsp:val="0044516A"/><wsp:rsid wsp:val="00453B86"/><wsp:rsid wsp:val="004546FC"/><wsp:rsid wsp:val="00461E9A"/><wsp:rsid wsp:val="00465A78"/><wsp:rsid wsp:val="00470A7A"/><wsp:rsid wsp:val="0048363C"/><wsp:rsid wsp:val="00485EEE"/><wsp:rsid wsp:val="00493774"/><wsp:rsid wsp:val="00496AA5"/><wsp:rsid wsp:val="004978C4"/><wsp:rsid wsp:val="004A1CCA"/><wsp:rsid wsp:val="004B1050"/><wsp:rsid wsp:val="004B2F10"/><wsp:rsid wsp:val="004C0A1F"/><wsp:rsid wsp:val="004C603C"/><wsp:rsid wsp:val="004D5379"/><wsp:rsid wsp:val="004E3337"/><wsp:rsid wsp:val="004E7C5F"/><wsp:rsid wsp:val="00515AE0"/><wsp:rsid wsp:val="00517693"/><wsp:rsid wsp:val="00522250"/><wsp:rsid wsp:val="005244FF"/><wsp:rsid wsp:val="00530C0F"/><wsp:rsid wsp:val="00533D4D"/><wsp:rsid wsp:val="005605D4"/><wsp:rsid wsp:val="00564BC0"/><wsp:rsid wsp:val="00567343"/><wsp:rsid wsp:val="005675B7"/><wsp:rsid wsp:val="0057061B"/><wsp:rsid wsp:val="0057555E"/><wsp:rsid wsp:val="0059604E"/><wsp:rsid wsp:val="005A4B03"/><wsp:rsid wsp:val="005C3E15"/><wsp:rsid wsp:val="005C6185"/><wsp:rsid wsp:val="005D1A0D"/><wsp:rsid wsp:val="005D3587"/><wsp:rsid wsp:val="005D3C1F"/><wsp:rsid wsp:val="005E02BA"/><wsp:rsid wsp:val="005E122B"/><wsp:rsid wsp:val="005E4376"/><wsp:rsid wsp:val="005E702A"/><wsp:rsid wsp:val="005F2993"/><wsp:rsid wsp:val="005F35C4"/><wsp:rsid wsp:val="006015D6"/><wsp:rsid wsp:val="00605260"/><wsp:rsid wsp:val="00605417"/><wsp:rsid wsp:val="006111D3"/><wsp:rsid wsp:val="00614ED8"/><wsp:rsid wsp:val="006238C9"/><wsp:rsid wsp:val="00624582"/><wsp:rsid wsp:val="00627F1F"/><wsp:rsid wsp:val="00630722"/><wsp:rsid wsp:val="0063262E"/><wsp:rsid wsp:val="0066654A"/><wsp:rsid wsp:val="00667C3D"/><wsp:rsid wsp:val="006724F7"/><wsp:rsid wsp:val="00672BD3"/><wsp:rsid wsp:val="00697DBF"/><wsp:rsid wsp:val="006A108F"/><wsp:rsid wsp:val="006A4467"/><wsp:rsid wsp:val="006A4CFB"/><wsp:rsid wsp:val="006A7BEF"/><wsp:rsid wsp:val="006B5B71"/><wsp:rsid wsp:val="006B63C2"/><wsp:rsid wsp:val="006C04E9"/><wsp:rsid wsp:val="006C4F00"/><wsp:rsid wsp:val="006D1536"/><wsp:rsid wsp:val="006D4514"/><wsp:rsid wsp:val="006D781E"/><wsp:rsid wsp:val="006E0AB6"/><wsp:rsid wsp:val="006E7077"/><wsp:rsid wsp:val="00711F77"/><wsp:rsid wsp:val="00712309"/><wsp:rsid wsp:val="00712933"/><wsp:rsid wsp:val="0071606D"/><wsp:rsid wsp:val="00721F21"/><wsp:rsid wsp:val="007323A9"/><wsp:rsid wsp:val="00737D1B"/><wsp:rsid wsp:val="00743F40"/><wsp:rsid wsp:val="007534C9"/><wsp:rsid wsp:val="007600B1"/><wsp:rsid wsp:val="007613A0"/><wsp:rsid wsp:val="00784378"/><wsp:rsid wsp:val="00786AF0"/><wsp:rsid wsp:val="00790080"/><wsp:rsid wsp:val="007921D3"/><wsp:rsid wsp:val="00797E6B"/><wsp:rsid wsp:val="007A0657"/><wsp:rsid wsp:val="007A1F4F"/><wsp:rsid wsp:val="007A205B"/><wsp:rsid wsp:val="007B5153"/><wsp:rsid wsp:val="007B53FB"/><wsp:rsid wsp:val="007B59CC"/><wsp:rsid wsp:val="007D424E"/><wsp:rsid wsp:val="007D6EDC"/><wsp:rsid wsp:val="007E31BB"/><wsp:rsid wsp:val="007F1309"/><wsp:rsid wsp:val="0080762D"/><wsp:rsid wsp:val="00810CB8"/><wsp:rsid wsp:val="00816887"/><wsp:rsid wsp:val="0082049F"/><wsp:rsid wsp:val="0083682F"/><wsp:rsid wsp:val="0085234B"/><wsp:rsid wsp:val="00853836"/><wsp:rsid wsp:val="00855CE1"/><wsp:rsid wsp:val="00861D13"/><wsp:rsid wsp:val="00861DB8"/><wsp:rsid wsp:val="00865ED8"/><wsp:rsid wsp:val="00866395"/><wsp:rsid wsp:val="00866BDD"/><wsp:rsid wsp:val="008671A8"/><wsp:rsid wsp:val="00867409"/><wsp:rsid wsp:val="008674EE"/><wsp:rsid wsp:val="00870B65"/><wsp:rsid wsp:val="008715D1"/><wsp:rsid wsp:val="0087335F"/><wsp:rsid wsp:val="00876E52"/><wsp:rsid wsp:val="00890422"/><wsp:rsid wsp:val="00893064"/><wsp:rsid wsp:val="00894991"/><wsp:rsid wsp:val="008A40B7"/><wsp:rsid wsp:val="008B1AB7"/><wsp:rsid wsp:val="008B37D0"/><wsp:rsid wsp:val="008B659F"/><wsp:rsid wsp:val="008D332B"/><wsp:rsid wsp:val="008D5BBD"/><wsp:rsid wsp:val="008F1DB8"/><wsp:rsid wsp:val="008F3E64"/><wsp:rsid wsp:val="008F5B9A"/><wsp:rsid wsp:val="00903436"/><wsp:rsid wsp:val="00905D37"/><wsp:rsid wsp:val="00907A2F"/><wsp:rsid wsp:val="009102A3"/><wsp:rsid wsp:val="00912FED"/><wsp:rsid wsp:val="00913874"/><wsp:rsid wsp:val="009204ED"/><wsp:rsid wsp:val="0092416A"/><wsp:rsid wsp:val="00925A21"/><wsp:rsid wsp:val="00932F0F"/><wsp:rsid wsp:val="00944F35"/><wsp:rsid wsp:val="009544BE"/><wsp:rsid wsp:val="009550E3"/><wsp:rsid wsp:val="00964929"/><wsp:rsid wsp:val="009661A9"/><wsp:rsid wsp:val="00972C6E"/><wsp:rsid wsp:val="00975A17"/><wsp:rsid wsp:val="00976AA6"/><wsp:rsid wsp:val="00983D28"/><wsp:rsid wsp:val="00996ED0"/><wsp:rsid wsp:val="009A0C0A"/><wsp:rsid wsp:val="009B116B"/><wsp:rsid wsp:val="009B1EF0"/><wsp:rsid wsp:val="009B7093"/><wsp:rsid wsp:val="009C2B94"/><wsp:rsid wsp:val="009C7319"/><wsp:rsid wsp:val="009D7FD5"/><wsp:rsid wsp:val="009E38A9"/><wsp:rsid wsp:val="009E66AD"/><wsp:rsid wsp:val="009E6B3D"/><wsp:rsid wsp:val="009F21AE"/><wsp:rsid wsp:val="009F4F9E"/><wsp:rsid wsp:val="00A134C3"/><wsp:rsid wsp:val="00A233DA"/><wsp:rsid wsp:val="00A2428A"/><wsp:rsid wsp:val="00A30F20"/><wsp:rsid wsp:val="00A318E6"/><wsp:rsid wsp:val="00A34FAA"/><wsp:rsid wsp:val="00A476C0"/><wsp:rsid wsp:val="00A652E0"/><wsp:rsid wsp:val="00A7660E"/><wsp:rsid wsp:val="00A81E8C"/><wsp:rsid wsp:val="00AA6DC4"/><wsp:rsid wsp:val="00AB4731"/><wsp:rsid wsp:val="00AC346F"/><wsp:rsid wsp:val="00AD0FEC"/><wsp:rsid wsp:val="00AD5D6E"/><wsp:rsid wsp:val="00AE1F8F"/><wsp:rsid wsp:val="00AE452F"/><wsp:rsid wsp:val="00AF20CB"/><wsp:rsid wsp:val="00AF2830"/><wsp:rsid wsp:val="00AF6A43"/><wsp:rsid wsp:val="00B022E7"/><wsp:rsid wsp:val="00B13D46"/><wsp:rsid wsp:val="00B32AC1"/><wsp:rsid wsp:val="00B43482"/><wsp:rsid wsp:val="00B47E5D"/><wsp:rsid wsp:val="00B64BB6"/><wsp:rsid wsp:val="00B70B4F"/><wsp:rsid wsp:val="00B72055"/><wsp:rsid wsp:val="00B7611A"/><wsp:rsid wsp:val="00B8047C"/><wsp:rsid wsp:val="00B86259"/><wsp:rsid wsp:val="00B869CD"/><wsp:rsid wsp:val="00BA1260"/><wsp:rsid wsp:val="00BA666C"/><wsp:rsid wsp:val="00BB22AA"/><wsp:rsid wsp:val="00BB4C86"/><wsp:rsid wsp:val="00BC7DA3"/><wsp:rsid wsp:val="00BE0FE1"/><wsp:rsid wsp:val="00BF138E"/><wsp:rsid wsp:val="00BF17C1"/><wsp:rsid wsp:val="00BF47F1"/><wsp:rsid wsp:val="00C005E5"/><wsp:rsid wsp:val="00C00EDA"/><wsp:rsid wsp:val="00C0337E"/><wsp:rsid wsp:val="00C05637"/><wsp:rsid wsp:val="00C07C88"/><wsp:rsid wsp:val="00C25428"/><wsp:rsid wsp:val="00C31C57"/><wsp:rsid wsp:val="00C33FA2"/><wsp:rsid wsp:val="00C3559C"/><wsp:rsid wsp:val="00C40EDF"/><wsp:rsid wsp:val="00C43DDD"/><wsp:rsid wsp:val="00C44610"/><wsp:rsid wsp:val="00C55E2F"/><wsp:rsid wsp:val="00C57BFE"/><wsp:rsid wsp:val="00C65CD1"/><wsp:rsid wsp:val="00C66826"/><wsp:rsid wsp:val="00C734BB"/><wsp:rsid wsp:val="00C7476A"/><wsp:rsid wsp:val="00C779E8"/><wsp:rsid wsp:val="00C93CA3"/><wsp:rsid wsp:val="00CA3B63"/><wsp:rsid wsp:val="00CA5EA3"/><wsp:rsid wsp:val="00CB3924"/><wsp:rsid wsp:val="00CB6076"/><wsp:rsid wsp:val="00CC1D8D"/><wsp:rsid wsp:val="00CC312A"/><wsp:rsid wsp:val="00CE03B8"/><wsp:rsid wsp:val="00D01E28"/><wsp:rsid wsp:val="00D127B6"/><wsp:rsid wsp:val="00D25E39"/><wsp:rsid wsp:val="00D3420B"/><wsp:rsid wsp:val="00D42F1D"/><wsp:rsid wsp:val="00D445A4"/><wsp:rsid wsp:val="00D54D3F"/><wsp:rsid wsp:val="00D72507"/><wsp:rsid wsp:val="00D7397C"/><wsp:rsid wsp:val="00D90577"/><wsp:rsid wsp:val="00D930D4"/><wsp:rsid wsp:val="00D94335"/><wsp:rsid wsp:val="00DA6F39"/><wsp:rsid wsp:val="00DB5F49"/><wsp:rsid wsp:val="00DB68B8"/><wsp:rsid wsp:val="00DC5116"/><wsp:rsid wsp:val="00DD07A9"/><wsp:rsid wsp:val="00DD22A9"/><wsp:rsid wsp:val="00DD326C"/><wsp:rsid wsp:val="00DD3A90"/><wsp:rsid wsp:val="00DD508F"/><wsp:rsid wsp:val="00DD6B4F"/><wsp:rsid wsp:val="00DD7FC5"/><wsp:rsid wsp:val="00DE6BA0"/><wsp:rsid wsp:val="00E068E6"/><wsp:rsid wsp:val="00E1199B"/><wsp:rsid wsp:val="00E11BC7"/><wsp:rsid wsp:val="00E214AD"/><wsp:rsid wsp:val="00E239DA"/><wsp:rsid wsp:val="00E34311"/><wsp:rsid wsp:val="00E40969"/><wsp:rsid wsp:val="00E41F48"/><wsp:rsid wsp:val="00E441DF"/><wsp:rsid wsp:val="00E63377"/><wsp:rsid wsp:val="00E67580"/><wsp:rsid wsp:val="00E81372"/><wsp:rsid wsp:val="00E81F18"/><wsp:rsid wsp:val="00E875DA"/><wsp:rsid wsp:val="00E904D2"/><wsp:rsid wsp:val="00E92628"/><wsp:rsid wsp:val="00E96E7A"/><wsp:rsid wsp:val="00EA278B"/><wsp:rsid wsp:val="00EA68F6"/><wsp:rsid wsp:val="00EB18F7"/><wsp:rsid wsp:val="00EB2F20"/><wsp:rsid wsp:val="00EB4F31"/><wsp:rsid wsp:val="00EB62B7"/><wsp:rsid wsp:val="00EC7E43"/><wsp:rsid wsp:val="00ED6DE0"/><wsp:rsid wsp:val="00EE4A91"/><wsp:rsid wsp:val="00EF1639"/><wsp:rsid wsp:val="00EF5226"/><wsp:rsid wsp:val="00EF72A1"/><wsp:rsid wsp:val="00F04531"/><wsp:rsid wsp:val="00F11E7D"/><wsp:rsid wsp:val="00F24A08"/><wsp:rsid wsp:val="00F2536C"/><wsp:rsid wsp:val="00F25A7A"/><wsp:rsid wsp:val="00F3497B"/><wsp:rsid wsp:val="00F34A89"/><wsp:rsid wsp:val="00F457C0"/><wsp:rsid wsp:val="00F72F61"/><wsp:rsid wsp:val="00F812EB"/><wsp:rsid wsp:val="00F832CA"/><wsp:rsid wsp:val="00F85495"/><wsp:rsid wsp:val="00F86BB3"/><wsp:rsid wsp:val="00FA22D9"/><wsp:rsid wsp:val="00FA2ADE"/><wsp:rsid wsp:val="00FA4AF6"/><wsp:rsid wsp:val="00FC17CF"/><wsp:rsid wsp:val="00FC55FB"/><wsp:rsid wsp:val="00FC7758"/><wsp:rsid wsp:val="00FD64E8"/><wsp:rsid wsp:val="00FD7577"/></wsp:rsids></w:docPr><w:body><wx:sect><ns0:Artifact><w:p wsp:rsidR="00FA2ADE" wsp:rsidRDefault="00BC7DA3" wsp:rsidP="00FA2ADE"><Set_Name><w:r wsp:rsidR="00FA2ADE"><w:t>Default</w:t></w:r></Set_Name><Outline><HeadingAttribute><w:r wsp:rsidR="00FA2ADE"><w:t>Name</w:t></w:r></HeadingAttribute><RecurseChildren><w:r wsp:rsidR="00D127B6"><w:t>false</w:t></w:r></RecurseChildren></Outline><Attribute><Name><w:r wsp:rsidR="00461E9A"><w:t>*</w:t></w:r></Name></Attribute></w:p></ns0:Artifact><w:p wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidRDefault="00AD5D6E" wsp:rsidP="00DB5F49"/><w:sectPr wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidSect="004978C4"><w:hdr w:type="odd"><w:p wsp:rsidR="003B0842" wsp:rsidRDefault="003B0842" wsp:rsidP="00DB5F49"><w:pPr><w:pStyle w:val="Header"/><w:jc w:val="left"/></w:pPr></w:p></w:hdr><w:pgSz w:w="12240" w:h="15840" w:code="1"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="432" w:footer="432" w:gutter="0"/><w:pgNumType w:start="1"/><w:cols w:space="475"/><w:noEndnote/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL_RECURSE.xml b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL_RECURSE.xml
new file mode 100644
index 00000000000..b06b671d81b
--- /dev/null
+++ b/MS_0.1.4_20080103/org.eclipse.osee.framework.ui.skynet/support/templates/PREVIEW_ALL_RECURSE.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:ns0="http://www.w3.org/2001/XMLSchema" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><w:ignoreElements w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/><o:DocumentProperties><o:Title>SRS</o:Title><o:Author>Ryan D. Brooks</o:Author><o:LastAuthor>b1565043</o:LastAuthor><o:Revision>10</o:Revision><o:TotalTime>1282</o:TotalTime><o:LastPrinted>2007-03-22T22:27:00Z</o:LastPrinted><o:Created>2007-04-21T15:49:00Z</o:Created><o:LastSaved>2007-08-22T04:50:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>4</o:Words><o:Characters>28</o:Characters><o:Company>The Boeing Company</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>31</o:CharactersWithSpaces><o:Version>11.8134</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Helvetica"><w:panose-1 w:val="020B0604020202020204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="20007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/></w:font><w:font w:name="Courier"><w:panose-1 w:val="02070409020205020404"/><w:charset w:val="00"/><w:family w:val="Modern"/><w:notTrueType/><w:pitch w:val="fixed"/><w:sig w:usb-0="00000003" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Tahoma"><w:panose-1 w:val="020B0604030504040204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="61007A87" w:usb-1="80000000" w:usb-2="00000008" w:usb-3="00000000" w:csb-0="000101FF" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="FFFFFF7C"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="D440384C"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="FFFFFF7D"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="6820FC02"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="FFFFFF7F"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="2B10698A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="FFFFFF80"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="F4645DBA"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="4"><w:lsid w:val="FFFFFF81"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="B29CAA58"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="5"><w:lsid w:val="FFFFFF82"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="6C206602"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="6"><w:lsid w:val="FFFFFF83"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="3ED012C8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="7"><w:lsid w:val="FFFFFF89"/><w:plt w:val="SingleLevel"/><w:tmpl w:val="EE3C3A12"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="8"><w:lsid w:val="003A6350"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F89E6E26"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:pStyle w:val="APPENDIX1"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="APPENDIX2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="APPENDIX3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="APPENDIX4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="APPENDIX5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="APPENDIX6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="APPENDIX7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="APPENDIX8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="APPENDIX9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="9"><w:lsid w:val="016D5431"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="98C65BCE"/><w:lvl w:ilvl="0" w:tplc="94D2C566"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="10"><w:lsid w:val="0C4D206D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="4B543E40"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="11"><w:lsid w:val="0DE40F2C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="12"><w:lsid w:val="10AF29E5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="7520DAAE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="13"><w:lsid w:val="15EB1725"/><w:plt w:val="Multilevel"/><w:tmpl w:val="D902A83E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="14"><w:lsid w:val="1C970BBA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EB82E3A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="15"><w:lsid w:val="1D6C5FCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E710F038"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="APPENDIX %1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="0" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="720" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1440" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="16"><w:lsid w:val="1EC51BCC"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="17"><w:lsid w:val="256F5D56"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="18"><w:lsid w:val="290A1130"/><w:plt w:val="Multilevel"/><w:tmpl w:val="EAC4E6B8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="19"><w:lsid w:val="299E4F07"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="46E2B8B2"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="20"><w:lsid w:val="29C240FD"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="FCA4DC08"/><w:lvl w:ilvl="0" w:tplc="B5146A3E"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl2"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1224"/></w:tabs><w:ind w:left="1224" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090019"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="21"><w:lsid w:val="29CA5728"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="D00252C6"/><w:lvl w:ilvl="0" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%1"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2" w:tplc="FFFFFFFF"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="3" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%4."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%5."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%6."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="180"/></w:pPr></w:lvl><w:lvl w:ilvl="6" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8" w:tplc="FFFFFFFF" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="right"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="180"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="22"><w:lsid w:val="2A5411A0"/><w:plt w:val="Multilevel"/><w:tmpl w:val="9A620CE6"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="Heading1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="Heading2"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:pStyle w:val="Heading3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="Heading4"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:pStyle w:val="Heading5"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="Heading6"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:pStyle w:val="Heading7"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:pStyle w:val="Heading8"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:pStyle w:val="Heading9"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="23"><w:lsid w:val="2B1C06F5"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3B98963A"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="24"><w:lsid w:val="2B477730"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="33801DC4"/><w:lvl w:ilvl="0" w:tplc="2D8A4B4C"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl3"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3024"/></w:tabs><w:ind w:left="3024" w:hanging="2016"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2448"/></w:tabs><w:ind w:left="2448" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3168"/></w:tabs><w:ind w:left="3168" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3888"/></w:tabs><w:ind w:left="3888" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4608"/></w:tabs><w:ind w:left="4608" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5328"/></w:tabs><w:ind w:left="5328" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6048"/></w:tabs><w:ind w:left="6048" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6768"/></w:tabs><w:ind w:left="6768" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="7488"/></w:tabs><w:ind w:left="7488" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="25"><w:lsid w:val="2B5B6B3C"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5CC8E874"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:first-line="763"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="26"><w:lsid w:val="2D6545A6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="3F227848"/><w:name w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl1"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1296"/></w:tabs><w:ind w:left="1296" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:caps w:val="off"/><w:strike w:val="off"/><w:dstrike w:val="off"/><w:outline w:val="off"/><w:shadow w:val="off"/><w:emboss w:val="off"/><w:imprint w:val="off"/><w:vanish w:val="off"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:vertAlign w:val="baseline"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:pStyle w:val="listlvl2"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="-31680"/></w:tabs><w:ind w:left="1656" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl3"/><w:lvlText w:val="(%3)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2016"/></w:tabs><w:ind w:left="2016" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:pStyle w:val="listlvl4"/><w:lvlText w:val="(%4)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2376"/></w:tabs><w:ind w:left="2376" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl5"/><w:lvlText w:val="%5)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2736"/></w:tabs><w:ind w:left="2736" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:pStyle w:val="listlvl6"/><w:lvlText w:val="%6)."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3096"/></w:tabs><w:ind w:left="3096" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:hint="default"/><w:b w:val="off"/><w:i w:val="off"/><w:sz w:val="22"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="4"/><w:pStyle w:val="listlvl7"/><w:lvlText w:val="[%7]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3456"/></w:tabs><w:ind w:left="3456" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="[%8]."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="27"><w:lsid w:val="2E180A61"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="28"><w:lsid w:val="308239DA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="29"><w:lsid w:val="31A252E6"/><w:plt w:val="Multilevel"/><w:tmpl w:val="A9D83578"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="30"><w:lsid w:val="3B97448F"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart2"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="31"><w:lsid w:val="3C165F4A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79A06FE6"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="32"><w:lsid w:val="42BB3748"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="DBE464B0"/><w:lvl w:ilvl="0" w:tplc="26BAF6B0"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="bulletlvl1"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="648"/></w:tabs><w:ind w:left="648" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3960" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4680" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5400" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="6120" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6840"/></w:tabs><w:ind w:left="6840" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="33"><w:lsid w:val="5A401749"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CD8E61CE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="34"><w:lsid w:val="5A802BC9"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="35"><w:lsid w:val="5C3B1B76"/><w:plt w:val="Multilevel"/><w:tmpl w:val="CB0E7A2E"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="36"><w:lsid w:val="5E371EBB"/><w:plt w:val="Multilevel"/><w:tmpl w:val="DA56D440"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="37"><w:lsid w:val="60B71688"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5EA20814"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="38"><w:lsid w:val="6389497B"/><w:plt w:val="Multilevel"/><w:tmpl w:val="AC5A6410"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:pStyle w:val="listlvl10"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="360" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="3"/><w:lvlText w:val="%2."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1080" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:lvlText w:val="%3."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="1800" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2520" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3240" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="3960" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="4680" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5400" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6120" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="39"><w:lsid w:val="6469691A"/><w:plt w:val="Multilevel"/><w:tmpl w:val="E5D02024"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8.%9 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="3082" w:hanging="3082"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="40"><w:lsid w:val="72C94998"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="41"><w:lsid w:val="74BA49AE"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:name w:val="listrestart"/><w:styleLink w:val="listreset"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="42"><w:lsid w:val="751E50EA"/><w:plt w:val="Multilevel"/><w:tmpl w:val="79E6FEDC"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2405" w:hanging="2405"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6.%7.%8 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2736" w:hanging="2736"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="43"><w:lsid w:val="7D9D3B47"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="44"><w:lsid w:val="7F0F313D"/><w:plt w:val="Multilevel"/><w:tmpl w:val="F8FC63EE"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2160" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="2880" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3960"/></w:tabs><w:ind w:left="3600" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="45"><w:lsid w:val="7F633FB7"/><w:plt w:val="Multilevel"/><w:tmpl w:val="5F5A52E8"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="3"/><w:suff w:val="Nothing"/><w:lvlText w:val="APPENDIX %1. "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="461" w:hanging="461"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="734" w:hanging="734"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1066" w:hanging="1066"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1397" w:hanging="1397"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1742" w:hanging="1742"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:suff w:val="Nothing"/><w:lvlText w:val="%1.%2.%3.%4.%5.%6 "/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2074" w:hanging="2074"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%7)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4680"/></w:tabs><w:ind w:left="4320" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%8)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5400"/></w:tabs><w:ind w:left="5040" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%9)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6120"/></w:tabs><w:ind w:left="5760" w:first-line="0"/></w:pPr><w:rPr><w:rFonts w:hint="default"/></w:rPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="32"/></w:list><w:list w:ilfo="2"><w:ilst w:val="20"/></w:list><w:list w:ilfo="3"><w:ilst w:val="26"/></w:list><w:list w:ilfo="4"><w:ilst w:val="22"/></w:list><w:list w:ilfo="5"><w:ilst w:val="14"/></w:list><w:list w:ilfo="6"><w:ilst w:val="34"/></w:list><w:list w:ilfo="7"><w:ilst w:val="13"/></w:list><w:list w:ilfo="8"><w:ilst w:val="21"/></w:list><w:list w:ilfo="9"><w:ilst w:val="38"/></w:list><w:list w:ilfo="10"><w:ilst w:val="15"/></w:list><w:list w:ilfo="11"><w:ilst w:val="26"/></w:list><w:list w:ilfo="12"><w:ilst w:val="35"/></w:list><w:list w:ilfo="13"><w:ilst w:val="44"/></w:list><w:list w:ilfo="14"><w:ilst w:val="10"/></w:list><w:list w:ilfo="15"><w:ilst w:val="36"/></w:list><w:list w:ilfo="16"><w:ilst w:val="25"/></w:list><w:list w:ilfo="17"><w:ilst w:val="39"/></w:list><w:list w:ilfo="18"><w:ilst w:val="12"/></w:list><w:list w:ilfo="19"><w:ilst w:val="29"/></w:list><w:list w:ilfo="20"><w:ilst w:val="23"/></w:list><w:list w:ilfo="21"><w:ilst w:val="45"/></w:list><w:list w:ilfo="22"><w:ilst w:val="31"/></w:list><w:list w:ilfo="23"><w:ilst w:val="33"/></w:list><w:list w:ilfo="24"><w:ilst w:val="42"/></w:list><w:list w:ilfo="25"><w:ilst w:val="8"/></w:list><w:list w:ilfo="26"><w:ilst w:val="41"/></w:list><w:list w:ilfo="27"><w:ilst w:val="30"/></w:list><w:list w:ilfo="28"><w:ilst w:val="24"/></w:list><w:list w:ilfo="29"><w:ilst w:val="28"/></w:list><w:list w:ilfo="30"><w:ilst w:val="26"/><w:lvlOverride w:ilvl="0"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="1"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="2"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="3"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="4"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="5"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="6"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="7"><w:startOverride w:val="1"/></w:lvlOverride><w:lvlOverride w:ilvl="8"><w:startOverride w:val="1"/></w:lvlOverride></w:list><w:list w:ilfo="31"><w:ilst w:val="19"/></w:list><w:list w:ilfo="32"><w:ilst w:val="9"/></w:list><w:list w:ilfo="33"><w:ilst w:val="43"/></w:list><w:list w:ilfo="34"><w:ilst w:val="16"/></w:list><w:list w:ilfo="35"><w:ilst w:val="37"/></w:list><w:list w:ilfo="36"><w:ilst w:val="22"/></w:list><w:list w:ilfo="37"><w:ilst w:val="18"/></w:list><w:list w:ilfo="38"><w:ilst w:val="17"/></w:list><w:list w:ilfo="39"><w:ilst w:val="11"/></w:list><w:list w:ilfo="40"><w:ilst w:val="7"/></w:list><w:list w:ilfo="41"><w:ilst w:val="6"/></w:list><w:list w:ilfo="42"><w:ilst w:val="5"/></w:list><w:list w:ilfo="43"><w:ilst w:val="4"/></w:list><w:list w:ilfo="44"><w:ilst w:val="3"/></w:list><w:list w:ilfo="45"><w:ilst w:val="2"/></w:list><w:list w:ilfo="46"><w:ilst w:val="1"/></w:list><w:list w:ilfo="47"><w:ilst w:val="0"/></w:list><w:list w:ilfo="48"><w:ilst w:val="40"/></w:list><w:list w:ilfo="49"><w:ilst w:val="27"/></w:list><w:ilfoMacAtCleanup w:val="5"/></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><wx:uiName wx:val="Heading 1"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading1"/><w:keepNext/><w:keepLines/><w:pageBreakBefore/><w:listPr><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:kern w:val="28"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><wx:uiName wx:val="Heading 2"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading2"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><wx:uiName wx:val="Heading 3"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading3"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="900"/></w:tabs><w:spacing w:before="320" w:after="80"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading4"><w:name w:val="heading 4"/><wx:uiName wx:val="Heading 4"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading4"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="3"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading5"><w:name w:val="heading 5"/><wx:uiName wx:val="Heading 5"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading5"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="4"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading6"><w:name w:val="heading 6"/><wx:uiName wx:val="Heading 6"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading6"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="5"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading7"><w:name w:val="heading 7"/><wx:uiName wx:val="Heading 7"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading7"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="36"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1620"/></w:tabs><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="6"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading8"><w:name w:val="heading 8"/><wx:uiName wx:val="Heading 8"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading8"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="7"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="7"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Heading9"><w:name w:val="heading 9"/><wx:uiName wx:val="Heading 9"/><w:next w:val="paranormal"/><w:rsid w:val="001B1D77"/><w:pPr><w:pStyle w:val="Heading9"/><w:keepNext/><w:keepLines/><w:listPr><w:ilvl w:val="8"/><w:ilfo w:val="36"/></w:listPr><w:spacing w:before="360" w:after="80"/><w:outlineLvl w:val="8"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="paranormal"><w:name w:val="para:normal"/><w:link w:val="paranormalChar"/><w:rsid w:val="009E6B3D"/><w:pPr><w:pStyle w:val="paranormal"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="64" w:after="80" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl3"><w:name w:val="list:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl3"/><w:listPr><w:ilvl w:val="2"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="2088"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang1"><w:name w:val="req lang:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Header"><w:name w:val="header"/><wx:uiName wx:val="Header"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A134C3"/><w:pPr><w:pStyle w:val="Header"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs><w:spacing w:before="20" w:after="0" w:line="180" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="proprietarycontd"><w:name w:val="proprietary:cont'd"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="proprietarycontd"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="200" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="16"/><w:sz-cs w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paracentered"><w:name w:val="para:centered"/><w:autoRedefine/><w:rsid w:val="00B43482"/><w:pPr><w:pStyle w:val="paracentered"/><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="80" w:after="80" w:line="240" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent2"><w:name w:val="para:indent2"/><w:autoRedefine/><w:rsid w:val="004417BE"/><w:pPr><w:pStyle w:val="paraindent2"/><w:tabs><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent3"><w:name w:val="para:indent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent3"/><w:tabs><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/><w:tab w:val="left" w:pos="9720"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Caption"><w:name w:val="caption"/><wx:uiName wx:val="Caption"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="0085234B"/><w:pPr><w:pStyle w:val="Caption"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9720"/><w:tab w:val="left" w:pos="10800"/><w:tab w:val="left" w:pos="11880"/><w:tab w:val="left" w:pos="12960"/><w:tab w:val="left" w:pos="14040"/><w:tab w:val="left" w:pos="15120"/><w:tab w:val="left" w:pos="16200"/><w:tab w:val="left" w:pos="17280"/><w:tab w:val="left" w:pos="18360"/><w:tab w:val="left" w:pos="19440"/><w:tab w:val="left" w:pos="20520"/><w:tab w:val="left" w:pos="21600"/><w:tab w:val="left" w:pos="22680"/><w:tab w:val="left" w:pos="23760"/><w:tab w:val="left" w:pos="24840"/><w:tab w:val="left" w:pos="25920"/><w:tab w:val="left" w:pos="27000"/><w:tab w:val="left" w:pos="28080"/><w:tab w:val="left" w:pos="29160"/><w:tab w:val="left" w:pos="30240"/><w:tab w:val="left" w:pos="31320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent1"><w:name w:val="para:indent1"/><w:autoRedefine/><w:rsid w:val="007D424E"/><w:pPr><w:pStyle w:val="paraindent1"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4680"/><w:tab w:val="left" w:pos="5400"/><w:tab w:val="left" w:pos="6120"/><w:tab w:val="left" w:pos="6840"/><w:tab w:val="left" w:pos="7560"/><w:tab w:val="left" w:pos="8280"/><w:tab w:val="left" w:pos="9000"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="80" w:line="240" w:line-rule="at-least"/><w:ind w:left="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Footer"><w:name w:val="footer"/><wx:uiName wx:val="Footer"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="Footer"/><w:tabs><w:tab w:val="center" w:pos="4320"/><w:tab w:val="right" w:pos="8640"/></w:tabs></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl4"><w:name w:val="list:lvl 4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl4"/><w:listPr><w:ilvl w:val="3"/><w:ilfo w:val="11"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead"><w:name w:val="RowHead"/><w:basedOn w:val="Heading1"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead"/><w:listPr><w:ilfo w:val="0"/></w:listPr><w:spacing w:before="100" w:after="100"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps w:val="off"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11"><w:name w:val="TableText11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOAHeading"><w:name w:val="toa heading"/><wx:uiName wx:val="TOA Heading"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOAHeading"/><w:spacing w:before="240" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:b-cs/><w:caps/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHeadL"><w:name w:val="RowHeadL"/><w:basedOn w:val="RowHead"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHeadL"/><w:spacing w:before="60" w:after="60"/><w:jc w:val="left"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11B"><w:name w:val="TableText11B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText11B"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofAuthorities"><w:name w:val="table of authorities"/><wx:uiName wx:val="Table of Authorities"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofAuthorities"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="8640"/></w:tabs><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableofFigures"><w:name w:val="table of figures"/><wx:uiName wx:val="Table of Figures"/><w:next w:val="Normal"/><w:autoRedefine/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableofFigures"/><w:tabs><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="60" w:after="60"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="Hyperlink"><w:name w:val="Hyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00721F21"/><w:rPr><w:color w:val="0000FF"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="PageNumber"><w:name w:val="page number"/><wx:uiName wx:val="Page Number"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00D90577"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:dstrike w:val="off"/><w:sz w:val="20"/><w:sz-cs w:val="20"/><w:vertAlign w:val="baseline"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead11"><w:name w:val="RowHead11"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead11"/><w:listPr><w:ilvl w:val="12"/></w:listPr><w:spacing w:before="80" w:after="80"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText11C"><w:name w:val="TableText11C"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText11C"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Times New Roman"/><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl1"><w:name w:val="list:lvl 1"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl1"/><w:listPr><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="4320"/><w:tab w:val="left" w:pos="5040"/><w:tab w:val="left" w:pos="5760"/><w:tab w:val="left" w:pos="6480"/><w:tab w:val="left" w:pos="7200"/><w:tab w:val="left" w:pos="7920"/><w:tab w:val="left" w:pos="8640"/><w:tab w:val="left" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Helvetica"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl5"><w:name w:val="list:lvl 5"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl5"/><w:listPr><w:ilvl w:val="4"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="left" w:pos="3384"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl2"><w:name w:val="list:lvl 2"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilvl w:val="1"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="60" w:after="60" w:line="240" w:line-rule="at-least"/><w:contextualSpacing/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="AppendixTitle"><w:name w:val="Appendix Title"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="AppendixTitle"/><w:pageBreakBefore/><w:spacing w:before="120" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RowHead10"><w:name w:val="RowHead10"/><w:basedOn w:val="RowHead11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="RowHead10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC1"><w:name w:val="toc 1"/><wx:uiName wx:val="TOC 1"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC1"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="540"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="240"/><w:ind w:left="547" w:hanging="547"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:caps/><w:noProof/><w:sz w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC2"><w:name w:val="toc 2"/><wx:uiName wx:val="TOC 2"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00003D10"/><w:pPr><w:pStyle w:val="TOC2"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="900"/><w:tab w:val="right" w:leader="dot" w:pos="9360"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="907" w:hanging="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC3"><w:name w:val="toc 3"/><wx:uiName wx:val="TOC 3"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC3"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1260"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1260" w:hanging="900"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC4"><w:name w:val="toc 4"/><wx:uiName wx:val="TOC 4"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC4"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1620"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1620" w:hanging="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC5"><w:name w:val="toc 5"/><wx:uiName wx:val="TOC 5"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC5"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="1980"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="1980" w:hanging="1260"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC6"><w:name w:val="toc 6"/><wx:uiName wx:val="TOC 6"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC6"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2340"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2340" w:hanging="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:noProof/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC7"><w:name w:val="toc 7"/><wx:uiName wx:val="TOC 7"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC7"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2700"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:spacing w:before="0" w:after="0" w:line="240" w:line-rule="auto"/><w:ind w:left="2700" w:hanging="1620"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC8"><w:name w:val="toc 8"/><wx:uiName wx:val="TOC 8"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC8"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="2970"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="2970" w:hanging="1710"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOC9"><w:name w:val="toc 9"/><wx:uiName wx:val="TOC 9"/><w:next w:val="Normal"/><w:semiHidden/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TOC9"/><w:keepLines/><w:tabs><w:tab w:val="left" w:pos="3330"/><w:tab w:val="right" w:leader="dot" w:pos="9350"/></w:tabs><w:ind w:left="3330" w:hanging="1890"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="22"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="HeadingUnnumbered"><w:name w:val="Heading Unnumbered"/><w:next w:val="paranormal"/><w:autoRedefine/><w:rsid w:val="00107AA6"/><w:pPr><w:pStyle w:val="HeadingUnnumbered"/><w:keepNext/><w:keepLines/><w:spacing w:before="240" w:after="80"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="24"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10"><w:name w:val="TableText10"/><w:basedOn w:val="TableText11"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableTextBCentered"><w:name w:val="TableTextB Centered"/><w:basedOn w:val="Normal"/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableTextBCentered"/><w:spacing w:line="220" w:line-rule="at-least"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10C"><w:name w:val="TableText10C"/><w:basedOn w:val="TableText11C"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="TableText10C"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10B"><w:name w:val="TableText10B"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00913874"/><w:pPr><w:pStyle w:val="TableText10B"/><w:spacing w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="acronym"><w:name w:val="acronym"/><w:autoRedefine/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="acronym"/><w:tabs><w:tab w:val="left" w:pos="2160"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="40" w:after="40"/><w:ind w:left="2160" w:hanging="2160"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl6"><w:name w:val="list:lvl 6"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl6"/><w:listPr><w:ilvl w:val="5"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="clear" w:pos="4320"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr1L"><w:name w:val="hdr1L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr1L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="hdr2L"><w:name w:val="hdr2L"/><w:basedOn w:val="Normal"/><w:rsid w:val="00721F21"/><w:pPr><w:pStyle w:val="hdr2L"/><w:tabs><w:tab w:val="left" w:pos="0"/><w:tab w:val="center" w:pos="4680"/><w:tab w:val="right" w:pos="9360"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="0" w:line="180" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl1"><w:name w:val="bullet:lvl 1"/><w:basedOn w:val="Normal"/><w:link w:val="bulletlvl1CharChar"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl1"/><w:listPr><w:ilfo w:val="1"/></w:listPr><w:spacing w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl2"><w:name w:val="bullet:lvl 2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00143D5A"/><w:pPr><w:pStyle w:val="bulletlvl2"/><w:widowControl w:val="off"/><w:listPr><w:ilfo w:val="2"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="1224"/><w:tab w:val="left" w:pos="648"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1728" w:hanging="1080"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="paraindent4"><w:name w:val="para:indent4"/><w:basedOn w:val="paraindent3"/><w:autoRedefine/><w:rsid w:val="0071606D"/><w:pPr><w:pStyle w:val="paraindent4"/><w:ind w:left="1440"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl7"><w:name w:val="list:lvl 7"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl7"/><w:listPr><w:ilvl w:val="6"/><w:ilfo w:val="11"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="360"/><w:tab w:val="clear" w:pos="720"/><w:tab w:val="clear" w:pos="1080"/><w:tab w:val="clear" w:pos="1440"/><w:tab w:val="clear" w:pos="1800"/><w:tab w:val="clear" w:pos="2160"/><w:tab w:val="clear" w:pos="2520"/><w:tab w:val="clear" w:pos="2880"/><w:tab w:val="clear" w:pos="3240"/><w:tab w:val="clear" w:pos="3600"/><w:tab w:val="clear" w:pos="3960"/><w:tab w:val="left" w:pos="3024"/></w:tabs><w:spacing w:after="40"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCfiguretitle"><w:name w:val="TOC:figure title"/><w:basedOn w:val="Caption"/><w:autoRedefine/><w:rsid w:val="00894991"/><w:pPr><w:pStyle w:val="TOCfiguretitle"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="006E0AB6"/><w:pPr><w:pStyle w:val="note"/><w:spacing w:before="80" w:after="80"/><w:ind w:left="1656" w:right="720" w:hanging="936"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang2"><w:name w:val="req lang:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang2"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang3"><w:name w:val="req lang:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1080"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang4"><w:name w:val="req lang:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang4"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang5"><w:name w:val="req lang:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang5"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="1800"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang6"><w:name w:val="req lang:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00F25A7A"/><w:pPr><w:pStyle w:val="reqlang6"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="60" w:after="60"/><w:ind w:left="2160"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="statedef"><w:name w:val="state def"/><w:basedOn w:val="Normal"/><w:rsid w:val="00DE6BA0"/><w:pPr><w:pStyle w:val="statedef"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/></w:tabs><w:spacing w:before="80" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:caps/><w:color w:val="00FF00"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="intentblank"><w:name w:val="intent:blank"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="000B79E8"/><w:pPr><w:pStyle w:val="intentblank"/><w:spacing w:before="6480" w:after="0"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="code"><w:name w:val="code"/><w:basedOn w:val="Normal"/><w:rsid w:val="006D4514"/><w:pPr><w:pStyle w:val="code"/><w:spacing w:before="80" w:after="80" w:line="220" w:line-rule="at-least"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="18"/><w:sz-cs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="parapage"><w:name w:val="para:page"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00DD22A9"/><w:pPr><w:pStyle w:val="parapage"/><w:pageBreakBefore/><w:spacing w:before="80" w:after="80"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TOCtabletitle"><w:name w:val="TOC:table title"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="00B869CD"/><w:pPr><w:pStyle w:val="TOCtabletitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRitem"><w:name w:val="RCR:item"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="007A1F4F"/><w:pPr><w:pStyle w:val="RCRitem"/><w:tabs><w:tab w:val="left" w:pos="1800"/></w:tabs><w:spacing w:before="120"/><w:ind w:left="1800" w:right="720" w:hanging="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="RCRheader"><w:name w:val="RCR:header"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006D781E"/><w:pPr><w:pStyle w:val="RCRheader"/><w:tabs><w:tab w:val="left" w:pos="792"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="right" w:leader="underscore" w:pos="8640"/></w:tabs><w:spacing w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:sz-cs w:val="22"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="line"><w:name w:val="line"/><w:basedOn w:val="Normal"/><w:autoRedefine/><w:rsid w:val="006B63C2"/><w:pPr><w:pStyle w:val="line"/><w:spacing w:before="0" w:line="40" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="12"/><w:sz-cs w:val="12"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang7"><w:name w:val="req lang: 7"/><w:basedOn w:val="reqlang6"/><w:rsid w:val="00C0337E"/><w:pPr><w:pStyle w:val="reqlang7"/><w:ind w:left="2520"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang70"><w:name w:val="req lang:7"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang70"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang8"><w:name w:val="req lang:8"/><w:basedOn w:val="reqlang7"/><w:rsid w:val="004C603C"/><w:pPr><w:pStyle w:val="reqlang8"/><w:ind w:left="2880"/></w:pPr><w:rPr><wx:font wx:val="Courier New"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="reqlang9"><w:name w:val="req lang:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="007534C9"/><w:pPr><w:pStyle w:val="reqlang9"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="3240"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New"/><wx:font wx:val="Courier New"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="DocumentMap"><w:name w:val="Document Map"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00AF20CB"/><w:pPr><w:pStyle w:val="DocumentMap"/><w:shd w:val="clear" w:color="auto" w:fill="000080"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment1"><w:name w:val="comment:1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment1"/><w:spacing w:before="60" w:after="60"/><w:ind w:left="360"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment2"><w:name w:val="comment:2"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment2"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="720"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:cs="Arial"/><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment3"><w:name w:val="comment:3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment3"/><w:tabs><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="720"/><w:tab w:val="left" w:pos="1080"/><w:tab w:val="left" w:pos="1440"/><w:tab w:val="left" w:pos="1800"/><w:tab w:val="left" w:pos="2160"/><w:tab w:val="left" w:pos="2520"/><w:tab w:val="left" w:pos="2880"/><w:tab w:val="left" w:pos="3240"/><w:tab w:val="left" w:pos="3600"/><w:tab w:val="left" w:pos="3960"/><w:tab w:val="left" w:pos="4320"/></w:tabs><w:autoSpaceDE w:val="off"/><w:autoSpaceDN w:val="off"/><w:adjustRightInd w:val="off"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1080"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/><w:sz-cs w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment4"><w:name w:val="comment:4"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment4"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1440"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment5"><w:name w:val="comment:5"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment5"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="1800"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment6"><w:name w:val="comment:6"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment6"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2160"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment7"><w:name w:val="comment:7"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment7"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2520"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment8"><w:name w:val="comment:8"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment8"/><w:spacing w:before="60" w:after="80"/><w:ind w:left="2880"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="comment9"><w:name w:val="comment:9"/><w:basedOn w:val="Normal"/><w:rsid w:val="00111B46"/><w:pPr><w:pStyle w:val="comment9"/><w:spacing w:after="80"/><w:ind w:left="3240"/><w:contextualSpacing/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlheader"><w:name w:val="dl:header"/><w:basedOn w:val="paranormal"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlheader"/><w:spacing w:before="240" w:after="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier" w:h-ansi="Courier"/><wx:font wx:val="Courier"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlbody"><w:name w:val="dl:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlbody"/><w:spacing w:before="0"/><w:ind w:left="360"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocheader"><w:name w:val="dl_proc:header"/><w:basedOn w:val="dlbody"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocheader"/><w:spacing w:before="240"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dlprocbody"><w:name w:val="dl_proc:body"/><w:basedOn w:val="dlprocheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dlprocbody"/><w:spacing w:before="0"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="dldescription"><w:name w:val="dl:description"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="dldescription"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapheader"><w:name w:val="bitmap:header"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapheader"/></w:pPr><w:rPr><wx:font wx:val="Courier"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bitmapbody"><w:name w:val="bitmap:body"/><w:basedOn w:val="dlheader"/><w:rsid w:val="00071300"/><w:pPr><w:pStyle w:val="bitmapbody"/><w:spacing w:before="0"/></w:pPr><w:rPr><wx:font wx:val="Courier"/><w:sz w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX1"><w:name w:val="APPENDIX 1"/><w:basedOn w:val="Normal"/><w:next w:val="paranormal"/><w:rsid w:val="004978C4"/><w:pPr><w:pStyle w:val="APPENDIX1"/><w:listPr><w:ilfo w:val="25"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs><w:spacing w:before="152" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX2"><w:name w:val="APPENDIX 2"/><w:basedOn w:val="APPENDIX1"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX2"/><w:listPr><w:ilvl w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX3"><w:name w:val="APPENDIX 3"/><w:basedOn w:val="APPENDIX2"/><w:next w:val="paranormal"/><w:rsid w:val="00E904D2"/><w:pPr><w:pStyle w:val="APPENDIX3"/><w:listPr><w:ilvl w:val="2"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage18pt"><w:name w:val="Title Page 18pt"/><w:basedOn w:val="Normal"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage18pt"/><w:spacing w:before="0" w:after="60" w:line="240" w:line-rule="auto"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:color w:val="auto"/><w:sz w:val="36"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage16pt"><w:name w:val="Title Page 16pt"/><w:basedOn w:val="TitlePage18pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage16pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="32"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage14pt"><w:name w:val="Title Page 14pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="0033770F"/><w:pPr><w:pStyle w:val="TitlePage14pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b w:val="off"/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10pt"><w:name w:val="para 10pt"/><w:basedOn w:val="Normal"/><w:link w:val="para10ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para10pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para10ptnospacing"><w:name w:val="para 10pt no spacing"/><w:basedOn w:val="para10pt"/><w:rsid w:val="004A1CCA"/><w:pPr><w:pStyle w:val="para10ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TableText10nospacing"><w:name w:val="TableText10 no spacing"/><w:basedOn w:val="TableText10"/><w:rsid w:val="00D72507"/><w:pPr><w:pStyle w:val="TableText10nospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8pt"><w:name w:val="para 8pt"/><w:basedOn w:val="Normal"/><w:link w:val="para8ptChar"/><w:rsid w:val="004E3337"/><w:pPr><w:pStyle w:val="para8pt"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="16"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paranormalChar"><w:name w:val="para:normal Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="paranormal"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:b-cs/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="bulletlvl1CharChar"><w:name w:val="bullet:lvl 1 Char Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="bulletlvl1"/><w:rsid w:val="00C93CA3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:color w:val="000000"/><w:sz w:val="22"/><w:sz-cs w:val="22"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ParagraphText"><w:name w:val="ParagraphText"/><w:basedOn w:val="Normal"/><w:rsid w:val="00C93CA3"/><w:pPr><w:pStyle w:val="ParagraphText"/><w:spacing w:before="0" w:after="120" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman"/><wx:font wx:val="Times New Roman"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl10"><w:name w:val="list lvl 1"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A81E8C"/><w:pPr><w:pStyle w:val="listlvl10"/><w:listPr><w:ilfo w:val="9"/></w:listPr><w:tabs><w:tab w:val="left" w:pos="936"/></w:tabs><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX4"><w:name w:val="APPENDIX 4"/><w:basedOn w:val="APPENDIX3"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX4"/><w:listPr><w:ilvl w:val="3"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX5"><w:name w:val="APPENDIX 5"/><w:basedOn w:val="APPENDIX4"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX5"/><w:listPr><w:ilvl w:val="4"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX6"><w:name w:val="APPENDIX 6"/><w:basedOn w:val="APPENDIX5"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX6"/><w:listPr><w:ilvl w:val="5"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX7"><w:name w:val="APPENDIX 7"/><w:basedOn w:val="APPENDIX6"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX7"/><w:listPr><w:ilvl w:val="6"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX8"><w:name w:val="APPENDIX 8"/><w:basedOn w:val="APPENDIX7"/><w:next w:val="paranormal"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX8"/><w:listPr><w:ilvl w:val="7"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="APPENDIX9"><w:name w:val="APPENDIX 9"/><w:basedOn w:val="APPENDIX8"/><w:rsid w:val="009B7093"/><w:pPr><w:pStyle w:val="APPENDIX9"/><w:listPr><w:ilvl w:val="8"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="BalloonText"><w:name w:val="Balloon Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00B47E5D"/><w:pPr><w:pStyle w:val="BalloonText"/></w:pPr><w:rPr><w:rFonts w:ascii="Tahoma" w:h-ansi="Tahoma" w:cs="Tahoma"/><wx:font wx:val="Tahoma"/><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="list" w:styleId="listreset"><w:name w:val="listreset"/><w:basedOn w:val="NoList"/><w:rsid w:val="00D25E39"/><w:pPr><w:listPr><w:ilfo w:val="26"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="bulletlvl3"><w:name w:val="bullet:lvl 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="00EF5226"/><w:pPr><w:pStyle w:val="bulletlvl3"/><w:listPr><w:ilfo w:val="28"/></w:listPr><w:tabs><w:tab w:val="clear" w:pos="3024"/><w:tab w:val="left" w:pos="360"/><w:tab w:val="left" w:pos="1008"/></w:tabs><w:spacing w:after="80"/><w:ind w:left="1368" w:hanging="360"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="CommentReference"><w:name w:val="annotation reference"/><wx:uiName wx:val="Comment Reference"/><w:basedOn w:val="DefaultParagraphFont"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:rPr><w:sz w:val="16"/><w:sz-cs w:val="16"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentText"><w:name w:val="annotation text"/><wx:uiName wx:val="Comment Text"/><w:basedOn w:val="Normal"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentText"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="20"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="CommentSubject"><w:name w:val="annotation subject"/><wx:uiName wx:val="Comment Subject"/><w:basedOn w:val="CommentText"/><w:next w:val="CommentText"/><w:semiHidden/><w:rsid w:val="00E40969"/><w:pPr><w:pStyle w:val="CommentSubject"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:b/><w:b-cs/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="TitlePage22pt"><w:name w:val="Title Page 22pt"/><w:basedOn w:val="TitlePage16pt"/><w:rsid w:val="005F35C4"/><w:pPr><w:pStyle w:val="TitlePage22pt"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para"><w:name w:val="para"/><w:basedOn w:val="Normal"/><w:link w:val="paraChar"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="para"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="character" w:styleId="paraChar"><w:name w:val="para Char"/><w:basedOn w:val="DefaultParagraphFont"/><w:link w:val="para"/><w:rsid w:val="0057061B"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl20"><w:name w:val="list lvl 2"/><w:basedOn w:val="ListNumber3"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="listlvl20"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber3"><w:name w:val="List Number 3"/><w:basedOn w:val="Normal"/><w:rsid w:val="0057061B"/><w:pPr><w:pStyle w:val="ListNumber3"/><w:tabs><w:tab w:val="list" w:pos="1512"/></w:tabs><w:ind w:left="1512" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/><w:rsid w:val="008B1AB7"/><w:pPr><w:spacing w:before="40" w:after="40" w:line="240" w:line-rule="at-least"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblBorders><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="character" w:styleId="para8ptChar"><w:name w:val="para 8pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para8pt"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptunderline"><w:name w:val="para 8pt underline"/><w:basedOn w:val="para8pt"/><w:link w:val="para8ptunderlineChar"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptunderline"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="character" w:styleId="para8ptunderlineChar"><w:name w:val="para 8pt underline Char"/><w:basedOn w:val="para8ptChar"/><w:link w:val="para8ptunderline"/><w:rsid w:val="007921D3"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="16"/><w:u w:val="single"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para8ptnospacing"><w:name w:val="para 8pt no spacing"/><w:basedOn w:val="para8pt"/><w:rsid w:val="007921D3"/><w:pPr><w:pStyle w:val="para8ptnospacing"/><w:spacing w:before="0" w:after="0"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="listlvl0"><w:name w:val="list lvl 0"/><w:basedOn w:val="ListNumber"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="listlvl0"/><w:spacing w:before="72" w:after="72" w:line="240" w:line-rule="auto"/></w:pPr><w:rPr><wx:font wx:val="Arial"/><w:color w:val="auto"/><w:sz w:val="24"/><w:sz-cs w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="ListNumber"><w:name w:val="List Number"/><w:basedOn w:val="Normal"/><w:rsid w:val="00A233DA"/><w:pPr><w:pStyle w:val="ListNumber"/><w:tabs><w:tab w:val="list" w:pos="504"/></w:tabs><w:ind w:left="504" w:hanging="504"/></w:pPr><w:rPr><wx:font wx:val="Arial"/></w:rPr></w:style><w:style w:type="character" w:styleId="para10ptChar"><w:name w:val="para 10pt Char"/><w:basedOn w:val="paraChar"/><w:link w:val="para10pt"/><w:rsid w:val="0015054E"/><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><w:sz w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:styleId="FollowedHyperlink"><w:name w:val="FollowedHyperlink"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="00B8047C"/><w:rPr><w:color w:val="800080"/><w:u w:val="single"/></w:rPr></w:style></w:styles><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="27650"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:bordersDontSurroundHeader/><w:bordersDontSurroundFooter/><w:attachedTemplate w:val=""/><w:stylePaneFormatFilter w:val="3001"/><w:defaultTabStop w:val="720"/><w:doNotHyphenateCaps/><w:drawingGridHorizontalSpacing w:val="120"/><w:drawingGridVerticalSpacing w:val="120"/><w:displayHorizontalDrawingGridEvery w:val="0"/><w:displayVerticalDrawingGridEvery w:val="3"/><w:useMarginsForDrawingGridOrigin/><w:doNotShadeFormData/><w:punctuationKerning/><w:characterSpacingControl w:val="CompressPunctuation"/><w:optimizeForBrowser/><w:validateAgainstSchema w:val="off"/><w:saveInvalidXML/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:hdrShapeDefaults><o:shapedefaults v:ext="edit" spidmax="27650"/></w:hdrShapeDefaults><w:footnotePr><w:footnote w:type="separator"><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/></w:footnote><w:footnote w:type="continuation-separator"><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/></w:footnote></w:footnotePr><w:endnotePr><w:endnote w:type="separator"><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"><w:r><w:separator/></w:r></w:p><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/></w:endnote><w:endnote w:type="continuation-separator"><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"><w:r><w:continuationSeparator/></w:r></w:p><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106" wsp:rsidP="006E0AB6"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/><w:p wsp:rsidR="00C93106" wsp:rsidRDefault="00C93106"/></w:endnote></w:endnotePr><w:compat><w:footnoteLayoutLikeWW8/><w:shapeLayoutLikeWW8/><w:alignTablesRowByRow/><w:forgetLastTabAlignment/><w:doNotUseHTMLParagraphAutoSpacing/><w:layoutRawTableWidth/><w:layoutTableRowsApart/><w:useWord97LineBreakingRules/><w:dontAllowFieldEndSelect/><w:useWord2002TableStyleRules/></w:compat><wsp:rsids><wsp:rsidRoot wsp:val="00244327"/><wsp:rsid wsp:val="00003D10"/><wsp:rsid wsp:val="000125BB"/><wsp:rsid wsp:val="000165BA"/><wsp:rsid wsp:val="00017C15"/><wsp:rsid wsp:val="00024B16"/><wsp:rsid wsp:val="00027A6E"/><wsp:rsid wsp:val="00032693"/><wsp:rsid wsp:val="00037361"/><wsp:rsid wsp:val="000427F3"/><wsp:rsid wsp:val="00043F58"/><wsp:rsid wsp:val="0004616A"/><wsp:rsid wsp:val="00050360"/><wsp:rsid wsp:val="0005699B"/><wsp:rsid wsp:val="00056B3D"/><wsp:rsid wsp:val="00066FED"/><wsp:rsid wsp:val="00071300"/><wsp:rsid wsp:val="00072A3E"/><wsp:rsid wsp:val="00081116"/><wsp:rsid wsp:val="00090CB1"/><wsp:rsid wsp:val="000B3E61"/><wsp:rsid wsp:val="000B5C9D"/><wsp:rsid wsp:val="000B79E8"/><wsp:rsid wsp:val="000C04F3"/><wsp:rsid wsp:val="000C05CF"/><wsp:rsid wsp:val="000C6D2C"/><wsp:rsid wsp:val="000F209F"/><wsp:rsid wsp:val="000F221B"/><wsp:rsid wsp:val="000F5854"/><wsp:rsid wsp:val="00103B80"/><wsp:rsid wsp:val="00105F3F"/><wsp:rsid wsp:val="00107AA6"/><wsp:rsid wsp:val="00111B46"/><wsp:rsid wsp:val="00114E7C"/><wsp:rsid wsp:val="00115FC4"/><wsp:rsid wsp:val="00131579"/><wsp:rsid wsp:val="00132503"/><wsp:rsid wsp:val="0013768E"/><wsp:rsid wsp:val="00143D5A"/><wsp:rsid wsp:val="0015054E"/><wsp:rsid wsp:val="00151E8B"/><wsp:rsid wsp:val="00153670"/><wsp:rsid wsp:val="00185657"/><wsp:rsid wsp:val="001A6695"/><wsp:rsid wsp:val="001A6E05"/><wsp:rsid wsp:val="001B1D77"/><wsp:rsid wsp:val="001B21D8"/><wsp:rsid wsp:val="001D1983"/><wsp:rsid wsp:val="00200F8F"/><wsp:rsid wsp:val="002036EB"/><wsp:rsid wsp:val="00206FCA"/><wsp:rsid wsp:val="002127E8"/><wsp:rsid wsp:val="00214CB2"/><wsp:rsid wsp:val="00222FBE"/><wsp:rsid wsp:val="00233CC2"/><wsp:rsid wsp:val="00243928"/><wsp:rsid wsp:val="00244327"/><wsp:rsid wsp:val="002535D0"/><wsp:rsid wsp:val="0025482E"/><wsp:rsid wsp:val="00256734"/><wsp:rsid wsp:val="0026648E"/><wsp:rsid wsp:val="00282EC4"/><wsp:rsid wsp:val="00283D14"/><wsp:rsid wsp:val="00295554"/><wsp:rsid wsp:val="00297956"/><wsp:rsid wsp:val="002A1E33"/><wsp:rsid wsp:val="002A4FCB"/><wsp:rsid wsp:val="002B0604"/><wsp:rsid wsp:val="002B798B"/><wsp:rsid wsp:val="002C5706"/><wsp:rsid wsp:val="002D4EF1"/><wsp:rsid wsp:val="002D7289"/><wsp:rsid wsp:val="002D7290"/><wsp:rsid wsp:val="002E125A"/><wsp:rsid wsp:val="002E4219"/><wsp:rsid wsp:val="002E6DCE"/><wsp:rsid wsp:val="002F6CB4"/><wsp:rsid wsp:val="00306F02"/><wsp:rsid wsp:val="003116D6"/><wsp:rsid wsp:val="0031593E"/><wsp:rsid wsp:val="0033641C"/><wsp:rsid wsp:val="0033770F"/><wsp:rsid wsp:val="003534DB"/><wsp:rsid wsp:val="00357B2F"/><wsp:rsid wsp:val="00370D17"/><wsp:rsid wsp:val="003724C6"/><wsp:rsid wsp:val="0037392F"/><wsp:rsid wsp:val="003739E6"/><wsp:rsid wsp:val="0038257D"/><wsp:rsid wsp:val="003850AB"/><wsp:rsid wsp:val="003877FD"/><wsp:rsid wsp:val="003A0770"/><wsp:rsid wsp:val="003A15E9"/><wsp:rsid wsp:val="003A1FEA"/><wsp:rsid wsp:val="003B0842"/><wsp:rsid wsp:val="003B5319"/><wsp:rsid wsp:val="003D263A"/><wsp:rsid wsp:val="003D26BD"/><wsp:rsid wsp:val="003D41C1"/><wsp:rsid wsp:val="003D4E9C"/><wsp:rsid wsp:val="003D5B32"/><wsp:rsid wsp:val="003E5A4F"/><wsp:rsid wsp:val="003F40D2"/><wsp:rsid wsp:val="003F6F30"/><wsp:rsid wsp:val="00411140"/><wsp:rsid wsp:val="00423163"/><wsp:rsid wsp:val="004417BE"/><wsp:rsid wsp:val="0044516A"/><wsp:rsid wsp:val="00453B86"/><wsp:rsid wsp:val="004546FC"/><wsp:rsid wsp:val="00461E9A"/><wsp:rsid wsp:val="00465A78"/><wsp:rsid wsp:val="00470A7A"/><wsp:rsid wsp:val="0048363C"/><wsp:rsid wsp:val="00485EEE"/><wsp:rsid wsp:val="00493774"/><wsp:rsid wsp:val="00496AA5"/><wsp:rsid wsp:val="004978C4"/><wsp:rsid wsp:val="004A1CCA"/><wsp:rsid wsp:val="004B1050"/><wsp:rsid wsp:val="004B2F10"/><wsp:rsid wsp:val="004C0A1F"/><wsp:rsid wsp:val="004C603C"/><wsp:rsid wsp:val="004D5379"/><wsp:rsid wsp:val="004E3337"/><wsp:rsid wsp:val="004E7C5F"/><wsp:rsid wsp:val="00515AE0"/><wsp:rsid wsp:val="00517693"/><wsp:rsid wsp:val="00522250"/><wsp:rsid wsp:val="005244FF"/><wsp:rsid wsp:val="00530C0F"/><wsp:rsid wsp:val="00533D4D"/><wsp:rsid wsp:val="005605D4"/><wsp:rsid wsp:val="00564BC0"/><wsp:rsid wsp:val="00567343"/><wsp:rsid wsp:val="005675B7"/><wsp:rsid wsp:val="0057061B"/><wsp:rsid wsp:val="0057555E"/><wsp:rsid wsp:val="0059604E"/><wsp:rsid wsp:val="005A4B03"/><wsp:rsid wsp:val="005B0416"/><wsp:rsid wsp:val="005C3E15"/><wsp:rsid wsp:val="005C6185"/><wsp:rsid wsp:val="005D1A0D"/><wsp:rsid wsp:val="005D3587"/><wsp:rsid wsp:val="005D3C1F"/><wsp:rsid wsp:val="005E02BA"/><wsp:rsid wsp:val="005E122B"/><wsp:rsid wsp:val="005E4376"/><wsp:rsid wsp:val="005E702A"/><wsp:rsid wsp:val="005F2993"/><wsp:rsid wsp:val="005F35C4"/><wsp:rsid wsp:val="006015D6"/><wsp:rsid wsp:val="00605260"/><wsp:rsid wsp:val="00605417"/><wsp:rsid wsp:val="006111D3"/><wsp:rsid wsp:val="00614ED8"/><wsp:rsid wsp:val="006238C9"/><wsp:rsid wsp:val="00624582"/><wsp:rsid wsp:val="00627F1F"/><wsp:rsid wsp:val="00630722"/><wsp:rsid wsp:val="0063262E"/><wsp:rsid wsp:val="0066654A"/><wsp:rsid wsp:val="00667C3D"/><wsp:rsid wsp:val="006724F7"/><wsp:rsid wsp:val="00672BD3"/><wsp:rsid wsp:val="00697DBF"/><wsp:rsid wsp:val="006A108F"/><wsp:rsid wsp:val="006A4467"/><wsp:rsid wsp:val="006A4CFB"/><wsp:rsid wsp:val="006A7BEF"/><wsp:rsid wsp:val="006B5B71"/><wsp:rsid wsp:val="006B63C2"/><wsp:rsid wsp:val="006C04E9"/><wsp:rsid wsp:val="006C4F00"/><wsp:rsid wsp:val="006D1536"/><wsp:rsid wsp:val="006D4514"/><wsp:rsid wsp:val="006D781E"/><wsp:rsid wsp:val="006E0AB6"/><wsp:rsid wsp:val="006E7077"/><wsp:rsid wsp:val="00711F77"/><wsp:rsid wsp:val="00712309"/><wsp:rsid wsp:val="00712933"/><wsp:rsid wsp:val="0071606D"/><wsp:rsid wsp:val="00721F21"/><wsp:rsid wsp:val="007323A9"/><wsp:rsid wsp:val="00737D1B"/><wsp:rsid wsp:val="00743F40"/><wsp:rsid wsp:val="007534C9"/><wsp:rsid wsp:val="007600B1"/><wsp:rsid wsp:val="007613A0"/><wsp:rsid wsp:val="007768E2"/><wsp:rsid wsp:val="00784378"/><wsp:rsid wsp:val="00786AF0"/><wsp:rsid wsp:val="00790080"/><wsp:rsid wsp:val="007921D3"/><wsp:rsid wsp:val="00797E6B"/><wsp:rsid wsp:val="007A0657"/><wsp:rsid wsp:val="007A1F4F"/><wsp:rsid wsp:val="007A205B"/><wsp:rsid wsp:val="007B5153"/><wsp:rsid wsp:val="007B53FB"/><wsp:rsid wsp:val="007B59CC"/><wsp:rsid wsp:val="007D424E"/><wsp:rsid wsp:val="007D6EDC"/><wsp:rsid wsp:val="007E31BB"/><wsp:rsid wsp:val="007F1309"/><wsp:rsid wsp:val="0080762D"/><wsp:rsid wsp:val="00810CB8"/><wsp:rsid wsp:val="00816887"/><wsp:rsid wsp:val="0082049F"/><wsp:rsid wsp:val="0083682F"/><wsp:rsid wsp:val="0085234B"/><wsp:rsid wsp:val="00853836"/><wsp:rsid wsp:val="00855CE1"/><wsp:rsid wsp:val="00861D13"/><wsp:rsid wsp:val="00861DB8"/><wsp:rsid wsp:val="00865ED8"/><wsp:rsid wsp:val="00866395"/><wsp:rsid wsp:val="00866BDD"/><wsp:rsid wsp:val="008671A8"/><wsp:rsid wsp:val="00867409"/><wsp:rsid wsp:val="008674EE"/><wsp:rsid wsp:val="00870B65"/><wsp:rsid wsp:val="008715D1"/><wsp:rsid wsp:val="0087335F"/><wsp:rsid wsp:val="00876E52"/><wsp:rsid wsp:val="00890422"/><wsp:rsid wsp:val="00893064"/><wsp:rsid wsp:val="00894991"/><wsp:rsid wsp:val="008A40B7"/><wsp:rsid wsp:val="008B1AB7"/><wsp:rsid wsp:val="008B37D0"/><wsp:rsid wsp:val="008B659F"/><wsp:rsid wsp:val="008D332B"/><wsp:rsid wsp:val="008D5BBD"/><wsp:rsid wsp:val="008F1DB8"/><wsp:rsid wsp:val="008F3E64"/><wsp:rsid wsp:val="008F5B9A"/><wsp:rsid wsp:val="00903436"/><wsp:rsid wsp:val="00905D37"/><wsp:rsid wsp:val="00907A2F"/><wsp:rsid wsp:val="009102A3"/><wsp:rsid wsp:val="00912FED"/><wsp:rsid wsp:val="00913874"/><wsp:rsid wsp:val="009204ED"/><wsp:rsid wsp:val="0092416A"/><wsp:rsid wsp:val="00925A21"/><wsp:rsid wsp:val="00932F0F"/><wsp:rsid wsp:val="00944F35"/><wsp:rsid wsp:val="009544BE"/><wsp:rsid wsp:val="009550E3"/><wsp:rsid wsp:val="00964929"/><wsp:rsid wsp:val="009661A9"/><wsp:rsid wsp:val="00972C6E"/><wsp:rsid wsp:val="00975A17"/><wsp:rsid wsp:val="00976AA6"/><wsp:rsid wsp:val="00983D28"/><wsp:rsid wsp:val="00996ED0"/><wsp:rsid wsp:val="009A0C0A"/><wsp:rsid wsp:val="009B116B"/><wsp:rsid wsp:val="009B1EF0"/><wsp:rsid wsp:val="009B7093"/><wsp:rsid wsp:val="009C2B94"/><wsp:rsid wsp:val="009C7319"/><wsp:rsid wsp:val="009D7FD5"/><wsp:rsid wsp:val="009E38A9"/><wsp:rsid wsp:val="009E66AD"/><wsp:rsid wsp:val="009E6B3D"/><wsp:rsid wsp:val="009F21AE"/><wsp:rsid wsp:val="009F4F9E"/><wsp:rsid wsp:val="00A134C3"/><wsp:rsid wsp:val="00A233DA"/><wsp:rsid wsp:val="00A2428A"/><wsp:rsid wsp:val="00A30F20"/><wsp:rsid wsp:val="00A318E6"/><wsp:rsid wsp:val="00A34FAA"/><wsp:rsid wsp:val="00A476C0"/><wsp:rsid wsp:val="00A652E0"/><wsp:rsid wsp:val="00A7660E"/><wsp:rsid wsp:val="00A81E8C"/><wsp:rsid wsp:val="00AA6DC4"/><wsp:rsid wsp:val="00AB4731"/><wsp:rsid wsp:val="00AC346F"/><wsp:rsid wsp:val="00AD5D6E"/><wsp:rsid wsp:val="00AE1F8F"/><wsp:rsid wsp:val="00AE452F"/><wsp:rsid wsp:val="00AF20CB"/><wsp:rsid wsp:val="00AF2830"/><wsp:rsid wsp:val="00AF6A43"/><wsp:rsid wsp:val="00B022E7"/><wsp:rsid wsp:val="00B13D46"/><wsp:rsid wsp:val="00B32AC1"/><wsp:rsid wsp:val="00B43482"/><wsp:rsid wsp:val="00B47E5D"/><wsp:rsid wsp:val="00B70B4F"/><wsp:rsid wsp:val="00B72055"/><wsp:rsid wsp:val="00B7611A"/><wsp:rsid wsp:val="00B8047C"/><wsp:rsid wsp:val="00B86259"/><wsp:rsid wsp:val="00B869CD"/><wsp:rsid wsp:val="00BA1260"/><wsp:rsid wsp:val="00BA666C"/><wsp:rsid wsp:val="00BB22AA"/><wsp:rsid wsp:val="00BB4C86"/><wsp:rsid wsp:val="00BE0FE1"/><wsp:rsid wsp:val="00BF138E"/><wsp:rsid wsp:val="00BF17C1"/><wsp:rsid wsp:val="00BF47F1"/><wsp:rsid wsp:val="00C005E5"/><wsp:rsid wsp:val="00C00EDA"/><wsp:rsid wsp:val="00C0337E"/><wsp:rsid wsp:val="00C05637"/><wsp:rsid wsp:val="00C07C88"/><wsp:rsid wsp:val="00C25428"/><wsp:rsid wsp:val="00C31C57"/><wsp:rsid wsp:val="00C33FA2"/><wsp:rsid wsp:val="00C3559C"/><wsp:rsid wsp:val="00C40EDF"/><wsp:rsid wsp:val="00C43DDD"/><wsp:rsid wsp:val="00C44610"/><wsp:rsid wsp:val="00C55E2F"/><wsp:rsid wsp:val="00C57BFE"/><wsp:rsid wsp:val="00C65CD1"/><wsp:rsid wsp:val="00C66826"/><wsp:rsid wsp:val="00C734BB"/><wsp:rsid wsp:val="00C7476A"/><wsp:rsid wsp:val="00C779E8"/><wsp:rsid wsp:val="00C93106"/><wsp:rsid wsp:val="00C93CA3"/><wsp:rsid wsp:val="00CA3B63"/><wsp:rsid wsp:val="00CA5EA3"/><wsp:rsid wsp:val="00CB3924"/><wsp:rsid wsp:val="00CB6076"/><wsp:rsid wsp:val="00CC1D8D"/><wsp:rsid wsp:val="00CC312A"/><wsp:rsid wsp:val="00CE03B8"/><wsp:rsid wsp:val="00D01E28"/><wsp:rsid wsp:val="00D127B6"/><wsp:rsid wsp:val="00D25E39"/><wsp:rsid wsp:val="00D3420B"/><wsp:rsid wsp:val="00D42F1D"/><wsp:rsid wsp:val="00D445A4"/><wsp:rsid wsp:val="00D54D3F"/><wsp:rsid wsp:val="00D72507"/><wsp:rsid wsp:val="00D7397C"/><wsp:rsid wsp:val="00D83C39"/><wsp:rsid wsp:val="00D90577"/><wsp:rsid wsp:val="00D930D4"/><wsp:rsid wsp:val="00D94335"/><wsp:rsid wsp:val="00DA6F39"/><wsp:rsid wsp:val="00DB5F49"/><wsp:rsid wsp:val="00DB68B8"/><wsp:rsid wsp:val="00DC5116"/><wsp:rsid wsp:val="00DD07A9"/><wsp:rsid wsp:val="00DD22A9"/><wsp:rsid wsp:val="00DD326C"/><wsp:rsid wsp:val="00DD3A90"/><wsp:rsid wsp:val="00DD508F"/><wsp:rsid wsp:val="00DD6B4F"/><wsp:rsid wsp:val="00DD7FC5"/><wsp:rsid wsp:val="00DE6BA0"/><wsp:rsid wsp:val="00E068E6"/><wsp:rsid wsp:val="00E1199B"/><wsp:rsid wsp:val="00E11BC7"/><wsp:rsid wsp:val="00E214AD"/><wsp:rsid wsp:val="00E239DA"/><wsp:rsid wsp:val="00E34311"/><wsp:rsid wsp:val="00E40969"/><wsp:rsid wsp:val="00E41F48"/><wsp:rsid wsp:val="00E441DF"/><wsp:rsid wsp:val="00E63377"/><wsp:rsid wsp:val="00E67580"/><wsp:rsid wsp:val="00E81372"/><wsp:rsid wsp:val="00E81F18"/><wsp:rsid wsp:val="00E875DA"/><wsp:rsid wsp:val="00E904D2"/><wsp:rsid wsp:val="00E92628"/><wsp:rsid wsp:val="00E96E7A"/><wsp:rsid wsp:val="00EA278B"/><wsp:rsid wsp:val="00EA68F6"/><wsp:rsid wsp:val="00EB18F7"/><wsp:rsid wsp:val="00EB2F20"/><wsp:rsid wsp:val="00EB4F31"/><wsp:rsid wsp:val="00EB62B7"/><wsp:rsid wsp:val="00EC7E43"/><wsp:rsid wsp:val="00ED6DE0"/><wsp:rsid wsp:val="00EE4A91"/><wsp:rsid wsp:val="00EF1639"/><wsp:rsid wsp:val="00EF5226"/><wsp:rsid wsp:val="00EF72A1"/><wsp:rsid wsp:val="00F04531"/><wsp:rsid wsp:val="00F11E7D"/><wsp:rsid wsp:val="00F24A08"/><wsp:rsid wsp:val="00F2536C"/><wsp:rsid wsp:val="00F25A7A"/><wsp:rsid wsp:val="00F3497B"/><wsp:rsid wsp:val="00F34A89"/><wsp:rsid wsp:val="00F457C0"/><wsp:rsid wsp:val="00F72F61"/><wsp:rsid wsp:val="00F812EB"/><wsp:rsid wsp:val="00F832CA"/><wsp:rsid wsp:val="00F85495"/><wsp:rsid wsp:val="00F86BB3"/><wsp:rsid wsp:val="00FA22D9"/><wsp:rsid wsp:val="00FA2ADE"/><wsp:rsid wsp:val="00FA4AF6"/><wsp:rsid wsp:val="00FC17CF"/><wsp:rsid wsp:val="00FC55FB"/><wsp:rsid wsp:val="00FC7758"/><wsp:rsid wsp:val="00FD64E8"/><wsp:rsid wsp:val="00FD7577"/></wsp:rsids></w:docPr><w:body><wx:sect><ns0:Artifact><w:p wsp:rsidR="00FA2ADE" wsp:rsidRDefault="00D83C39" wsp:rsidP="00FA2ADE"><Set_Name><w:r wsp:rsidR="00FA2ADE"><w:t>Default</w:t></w:r></Set_Name><Outline><HeadingAttribute><w:r wsp:rsidR="00FA2ADE"><w:t>Name</w:t></w:r></HeadingAttribute><RecurseChildren><w:r wsp:rsidR="005B0416"><w:t>true</w:t></w:r></RecurseChildren></Outline><Attribute><Name><w:r wsp:rsidR="00461E9A"><w:t>*</w:t></w:r></Name></Attribute></w:p></ns0:Artifact><w:p wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidRDefault="00AD5D6E" wsp:rsidP="00DB5F49"/><w:sectPr wsp:rsidR="00AD5D6E" wsp:rsidRPr="00DB5F49" wsp:rsidSect="004978C4"><w:hdr w:type="odd"><w:p wsp:rsidR="003B0842" wsp:rsidRDefault="003B0842" wsp:rsidP="00DB5F49"><w:pPr><w:pStyle w:val="Header"/><w:jc w:val="left"/></w:pPr></w:p></w:hdr><w:pgSz w:w="12240" w:h="15840" w:code="1"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="432" w:footer="432" w:gutter="0"/><w:pgNumType w:start="1"/><w:cols w:space="475"/><w:noEndnote/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file

Back to the top